f7e98c39db
If the loop variable candidate has a dominating block that lives in an unrelated loop, we have to reject the loop variable candidate.
377 lines
15 KiB
Plaintext
377 lines
15 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Khronos SPIR-V Tools Assembler; 0
|
|
; Bound: 257
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint GLCompute %1 "main" %gl_LocalInvocationIndex %gl_WorkGroupID
|
|
OpExecutionMode %1 LocalSize 1 1 1
|
|
OpDecorate %_struct_4 BufferBlock
|
|
OpMemberDecorate %_struct_4 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_1 ArrayStride 4
|
|
OpDecorate %_struct_6 BufferBlock
|
|
OpMemberDecorate %_struct_6 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_2 ArrayStride 4
|
|
OpDecorate %_struct_8 BufferBlock
|
|
OpMemberDecorate %_struct_8 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_3 ArrayStride 4
|
|
OpDecorate %_struct_10 BufferBlock
|
|
OpMemberDecorate %_struct_10 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_37 ArrayStride 4
|
|
OpDecorate %12 DescriptorSet 0
|
|
OpDecorate %12 Binding 0
|
|
OpDecorate %13 DescriptorSet 0
|
|
OpDecorate %13 Binding 1
|
|
OpDecorate %14 DescriptorSet 0
|
|
OpDecorate %14 Binding 2
|
|
OpDecorate %15 DescriptorSet 0
|
|
OpDecorate %15 Binding 3
|
|
OpDecorate %16 DescriptorSet 0
|
|
OpDecorate %16 Binding 4
|
|
OpDecorate %17 DescriptorSet 0
|
|
OpDecorate %17 Binding 5
|
|
OpDecorate %18 DescriptorSet 0
|
|
OpDecorate %18 Binding 6
|
|
OpDecorate %19 DescriptorSet 0
|
|
OpDecorate %19 Binding 7
|
|
OpDecorate %20 DescriptorSet 0
|
|
OpDecorate %20 Binding 8
|
|
OpDecorate %21 DescriptorSet 0
|
|
OpDecorate %21 Binding 9
|
|
OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex
|
|
OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId
|
|
%void = OpTypeVoid
|
|
%23 = OpTypeFunction %void
|
|
%bool = OpTypeBool
|
|
%uint = OpTypeInt 32 0
|
|
%true = OpConstantTrue %bool
|
|
%uint_0 = OpConstant %uint 0
|
|
%uint_666 = OpConstant %uint 666
|
|
%uint_0_0 = OpConstant %uint 0
|
|
%uint_1 = OpConstant %uint 1
|
|
%uint_2 = OpConstant %uint 2
|
|
%uint_3 = OpConstant %uint 3
|
|
%uint_8 = OpConstant %uint 8
|
|
%uint_9 = OpConstant %uint 9
|
|
%uint_10 = OpConstant %uint 10
|
|
%uint_11 = OpConstant %uint 11
|
|
%uint_12 = OpConstant %uint 12
|
|
%uint_13 = OpConstant %uint 13
|
|
%uint_14 = OpConstant %uint 14
|
|
%uint_15 = OpConstant %uint 15
|
|
%uint_16 = OpConstant %uint 16
|
|
%uint_17 = OpConstant %uint 17
|
|
%uint_18 = OpConstant %uint 18
|
|
%uint_19 = OpConstant %uint 19
|
|
%uint_20 = OpConstant %uint 20
|
|
%uint_21 = OpConstant %uint 21
|
|
%uint_22 = OpConstant %uint 22
|
|
%uint_23 = OpConstant %uint 23
|
|
%uint_24 = OpConstant %uint 24
|
|
%uint_25 = OpConstant %uint 25
|
|
%uint_26 = OpConstant %uint 26
|
|
%uint_27 = OpConstant %uint 27
|
|
%uint_28 = OpConstant %uint 28
|
|
%uint_29 = OpConstant %uint 29
|
|
%uint_30 = OpConstant %uint 30
|
|
%uint_31 = OpConstant %uint 31
|
|
%uint_32 = OpConstant %uint 32
|
|
%uint_33 = OpConstant %uint 33
|
|
%uint_37 = OpConstant %uint 37
|
|
%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
|
|
%_struct_4 = OpTypeStruct %_arr_uint_uint_1
|
|
%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
|
|
%12 = OpVariable %_ptr_Uniform__struct_4 Uniform
|
|
%13 = OpVariable %_ptr_Uniform__struct_4 Uniform
|
|
%19 = OpVariable %_ptr_Uniform__struct_4 Uniform
|
|
%_arr_uint_uint_2 = OpTypeArray %uint %uint_2
|
|
%_struct_6 = OpTypeStruct %_arr_uint_uint_2
|
|
%_ptr_Uniform__struct_6 = OpTypePointer Uniform %_struct_6
|
|
%14 = OpVariable %_ptr_Uniform__struct_6 Uniform
|
|
%15 = OpVariable %_ptr_Uniform__struct_6 Uniform
|
|
%16 = OpVariable %_ptr_Uniform__struct_6 Uniform
|
|
%17 = OpVariable %_ptr_Uniform__struct_6 Uniform
|
|
%18 = OpVariable %_ptr_Uniform__struct_6 Uniform
|
|
%_arr_uint_uint_3 = OpTypeArray %uint %uint_3
|
|
%_struct_8 = OpTypeStruct %_arr_uint_uint_3
|
|
%_ptr_Uniform__struct_8 = OpTypePointer Uniform %_struct_8
|
|
%20 = OpVariable %_ptr_Uniform__struct_8 Uniform
|
|
%_arr_uint_uint_37 = OpTypeArray %uint %uint_37
|
|
%_struct_10 = OpTypeStruct %_arr_uint_uint_37
|
|
%_ptr_Uniform__struct_10 = OpTypePointer Uniform %_struct_10
|
|
%21 = OpVariable %_ptr_Uniform__struct_10 Uniform
|
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
|
%gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input
|
|
%v3uint = OpTypeVector %uint 3
|
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input
|
|
%1 = OpFunction %void None %23
|
|
%69 = OpLabel
|
|
%70 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%71 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%72 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%73 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%74 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%75 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%76 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%77 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%78 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%79 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%80 = OpLoad %uint %gl_LocalInvocationIndex
|
|
%81 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_0_0
|
|
%82 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_1
|
|
%83 = OpAccessChain %_ptr_Input_uint %gl_WorkGroupID %uint_2
|
|
%84 = OpLoad %uint %81
|
|
%85 = OpLoad %uint %82
|
|
%86 = OpLoad %uint %83
|
|
%87 = OpIMul %uint %86 %uint_1
|
|
%88 = OpIMul %uint %85 %uint_1
|
|
%89 = OpIAdd %uint %88 %87
|
|
%90 = OpIAdd %uint %89 %84
|
|
%91 = OpIMul %uint %80 %uint_1
|
|
%92 = OpIMul %uint %80 %uint_1
|
|
%93 = OpIMul %uint %80 %uint_2
|
|
%94 = OpIMul %uint %80 %uint_2
|
|
%95 = OpIMul %uint %80 %uint_2
|
|
%96 = OpIMul %uint %80 %uint_2
|
|
%97 = OpIMul %uint %80 %uint_2
|
|
%98 = OpIMul %uint %80 %uint_1
|
|
%99 = OpIMul %uint %80 %uint_3
|
|
%100 = OpIMul %uint %90 %uint_1
|
|
%101 = OpIMul %uint %90 %uint_1
|
|
%102 = OpIMul %uint %90 %uint_2
|
|
%103 = OpIMul %uint %90 %uint_2
|
|
%104 = OpIMul %uint %90 %uint_2
|
|
%105 = OpIMul %uint %90 %uint_2
|
|
%106 = OpIMul %uint %90 %uint_2
|
|
%107 = OpIMul %uint %90 %uint_1
|
|
%108 = OpIMul %uint %90 %uint_3
|
|
%109 = OpIAdd %uint %100 %91
|
|
%110 = OpIAdd %uint %101 %92
|
|
%111 = OpIAdd %uint %102 %93
|
|
%112 = OpIAdd %uint %103 %94
|
|
%113 = OpIAdd %uint %104 %95
|
|
%114 = OpIAdd %uint %105 %96
|
|
%115 = OpIAdd %uint %106 %97
|
|
%116 = OpIAdd %uint %107 %98
|
|
%117 = OpIAdd %uint %108 %99
|
|
%118 = OpIMul %uint %80 %uint_37
|
|
%119 = OpIMul %uint %90 %uint_37
|
|
%120 = OpIAdd %uint %119 %118
|
|
OpStore %71 %109
|
|
OpStore %72 %110
|
|
OpStore %73 %111
|
|
OpStore %74 %112
|
|
OpStore %75 %113
|
|
OpStore %76 %114
|
|
OpStore %77 %115
|
|
OpStore %78 %116
|
|
OpStore %79 %117
|
|
OpStore %70 %120
|
|
%121 = OpLoad %uint %70
|
|
%122 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %121
|
|
OpStore %122 %uint_8
|
|
%123 = OpIAdd %uint %121 %uint_1
|
|
%124 = OpLoad %uint %71
|
|
%125 = OpAccessChain %_ptr_Uniform_uint %12 %uint_0_0 %124
|
|
%126 = OpLoad %uint %125
|
|
%127 = OpIAdd %uint %124 %uint_1
|
|
OpStore %71 %127
|
|
OpSelectionMerge %128 None
|
|
OpSwitch %126 %128
|
|
%128 = OpLabel
|
|
%129 = OpPhi %uint %130 %131 %123 %69
|
|
%132 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %129
|
|
OpStore %132 %uint_9
|
|
%133 = OpIAdd %uint %129 %uint_1
|
|
OpLoopMerge %134 %131 None
|
|
OpBranch %135
|
|
%135 = OpLabel
|
|
%136 = OpPhi %uint %uint_666 %137 %133 %128
|
|
%138 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %136
|
|
OpStore %138 %uint_12
|
|
%139 = OpIAdd %uint %136 %uint_1
|
|
OpLoopMerge %140 %137 None
|
|
OpBranch %140
|
|
%140 = OpLabel
|
|
%141 = OpPhi %uint %139 %135 %uint_666 %142
|
|
%143 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %141
|
|
OpStore %143 %uint_13
|
|
%144 = OpIAdd %uint %141 %uint_1
|
|
%145 = OpLoad %uint %75
|
|
OpLoopMerge %146 %142 None
|
|
OpBranch %147
|
|
%137 = OpLabel
|
|
OpBranch %135
|
|
%147 = OpLabel
|
|
%148 = OpPhi %uint %144 %140
|
|
%149 = OpPhi %uint %145 %140
|
|
%150 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %148
|
|
OpStore %150 %uint_17
|
|
%151 = OpIAdd %uint %148 %uint_1
|
|
%152 = OpAccessChain %_ptr_Uniform_uint %16 %uint_0_0 %149
|
|
%153 = OpLoad %uint %152
|
|
%154 = OpIEqual %bool %153 %uint_1
|
|
%155 = OpIAdd %uint %149 %uint_1
|
|
OpStore %75 %155
|
|
OpSelectionMerge %156 None
|
|
OpBranchConditional %154 %157 %156
|
|
%157 = OpLabel
|
|
%158 = OpPhi %uint %151 %147
|
|
%159 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %158
|
|
OpStore %159 %uint_19
|
|
%160 = OpIAdd %uint %158 %uint_1
|
|
%161 = OpLoad %uint %74
|
|
OpBranch %146
|
|
%156 = OpLabel
|
|
OpBranch %142
|
|
%142 = OpLabel
|
|
OpBranchConditional %true %140 %146
|
|
%146 = OpLabel
|
|
%162 = OpPhi %uint %160 %157 %uint_666 %142
|
|
%163 = OpPhi %uint %161 %157 %uint_666 %142
|
|
%164 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %162
|
|
OpStore %164 %uint_15
|
|
%165 = OpIAdd %uint %162 %uint_1
|
|
%166 = OpAccessChain %_ptr_Uniform_uint %15 %uint_0_0 %163
|
|
%167 = OpLoad %uint %166
|
|
%168 = OpIEqual %bool %167 %uint_1
|
|
%169 = OpIAdd %uint %163 %uint_1
|
|
OpStore %74 %169
|
|
%170 = OpLoad %uint %76
|
|
OpSelectionMerge %171 None
|
|
OpBranchConditional %168 %172 %173
|
|
%173 = OpLabel
|
|
%174 = OpPhi %uint %165 %146
|
|
%175 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %174
|
|
OpStore %175 %uint_22
|
|
%176 = OpIAdd %uint %174 %uint_1
|
|
%177 = OpLoad %uint %76
|
|
OpBranch %172
|
|
%172 = OpLabel
|
|
%178 = OpPhi %uint %176 %173 %165 %146
|
|
%179 = OpPhi %uint %177 %173 %170 %146
|
|
%180 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %178
|
|
OpStore %180 %uint_21
|
|
%181 = OpIAdd %uint %178 %uint_1
|
|
%182 = OpAccessChain %_ptr_Uniform_uint %17 %uint_0_0 %179
|
|
%183 = OpLoad %uint %182
|
|
%184 = OpIAdd %uint %179 %uint_1
|
|
OpStore %76 %184
|
|
OpSelectionMerge %185 None
|
|
OpSwitch %183 %185
|
|
%185 = OpLabel
|
|
%186 = OpPhi %uint %uint_666 %187 %181 %172
|
|
%188 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %186
|
|
OpStore %188 %uint_23
|
|
%189 = OpIAdd %uint %186 %uint_1
|
|
OpLoopMerge %190 %187 None
|
|
OpBranch %190
|
|
%190 = OpLabel
|
|
%191 = OpPhi %uint %189 %185 %192 %193
|
|
%194 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %191
|
|
OpStore %194 %uint_24
|
|
%195 = OpIAdd %uint %191 %uint_1
|
|
%196 = OpLoad %uint %79
|
|
OpLoopMerge %197 %193 None
|
|
OpBranch %198
|
|
%187 = OpLabel
|
|
OpBranch %185
|
|
%198 = OpLabel
|
|
%199 = OpPhi %uint %195 %190
|
|
%200 = OpPhi %uint %196 %190
|
|
%201 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %199
|
|
OpStore %201 %uint_28
|
|
%202 = OpIAdd %uint %199 %uint_1
|
|
%203 = OpAccessChain %_ptr_Uniform_uint %20 %uint_0_0 %200
|
|
%204 = OpLoad %uint %203
|
|
%205 = OpIAdd %uint %200 %uint_1
|
|
OpStore %79 %205
|
|
OpSelectionMerge %206 None
|
|
OpSwitch %204 %207 1 %206
|
|
%207 = OpLabel
|
|
%208 = OpPhi %uint %202 %198
|
|
%209 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %208
|
|
OpStore %209 %uint_30
|
|
%210 = OpIAdd %uint %208 %uint_1
|
|
%211 = OpLoad %uint %77
|
|
OpBranch %197
|
|
%206 = OpLabel
|
|
%212 = OpPhi %uint %202 %198
|
|
%213 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %212
|
|
OpStore %213 %uint_29
|
|
%214 = OpIAdd %uint %212 %uint_1
|
|
%215 = OpLoad %uint %78
|
|
OpBranch %193
|
|
%193 = OpLabel
|
|
%216 = OpPhi %uint %214 %206
|
|
%217 = OpPhi %uint %215 %206
|
|
%218 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %216
|
|
OpStore %218 %uint_27
|
|
%192 = OpIAdd %uint %216 %uint_1
|
|
%219 = OpAccessChain %_ptr_Uniform_uint %19 %uint_0_0 %217
|
|
%220 = OpLoad %uint %219
|
|
%221 = OpIEqual %bool %220 %uint_1
|
|
%222 = OpIAdd %uint %217 %uint_1
|
|
OpStore %78 %222
|
|
%223 = OpLoad %uint %77
|
|
OpBranchConditional %221 %190 %197
|
|
%197 = OpLabel
|
|
%224 = OpPhi %uint %210 %207 %192 %193
|
|
%225 = OpPhi %uint %211 %207 %223 %193
|
|
%226 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %224
|
|
OpStore %226 %uint_26
|
|
%227 = OpIAdd %uint %224 %uint_1
|
|
%228 = OpAccessChain %_ptr_Uniform_uint %18 %uint_0_0 %225
|
|
%229 = OpLoad %uint %228
|
|
%230 = OpIEqual %bool %229 %uint_1
|
|
%231 = OpIAdd %uint %225 %uint_1
|
|
OpStore %77 %231
|
|
%232 = OpLoad %uint %73
|
|
OpBranchConditional %230 %131 %171
|
|
%171 = OpLabel
|
|
OpBranch %131
|
|
%131 = OpLabel
|
|
%233 = OpPhi %uint %uint_666 %171 %227 %197
|
|
%234 = OpPhi %uint %uint_666 %171 %232 %197
|
|
%235 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %233
|
|
OpStore %235 %uint_11
|
|
%130 = OpIAdd %uint %233 %uint_1
|
|
%236 = OpAccessChain %_ptr_Uniform_uint %14 %uint_0_0 %234
|
|
%237 = OpLoad %uint %236
|
|
%238 = OpIEqual %bool %237 %uint_1
|
|
%239 = OpIAdd %uint %234 %uint_1
|
|
OpStore %73 %239
|
|
%240 = OpLoad %uint %72
|
|
OpBranchConditional %238 %128 %134
|
|
%134 = OpLabel
|
|
%241 = OpPhi %uint %130 %131
|
|
%242 = OpPhi %uint %240 %131
|
|
%243 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %241
|
|
OpStore %243 %uint_10
|
|
%244 = OpIAdd %uint %241 %uint_1
|
|
%245 = OpAccessChain %_ptr_Uniform_uint %13 %uint_0_0 %242
|
|
%246 = OpLoad %uint %245
|
|
%247 = OpIAdd %uint %242 %uint_1
|
|
OpStore %72 %247
|
|
OpSelectionMerge %248 None
|
|
OpSwitch %246 %249 1 %250
|
|
%249 = OpLabel
|
|
%251 = OpPhi %uint %244 %134
|
|
%252 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %251
|
|
OpStore %252 %uint_32
|
|
%253 = OpIAdd %uint %251 %uint_1
|
|
OpBranch %248
|
|
%250 = OpLabel
|
|
OpBranch %248
|
|
%248 = OpLabel
|
|
%254 = OpPhi %uint %253 %249 %uint_666 %250
|
|
%255 = OpAccessChain %_ptr_Uniform_uint %21 %uint_0_0 %254
|
|
OpStore %255 %uint_31
|
|
%256 = OpIAdd %uint %254 %uint_2
|
|
OpReturn
|
|
OpFunctionEnd
|