be904dcc1e
If we hit the deprecated scenario of selection with identical branches, we need to collapse loops into direct branches if need be.
119 lines
4.6 KiB
Plaintext
119 lines
4.6 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Khronos SPIR-V Tools Assembler; 0
|
|
; Bound: 71
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint GLCompute %1 "main"
|
|
OpExecutionMode %1 LocalSize 1 1 1
|
|
OpDecorate %_struct_2 BufferBlock
|
|
OpMemberDecorate %_struct_2 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_2 ArrayStride 4
|
|
OpDecorate %_struct_4 BufferBlock
|
|
OpMemberDecorate %_struct_4 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_3 ArrayStride 4
|
|
OpDecorate %_struct_6 BufferBlock
|
|
OpMemberDecorate %_struct_6 0 Offset 0
|
|
OpDecorate %_arr_uint_uint_11 ArrayStride 4
|
|
OpDecorate %8 DescriptorSet 0
|
|
OpDecorate %8 Binding 0
|
|
OpDecorate %9 DescriptorSet 0
|
|
OpDecorate %9 Binding 1
|
|
OpDecorate %10 DescriptorSet 0
|
|
OpDecorate %10 Binding 2
|
|
%void = OpTypeVoid
|
|
%12 = OpTypeFunction %void
|
|
%bool = OpTypeBool
|
|
%uint = OpTypeInt 32 0
|
|
%true = OpConstantTrue %bool
|
|
%uint_0 = OpConstant %uint 0
|
|
%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
|
|
%_arr_uint_uint_2 = OpTypeArray %uint %uint_2
|
|
%_struct_2 = OpTypeStruct %_arr_uint_uint_2
|
|
%_ptr_Uniform__struct_2 = OpTypePointer Uniform %_struct_2
|
|
%9 = OpVariable %_ptr_Uniform__struct_2 Uniform
|
|
%_arr_uint_uint_3 = OpTypeArray %uint %uint_3
|
|
%_struct_4 = OpTypeStruct %_arr_uint_uint_3
|
|
%_ptr_Uniform__struct_4 = OpTypePointer Uniform %_struct_4
|
|
%8 = OpVariable %_ptr_Uniform__struct_4 Uniform
|
|
%_arr_uint_uint_11 = OpTypeArray %uint %uint_11
|
|
%_struct_6 = OpTypeStruct %_arr_uint_uint_11
|
|
%_ptr_Uniform__struct_6 = OpTypePointer Uniform %_struct_6
|
|
%10 = OpVariable %_ptr_Uniform__struct_6 Uniform
|
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
|
%1 = OpFunction %void None %12
|
|
%33 = OpLabel
|
|
%34 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%35 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%36 = OpVariable %_ptr_Function_uint Function %uint_0_0
|
|
%37 = OpLoad %uint %34
|
|
%38 = OpAccessChain %_ptr_Uniform_uint %10 %uint_0_0 %37
|
|
OpStore %38 %uint_8
|
|
%39 = OpIAdd %uint %37 %uint_1
|
|
OpStore %34 %39
|
|
OpBranch %40
|
|
%40 = OpLabel
|
|
%41 = OpLoad %uint %34
|
|
%42 = OpAccessChain %_ptr_Uniform_uint %10 %uint_0_0 %41
|
|
OpStore %42 %uint_9
|
|
%43 = OpIAdd %uint %41 %uint_1
|
|
OpStore %34 %43
|
|
%44 = OpLoad %uint %35
|
|
%45 = OpAccessChain %_ptr_Uniform_uint %8 %uint_0_0 %44
|
|
%46 = OpLoad %uint %45
|
|
%47 = OpIEqual %bool %46 %uint_1
|
|
%48 = OpIAdd %uint %44 %uint_1
|
|
OpStore %35 %48
|
|
OpLoopMerge %49 %50 None
|
|
OpBranchConditional %47 %51 %49
|
|
%51 = OpLabel
|
|
%52 = OpLoad %uint %34
|
|
%53 = OpAccessChain %_ptr_Uniform_uint %10 %uint_0_0 %52
|
|
OpStore %53 %uint_12
|
|
%54 = OpIAdd %uint %52 %uint_1
|
|
OpStore %34 %54
|
|
%55 = OpLoad %uint %36
|
|
%56 = OpAccessChain %_ptr_Uniform_uint %9 %uint_0_0 %55
|
|
%57 = OpLoad %uint %56
|
|
%58 = OpIEqual %bool %57 %uint_1
|
|
%59 = OpIAdd %uint %55 %uint_1
|
|
OpStore %36 %59
|
|
OpLoopMerge %60 %61 None
|
|
OpBranchConditional %58 %60 %60
|
|
%49 = OpLabel
|
|
%62 = OpLoad %uint %34
|
|
%63 = OpAccessChain %_ptr_Uniform_uint %10 %uint_0_0 %62
|
|
OpStore %63 %uint_10
|
|
%64 = OpIAdd %uint %62 %uint_1
|
|
OpStore %34 %64
|
|
OpReturn
|
|
%60 = OpLabel
|
|
%65 = OpLoad %uint %34
|
|
%66 = OpAccessChain %_ptr_Uniform_uint %10 %uint_0_0 %65
|
|
OpStore %66 %uint_13
|
|
%67 = OpIAdd %uint %65 %uint_1
|
|
OpStore %34 %67
|
|
OpBranch %50
|
|
%61 = OpLabel
|
|
OpBranch %51
|
|
%50 = OpLabel
|
|
%68 = OpLoad %uint %34
|
|
%69 = OpAccessChain %_ptr_Uniform_uint %10 %uint_0_0 %68
|
|
OpStore %69 %uint_11
|
|
%70 = OpIAdd %uint %68 %uint_1
|
|
OpStore %34 %70
|
|
OpBranch %40
|
|
OpFunctionEnd
|