xref: /aosp_15_r20/external/skia/tests/sksl/shared/StructsInFunctions.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker               OpCapability Shader
2*c8dee2aaSAndroid Build Coastguard Worker          %1 = OpExtInstImport "GLSL.std.450"
3*c8dee2aaSAndroid Build Coastguard Worker               OpMemoryModel Logical GLSL450
4*c8dee2aaSAndroid Build Coastguard Worker               OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor
5*c8dee2aaSAndroid Build Coastguard Worker               OpExecutionMode %_entrypoint_v OriginUpperLeft
6*c8dee2aaSAndroid Build Coastguard Worker               OpName %sk_FragColor "sk_FragColor"
7*c8dee2aaSAndroid Build Coastguard Worker               OpName %_UniformBuffer "_UniformBuffer"
8*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %_UniformBuffer 0 "colorRed"
9*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %_UniformBuffer 1 "colorGreen"
10*c8dee2aaSAndroid Build Coastguard Worker               OpName %_entrypoint_v "_entrypoint_v"
11*c8dee2aaSAndroid Build Coastguard Worker               OpName %S "S"
12*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %S 0 "x"
13*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %S 1 "y"
14*c8dee2aaSAndroid Build Coastguard Worker               OpName %returns_a_struct_S "returns_a_struct_S"
15*c8dee2aaSAndroid Build Coastguard Worker               OpName %s "s"
16*c8dee2aaSAndroid Build Coastguard Worker               OpName %constructs_a_struct_S "constructs_a_struct_S"
17*c8dee2aaSAndroid Build Coastguard Worker               OpName %accepts_a_struct_fS "accepts_a_struct_fS"
18*c8dee2aaSAndroid Build Coastguard Worker               OpName %modifies_a_struct_vS "modifies_a_struct_vS"
19*c8dee2aaSAndroid Build Coastguard Worker               OpName %main "main"
20*c8dee2aaSAndroid Build Coastguard Worker               OpName %s_0 "s"
21*c8dee2aaSAndroid Build Coastguard Worker               OpName %x "x"
22*c8dee2aaSAndroid Build Coastguard Worker               OpName %expected "expected"
23*c8dee2aaSAndroid Build Coastguard Worker               OpName %Nested "Nested"
24*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %Nested 0 "a"
25*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %Nested 1 "b"
26*c8dee2aaSAndroid Build Coastguard Worker               OpName %n1 "n1"
27*c8dee2aaSAndroid Build Coastguard Worker               OpName %n2 "n2"
28*c8dee2aaSAndroid Build Coastguard Worker               OpName %n3 "n3"
29*c8dee2aaSAndroid Build Coastguard Worker               OpName %Compound "Compound"
30*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %Compound 0 "f4"
31*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %Compound 1 "i3"
32*c8dee2aaSAndroid Build Coastguard Worker               OpName %c1 "c1"
33*c8dee2aaSAndroid Build Coastguard Worker               OpName %c2 "c2"
34*c8dee2aaSAndroid Build Coastguard Worker               OpName %c3 "c3"
35*c8dee2aaSAndroid Build Coastguard Worker               OpName %valid "valid"
36*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %sk_FragColor RelaxedPrecision
37*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %sk_FragColor Location 0
38*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %sk_FragColor Index 0
39*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %_UniformBuffer 0 Offset 0
40*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
41*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %_UniformBuffer 1 Offset 16
42*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
43*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %_UniformBuffer Block
44*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %11 Binding 0
45*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %11 DescriptorSet 0
46*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %S 0 Offset 0
47*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %S 1 Offset 4
48*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %38 RelaxedPrecision
49*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %Nested 0 Offset 0
50*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %Nested 0 RelaxedPrecision
51*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %Nested 1 Offset 16
52*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %Nested 1 RelaxedPrecision
53*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %82 RelaxedPrecision
54*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %84 RelaxedPrecision
55*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %86 RelaxedPrecision
56*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %Compound 0 Offset 0
57*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %Compound 1 Offset 16
58*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %105 RelaxedPrecision
59*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %106 RelaxedPrecision
60*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %111 RelaxedPrecision
61*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %112 RelaxedPrecision
62*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %135 RelaxedPrecision
63*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %136 RelaxedPrecision
64*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %147 RelaxedPrecision
65*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %157 RelaxedPrecision
66*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %169 RelaxedPrecision
67*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %170 RelaxedPrecision
68*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %193 RelaxedPrecision
69*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %194 RelaxedPrecision
70*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %217 RelaxedPrecision
71*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %255 RelaxedPrecision
72*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %257 RelaxedPrecision
73*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %258 RelaxedPrecision
74*c8dee2aaSAndroid Build Coastguard Worker      %float = OpTypeFloat 32
75*c8dee2aaSAndroid Build Coastguard Worker    %v4float = OpTypeVector %float 4
76*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Output_v4float = OpTypePointer Output %v4float
77*c8dee2aaSAndroid Build Coastguard Worker%sk_FragColor = OpVariable %_ptr_Output_v4float Output
78*c8dee2aaSAndroid Build Coastguard Worker%_UniformBuffer = OpTypeStruct %v4float %v4float
79*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
80*c8dee2aaSAndroid Build Coastguard Worker         %11 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
81*c8dee2aaSAndroid Build Coastguard Worker       %void = OpTypeVoid
82*c8dee2aaSAndroid Build Coastguard Worker         %16 = OpTypeFunction %void
83*c8dee2aaSAndroid Build Coastguard Worker    %float_0 = OpConstant %float 0
84*c8dee2aaSAndroid Build Coastguard Worker    %v2float = OpTypeVector %float 2
85*c8dee2aaSAndroid Build Coastguard Worker         %20 = OpConstantComposite %v2float %float_0 %float_0
86*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_v2float = OpTypePointer Function %v2float
87*c8dee2aaSAndroid Build Coastguard Worker        %int = OpTypeInt 32 1
88*c8dee2aaSAndroid Build Coastguard Worker          %S = OpTypeStruct %float %int
89*c8dee2aaSAndroid Build Coastguard Worker         %26 = OpTypeFunction %S
90*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_S = OpTypePointer Function %S
91*c8dee2aaSAndroid Build Coastguard Worker    %float_1 = OpConstant %float 1
92*c8dee2aaSAndroid Build Coastguard Worker      %int_0 = OpConstant %int 0
93*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_float = OpTypePointer Function %float
94*c8dee2aaSAndroid Build Coastguard Worker      %int_2 = OpConstant %int 2
95*c8dee2aaSAndroid Build Coastguard Worker      %int_1 = OpConstant %int 1
96*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_int = OpTypePointer Function %int
97*c8dee2aaSAndroid Build Coastguard Worker    %float_2 = OpConstant %float 2
98*c8dee2aaSAndroid Build Coastguard Worker      %int_3 = OpConstant %int 3
99*c8dee2aaSAndroid Build Coastguard Worker         %43 = OpTypeFunction %float %_ptr_Function_S
100*c8dee2aaSAndroid Build Coastguard Worker         %52 = OpTypeFunction %void %_ptr_Function_S
101*c8dee2aaSAndroid Build Coastguard Worker         %61 = OpTypeFunction %v4float %_ptr_Function_v2float
102*c8dee2aaSAndroid Build Coastguard Worker     %Nested = OpTypeStruct %S %S
103*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_Nested = OpTypePointer Function %Nested
104*c8dee2aaSAndroid Build Coastguard Worker      %v3int = OpTypeVector %int 3
105*c8dee2aaSAndroid Build Coastguard Worker   %Compound = OpTypeStruct %v4float %v3int
106*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_Compound = OpTypePointer Function %Compound
107*c8dee2aaSAndroid Build Coastguard Worker    %float_3 = OpConstant %float 3
108*c8dee2aaSAndroid Build Coastguard Worker    %float_4 = OpConstant %float 4
109*c8dee2aaSAndroid Build Coastguard Worker         %96 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
110*c8dee2aaSAndroid Build Coastguard Worker      %int_5 = OpConstant %int 5
111*c8dee2aaSAndroid Build Coastguard Worker      %int_6 = OpConstant %int 6
112*c8dee2aaSAndroid Build Coastguard Worker      %int_7 = OpConstant %int 7
113*c8dee2aaSAndroid Build Coastguard Worker        %100 = OpConstantComposite %v3int %int_5 %int_6 %int_7
114*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
115*c8dee2aaSAndroid Build Coastguard Worker       %bool = OpTypeBool
116*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_bool = OpTypePointer Function %bool
117*c8dee2aaSAndroid Build Coastguard Worker      %false = OpConstantFalse %bool
118*c8dee2aaSAndroid Build Coastguard Worker     %v4bool = OpTypeVector %bool 4
119*c8dee2aaSAndroid Build Coastguard Worker       %true = OpConstantTrue %bool
120*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_v4float = OpTypePointer Function %v4float
121*c8dee2aaSAndroid Build Coastguard Worker%_entrypoint_v = OpFunction %void None %16
122*c8dee2aaSAndroid Build Coastguard Worker         %17 = OpLabel
123*c8dee2aaSAndroid Build Coastguard Worker         %21 = OpVariable %_ptr_Function_v2float Function
124*c8dee2aaSAndroid Build Coastguard Worker               OpStore %21 %20
125*c8dee2aaSAndroid Build Coastguard Worker         %23 = OpFunctionCall %v4float %main %21
126*c8dee2aaSAndroid Build Coastguard Worker               OpStore %sk_FragColor %23
127*c8dee2aaSAndroid Build Coastguard Worker               OpReturn
128*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
129*c8dee2aaSAndroid Build Coastguard Worker%returns_a_struct_S = OpFunction %S None %26
130*c8dee2aaSAndroid Build Coastguard Worker         %27 = OpLabel
131*c8dee2aaSAndroid Build Coastguard Worker          %s = OpVariable %_ptr_Function_S Function
132*c8dee2aaSAndroid Build Coastguard Worker         %32 = OpAccessChain %_ptr_Function_float %s %int_0
133*c8dee2aaSAndroid Build Coastguard Worker               OpStore %32 %float_1
134*c8dee2aaSAndroid Build Coastguard Worker         %36 = OpAccessChain %_ptr_Function_int %s %int_1
135*c8dee2aaSAndroid Build Coastguard Worker               OpStore %36 %int_2
136*c8dee2aaSAndroid Build Coastguard Worker         %38 = OpLoad %S %s
137*c8dee2aaSAndroid Build Coastguard Worker               OpReturnValue %38
138*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
139*c8dee2aaSAndroid Build Coastguard Worker%constructs_a_struct_S = OpFunction %S None %26
140*c8dee2aaSAndroid Build Coastguard Worker         %39 = OpLabel
141*c8dee2aaSAndroid Build Coastguard Worker         %42 = OpCompositeConstruct %S %float_2 %int_3
142*c8dee2aaSAndroid Build Coastguard Worker               OpReturnValue %42
143*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
144*c8dee2aaSAndroid Build Coastguard Worker%accepts_a_struct_fS = OpFunction %float None %43
145*c8dee2aaSAndroid Build Coastguard Worker         %44 = OpFunctionParameter %_ptr_Function_S
146*c8dee2aaSAndroid Build Coastguard Worker         %45 = OpLabel
147*c8dee2aaSAndroid Build Coastguard Worker         %46 = OpAccessChain %_ptr_Function_float %44 %int_0
148*c8dee2aaSAndroid Build Coastguard Worker         %47 = OpLoad %float %46
149*c8dee2aaSAndroid Build Coastguard Worker         %48 = OpAccessChain %_ptr_Function_int %44 %int_1
150*c8dee2aaSAndroid Build Coastguard Worker         %49 = OpLoad %int %48
151*c8dee2aaSAndroid Build Coastguard Worker         %50 = OpConvertSToF %float %49
152*c8dee2aaSAndroid Build Coastguard Worker         %51 = OpFAdd %float %47 %50
153*c8dee2aaSAndroid Build Coastguard Worker               OpReturnValue %51
154*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
155*c8dee2aaSAndroid Build Coastguard Worker%modifies_a_struct_vS = OpFunction %void None %52
156*c8dee2aaSAndroid Build Coastguard Worker         %53 = OpFunctionParameter %_ptr_Function_S
157*c8dee2aaSAndroid Build Coastguard Worker         %54 = OpLabel
158*c8dee2aaSAndroid Build Coastguard Worker         %55 = OpAccessChain %_ptr_Function_float %53 %int_0
159*c8dee2aaSAndroid Build Coastguard Worker         %56 = OpLoad %float %55
160*c8dee2aaSAndroid Build Coastguard Worker         %57 = OpFAdd %float %56 %float_1
161*c8dee2aaSAndroid Build Coastguard Worker               OpStore %55 %57
162*c8dee2aaSAndroid Build Coastguard Worker         %58 = OpAccessChain %_ptr_Function_int %53 %int_1
163*c8dee2aaSAndroid Build Coastguard Worker         %59 = OpLoad %int %58
164*c8dee2aaSAndroid Build Coastguard Worker         %60 = OpIAdd %int %59 %int_1
165*c8dee2aaSAndroid Build Coastguard Worker               OpStore %58 %60
166*c8dee2aaSAndroid Build Coastguard Worker               OpReturn
167*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
168*c8dee2aaSAndroid Build Coastguard Worker       %main = OpFunction %v4float None %61
169*c8dee2aaSAndroid Build Coastguard Worker         %62 = OpFunctionParameter %_ptr_Function_v2float
170*c8dee2aaSAndroid Build Coastguard Worker         %63 = OpLabel
171*c8dee2aaSAndroid Build Coastguard Worker        %s_0 = OpVariable %_ptr_Function_S Function
172*c8dee2aaSAndroid Build Coastguard Worker          %x = OpVariable %_ptr_Function_float Function
173*c8dee2aaSAndroid Build Coastguard Worker         %67 = OpVariable %_ptr_Function_S Function
174*c8dee2aaSAndroid Build Coastguard Worker         %69 = OpVariable %_ptr_Function_S Function
175*c8dee2aaSAndroid Build Coastguard Worker   %expected = OpVariable %_ptr_Function_S Function
176*c8dee2aaSAndroid Build Coastguard Worker         %n1 = OpVariable %_ptr_Function_Nested Function
177*c8dee2aaSAndroid Build Coastguard Worker         %n2 = OpVariable %_ptr_Function_Nested Function
178*c8dee2aaSAndroid Build Coastguard Worker         %n3 = OpVariable %_ptr_Function_Nested Function
179*c8dee2aaSAndroid Build Coastguard Worker         %87 = OpVariable %_ptr_Function_S Function
180*c8dee2aaSAndroid Build Coastguard Worker         %c1 = OpVariable %_ptr_Function_Compound Function
181*c8dee2aaSAndroid Build Coastguard Worker         %c2 = OpVariable %_ptr_Function_Compound Function
182*c8dee2aaSAndroid Build Coastguard Worker         %c3 = OpVariable %_ptr_Function_Compound Function
183*c8dee2aaSAndroid Build Coastguard Worker      %valid = OpVariable %_ptr_Function_bool Function
184*c8dee2aaSAndroid Build Coastguard Worker        %249 = OpVariable %_ptr_Function_v4float Function
185*c8dee2aaSAndroid Build Coastguard Worker         %65 = OpFunctionCall %S %returns_a_struct_S
186*c8dee2aaSAndroid Build Coastguard Worker               OpStore %s_0 %65
187*c8dee2aaSAndroid Build Coastguard Worker               OpStore %67 %65
188*c8dee2aaSAndroid Build Coastguard Worker         %68 = OpFunctionCall %float %accepts_a_struct_fS %67
189*c8dee2aaSAndroid Build Coastguard Worker               OpStore %x %68
190*c8dee2aaSAndroid Build Coastguard Worker               OpStore %69 %65
191*c8dee2aaSAndroid Build Coastguard Worker         %70 = OpFunctionCall %void %modifies_a_struct_vS %69
192*c8dee2aaSAndroid Build Coastguard Worker         %71 = OpLoad %S %69
193*c8dee2aaSAndroid Build Coastguard Worker               OpStore %s_0 %71
194*c8dee2aaSAndroid Build Coastguard Worker         %73 = OpFunctionCall %S %constructs_a_struct_S
195*c8dee2aaSAndroid Build Coastguard Worker               OpStore %expected %73
196*c8dee2aaSAndroid Build Coastguard Worker         %79 = OpFunctionCall %S %returns_a_struct_S
197*c8dee2aaSAndroid Build Coastguard Worker         %80 = OpAccessChain %_ptr_Function_S %n1 %int_0
198*c8dee2aaSAndroid Build Coastguard Worker               OpStore %80 %79
199*c8dee2aaSAndroid Build Coastguard Worker         %81 = OpAccessChain %_ptr_Function_S %n1 %int_0
200*c8dee2aaSAndroid Build Coastguard Worker         %82 = OpLoad %S %81
201*c8dee2aaSAndroid Build Coastguard Worker         %83 = OpAccessChain %_ptr_Function_S %n1 %int_1
202*c8dee2aaSAndroid Build Coastguard Worker               OpStore %83 %82
203*c8dee2aaSAndroid Build Coastguard Worker         %84 = OpLoad %Nested %n1
204*c8dee2aaSAndroid Build Coastguard Worker               OpStore %n2 %84
205*c8dee2aaSAndroid Build Coastguard Worker               OpStore %n3 %84
206*c8dee2aaSAndroid Build Coastguard Worker         %85 = OpAccessChain %_ptr_Function_S %n3 %int_1
207*c8dee2aaSAndroid Build Coastguard Worker         %86 = OpLoad %S %85
208*c8dee2aaSAndroid Build Coastguard Worker               OpStore %87 %86
209*c8dee2aaSAndroid Build Coastguard Worker         %88 = OpFunctionCall %void %modifies_a_struct_vS %87
210*c8dee2aaSAndroid Build Coastguard Worker         %89 = OpLoad %S %87
211*c8dee2aaSAndroid Build Coastguard Worker               OpStore %85 %89
212*c8dee2aaSAndroid Build Coastguard Worker        %101 = OpCompositeConstruct %Compound %96 %100
213*c8dee2aaSAndroid Build Coastguard Worker               OpStore %c1 %101
214*c8dee2aaSAndroid Build Coastguard Worker        %103 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
215*c8dee2aaSAndroid Build Coastguard Worker        %105 = OpLoad %v4float %103
216*c8dee2aaSAndroid Build Coastguard Worker        %106 = OpCompositeExtract %float %105 1
217*c8dee2aaSAndroid Build Coastguard Worker        %107 = OpCompositeConstruct %v4float %106 %float_2 %float_3 %float_4
218*c8dee2aaSAndroid Build Coastguard Worker        %108 = OpCompositeConstruct %Compound %107 %100
219*c8dee2aaSAndroid Build Coastguard Worker               OpStore %c2 %108
220*c8dee2aaSAndroid Build Coastguard Worker        %110 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
221*c8dee2aaSAndroid Build Coastguard Worker        %111 = OpLoad %v4float %110
222*c8dee2aaSAndroid Build Coastguard Worker        %112 = OpCompositeExtract %float %111 0
223*c8dee2aaSAndroid Build Coastguard Worker        %113 = OpCompositeConstruct %v4float %112 %float_2 %float_3 %float_4
224*c8dee2aaSAndroid Build Coastguard Worker        %114 = OpCompositeConstruct %Compound %113 %100
225*c8dee2aaSAndroid Build Coastguard Worker               OpStore %c3 %114
226*c8dee2aaSAndroid Build Coastguard Worker        %119 = OpLoad %float %x
227*c8dee2aaSAndroid Build Coastguard Worker        %120 = OpFOrdEqual %bool %119 %float_3
228*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %122 None
229*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %120 %121 %122
230*c8dee2aaSAndroid Build Coastguard Worker        %121 = OpLabel
231*c8dee2aaSAndroid Build Coastguard Worker        %123 = OpAccessChain %_ptr_Function_float %s_0 %int_0
232*c8dee2aaSAndroid Build Coastguard Worker        %124 = OpLoad %float %123
233*c8dee2aaSAndroid Build Coastguard Worker        %125 = OpFOrdEqual %bool %124 %float_2
234*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %122
235*c8dee2aaSAndroid Build Coastguard Worker        %122 = OpLabel
236*c8dee2aaSAndroid Build Coastguard Worker        %126 = OpPhi %bool %false %63 %125 %121
237*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %128 None
238*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %126 %127 %128
239*c8dee2aaSAndroid Build Coastguard Worker        %127 = OpLabel
240*c8dee2aaSAndroid Build Coastguard Worker        %129 = OpAccessChain %_ptr_Function_int %s_0 %int_1
241*c8dee2aaSAndroid Build Coastguard Worker        %130 = OpLoad %int %129
242*c8dee2aaSAndroid Build Coastguard Worker        %131 = OpIEqual %bool %130 %int_3
243*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %128
244*c8dee2aaSAndroid Build Coastguard Worker        %128 = OpLabel
245*c8dee2aaSAndroid Build Coastguard Worker        %132 = OpPhi %bool %false %122 %131 %127
246*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %134 None
247*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %132 %133 %134
248*c8dee2aaSAndroid Build Coastguard Worker        %133 = OpLabel
249*c8dee2aaSAndroid Build Coastguard Worker        %135 = OpLoad %S %s_0
250*c8dee2aaSAndroid Build Coastguard Worker        %136 = OpLoad %S %expected
251*c8dee2aaSAndroid Build Coastguard Worker        %137 = OpCompositeExtract %float %135 0
252*c8dee2aaSAndroid Build Coastguard Worker        %138 = OpCompositeExtract %float %136 0
253*c8dee2aaSAndroid Build Coastguard Worker        %139 = OpFOrdEqual %bool %137 %138
254*c8dee2aaSAndroid Build Coastguard Worker        %140 = OpCompositeExtract %int %135 1
255*c8dee2aaSAndroid Build Coastguard Worker        %141 = OpCompositeExtract %int %136 1
256*c8dee2aaSAndroid Build Coastguard Worker        %142 = OpIEqual %bool %140 %141
257*c8dee2aaSAndroid Build Coastguard Worker        %143 = OpLogicalAnd %bool %142 %139
258*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %134
259*c8dee2aaSAndroid Build Coastguard Worker        %134 = OpLabel
260*c8dee2aaSAndroid Build Coastguard Worker        %144 = OpPhi %bool %false %128 %143 %133
261*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %146 None
262*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %144 %145 %146
263*c8dee2aaSAndroid Build Coastguard Worker        %145 = OpLabel
264*c8dee2aaSAndroid Build Coastguard Worker        %147 = OpLoad %S %s_0
265*c8dee2aaSAndroid Build Coastguard Worker        %148 = OpCompositeConstruct %S %float_2 %int_3
266*c8dee2aaSAndroid Build Coastguard Worker        %149 = OpCompositeExtract %float %147 0
267*c8dee2aaSAndroid Build Coastguard Worker        %150 = OpFOrdEqual %bool %149 %float_2
268*c8dee2aaSAndroid Build Coastguard Worker        %151 = OpCompositeExtract %int %147 1
269*c8dee2aaSAndroid Build Coastguard Worker        %152 = OpIEqual %bool %151 %int_3
270*c8dee2aaSAndroid Build Coastguard Worker        %153 = OpLogicalAnd %bool %152 %150
271*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %146
272*c8dee2aaSAndroid Build Coastguard Worker        %146 = OpLabel
273*c8dee2aaSAndroid Build Coastguard Worker        %154 = OpPhi %bool %false %134 %153 %145
274*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %156 None
275*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %154 %155 %156
276*c8dee2aaSAndroid Build Coastguard Worker        %155 = OpLabel
277*c8dee2aaSAndroid Build Coastguard Worker        %157 = OpLoad %S %s_0
278*c8dee2aaSAndroid Build Coastguard Worker        %158 = OpFunctionCall %S %returns_a_struct_S
279*c8dee2aaSAndroid Build Coastguard Worker        %159 = OpCompositeExtract %float %157 0
280*c8dee2aaSAndroid Build Coastguard Worker        %160 = OpCompositeExtract %float %158 0
281*c8dee2aaSAndroid Build Coastguard Worker        %161 = OpFUnordNotEqual %bool %159 %160
282*c8dee2aaSAndroid Build Coastguard Worker        %162 = OpCompositeExtract %int %157 1
283*c8dee2aaSAndroid Build Coastguard Worker        %163 = OpCompositeExtract %int %158 1
284*c8dee2aaSAndroid Build Coastguard Worker        %164 = OpINotEqual %bool %162 %163
285*c8dee2aaSAndroid Build Coastguard Worker        %165 = OpLogicalOr %bool %164 %161
286*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %156
287*c8dee2aaSAndroid Build Coastguard Worker        %156 = OpLabel
288*c8dee2aaSAndroid Build Coastguard Worker        %166 = OpPhi %bool %false %146 %165 %155
289*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %168 None
290*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %166 %167 %168
291*c8dee2aaSAndroid Build Coastguard Worker        %167 = OpLabel
292*c8dee2aaSAndroid Build Coastguard Worker        %169 = OpLoad %Nested %n1
293*c8dee2aaSAndroid Build Coastguard Worker        %170 = OpLoad %Nested %n2
294*c8dee2aaSAndroid Build Coastguard Worker        %171 = OpCompositeExtract %S %169 0
295*c8dee2aaSAndroid Build Coastguard Worker        %172 = OpCompositeExtract %S %170 0
296*c8dee2aaSAndroid Build Coastguard Worker        %173 = OpCompositeExtract %float %171 0
297*c8dee2aaSAndroid Build Coastguard Worker        %174 = OpCompositeExtract %float %172 0
298*c8dee2aaSAndroid Build Coastguard Worker        %175 = OpFOrdEqual %bool %173 %174
299*c8dee2aaSAndroid Build Coastguard Worker        %176 = OpCompositeExtract %int %171 1
300*c8dee2aaSAndroid Build Coastguard Worker        %177 = OpCompositeExtract %int %172 1
301*c8dee2aaSAndroid Build Coastguard Worker        %178 = OpIEqual %bool %176 %177
302*c8dee2aaSAndroid Build Coastguard Worker        %179 = OpLogicalAnd %bool %178 %175
303*c8dee2aaSAndroid Build Coastguard Worker        %180 = OpCompositeExtract %S %169 1
304*c8dee2aaSAndroid Build Coastguard Worker        %181 = OpCompositeExtract %S %170 1
305*c8dee2aaSAndroid Build Coastguard Worker        %182 = OpCompositeExtract %float %180 0
306*c8dee2aaSAndroid Build Coastguard Worker        %183 = OpCompositeExtract %float %181 0
307*c8dee2aaSAndroid Build Coastguard Worker        %184 = OpFOrdEqual %bool %182 %183
308*c8dee2aaSAndroid Build Coastguard Worker        %185 = OpCompositeExtract %int %180 1
309*c8dee2aaSAndroid Build Coastguard Worker        %186 = OpCompositeExtract %int %181 1
310*c8dee2aaSAndroid Build Coastguard Worker        %187 = OpIEqual %bool %185 %186
311*c8dee2aaSAndroid Build Coastguard Worker        %188 = OpLogicalAnd %bool %187 %184
312*c8dee2aaSAndroid Build Coastguard Worker        %189 = OpLogicalAnd %bool %188 %179
313*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %168
314*c8dee2aaSAndroid Build Coastguard Worker        %168 = OpLabel
315*c8dee2aaSAndroid Build Coastguard Worker        %190 = OpPhi %bool %false %156 %189 %167
316*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %192 None
317*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %190 %191 %192
318*c8dee2aaSAndroid Build Coastguard Worker        %191 = OpLabel
319*c8dee2aaSAndroid Build Coastguard Worker        %193 = OpLoad %Nested %n1
320*c8dee2aaSAndroid Build Coastguard Worker        %194 = OpLoad %Nested %n3
321*c8dee2aaSAndroid Build Coastguard Worker        %195 = OpCompositeExtract %S %193 0
322*c8dee2aaSAndroid Build Coastguard Worker        %196 = OpCompositeExtract %S %194 0
323*c8dee2aaSAndroid Build Coastguard Worker        %197 = OpCompositeExtract %float %195 0
324*c8dee2aaSAndroid Build Coastguard Worker        %198 = OpCompositeExtract %float %196 0
325*c8dee2aaSAndroid Build Coastguard Worker        %199 = OpFUnordNotEqual %bool %197 %198
326*c8dee2aaSAndroid Build Coastguard Worker        %200 = OpCompositeExtract %int %195 1
327*c8dee2aaSAndroid Build Coastguard Worker        %201 = OpCompositeExtract %int %196 1
328*c8dee2aaSAndroid Build Coastguard Worker        %202 = OpINotEqual %bool %200 %201
329*c8dee2aaSAndroid Build Coastguard Worker        %203 = OpLogicalOr %bool %202 %199
330*c8dee2aaSAndroid Build Coastguard Worker        %204 = OpCompositeExtract %S %193 1
331*c8dee2aaSAndroid Build Coastguard Worker        %205 = OpCompositeExtract %S %194 1
332*c8dee2aaSAndroid Build Coastguard Worker        %206 = OpCompositeExtract %float %204 0
333*c8dee2aaSAndroid Build Coastguard Worker        %207 = OpCompositeExtract %float %205 0
334*c8dee2aaSAndroid Build Coastguard Worker        %208 = OpFUnordNotEqual %bool %206 %207
335*c8dee2aaSAndroid Build Coastguard Worker        %209 = OpCompositeExtract %int %204 1
336*c8dee2aaSAndroid Build Coastguard Worker        %210 = OpCompositeExtract %int %205 1
337*c8dee2aaSAndroid Build Coastguard Worker        %211 = OpINotEqual %bool %209 %210
338*c8dee2aaSAndroid Build Coastguard Worker        %212 = OpLogicalOr %bool %211 %208
339*c8dee2aaSAndroid Build Coastguard Worker        %213 = OpLogicalOr %bool %212 %203
340*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %192
341*c8dee2aaSAndroid Build Coastguard Worker        %192 = OpLabel
342*c8dee2aaSAndroid Build Coastguard Worker        %214 = OpPhi %bool %false %168 %213 %191
343*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %216 None
344*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %214 %215 %216
345*c8dee2aaSAndroid Build Coastguard Worker        %215 = OpLabel
346*c8dee2aaSAndroid Build Coastguard Worker        %217 = OpLoad %Nested %n3
347*c8dee2aaSAndroid Build Coastguard Worker        %218 = OpCompositeConstruct %S %float_1 %int_2
348*c8dee2aaSAndroid Build Coastguard Worker        %219 = OpCompositeConstruct %S %float_2 %int_3
349*c8dee2aaSAndroid Build Coastguard Worker        %220 = OpCompositeConstruct %Nested %218 %219
350*c8dee2aaSAndroid Build Coastguard Worker        %221 = OpCompositeExtract %S %217 0
351*c8dee2aaSAndroid Build Coastguard Worker        %222 = OpCompositeExtract %float %221 0
352*c8dee2aaSAndroid Build Coastguard Worker        %223 = OpFOrdEqual %bool %222 %float_1
353*c8dee2aaSAndroid Build Coastguard Worker        %224 = OpCompositeExtract %int %221 1
354*c8dee2aaSAndroid Build Coastguard Worker        %225 = OpIEqual %bool %224 %int_2
355*c8dee2aaSAndroid Build Coastguard Worker        %226 = OpLogicalAnd %bool %225 %223
356*c8dee2aaSAndroid Build Coastguard Worker        %227 = OpCompositeExtract %S %217 1
357*c8dee2aaSAndroid Build Coastguard Worker        %228 = OpCompositeExtract %float %227 0
358*c8dee2aaSAndroid Build Coastguard Worker        %229 = OpFOrdEqual %bool %228 %float_2
359*c8dee2aaSAndroid Build Coastguard Worker        %230 = OpCompositeExtract %int %227 1
360*c8dee2aaSAndroid Build Coastguard Worker        %231 = OpIEqual %bool %230 %int_3
361*c8dee2aaSAndroid Build Coastguard Worker        %232 = OpLogicalAnd %bool %231 %229
362*c8dee2aaSAndroid Build Coastguard Worker        %233 = OpLogicalAnd %bool %232 %226
363*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %216
364*c8dee2aaSAndroid Build Coastguard Worker        %216 = OpLabel
365*c8dee2aaSAndroid Build Coastguard Worker        %234 = OpPhi %bool %false %192 %233 %215
366*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %236 None
367*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %234 %235 %236
368*c8dee2aaSAndroid Build Coastguard Worker        %235 = OpLabel
369*c8dee2aaSAndroid Build Coastguard Worker        %237 = OpFOrdEqual %v4bool %96 %107
370*c8dee2aaSAndroid Build Coastguard Worker        %239 = OpAll %bool %237
371*c8dee2aaSAndroid Build Coastguard Worker        %241 = OpLogicalAnd %bool %true %239
372*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %236
373*c8dee2aaSAndroid Build Coastguard Worker        %236 = OpLabel
374*c8dee2aaSAndroid Build Coastguard Worker        %242 = OpPhi %bool %false %216 %241 %235
375*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %244 None
376*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %242 %243 %244
377*c8dee2aaSAndroid Build Coastguard Worker        %243 = OpLabel
378*c8dee2aaSAndroid Build Coastguard Worker        %245 = OpFUnordNotEqual %v4bool %107 %113
379*c8dee2aaSAndroid Build Coastguard Worker        %246 = OpAny %bool %245
380*c8dee2aaSAndroid Build Coastguard Worker        %247 = OpLogicalOr %bool %false %246
381*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %244
382*c8dee2aaSAndroid Build Coastguard Worker        %244 = OpLabel
383*c8dee2aaSAndroid Build Coastguard Worker        %248 = OpPhi %bool %false %236 %247 %243
384*c8dee2aaSAndroid Build Coastguard Worker               OpStore %valid %248
385*c8dee2aaSAndroid Build Coastguard Worker               OpSelectionMerge %253 None
386*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %248 %251 %252
387*c8dee2aaSAndroid Build Coastguard Worker        %251 = OpLabel
388*c8dee2aaSAndroid Build Coastguard Worker        %254 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
389*c8dee2aaSAndroid Build Coastguard Worker        %255 = OpLoad %v4float %254
390*c8dee2aaSAndroid Build Coastguard Worker               OpStore %249 %255
391*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %253
392*c8dee2aaSAndroid Build Coastguard Worker        %252 = OpLabel
393*c8dee2aaSAndroid Build Coastguard Worker        %256 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
394*c8dee2aaSAndroid Build Coastguard Worker        %257 = OpLoad %v4float %256
395*c8dee2aaSAndroid Build Coastguard Worker               OpStore %249 %257
396*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %253
397*c8dee2aaSAndroid Build Coastguard Worker        %253 = OpLabel
398*c8dee2aaSAndroid Build Coastguard Worker        %258 = OpLoad %v4float %249
399*c8dee2aaSAndroid Build Coastguard Worker               OpReturnValue %258
400*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
401