153 lines
6.7 KiB
Plaintext
153 lines
6.7 KiB
Plaintext
|
; SPIR-V
|
||
|
; Version: 1.3
|
||
|
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||
|
; Bound: 89
|
||
|
; Schema: 0
|
||
|
OpCapability Shader
|
||
|
OpCapability VariablePointers
|
||
|
%1 = OpExtInstImport "GLSL.std.450"
|
||
|
OpMemoryModel Logical GLSL450
|
||
|
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
|
||
|
OpExecutionMode %main LocalSize 1 1 1
|
||
|
OpSource GLSL 450
|
||
|
OpName %main "main"
|
||
|
OpName %foo "foo"
|
||
|
OpMemberName %foo 0 "a"
|
||
|
OpMemberName %foo 1 "b"
|
||
|
OpMemberName %foo 2 "c"
|
||
|
OpName %bar "bar"
|
||
|
OpMemberName %bar 0 "d"
|
||
|
OpName %baz "baz"
|
||
|
OpMemberName %baz 0 "e"
|
||
|
OpName %buf "buf"
|
||
|
OpName %buf2 "buf2"
|
||
|
OpName %cb "cb"
|
||
|
OpName %tgsm "tgsm"
|
||
|
OpName %sbuf "sbuf"
|
||
|
OpName %sbuf2 "sbuf2"
|
||
|
OpName %stgsm "stgsm"
|
||
|
OpName %select_buffer "select_buffer"
|
||
|
OpName %select_buffer_null "select_buffer_null"
|
||
|
OpName %select_tgsm "select_tgsm"
|
||
|
OpName %cur "cur"
|
||
|
OpMemberDecorate %foo 0 Offset 0
|
||
|
OpMemberDecorate %foo 1 Offset 512
|
||
|
OpMemberDecorate %foo 2 Offset 520
|
||
|
OpMemberDecorate %bar 0 Offset 0
|
||
|
OpMemberDecorate %baz 0 Offset 0
|
||
|
OpDecorate %foo Block
|
||
|
OpDecorate %bar Block
|
||
|
OpDecorate %baz Block
|
||
|
OpDecorate %buf DescriptorSet 0
|
||
|
OpDecorate %buf Binding 0
|
||
|
OpDecorate %cb DescriptorSet 0
|
||
|
OpDecorate %cb Binding 3
|
||
|
OpDecorate %buf2 DescriptorSet 0
|
||
|
OpDecorate %buf2 Binding 4
|
||
|
OpDecorate %_ptr_Workgroup_int ArrayStride 4
|
||
|
OpDecorate %_ptr_StorageBuffer_int ArrayStride 4
|
||
|
OpDecorate %_arr_int_uint_128 ArrayStride 4
|
||
|
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
||
|
%void = OpTypeVoid
|
||
|
%22 = OpTypeFunction %void
|
||
|
%int = OpTypeInt 32 1
|
||
|
%uint = OpTypeInt 32 0
|
||
|
%v3uint = OpTypeVector %uint 3
|
||
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||
|
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
||
|
%uint_128 = OpConstant %uint 128
|
||
|
%_arr_int_uint_128 = OpTypeArray %int %uint_128
|
||
|
%float = OpTypeFloat 32
|
||
|
%v2float = OpTypeVector %float 2
|
||
|
%foo = OpTypeStruct %_arr_int_uint_128 %uint %v2float
|
||
|
%_ptr_StorageBuffer_foo = OpTypePointer StorageBuffer %foo
|
||
|
%buf = OpVariable %_ptr_StorageBuffer_foo StorageBuffer
|
||
|
%bar = OpTypeStruct %int
|
||
|
%_ptr_Uniform_bar = OpTypePointer Uniform %bar
|
||
|
%cb = OpVariable %_ptr_Uniform_bar Uniform
|
||
|
%baz = OpTypeStruct %_arr_int_uint_128
|
||
|
%_ptr_StorageBuffer_baz = OpTypePointer StorageBuffer %baz
|
||
|
%buf2 = OpVariable %_ptr_StorageBuffer_baz StorageBuffer
|
||
|
%_ptr_Workgroup__arr_int_uint_128 = OpTypePointer Workgroup %_arr_int_uint_128
|
||
|
%tgsm = OpVariable %_ptr_Workgroup__arr_int_uint_128 Workgroup
|
||
|
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
|
||
|
%_ptr_Private__ptr_StorageBuffer_int = OpTypePointer Private %_ptr_StorageBuffer_int
|
||
|
%sbuf = OpVariable %_ptr_Private__ptr_StorageBuffer_int Private
|
||
|
%sbuf2 = OpVariable %_ptr_Private__ptr_StorageBuffer_int Private
|
||
|
%_ptr_Workgroup_int = OpTypePointer Workgroup %int
|
||
|
%_ptr_Private__ptr_Workgroup_int = OpTypePointer Private %_ptr_Workgroup_int
|
||
|
%stgsm = OpVariable %_ptr_Private__ptr_Workgroup_int Private
|
||
|
%uint_0 = OpConstant %uint 0
|
||
|
%bool = OpTypeBool
|
||
|
%_ptr_Uniform_int = OpTypePointer Uniform %int
|
||
|
%44 = OpTypeFunction %_ptr_StorageBuffer_int
|
||
|
%int_0 = OpConstant %int 0
|
||
|
%uint_1 = OpConstant %uint 1
|
||
|
%47 = OpConstantNull %_ptr_StorageBuffer_int
|
||
|
%48 = OpTypeFunction %_ptr_Workgroup_int
|
||
|
%49 = OpConstantNull %_ptr_Workgroup_int
|
||
|
%_ptr_Function__ptr_Workgroup_int = OpTypePointer Function %_ptr_Workgroup_int
|
||
|
%select_buffer = OpFunction %_ptr_StorageBuffer_int None %44
|
||
|
%51 = OpLabel
|
||
|
%52 = OpAccessChain %_ptr_Uniform_int %cb %uint_0
|
||
|
%53 = OpLoad %int %52
|
||
|
%54 = OpINotEqual %bool %53 %int_0
|
||
|
%55 = OpAccessChain %_ptr_StorageBuffer_int %buf %uint_0 %uint_0
|
||
|
%56 = OpAccessChain %_ptr_StorageBuffer_int %buf2 %uint_0 %uint_0
|
||
|
%57 = OpSelect %_ptr_StorageBuffer_int %54 %55 %56
|
||
|
OpReturnValue %57
|
||
|
OpFunctionEnd
|
||
|
%select_buffer_null = OpFunction %_ptr_StorageBuffer_int None %44
|
||
|
%58 = OpLabel
|
||
|
%59 = OpAccessChain %_ptr_Uniform_int %cb %uint_0
|
||
|
%60 = OpLoad %int %59
|
||
|
%61 = OpINotEqual %bool %60 %int_0
|
||
|
%62 = OpAccessChain %_ptr_StorageBuffer_int %buf %uint_0 %uint_0
|
||
|
%63 = OpSelect %_ptr_StorageBuffer_int %61 %62 %47
|
||
|
OpReturnValue %63
|
||
|
OpFunctionEnd
|
||
|
%select_tgsm = OpFunction %_ptr_Workgroup_int None %48
|
||
|
%64 = OpLabel
|
||
|
%65 = OpAccessChain %_ptr_Uniform_int %cb %uint_0
|
||
|
%66 = OpLoad %int %65
|
||
|
%67 = OpINotEqual %bool %66 %int_0
|
||
|
%68 = OpAccessChain %_ptr_Workgroup_int %tgsm %uint_0
|
||
|
%69 = OpSelect %_ptr_Workgroup_int %67 %68 %49
|
||
|
OpReturnValue %69
|
||
|
OpFunctionEnd
|
||
|
%main = OpFunction %void None %22
|
||
|
%70 = OpLabel
|
||
|
%cur = OpVariable %_ptr_Function__ptr_Workgroup_int Function
|
||
|
%71 = OpFunctionCall %_ptr_StorageBuffer_int %select_buffer
|
||
|
OpStore %sbuf %71
|
||
|
%72 = OpFunctionCall %_ptr_StorageBuffer_int %select_buffer_null
|
||
|
OpStore %sbuf2 %72
|
||
|
%73 = OpFunctionCall %_ptr_Workgroup_int %select_tgsm
|
||
|
OpStore %stgsm %73
|
||
|
%74 = OpAccessChain %_ptr_StorageBuffer_int %buf %uint_0 %uint_0
|
||
|
%75 = OpLoad %_ptr_Workgroup_int %stgsm
|
||
|
%76 = OpCopyObject %_ptr_Workgroup_int %75
|
||
|
OpStore %cur %76
|
||
|
OpBranch %77
|
||
|
%77 = OpLabel
|
||
|
%78 = OpPhi %_ptr_StorageBuffer_int %74 %70 %79 %80
|
||
|
%81 = OpLoad %_ptr_Workgroup_int %cur
|
||
|
%82 = OpLoad %int %78
|
||
|
%83 = OpINotEqual %bool %82 %int_0
|
||
|
OpLoopMerge %85 %80 None
|
||
|
OpBranchConditional %83 %84 %85
|
||
|
%84 = OpLabel
|
||
|
%86 = OpLoad %int %81
|
||
|
%87 = OpIAdd %int %82 %86
|
||
|
OpStore %78 %87
|
||
|
OpStore %81 %87
|
||
|
OpBranch %80
|
||
|
%80 = OpLabel
|
||
|
%79 = OpPtrAccessChain %_ptr_StorageBuffer_int %78 %uint_1
|
||
|
%88 = OpPtrAccessChain %_ptr_Workgroup_int %81 %uint_1
|
||
|
OpStore %cur %88
|
||
|
OpBranch %77
|
||
|
%85 = OpLabel
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|