xref: /aosp_15_r20/external/skia/tests/sksl/shared/LogicalOrShortCircuit.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 %TrueFalse_b "TrueFalse_b"
12               OpName %x "x"
13               OpName %y "y"
14               OpName %FalseTrue_b "FalseTrue_b"
15               OpName %x_0 "x"
16               OpName %y_0 "y"
17               OpName %FalseFalse_b "FalseFalse_b"
18               OpName %x_1 "x"
19               OpName %y_1 "y"
20               OpName %main "main"
21               OpName %_0_TrueTrue "_0_TrueTrue"
22               OpName %_2_y "_2_y"
23               OpDecorate %sk_FragColor RelaxedPrecision
24               OpDecorate %sk_FragColor Location 0
25               OpDecorate %sk_FragColor Index 0
26               OpMemberDecorate %_UniformBuffer 0 Offset 0
27               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
28               OpMemberDecorate %_UniformBuffer 1 Offset 16
29               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
30               OpDecorate %_UniformBuffer Block
31               OpDecorate %10 Binding 0
32               OpDecorate %10 DescriptorSet 0
33               OpDecorate %108 RelaxedPrecision
34               OpDecorate %110 RelaxedPrecision
35               OpDecorate %111 RelaxedPrecision
36      %float = OpTypeFloat 32
37    %v4float = OpTypeVector %float 4
38%_ptr_Output_v4float = OpTypePointer Output %v4float
39%sk_FragColor = OpVariable %_ptr_Output_v4float Output
40%_UniformBuffer = OpTypeStruct %v4float %v4float
41%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
42         %10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
43       %void = OpTypeVoid
44         %15 = OpTypeFunction %void
45    %float_0 = OpConstant %float 0
46    %v2float = OpTypeVector %float 2
47         %19 = OpConstantComposite %v2float %float_0 %float_0
48%_ptr_Function_v2float = OpTypePointer Function %v2float
49       %bool = OpTypeBool
50         %24 = OpTypeFunction %bool
51        %int = OpTypeInt 32 1
52%_ptr_Function_int = OpTypePointer Function %int
53      %int_1 = OpConstant %int 1
54       %true = OpConstantTrue %bool
55      %int_3 = OpConstant %int 3
56      %false = OpConstantFalse %bool
57      %int_2 = OpConstant %int 2
58         %82 = OpTypeFunction %v4float %_ptr_Function_v2float
59%_ptr_Function_bool = OpTypePointer Function %bool
60%_ptr_Function_v4float = OpTypePointer Function %v4float
61%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
62      %int_0 = OpConstant %int 0
63%_entrypoint_v = OpFunction %void None %15
64         %16 = OpLabel
65         %20 = OpVariable %_ptr_Function_v2float Function
66               OpStore %20 %19
67         %22 = OpFunctionCall %v4float %main %20
68               OpStore %sk_FragColor %22
69               OpReturn
70               OpFunctionEnd
71%TrueFalse_b = OpFunction %bool None %24
72         %25 = OpLabel
73          %x = OpVariable %_ptr_Function_int Function
74          %y = OpVariable %_ptr_Function_int Function
75               OpStore %x %int_1
76               OpStore %y %int_1
77               OpSelectionMerge %33 None
78               OpBranchConditional %true %33 %32
79         %32 = OpLabel
80         %34 = OpIAdd %int %int_1 %int_1
81               OpStore %y %34
82         %36 = OpIEqual %bool %34 %int_3
83               OpBranch %33
84         %33 = OpLabel
85         %37 = OpPhi %bool %true %25 %36 %32
86               OpSelectionMerge %40 None
87               OpBranchConditional %37 %38 %39
88         %38 = OpLabel
89               OpSelectionMerge %43 None
90               OpBranchConditional %true %42 %43
91         %42 = OpLabel
92         %44 = OpLoad %int %y
93         %45 = OpIEqual %bool %44 %int_1
94               OpBranch %43
95         %43 = OpLabel
96         %46 = OpPhi %bool %false %38 %45 %42
97               OpReturnValue %46
98         %39 = OpLabel
99               OpReturnValue %false
100         %40 = OpLabel
101               OpUnreachable
102               OpFunctionEnd
103%FalseTrue_b = OpFunction %bool None %24
104         %47 = OpLabel
105        %x_0 = OpVariable %_ptr_Function_int Function
106        %y_0 = OpVariable %_ptr_Function_int Function
107               OpStore %x_0 %int_1
108               OpStore %y_0 %int_1
109         %51 = OpIEqual %bool %int_1 %int_2
110               OpSelectionMerge %53 None
111               OpBranchConditional %51 %53 %52
112         %52 = OpLabel
113         %54 = OpIAdd %int %int_1 %int_1
114               OpStore %y_0 %54
115         %55 = OpIEqual %bool %54 %int_2
116               OpBranch %53
117         %53 = OpLabel
118         %56 = OpPhi %bool %true %47 %55 %52
119               OpSelectionMerge %59 None
120               OpBranchConditional %56 %57 %58
121         %57 = OpLabel
122               OpSelectionMerge %61 None
123               OpBranchConditional %true %60 %61
124         %60 = OpLabel
125         %62 = OpLoad %int %y_0
126         %63 = OpIEqual %bool %62 %int_2
127               OpBranch %61
128         %61 = OpLabel
129         %64 = OpPhi %bool %false %57 %63 %60
130               OpReturnValue %64
131         %58 = OpLabel
132               OpReturnValue %false
133         %59 = OpLabel
134               OpUnreachable
135               OpFunctionEnd
136%FalseFalse_b = OpFunction %bool None %24
137         %65 = OpLabel
138        %x_1 = OpVariable %_ptr_Function_int Function
139        %y_1 = OpVariable %_ptr_Function_int Function
140               OpStore %x_1 %int_1
141               OpStore %y_1 %int_1
142         %68 = OpIEqual %bool %int_1 %int_2
143               OpSelectionMerge %70 None
144               OpBranchConditional %68 %70 %69
145         %69 = OpLabel
146         %71 = OpIAdd %int %int_1 %int_1
147               OpStore %y_1 %71
148         %72 = OpIEqual %bool %71 %int_3
149               OpBranch %70
150         %70 = OpLabel
151         %73 = OpPhi %bool %true %65 %72 %69
152               OpSelectionMerge %76 None
153               OpBranchConditional %73 %74 %75
154         %74 = OpLabel
155               OpReturnValue %false
156         %75 = OpLabel
157               OpSelectionMerge %78 None
158               OpBranchConditional %true %77 %78
159         %77 = OpLabel
160         %79 = OpLoad %int %y_1
161         %80 = OpIEqual %bool %79 %int_2
162               OpBranch %78
163         %78 = OpLabel
164         %81 = OpPhi %bool %false %75 %80 %77
165               OpReturnValue %81
166         %76 = OpLabel
167               OpUnreachable
168               OpFunctionEnd
169       %main = OpFunction %v4float None %82
170         %83 = OpFunctionParameter %_ptr_Function_v2float
171         %84 = OpLabel
172%_0_TrueTrue = OpVariable %_ptr_Function_bool Function
173       %_2_y = OpVariable %_ptr_Function_int Function
174        %100 = OpVariable %_ptr_Function_v4float Function
175               OpStore %_2_y %int_1
176               OpStore %_0_TrueTrue %true
177               OpSelectionMerge %89 None
178               OpBranchConditional %true %88 %89
179         %88 = OpLabel
180         %90 = OpFunctionCall %bool %TrueFalse_b
181               OpBranch %89
182         %89 = OpLabel
183         %91 = OpPhi %bool %false %84 %90 %88
184               OpSelectionMerge %93 None
185               OpBranchConditional %91 %92 %93
186         %92 = OpLabel
187         %94 = OpFunctionCall %bool %FalseTrue_b
188               OpBranch %93
189         %93 = OpLabel
190         %95 = OpPhi %bool %false %89 %94 %92
191               OpSelectionMerge %97 None
192               OpBranchConditional %95 %96 %97
193         %96 = OpLabel
194         %98 = OpFunctionCall %bool %FalseFalse_b
195               OpBranch %97
196         %97 = OpLabel
197         %99 = OpPhi %bool %false %93 %98 %96
198               OpSelectionMerge %104 None
199               OpBranchConditional %99 %102 %103
200        %102 = OpLabel
201        %105 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
202        %108 = OpLoad %v4float %105
203               OpStore %100 %108
204               OpBranch %104
205        %103 = OpLabel
206        %109 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
207        %110 = OpLoad %v4float %109
208               OpStore %100 %110
209               OpBranch %104
210        %104 = OpLabel
211        %111 = OpLoad %v4float %100
212               OpReturnValue %111
213               OpFunctionEnd
214