Files
TheRock/compiler/spirv-llvm-translator/test/create-placeholders-for-phi-operands.ll
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

158 lines
7.1 KiB
LLVM

; RUN: llvm-spirv %s -o %t.spv -spirv-ext=+SPV_INTEL_variable_length_array
; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
; RUN: llvm-dis %t.rev.bc -o %t.rev.ll
; RUN: FileCheck %s --input-file %t.rev.ll --check-prefix CHECK-LLVM
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown -filetype=obj %s -o %t.llc.spv --spirv-ext=+SPV_INTEL_variable_length_array
; CHECK-LLVM: phi ptr [ [[savedstack:%.*]], {{.*}} ], [ [[savedstack_us:%.*]], {{.*}} ]
; CHECK-LLVM: BB.{{[0-9]+}}:
; CHECK-LLVM: [[savedstack]] = call ptr @llvm.stacksave.p0()
; CHECK-LLVM: BB.{{[0-9]+}}:
; CHECK-LLVM: [[savedstack_us]] = call ptr @llvm.stacksave.p0()
; ModuleID = 's.bc'
source_filename = "llvm-link"
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
target triple = "spir64"
; Function Attrs: noinline nounwind mustprogress
define weak dso_local spir_kernel void @Kernel(ptr addrspace(1) %0, ptr addrspace(1) %1, i64 %.omp.lb.ascast.val109.zext, i64 %.omp.ub.ascast.val.zext, i64 %.capture_expr.0.ascast.val.zext, i64 %length_.ascast.val.zext) local_unnamed_addr #0 {
BB.0:
%dmt.i = alloca [624 x i32], align 4
%length_.ascast.val.zext.trunc = trunc i64 %length_.ascast.val.zext to i32
%.capture_expr.0.ascast.val.zext.trunc = trunc i64 %.capture_expr.0.ascast.val.zext to i32
%.omp.ub.ascast.val.zext.trunc = trunc i64 %.omp.ub.ascast.val.zext to i32
%.omp.lb.ascast.val109.zext.trunc = trunc i64 %.omp.lb.ascast.val109.zext to i32
%cmp41 = icmp slt i32 %.capture_expr.0.ascast.val.zext.trunc, 1
%cmp42.not104 = icmp sgt i32 %.omp.lb.ascast.val109.zext.trunc, %.omp.ub.ascast.val.zext.trunc
%or.cond = select i1 %cmp41, i1 true, i1 %cmp42.not104
br i1 %or.cond, label %BB.2, label %BB.3
BB.1: ; preds = %BB.12.loopexit, %BB.11.loopexit
%savedstack.sink = phi ptr [ %savedstack, %BB.12.loopexit ], [ %savedstack.us, %BB.11.loopexit ]
call void @llvm.stackrestore.p0(ptr %savedstack.sink), !llvm.access.group !9
br label %BB.2
BB.2: ; preds = %BB.3, %BB.1, %BB.0
ret void
BB.3: ; preds = %BB.0
%2 = call spir_func i64 @_Z13get_global_idj(i32 0)
%3 = trunc i64 %2 to i32
%.not = icmp sgt i32 %3, %.omp.ub.ascast.val.zext.trunc
br i1 %.not, label %BB.2, label %BB.4, !prof !10
BB.4: ; preds = %BB.3
%div.i = udiv i32 %length_.ascast.val.zext.trunc, 624
%4 = icmp ult i32 %length_.ascast.val.zext.trunc, 624
br i1 %4, label %BB.5, label %BB.6
BB.5: ; preds = %BB.4
%savedstack = call ptr @llvm.stacksave.p0(), !llvm.access.group !9
br label %BB.12
BB.6: ; preds = %BB.4
%5 = icmp ugt i32 %div.i, 1
%umax = select i1 %5, i32 %div.i, i32 1
%arrayidx4812.us = getelementptr inbounds i32, ptr addrspace(1) %0, i64 %2
%arrayidx5113.us = getelementptr inbounds i32, ptr addrspace(1) %1, i64 %2
%savedstack.us = call ptr @llvm.stacksave.p0(), !llvm.access.group !9
br label %BB.9
BB.7: ; preds = %BB.8
%indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1
%exitcond29.not = icmp eq i64 %indvars.iv.next27, %7
br i1 %exitcond29.not, label %BB.11.loopexit, label %BB.11, !llvm.loop !11
BB.11.loopexit:
br label %BB.1
BB.8: ; preds = %BB.11, %BB.8
%indvars.iv22 = phi i64 [ 0, %BB.11 ], [ %indvars.iv.next23, %BB.8 ]
%j.0.i17.us = phi i32 [ 0, %BB.11 ], [ %add.i.us, %BB.8 ]
%arrayidx1276.i.us = getelementptr inbounds [624 x i32], ptr %dmt.i, i64 0, i64 %indvars.iv22
%6 = load i32, ptr %arrayidx1276.i.us, align 4, !alias.scope !14, !noalias !19, !llvm.access.group !9
%and.i.us = and i32 %6, -2147483648
%indvars.iv.next23 = add nuw nsw i64 %indvars.iv22, 1
%add.i.us = add nuw nsw i32 %j.0.i17.us, 1
%exitcond25.not = icmp eq i64 %indvars.iv.next23, 624
br i1 %exitcond25.not, label %BB.7, label %BB.8, !llvm.loop !26
BB.9: ; preds = %BB.9, %BB.6
%indvars.iv = phi i64 [ %indvars.iv.next, %BB.9 ], [ 0, %BB.6 ]
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%exitcond.not = icmp eq i64 %indvars.iv.next, 624
br i1 %exitcond.not, label %BB.10, label %BB.9, !llvm.loop !28
BB.10: ; preds = %BB.9
%7 = zext i32 %umax to i64
br label %BB.11
BB.11: ; preds = %BB.10, %BB.7
%indvars.iv26 = phi i64 [ 0, %BB.10 ], [ %indvars.iv.next27, %BB.7 ]
%8 = mul nuw nsw i64 %indvars.iv26, 624
br label %BB.8
BB.12: ; preds = %BB.12, %BB.5
%indvars.iv33 = phi i64 [ 0, %BB.5 ], [ %indvars.iv.next34, %BB.12 ]
%indvars.iv.next34 = add nuw nsw i64 %indvars.iv33, 1
%exitcond35.not = icmp eq i64 %indvars.iv.next34, 624
br i1 %exitcond35.not, label %BB.12.loopexit, label %BB.12, !llvm.loop !11
BB.12.loopexit:
br label %BB.1
}
declare spir_func i64 @_Z13get_global_idj(i32) local_unnamed_addr
; Function Attrs: nofree nosync nounwind willreturn
declare ptr @llvm.stacksave.p0() #1
; Function Attrs: nofree nosync nounwind willreturn
declare void @llvm.stackrestore.p0(ptr) #1
attributes #0 = { noinline nounwind mustprogress "contains-openmp-target"="true" "denormal-fp-math"="preserve-sign,preserve-sign" "denormal-fp-math-f32"="ieee,ieee" "frame-pointer"="all" "may-have-openmp-directive"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target.declare"="true" "unsafe-fp-math"="true" }
attributes #1 = { nofree nosync nounwind willreturn }
!opencl.used.extensions = !{!0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0}
!opencl.used.optional.core.features = !{!1, !0, !0, !0, !1, !0, !1, !0, !1, !0, !1, !0, !0, !0}
!opencl.compiler.options = !{!0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0}
!llvm.ident = !{!2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2, !2}
!spirv.Source = !{!3, !4, !3, !3, !3, !3, !3, !3, !3, !3, !3, !3, !3, !3, !3}
!spirv.MemoryModel = !{!5}
!spirv.ExecutionMode = !{}
!llvm.module.flags = !{!6, !7, !8}
!sycl.specialization-constants = !{}
!0 = !{}
!1 = !{!"cl_doubles"}
!2 = !{!"Compiler"}
!3 = !{i32 4, i32 200000}
!4 = !{i32 3, i32 200000}
!5 = !{i32 2, i32 2}
!6 = !{i32 1, !"wchar_size", i32 4}
!7 = !{i32 7, !"PIC Level", i32 2}
!8 = !{i32 7, !"frame-pointer", i32 2}
!9 = distinct !{}
!10 = !{!"branch_weights", i32 100000, i32 299998}
!11 = distinct !{!11, !12, !13}
!12 = !{!"llvm.loop.vectorize.ivdep_loop", i32 0}
!13 = !{!"llvm.loop.parallel_accesses", !9}
!14 = !{!15, !17}
!15 = distinct !{!15, !16}
!16 = distinct !{!16}
!17 = distinct !{!17, !18}
!18 = distinct !{!18}
!19 = !{!20, !21, !22, !23, !24, !25}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}