| ; SPIR-V |
| ; Version: 1.0 |
| ; Generator: Khronos Glslang Reference Front End; 10 |
| ; Bound: 82 |
| ; Schema: 0 |
| OpCapability Shader |
| %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 %binaryOperation_f1_f1_ "binaryOperation(f1;f1;" |
| OpName %a "a" |
| OpName %b "b" |
| OpName %index "index" |
| OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" |
| OpName %a_0 "a" |
| OpName %ResultMatrix "ResultMatrix" |
| OpMemberName %ResultMatrix 0 "numbers" |
| OpName %resultMatrix "resultMatrix" |
| OpName %param "param" |
| OpName %param_0 "param" |
| OpName %FirstMatrix "FirstMatrix" |
| OpMemberName %FirstMatrix 0 "numbers" |
| OpName %firstMatrix "firstMatrix" |
| OpName %SecondMatrix "SecondMatrix" |
| OpMemberName %SecondMatrix 0 "numbers" |
| OpName %secondMatrix "secondMatrix" |
| OpName %Uniforms "Uniforms" |
| OpMemberName %Uniforms 0 "NAN" |
| OpMemberName %Uniforms 1 "sizeA" |
| OpMemberName %Uniforms 2 "sizeB" |
| OpName %_ "" |
| OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId |
| OpDecorate %_runtimearr_float ArrayStride 4 |
| OpMemberDecorate %ResultMatrix 0 Offset 0 |
| OpDecorate %ResultMatrix BufferBlock |
| OpDecorate %resultMatrix DescriptorSet 0 |
| OpDecorate %resultMatrix Binding 2 |
| OpDecorate %_runtimearr_float_0 ArrayStride 4 |
| OpMemberDecorate %FirstMatrix 0 NonWritable |
| OpMemberDecorate %FirstMatrix 0 Offset 0 |
| OpDecorate %FirstMatrix BufferBlock |
| OpDecorate %firstMatrix DescriptorSet 0 |
| OpDecorate %firstMatrix Binding 0 |
| OpDecorate %_runtimearr_float_1 ArrayStride 4 |
| OpMemberDecorate %SecondMatrix 0 NonWritable |
| OpMemberDecorate %SecondMatrix 0 Offset 0 |
| OpDecorate %SecondMatrix BufferBlock |
| OpDecorate %secondMatrix DescriptorSet 0 |
| OpDecorate %secondMatrix Binding 1 |
| OpMemberDecorate %Uniforms 0 Offset 0 |
| OpMemberDecorate %Uniforms 1 Offset 4 |
| OpMemberDecorate %Uniforms 2 Offset 8 |
| OpDecorate %Uniforms Block |
| OpDecorate %_ DescriptorSet 0 |
| OpDecorate %_ Binding 3 |
| %void = OpTypeVoid |
| %3 = OpTypeFunction %void |
| %float = OpTypeFloat 32 |
| %_ptr_Function_float = OpTypePointer Function %float |
| %8 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float |
| %float_0 = OpConstant %float 0 |
| %bool = OpTypeBool |
| %float_1 = OpConstant %float 1 |
| %float_2 = OpConstant %float 2 |
| %int = OpTypeInt 32 1 |
| %_ptr_Function_int = OpTypePointer Function %int |
| %uint = OpTypeInt 32 0 |
| %v3uint = OpTypeVector %uint 3 |
| %_ptr_Input_v3uint = OpTypePointer Input %v3uint |
| %gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input |
| %uint_0 = OpConstant %uint 0 |
| %_ptr_Input_uint = OpTypePointer Input %uint |
| %int_n10 = OpConstant %int -10 |
| %_runtimearr_float = OpTypeRuntimeArray %float |
| %ResultMatrix = OpTypeStruct %_runtimearr_float |
| %_ptr_Uniform_ResultMatrix = OpTypePointer Uniform %ResultMatrix |
| %resultMatrix = OpVariable %_ptr_Uniform_ResultMatrix Uniform |
| %int_0 = OpConstant %int 0 |
| %float_n4 = OpConstant %float -4 |
| %float_n3 = OpConstant %float -3 |
| %_ptr_Uniform_float = OpTypePointer Uniform %float |
| %_runtimearr_float_0 = OpTypeRuntimeArray %float |
| %FirstMatrix = OpTypeStruct %_runtimearr_float_0 |
| %_ptr_Uniform_FirstMatrix = OpTypePointer Uniform %FirstMatrix |
| %firstMatrix = OpVariable %_ptr_Uniform_FirstMatrix Uniform |
| %_runtimearr_float_1 = OpTypeRuntimeArray %float |
| %SecondMatrix = OpTypeStruct %_runtimearr_float_1 |
| %_ptr_Uniform_SecondMatrix = OpTypePointer Uniform %SecondMatrix |
| %secondMatrix = OpVariable %_ptr_Uniform_SecondMatrix Uniform |
| %Uniforms = OpTypeStruct %float %int %int |
| %_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms |
| %_ = OpVariable %_ptr_Uniform_Uniforms Uniform |
| %main = OpFunction %void None %3 |
| %5 = OpLabel |
| %index = OpVariable %_ptr_Function_int Function |
| %a_0 = OpVariable %_ptr_Function_int Function |
| %param = OpVariable %_ptr_Function_float Function |
| %param_0 = OpVariable %_ptr_Function_float Function |
| %53 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0 |
| %54 = OpLoad %uint %53 |
| %55 = OpBitcast %int %54 |
| OpStore %index %55 |
| OpStore %a_0 %int_n10 |
| %63 = OpLoad %int %index |
| OpStore %param %float_n4 |
| OpStore %param_0 %float_n3 |
| %68 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_0 |
| %70 = OpAccessChain %_ptr_Uniform_float %resultMatrix %int_0 %63 |
| OpStore %70 %68 |
| OpReturn |
| OpFunctionEnd |
| %binaryOperation_f1_f1_ = OpFunction %float None %8 |
| %a = OpFunctionParameter %_ptr_Function_float |
| %b = OpFunctionParameter %_ptr_Function_float |
| %12 = OpLabel |
| %26 = OpVariable %_ptr_Function_float Function |
| %13 = OpLoad %float %b |
| %16 = OpFOrdEqual %bool %13 %float_0 |
| OpSelectionMerge %18 None |
| OpBranchConditional %16 %17 %18 |
| %17 = OpLabel |
| OpReturnValue %float_1 |
| %18 = OpLabel |
| %21 = OpLoad %float %b |
| %23 = OpFMod %float %21 %float_2 |
| %24 = OpExtInst %float %1 Round %23 |
| %25 = OpFUnordNotEqual %bool %24 %float_1 |
| OpSelectionMerge %28 None |
| OpBranchConditional %25 %27 %33 |
| %27 = OpLabel |
| %29 = OpLoad %float %a |
| %30 = OpExtInst %float %1 FAbs %29 |
| %31 = OpLoad %float %b |
| %32 = OpExtInst %float %1 Pow %30 %31 |
| OpStore %26 %32 |
| OpBranch %28 |
| %33 = OpLabel |
| %34 = OpLoad %float %a |
| %35 = OpExtInst %float %1 FSign %34 |
| %36 = OpLoad %float %a |
| %37 = OpExtInst %float %1 FAbs %36 |
| %38 = OpLoad %float %b |
| %39 = OpExtInst %float %1 Pow %37 %38 |
| %40 = OpFMul %float %35 %39 |
| OpStore %26 %40 |
| OpBranch %28 |
| %28 = OpLabel |
| %41 = OpLoad %float %26 |
| OpReturnValue %41 |
| OpFunctionEnd |