xref: /aosp_15_r20/external/skia/tests/sksl/spirv/SpecializedFieldAccess.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %main "main"
5               OpExecutionMode %main OriginUpperLeft
6               OpName %StructB "StructB"
7               OpMemberName %StructB 0 "val"
8               OpName %StructA "StructA"
9               OpMemberName %StructA 0 "structB"
10               OpMemberName %StructA 1 "val"
11               OpName %testStorageBuffer "testStorageBuffer"
12               OpMemberName %testStorageBuffer 0 "testStructA"
13               OpMemberName %testStorageBuffer 1 "testArr"
14               OpName %testSecondStorageBuffer "testSecondStorageBuffer"
15               OpMemberName %testSecondStorageBuffer 0 "testStructArr"
16               OpName %foo_fff_testArr "foo_fff_testArr"
17               OpName %bar_fSf_testStructArr "bar_fSf_testStructArr"
18               OpName %main "main"
19               OpMemberDecorate %StructB 0 Offset 0
20               OpMemberDecorate %StructA 0 Offset 0
21               OpMemberDecorate %StructA 0 RelaxedPrecision
22               OpMemberDecorate %StructA 1 Offset 4
23               OpDecorate %_runtimearr_float ArrayStride 4
24               OpMemberDecorate %testStorageBuffer 0 Offset 0
25               OpMemberDecorate %testStorageBuffer 0 RelaxedPrecision
26               OpMemberDecorate %testStorageBuffer 1 Offset 8
27               OpDecorate %testStorageBuffer BufferBlock
28               OpDecorate %5 Binding 0
29               OpDecorate %5 DescriptorSet 0
30               OpDecorate %_runtimearr_StructA ArrayStride 8
31               OpMemberDecorate %testSecondStorageBuffer 0 Offset 0
32               OpMemberDecorate %testSecondStorageBuffer 0 RelaxedPrecision
33               OpDecorate %testSecondStorageBuffer BufferBlock
34               OpDecorate %12 Binding 1
35               OpDecorate %12 DescriptorSet 0
36      %float = OpTypeFloat 32
37    %StructB = OpTypeStruct %float
38    %StructA = OpTypeStruct %StructB %float
39%_runtimearr_float = OpTypeRuntimeArray %float
40%testStorageBuffer = OpTypeStruct %StructA %_runtimearr_float
41%_ptr_Uniform_testStorageBuffer = OpTypePointer Uniform %testStorageBuffer
42          %5 = OpVariable %_ptr_Uniform_testStorageBuffer Uniform
43%_runtimearr_StructA = OpTypeRuntimeArray %StructA
44%testSecondStorageBuffer = OpTypeStruct %_runtimearr_StructA
45%_ptr_Uniform_testSecondStorageBuffer = OpTypePointer Uniform %testSecondStorageBuffer
46         %12 = OpVariable %_ptr_Uniform_testSecondStorageBuffer Uniform
47%_ptr_Function_float = OpTypePointer Function %float
48         %17 = OpTypeFunction %float %_ptr_Function_float
49        %int = OpTypeInt 32 1
50      %int_1 = OpConstant %int 1
51%_ptr_Uniform_float = OpTypePointer Uniform %float
52      %int_0 = OpConstant %int 0
53       %void = OpTypeVoid
54         %35 = OpTypeFunction %void
55%foo_fff_testArr = OpFunction %float None %17
56         %18 = OpFunctionParameter %_ptr_Function_float
57         %19 = OpLabel
58         %22 = OpLoad %float %18
59         %23 = OpConvertFToS %int %22
60         %24 = OpAccessChain %_ptr_Uniform_float %5 %int_1 %23
61         %26 = OpLoad %float %24
62               OpReturnValue %26
63               OpFunctionEnd
64%bar_fSf_testStructArr = OpFunction %float None %17
65         %27 = OpFunctionParameter %_ptr_Function_float
66         %28 = OpLabel
67         %30 = OpLoad %float %27
68         %31 = OpConvertFToS %int %30
69         %32 = OpAccessChain %_ptr_Uniform_float %12 %int_0 %31 %int_0 %int_0
70         %33 = OpLoad %float %32
71               OpReturnValue %33
72               OpFunctionEnd
73       %main = OpFunction %void None %35
74         %36 = OpLabel
75         %39 = OpVariable %_ptr_Function_float Function
76         %43 = OpVariable %_ptr_Function_float Function
77         %47 = OpVariable %_ptr_Function_float Function
78         %37 = OpAccessChain %_ptr_Uniform_float %5 %int_0 %int_1
79         %38 = OpLoad %float %37
80               OpStore %39 %38
81         %40 = OpFunctionCall %float %foo_fff_testArr %39
82         %41 = OpAccessChain %_ptr_Uniform_float %5 %int_0 %int_0 %int_0
83         %42 = OpLoad %float %41
84               OpStore %43 %42
85         %44 = OpFunctionCall %float %foo_fff_testArr %43
86         %45 = OpAccessChain %_ptr_Uniform_float %5 %int_0 %int_0 %int_0
87         %46 = OpLoad %float %45
88               OpStore %47 %46
89         %48 = OpFunctionCall %float %bar_fSf_testStructArr %47
90               OpReturn
91               OpFunctionEnd
92