118 lines
5.0 KiB
Plaintext
118 lines
5.0 KiB
Plaintext
|
; SPIR-V
|
||
|
; Version: 1.3
|
||
|
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||
|
; Bound: 65
|
||
|
; Schema: 0
|
||
|
OpCapability Shader
|
||
|
OpCapability VariablePointers
|
||
|
%1 = OpExtInstImport "GLSL.std.450"
|
||
|
OpMemoryModel Logical GLSL450
|
||
|
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID %gl_LocalInvocationID
|
||
|
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 %buf "buf"
|
||
|
OpName %cb "cb"
|
||
|
OpName %select_buffer "select_buffer"
|
||
|
OpName %select_input "select_input"
|
||
|
OpName %a "a"
|
||
|
OpMemberDecorate %foo 0 Offset 0
|
||
|
OpMemberDecorate %foo 1 Offset 512
|
||
|
OpMemberDecorate %foo 2 Offset 520
|
||
|
OpMemberDecorate %bar 0 Offset 0
|
||
|
OpDecorate %foo Block
|
||
|
OpDecorate %bar Block
|
||
|
OpDecorate %buf DescriptorSet 0
|
||
|
OpDecorate %buf Binding 0
|
||
|
OpDecorate %cb DescriptorSet 0
|
||
|
OpDecorate %cb Binding 1
|
||
|
OpDecorate %_ptr_StorageBuffer_int ArrayStride 4
|
||
|
OpDecorate %_arr_int_uint_128 ArrayStride 4
|
||
|
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
||
|
OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId
|
||
|
%void = OpTypeVoid
|
||
|
%15 = 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
|
||
|
%gl_LocalInvocationID = 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
|
||
|
%uint_0 = OpConstant %uint 0
|
||
|
%bool = OpTypeBool
|
||
|
%_ptr_Uniform_int = OpTypePointer Uniform %int
|
||
|
%28 = OpTypeFunction %_ptr_StorageBuffer_foo %_ptr_StorageBuffer_foo
|
||
|
%int_0 = OpConstant %int 0
|
||
|
%uint_1 = OpConstant %uint 1
|
||
|
%31 = OpConstantNull %_ptr_StorageBuffer_foo
|
||
|
%32 = OpTypeFunction %_ptr_Input_v3uint
|
||
|
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
|
||
|
%_ptr_Function__ptr_StorageBuffer_foo = OpTypePointer Function %_ptr_StorageBuffer_foo
|
||
|
%select_buffer = OpFunction %_ptr_StorageBuffer_foo None %28
|
||
|
%a = OpFunctionParameter %_ptr_StorageBuffer_foo
|
||
|
%33 = OpLabel
|
||
|
%34 = OpAccessChain %_ptr_Uniform_int %cb %uint_0
|
||
|
%35 = OpLoad %int %34
|
||
|
%36 = OpINotEqual %bool %35 %int_0
|
||
|
%37 = OpSelect %_ptr_StorageBuffer_foo %36 %a %31
|
||
|
OpReturnValue %37
|
||
|
OpFunctionEnd
|
||
|
%select_input = OpFunction %_ptr_Input_v3uint None %32
|
||
|
%38 = OpLabel
|
||
|
%39 = OpAccessChain %_ptr_Uniform_int %cb %uint_0
|
||
|
%40 = OpLoad %int %39
|
||
|
%41 = OpINotEqual %bool %40 %int_0
|
||
|
%42 = OpSelect %_ptr_Input_v3uint %41 %gl_GlobalInvocationID %gl_LocalInvocationID
|
||
|
OpReturnValue %42
|
||
|
OpFunctionEnd
|
||
|
%main = OpFunction %void None %15
|
||
|
%43 = OpLabel
|
||
|
%65 = OpVariable %_ptr_Function__ptr_StorageBuffer_foo Function
|
||
|
%44 = OpFunctionCall %_ptr_StorageBuffer_foo %select_buffer %buf
|
||
|
OpStore %65 %44
|
||
|
%45 = OpFunctionCall %_ptr_Input_v3uint %select_input
|
||
|
%66 = OpLoad %_ptr_StorageBuffer_foo %65
|
||
|
%46 = OpAccessChain %_ptr_StorageBuffer_int %66 %uint_0 %uint_0
|
||
|
%47 = OpAccessChain %_ptr_StorageBuffer_int %buf %uint_0 %uint_0
|
||
|
OpBranch %48
|
||
|
%48 = OpLabel
|
||
|
%49 = OpPhi %_ptr_StorageBuffer_int %46 %43 %50 %51
|
||
|
%52 = OpPhi %_ptr_StorageBuffer_int %47 %43 %53 %51
|
||
|
%54 = OpLoad %int %49
|
||
|
%55 = OpLoad %int %52
|
||
|
%56 = OpINotEqual %bool %54 %55
|
||
|
OpLoopMerge %58 %51 None
|
||
|
OpBranchConditional %56 %57 %58
|
||
|
%57 = OpLabel
|
||
|
%59 = OpIAdd %int %54 %55
|
||
|
%60 = OpLoad %v3uint %45
|
||
|
%61 = OpCompositeExtract %uint %60 0
|
||
|
%62 = OpBitcast %int %61
|
||
|
%63 = OpIAdd %int %59 %62
|
||
|
OpStore %49 %63
|
||
|
OpStore %52 %63
|
||
|
OpBranch %51
|
||
|
%51 = OpLabel
|
||
|
%50 = OpPtrAccessChain %_ptr_StorageBuffer_int %49 %uint_1
|
||
|
%53 = OpPtrAccessChain %_ptr_StorageBuffer_int %52 %uint_1
|
||
|
OpBranch %48
|
||
|
%58 = OpLabel
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|