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
158 lines
7.1 KiB
LLVM
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}
|