forked from KhronosGroup/SPIRV-LLVM-Translator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
OpSpecConstantComposite.spvasm
124 lines (117 loc) · 7.33 KB
/
OpSpecConstantComposite.spvasm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
; REQUIRES: spirv-as
; RUN: spirv-as --target-env spv1.0 -o %t.spv %s
; RUN: llvm-spirv -spec-const-info %t.spv | FileCheck %s --check-prefix=CHECK-INFO
; CHECK-INFO: Number of scalar specialization constants in the module = 6
; CHECK-INFO: Spec const id = 3, size in bytes = 4
; CHECK-INFO: Spec const id = 6, size in bytes = 4
; CHECK-INFO: Spec const id = 10, size in bytes = 4
; CHECK-INFO: Spec const id = 11, size in bytes = 4
; CHECK-INFO: Spec const id = 4, size in bytes = 4
; CHECK-INFO: Spec const id = 7, size in bytes = 4
; RUN: llvm-spirv -r -o - %t.spv | llvm-dis -o %t.default.ll
; RUN: FileCheck < %t.default.ll %s --check-prefixes=CHECK-COMMON,CHECK-DEFAULT
; RUN: llvm-spirv -r -spec-const "3:i32:42 4:f32:2.71 6:i32:43 7:f32:3.14 10:i32:44 11:i32:55" -o - %t.spv | llvm-dis -o %t.spec.ll
; RUN: FileCheck < %t.spec.ll %s --check-prefixes=CHECK-COMMON,CHECK-SPEC
; CHECK-COMMON: %struct._ZTS3POD.POD = type { [2 x %struct._ZTS1A.A], %"class._ZTSN2cl4sycl3vecIiLi2EEE.cl::sycl::vec" }
; CHECK-COMMON: %struct._ZTS1A.A = type { i32, float }
; CHECK-COMMON: %"class._ZTSN2cl4sycl3vecIiLi2EEE.cl::sycl::vec" = type { <2 x i32> }
; CHECK-DEFAULT: store %struct._ZTS3POD.POD { [2 x %struct._ZTS1A.A] [%struct._ZTS1A.A { i32 1, float 0.000000e+00 }, %struct._ZTS1A.A { i32 35, float 0.000000e+00 }], %"class._ZTSN2cl4sycl3vecIiLi2EEE.cl::sycl::vec" { <2 x i32> <i32 45, i32 55> } }, %struct._ZTS3POD.POD addrspace(4)* %[[#]]
; CHECK-SPEC: store %struct._ZTS3POD.POD { [2 x %struct._ZTS1A.A] [%struct._ZTS1A.A { i32 42, float 0x4005AE1480000000 }, %struct._ZTS1A.A { i32 43, float 0x40091EB860000000 }], %"class._ZTSN2cl4sycl3vecIiLi2EEE.cl::sycl::vec" { <2 x i32> <i32 44, i32 55> } }, %struct._ZTS3POD.POD addrspace(4)* %3
; SPIR-V
; Version: 1.1
; Generator: Khronos LLVM/SPIR-V Translator; 14
; Bound: 57
; Schema: 0
OpCapability Addresses
OpCapability Kernel
OpCapability Int64
OpCapability GenericPointer
OpCapability Int8
%1 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %21 "_ZTS4Test"
OpSource OpenCL_CPP 100000
OpName %struct__ZTS3POD_POD "struct._ZTS3POD.POD"
OpName %struct__ZTS1A_A "struct._ZTS1A.A"
OpName %class__ZTSN2cl4sycl3vecIiLi2EEE_cl__sycl__vec "class._ZTSN2cl4sycl3vecIiLi2EEE.cl::sycl::vec"
OpName %class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range "class._ZTSN2cl4sycl5rangeILi1EEE.cl::sycl::range"
OpName %class__ZTSN2cl4sycl6detail5arrayILi1EEE_cl__sycl__detail__array "class._ZTSN2cl4sycl6detail5arrayILi1EEE.cl::sycl::detail::array"
OpName %class__ZTSN2cl4sycl2idILi1EEE_cl__sycl__id "class._ZTSN2cl4sycl2idILi1EEE.cl::sycl::id"
OpName %_arg_ "_arg_"
OpName %_arg_1 "_arg_1"
OpName %_arg_2 "_arg_2"
OpName %_arg_3 "_arg_3"
OpName %entry "entry"
OpName %ref_tmp_i "ref.tmp.i"
OpName %add_ptr_i "add.ptr.i"
OpDecorate %40 SpecId 3
OpDecorate %41 SpecId 4
OpDecorate %43 SpecId 6
OpDecorate %44 SpecId 7
OpDecorate %47 SpecId 10
OpDecorate %48 SpecId 11
OpDecorate %_arg_1 FuncParamAttr ByVal
OpDecorate %_arg_2 FuncParamAttr ByVal
OpDecorate %_arg_3 FuncParamAttr ByVal
OpDecorate %ref_tmp_i Alignment 8
%uint = OpTypeInt 32 0
%ulong = OpTypeInt 64 0
%uchar = OpTypeInt 8 0
%ulong_2 = OpConstant %ulong 2
%ulong_1 = OpConstant %ulong 1
%ulong_0 = OpConstant %ulong 0
%uint_0 = OpConstant %uint 0
%40 = OpSpecConstant %uint 1
%43 = OpSpecConstant %uint 35
%47 = OpSpecConstant %uint 45
%48 = OpSpecConstant %uint 55
%ulong_24 = OpConstant %ulong 24
%void = OpTypeVoid
%float = OpTypeFloat 32
%struct__ZTS1A_A = OpTypeStruct %uint %float
%_arr_struct__ZTS1A_A_ulong_2 = OpTypeArray %struct__ZTS1A_A %ulong_2
%v2uint = OpTypeVector %uint 2
%class__ZTSN2cl4sycl3vecIiLi2EEE_cl__sycl__vec = OpTypeStruct %v2uint
%struct__ZTS3POD_POD = OpTypeStruct %_arr_struct__ZTS1A_A_ulong_2 %class__ZTSN2cl4sycl3vecIiLi2EEE_cl__sycl__vec
%_ptr_CrossWorkgroup_struct__ZTS3POD_POD = OpTypePointer CrossWorkgroup %struct__ZTS3POD_POD
%_arr_ulong_ulong_1 = OpTypeArray %ulong %ulong_1
%class__ZTSN2cl4sycl6detail5arrayILi1EEE_cl__sycl__detail__array = OpTypeStruct %_arr_ulong_ulong_1
%class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range = OpTypeStruct %class__ZTSN2cl4sycl6detail5arrayILi1EEE_cl__sycl__detail__array
%_ptr_Function_class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range = OpTypePointer Function %class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range
%class__ZTSN2cl4sycl2idILi1EEE_cl__sycl__id = OpTypeStruct %class__ZTSN2cl4sycl6detail5arrayILi1EEE_cl__sycl__detail__array
%_ptr_Function_class__ZTSN2cl4sycl2idILi1EEE_cl__sycl__id = OpTypePointer Function %class__ZTSN2cl4sycl2idILi1EEE_cl__sycl__id
%20 = OpTypeFunction %void %_ptr_CrossWorkgroup_struct__ZTS3POD_POD %_ptr_Function_class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range %_ptr_Function_class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range %_ptr_Function_class__ZTSN2cl4sycl2idILi1EEE_cl__sycl__id
%_ptr_Function_struct__ZTS3POD_POD = OpTypePointer Function %struct__ZTS3POD_POD
%_ptr_Function_ulong = OpTypePointer Function %ulong
%_ptr_Function_uchar = OpTypePointer Function %uchar
%_ptr_Generic_struct__ZTS3POD_POD = OpTypePointer Generic %struct__ZTS3POD_POD
%_ptr_CrossWorkgroup_uchar = OpTypePointer CrossWorkgroup %uchar
%_ptr_Generic_uchar = OpTypePointer Generic %uchar
%41 = OpSpecConstant %float 0
%42 = OpSpecConstantComposite %struct__ZTS1A_A %40 %41
%44 = OpSpecConstant %float 0
%45 = OpSpecConstantComposite %struct__ZTS1A_A %43 %44
%46 = OpSpecConstantComposite %_arr_struct__ZTS1A_A_ulong_2 %42 %45
%49 = OpSpecConstantComposite %v2uint %47 %48
%50 = OpSpecConstantComposite %class__ZTSN2cl4sycl3vecIiLi2EEE_cl__sycl__vec %49
%51 = OpSpecConstantComposite %struct__ZTS3POD_POD %46 %50
%21 = OpFunction %void None %20
%_arg_ = OpFunctionParameter %_ptr_CrossWorkgroup_struct__ZTS3POD_POD
%_arg_1 = OpFunctionParameter %_ptr_Function_class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range
%_arg_2 = OpFunctionParameter %_ptr_Function_class__ZTSN2cl4sycl5rangeILi1EEE_cl__sycl__range
%_arg_3 = OpFunctionParameter %_ptr_Function_class__ZTSN2cl4sycl2idILi1EEE_cl__sycl__id
%entry = OpLabel
%ref_tmp_i = OpVariable %_ptr_Function_struct__ZTS3POD_POD Function
%32 = OpInBoundsPtrAccessChain %_ptr_Function_ulong %_arg_3 %ulong_0 %uint_0 %uint_0 %ulong_0
%33 = OpLoad %ulong %32 Aligned 8
%add_ptr_i = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_struct__ZTS3POD_POD %_arg_ %33
%37 = OpBitcast %_ptr_Function_uchar %ref_tmp_i
OpLifetimeStart %37 24
%39 = OpPtrCastToGeneric %_ptr_Generic_struct__ZTS3POD_POD %ref_tmp_i
OpStore %39 %51 Aligned 8
%53 = OpBitcast %_ptr_CrossWorkgroup_uchar %add_ptr_i
%55 = OpPtrCastToGeneric %_ptr_Generic_uchar %53
OpCopyMemorySized %55 %37 %ulong_24 Aligned 8
OpLifetimeStop %37 24
OpReturn
OpFunctionEnd