1
+ ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv1.6-vulkan1.3-library %s -o - | FileCheck %s
2
+ ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv1.6-vulkan1.3-library %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %}
3
+
4
+ @.str = private unnamed_addr constant [2 x i8 ] c "b\00 " , align 1
5
+ @.str.2 = private unnamed_addr constant [2 x i8 ] c "c\00 " , align 1
6
+ @.str.4 = private unnamed_addr constant [2 x i8 ] c "d\00 " , align 1
7
+ @.str.6 = private unnamed_addr constant [2 x i8 ] c "e\00 " , align 1
8
+ @.str.8 = private unnamed_addr constant [2 x i8 ] c "f\00 " , align 1
9
+ @.str.10 = private unnamed_addr constant [2 x i8 ] c "g\00 " , align 1
10
+ @.str.12 = private unnamed_addr constant [2 x i8 ] c "h\00 " , align 1
11
+ @.str.14 = private unnamed_addr constant [2 x i8 ] c "i\00 " , align 1
12
+
13
+ ; CHECK-DAG: OpName [[b:%[0-9]+]] "b"
14
+ ; CHECK-DAG: OpName [[c:%[0-9]+]] "c"
15
+ ; CHECK-DAG: OpName [[d:%[0-9]+]] "d"
16
+ ; CHECK-DAG: OpName [[e:%[0-9]+]] "e"
17
+ ; CHECK-DAG: OpName [[f:%[0-9]+]] "f"
18
+ ; CHECK-DAG: OpName [[g:%[0-9]+]] "g"
19
+ ; CHECK-DAG: OpName [[h:%[0-9]+]] "h"
20
+ ; CHECK-DAG: OpName [[i:%[0-9]+]] "i"
21
+ ; CHECK-DAG: OpDecorate [[b]] DescriptorSet 0
22
+ ; CHECK-DAG: OpDecorate [[b]] Binding 1
23
+ ; CHECK-DAG: OpDecorate [[c]] DescriptorSet 0
24
+ ; CHECK-DAG: OpDecorate [[c]] Binding 0
25
+ ; CHECK-DAG: OpDecorate [[d]] DescriptorSet 0
26
+ ; CHECK-DAG: OpDecorate [[d]] Binding 3
27
+ ; CHECK-DAG: OpDecorate [[e]] DescriptorSet 0
28
+ ; CHECK-DAG: OpDecorate [[e]] Binding 2
29
+ ; CHECK-DAG: OpDecorate [[f]] DescriptorSet 10
30
+ ; CHECK-DAG: OpDecorate [[f]] Binding 1
31
+ ; CHECK-DAG: OpDecorate [[g]] DescriptorSet 10
32
+ ; CHECK-DAG: OpDecorate [[g]] Binding 0
33
+ ; CHECK-DAG: OpDecorate [[h]] DescriptorSet 10
34
+ ; CHECK-DAG: OpDecorate [[h]] Binding 3
35
+ ; CHECK-DAG: OpDecorate [[i]] DescriptorSet 10
36
+ ; CHECK-DAG: OpDecorate [[i]] Binding 2
37
+
38
+
39
+ define void @main () local_unnamed_addr #0 {
40
+ entry:
41
+ %0 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefromimplicitbinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 0 , i32 0 , i32 1 , i32 0 , i1 false , ptr nonnull @.str )
42
+ %1 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefrombinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 0 , i32 0 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.2 )
43
+ %2 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefromimplicitbinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 1 , i32 0 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.4 )
44
+ %3 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefrombinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 0 , i32 2 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.6 )
45
+ %4 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefrombinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 10 , i32 1 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.8 )
46
+ %5 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefromimplicitbinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 2 , i32 10 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.10 )
47
+ %6 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefromimplicitbinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 3 , i32 10 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.12 )
48
+ %7 = tail call target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) @llvm.spv.resource.handlefrombinding.tspirv.SignedImage_i32_5_2_0_0_2_0t (i32 10 , i32 2 , i32 1 , i32 0 , i1 false , ptr nonnull @.str.14 )
49
+ %8 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %1 , i32 0 )
50
+ %9 = load i32 , ptr addrspace (11 ) %8 , align 4
51
+ %10 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %2 , i32 0 )
52
+ %11 = load i32 , ptr addrspace (11 ) %10 , align 4
53
+ %add.i = add nsw i32 %11 , %9
54
+ %12 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %3 , i32 0 )
55
+ %13 = load i32 , ptr addrspace (11 ) %12 , align 4
56
+ %add4.i = add nsw i32 %add.i , %13
57
+ %14 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %4 , i32 0 )
58
+ %15 = load i32 , ptr addrspace (11 ) %14 , align 4
59
+ %add6.i = add nsw i32 %add4.i , %15
60
+ %16 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %5 , i32 0 )
61
+ %17 = load i32 , ptr addrspace (11 ) %16 , align 4
62
+ %add8.i = add nsw i32 %add6.i , %17
63
+ %18 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %6 , i32 0 )
64
+ %19 = load i32 , ptr addrspace (11 ) %18 , align 4
65
+ %add10.i = add nsw i32 %add8.i , %19
66
+ %20 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %7 , i32 0 )
67
+ %21 = load i32 , ptr addrspace (11 ) %20 , align 4
68
+ %add12.i = add nsw i32 %add10.i , %21
69
+ %22 = tail call noundef align 4 dereferenceable (4 ) ptr addrspace (11 ) @llvm.spv.resource.getpointer.p11.tspirv.SignedImage_i32_5_2_0_0_2_0t (target ("spirv.SignedImage" , i32 , 5 , 2 , 0 , 0 , 2 , 0 ) %0 , i32 0 )
70
+ store i32 %add12.i , ptr addrspace (11 ) %22 , align 4
71
+ ret void
72
+ }
73
+
74
+
75
+ attributes #0 = { "hlsl.numthreads" ="1,1,1" "hlsl.shader" ="compute" }
0 commit comments