xref: /aosp_15_r20/external/skia/tests/sksl/spirv/InterfaceBlockPushConstant.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %main "main" %sk_FragColor
5               OpExecutionMode %main OriginUpperLeft
6               OpName %testBlock "testBlock"
7               OpMemberName %testBlock 0 "m1"
8               OpMemberName %testBlock 1 "m2"
9               OpName %sk_FragColor "sk_FragColor"
10               OpName %main "main"
11               OpMemberDecorate %testBlock 0 Offset 16
12               OpMemberDecorate %testBlock 0 ColMajor
13               OpMemberDecorate %testBlock 0 MatrixStride 8
14               OpMemberDecorate %testBlock 0 RelaxedPrecision
15               OpMemberDecorate %testBlock 1 Offset 32
16               OpMemberDecorate %testBlock 1 ColMajor
17               OpMemberDecorate %testBlock 1 MatrixStride 8
18               OpMemberDecorate %testBlock 1 RelaxedPrecision
19               OpDecorate %testBlock Block
20               OpDecorate %sk_FragColor RelaxedPrecision
21               OpDecorate %sk_FragColor Location 0
22               OpDecorate %sk_FragColor Index 0
23               OpDecorate %19 RelaxedPrecision
24               OpDecorate %20 RelaxedPrecision
25               OpDecorate %23 RelaxedPrecision
26               OpDecorate %24 RelaxedPrecision
27               OpDecorate %26 RelaxedPrecision
28               OpDecorate %27 RelaxedPrecision
29               OpDecorate %29 RelaxedPrecision
30               OpDecorate %30 RelaxedPrecision
31               OpDecorate %31 RelaxedPrecision
32      %float = OpTypeFloat 32
33    %v2float = OpTypeVector %float 2
34%mat2v2float = OpTypeMatrix %v2float 2
35  %testBlock = OpTypeStruct %mat2v2float %mat2v2float
36%_ptr_PushConstant_testBlock = OpTypePointer PushConstant %testBlock
37          %3 = OpVariable %_ptr_PushConstant_testBlock PushConstant
38    %v4float = OpTypeVector %float 4
39%_ptr_Output_v4float = OpTypePointer Output %v4float
40%sk_FragColor = OpVariable %_ptr_Output_v4float Output
41       %void = OpTypeVoid
42         %13 = OpTypeFunction %void
43        %int = OpTypeInt 32 1
44      %int_0 = OpConstant %int 0
45%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
46      %int_1 = OpConstant %int 1
47       %main = OpFunction %void None %13
48         %14 = OpLabel
49         %17 = OpAccessChain %_ptr_PushConstant_v2float %3 %int_0 %int_0
50         %19 = OpLoad %v2float %17
51         %20 = OpCompositeExtract %float %19 0
52         %22 = OpAccessChain %_ptr_PushConstant_v2float %3 %int_0 %int_1
53         %23 = OpLoad %v2float %22
54         %24 = OpCompositeExtract %float %23 1
55         %25 = OpAccessChain %_ptr_PushConstant_v2float %3 %int_1 %int_0
56         %26 = OpLoad %v2float %25
57         %27 = OpCompositeExtract %float %26 0
58         %28 = OpAccessChain %_ptr_PushConstant_v2float %3 %int_1 %int_1
59         %29 = OpLoad %v2float %28
60         %30 = OpCompositeExtract %float %29 1
61         %31 = OpCompositeConstruct %v4float %20 %24 %27 %30
62               OpStore %sk_FragColor %31
63               OpReturn
64               OpFunctionEnd
65