xref: /aosp_15_r20/external/skia/tests/sksl/shared/ArrayCast.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor
5               OpExecutionMode %_entrypoint_v OriginUpperLeft
6               OpName %sk_FragColor "sk_FragColor"
7               OpName %_UniformBuffer "_UniformBuffer"
8               OpMemberName %_UniformBuffer 0 "colorGreen"
9               OpMemberName %_UniformBuffer 1 "colorRed"
10               OpName %_entrypoint_v "_entrypoint_v"
11               OpName %main "main"
12               OpName %f "f"
13               OpName %h "h"
14               OpName %i3 "i3"
15               OpName %s3 "s3"
16               OpName %h2x2 "h2x2"
17               OpName %f2x2 "f2x2"
18               OpDecorate %sk_FragColor RelaxedPrecision
19               OpDecorate %sk_FragColor Location 0
20               OpDecorate %sk_FragColor Index 0
21               OpMemberDecorate %_UniformBuffer 0 Offset 0
22               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
23               OpMemberDecorate %_UniformBuffer 1 Offset 16
24               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
25               OpDecorate %_UniformBuffer Block
26               OpDecorate %7 Binding 0
27               OpDecorate %7 DescriptorSet 0
28               OpDecorate %_arr_float_int_4 ArrayStride 16
29               OpDecorate %h RelaxedPrecision
30               OpDecorate %_arr_v3int_int_3 ArrayStride 16
31               OpDecorate %_arr_mat2v2float_int_2 ArrayStride 32
32               OpDecorate %96 RelaxedPrecision
33               OpDecorate %98 RelaxedPrecision
34               OpDecorate %99 RelaxedPrecision
35      %float = OpTypeFloat 32
36    %v4float = OpTypeVector %float 4
37%_ptr_Output_v4float = OpTypePointer Output %v4float
38%sk_FragColor = OpVariable %_ptr_Output_v4float Output
39%_UniformBuffer = OpTypeStruct %v4float %v4float
40%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
41          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
42       %void = OpTypeVoid
43         %12 = OpTypeFunction %void
44    %float_0 = OpConstant %float 0
45    %v2float = OpTypeVector %float 2
46         %16 = OpConstantComposite %v2float %float_0 %float_0
47%_ptr_Function_v2float = OpTypePointer Function %v2float
48         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
49        %int = OpTypeInt 32 1
50      %int_4 = OpConstant %int 4
51%_arr_float_int_4 = OpTypeArray %float %int_4
52%_ptr_Function__arr_float_int_4 = OpTypePointer Function %_arr_float_int_4
53    %float_1 = OpConstant %float 1
54    %float_2 = OpConstant %float 2
55    %float_3 = OpConstant %float 3
56    %float_4 = OpConstant %float 4
57      %v3int = OpTypeVector %int 3
58      %int_3 = OpConstant %int 3
59%_arr_v3int_int_3 = OpTypeArray %v3int %int_3
60%_ptr_Function__arr_v3int_int_3 = OpTypePointer Function %_arr_v3int_int_3
61      %int_1 = OpConstant %int 1
62         %40 = OpConstantComposite %v3int %int_1 %int_1 %int_1
63      %int_2 = OpConstant %int 2
64         %42 = OpConstantComposite %v3int %int_2 %int_2 %int_2
65         %43 = OpConstantComposite %v3int %int_3 %int_3 %int_3
66%mat2v2float = OpTypeMatrix %v2float 2
67%_arr_mat2v2float_int_2 = OpTypeArray %mat2v2float %int_2
68%_ptr_Function__arr_mat2v2float_int_2 = OpTypePointer Function %_arr_mat2v2float_int_2
69         %50 = OpConstantComposite %v2float %float_1 %float_2
70         %51 = OpConstantComposite %v2float %float_3 %float_4
71         %52 = OpConstantComposite %mat2v2float %50 %51
72    %float_5 = OpConstant %float 5
73    %float_6 = OpConstant %float 6
74    %float_7 = OpConstant %float 7
75    %float_8 = OpConstant %float 8
76         %57 = OpConstantComposite %v2float %float_5 %float_6
77         %58 = OpConstantComposite %v2float %float_7 %float_8
78         %59 = OpConstantComposite %mat2v2float %57 %58
79       %bool = OpTypeBool
80      %false = OpConstantFalse %bool
81       %true = OpConstantTrue %bool
82     %v2bool = OpTypeVector %bool 2
83%_ptr_Function_v4float = OpTypePointer Function %v4float
84%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
85      %int_0 = OpConstant %int 0
86%_entrypoint_v = OpFunction %void None %12
87         %13 = OpLabel
88         %17 = OpVariable %_ptr_Function_v2float Function
89               OpStore %17 %16
90         %19 = OpFunctionCall %v4float %main %17
91               OpStore %sk_FragColor %19
92               OpReturn
93               OpFunctionEnd
94       %main = OpFunction %v4float None %20
95         %21 = OpFunctionParameter %_ptr_Function_v2float
96         %22 = OpLabel
97          %f = OpVariable %_ptr_Function__arr_float_int_4 Function
98          %h = OpVariable %_ptr_Function__arr_float_int_4 Function
99         %i3 = OpVariable %_ptr_Function__arr_v3int_int_3 Function
100         %s3 = OpVariable %_ptr_Function__arr_v3int_int_3 Function
101       %h2x2 = OpVariable %_ptr_Function__arr_mat2v2float_int_2 Function
102       %f2x2 = OpVariable %_ptr_Function__arr_mat2v2float_int_2 Function
103         %88 = OpVariable %_ptr_Function_v4float Function
104         %32 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
105               OpStore %f %32
106               OpStore %h %32
107               OpStore %f %32
108               OpStore %h %32
109         %44 = OpCompositeConstruct %_arr_v3int_int_3 %40 %42 %43
110               OpStore %i3 %44
111               OpStore %s3 %44
112               OpStore %i3 %44
113               OpStore %s3 %44
114         %60 = OpCompositeConstruct %_arr_mat2v2float_int_2 %52 %59
115               OpStore %h2x2 %60
116               OpStore %f2x2 %60
117               OpStore %f2x2 %60
118               OpStore %h2x2 %60
119         %65 = OpLogicalAnd %bool %true %true
120         %66 = OpLogicalAnd %bool %true %65
121         %67 = OpLogicalAnd %bool %true %66
122               OpSelectionMerge %69 None
123               OpBranchConditional %67 %68 %69
124         %68 = OpLabel
125         %70 = OpLogicalAnd %bool %true %true
126         %71 = OpLogicalAnd %bool %true %70
127               OpBranch %69
128         %69 = OpLabel
129         %72 = OpPhi %bool %false %22 %71 %68
130               OpSelectionMerge %74 None
131               OpBranchConditional %72 %73 %74
132         %73 = OpLabel
133         %76 = OpFOrdEqual %v2bool %50 %50
134         %77 = OpAll %bool %76
135         %78 = OpFOrdEqual %v2bool %51 %51
136         %79 = OpAll %bool %78
137         %80 = OpLogicalAnd %bool %77 %79
138         %81 = OpFOrdEqual %v2bool %57 %57
139         %82 = OpAll %bool %81
140         %83 = OpFOrdEqual %v2bool %58 %58
141         %84 = OpAll %bool %83
142         %85 = OpLogicalAnd %bool %82 %84
143         %86 = OpLogicalAnd %bool %85 %80
144               OpBranch %74
145         %74 = OpLabel
146         %87 = OpPhi %bool %false %69 %86 %73
147               OpSelectionMerge %92 None
148               OpBranchConditional %87 %90 %91
149         %90 = OpLabel
150         %93 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
151         %96 = OpLoad %v4float %93
152               OpStore %88 %96
153               OpBranch %92
154         %91 = OpLabel
155         %97 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
156         %98 = OpLoad %v4float %97
157               OpStore %88 %98
158               OpBranch %92
159         %92 = OpLabel
160         %99 = OpLoad %v4float %88
161               OpReturnValue %99
162               OpFunctionEnd
163