xref: /aosp_15_r20/external/skia/tests/sksl/shared/CommaSideEffects.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 "colorRed"
9               OpMemberName %_UniformBuffer 1 "colorGreen"
10               OpMemberName %_UniformBuffer 2 "colorWhite"
11               OpMemberName %_UniformBuffer 3 "colorBlack"
12               OpName %_entrypoint_v "_entrypoint_v"
13               OpName %setToColorBlack_vh4 "setToColorBlack_vh4"
14               OpName %main "main"
15               OpName %a "a"
16               OpName %b "b"
17               OpName %c "c"
18               OpName %d "d"
19               OpDecorate %sk_FragColor RelaxedPrecision
20               OpDecorate %sk_FragColor Location 0
21               OpDecorate %sk_FragColor Index 0
22               OpMemberDecorate %_UniformBuffer 0 Offset 0
23               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
24               OpMemberDecorate %_UniformBuffer 1 Offset 16
25               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
26               OpMemberDecorate %_UniformBuffer 2 Offset 32
27               OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
28               OpMemberDecorate %_UniformBuffer 3 Offset 48
29               OpMemberDecorate %_UniformBuffer 3 RelaxedPrecision
30               OpDecorate %_UniformBuffer Block
31               OpDecorate %8 Binding 0
32               OpDecorate %8 DescriptorSet 0
33               OpDecorate %29 RelaxedPrecision
34               OpDecorate %a RelaxedPrecision
35               OpDecorate %b RelaxedPrecision
36               OpDecorate %c RelaxedPrecision
37               OpDecorate %d RelaxedPrecision
38               OpDecorate %39 RelaxedPrecision
39               OpDecorate %42 RelaxedPrecision
40               OpDecorate %43 RelaxedPrecision
41               OpDecorate %45 RelaxedPrecision
42               OpDecorate %48 RelaxedPrecision
43               OpDecorate %49 RelaxedPrecision
44               OpDecorate %50 RelaxedPrecision
45               OpDecorate %51 RelaxedPrecision
46               OpDecorate %52 RelaxedPrecision
47               OpDecorate %56 RelaxedPrecision
48               OpDecorate %63 RelaxedPrecision
49               OpDecorate %70 RelaxedPrecision
50               OpDecorate %77 RelaxedPrecision
51               OpDecorate %86 RelaxedPrecision
52               OpDecorate %88 RelaxedPrecision
53               OpDecorate %89 RelaxedPrecision
54      %float = OpTypeFloat 32
55    %v4float = OpTypeVector %float 4
56%_ptr_Output_v4float = OpTypePointer Output %v4float
57%sk_FragColor = OpVariable %_ptr_Output_v4float Output
58%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float %v4float
59%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
60          %8 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
61       %void = OpTypeVoid
62         %13 = OpTypeFunction %void
63    %float_0 = OpConstant %float 0
64    %v2float = OpTypeVector %float 2
65         %17 = OpConstantComposite %v2float %float_0 %float_0
66%_ptr_Function_v2float = OpTypePointer Function %v2float
67%_ptr_Function_v4float = OpTypePointer Function %v4float
68         %22 = OpTypeFunction %void %_ptr_Function_v4float
69%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
70        %int = OpTypeInt 32 1
71      %int_3 = OpConstant %int 3
72         %30 = OpTypeFunction %v4float %_ptr_Function_v2float
73      %int_0 = OpConstant %int 0
74      %int_1 = OpConstant %int 1
75      %int_2 = OpConstant %int 2
76       %bool = OpTypeBool
77      %false = OpConstantFalse %bool
78     %v4bool = OpTypeVector %bool 4
79%_entrypoint_v = OpFunction %void None %13
80         %14 = OpLabel
81         %18 = OpVariable %_ptr_Function_v2float Function
82               OpStore %18 %17
83         %20 = OpFunctionCall %v4float %main %18
84               OpStore %sk_FragColor %20
85               OpReturn
86               OpFunctionEnd
87%setToColorBlack_vh4 = OpFunction %void None %22
88         %23 = OpFunctionParameter %_ptr_Function_v4float
89         %24 = OpLabel
90         %25 = OpAccessChain %_ptr_Uniform_v4float %8 %int_3
91         %29 = OpLoad %v4float %25
92               OpStore %23 %29
93               OpReturn
94               OpFunctionEnd
95       %main = OpFunction %v4float None %30
96         %31 = OpFunctionParameter %_ptr_Function_v2float
97         %32 = OpLabel
98          %a = OpVariable %_ptr_Function_v4float Function
99          %b = OpVariable %_ptr_Function_v4float Function
100          %c = OpVariable %_ptr_Function_v4float Function
101          %d = OpVariable %_ptr_Function_v4float Function
102         %43 = OpVariable %_ptr_Function_v4float Function
103         %81 = OpVariable %_ptr_Function_v4float Function
104         %37 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
105         %39 = OpLoad %v4float %37
106               OpStore %b %39
107         %40 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
108         %42 = OpLoad %v4float %40
109               OpStore %c %42
110         %44 = OpFunctionCall %void %setToColorBlack_vh4 %43
111         %45 = OpLoad %v4float %43
112               OpStore %d %45
113         %46 = OpAccessChain %_ptr_Uniform_v4float %8 %int_2
114         %48 = OpLoad %v4float %46
115               OpStore %a %48
116         %49 = OpFMul %v4float %48 %48
117               OpStore %a %49
118         %50 = OpFMul %v4float %39 %39
119               OpStore %b %50
120         %51 = OpFMul %v4float %42 %42
121               OpStore %c %51
122         %52 = OpFMul %v4float %45 %45
123               OpStore %d %52
124         %55 = OpAccessChain %_ptr_Uniform_v4float %8 %int_2
125         %56 = OpLoad %v4float %55
126         %57 = OpFOrdEqual %v4bool %49 %56
127         %59 = OpAll %bool %57
128               OpSelectionMerge %61 None
129               OpBranchConditional %59 %60 %61
130         %60 = OpLabel
131         %62 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
132         %63 = OpLoad %v4float %62
133         %64 = OpFOrdEqual %v4bool %50 %63
134         %65 = OpAll %bool %64
135               OpBranch %61
136         %61 = OpLabel
137         %66 = OpPhi %bool %false %32 %65 %60
138               OpSelectionMerge %68 None
139               OpBranchConditional %66 %67 %68
140         %67 = OpLabel
141         %69 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
142         %70 = OpLoad %v4float %69
143         %71 = OpFOrdEqual %v4bool %51 %70
144         %72 = OpAll %bool %71
145               OpBranch %68
146         %68 = OpLabel
147         %73 = OpPhi %bool %false %61 %72 %67
148               OpSelectionMerge %75 None
149               OpBranchConditional %73 %74 %75
150         %74 = OpLabel
151         %76 = OpAccessChain %_ptr_Uniform_v4float %8 %int_3
152         %77 = OpLoad %v4float %76
153         %78 = OpFOrdEqual %v4bool %52 %77
154         %79 = OpAll %bool %78
155               OpBranch %75
156         %75 = OpLabel
157         %80 = OpPhi %bool %false %68 %79 %74
158               OpSelectionMerge %84 None
159               OpBranchConditional %80 %82 %83
160         %82 = OpLabel
161         %85 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
162         %86 = OpLoad %v4float %85
163               OpStore %81 %86
164               OpBranch %84
165         %83 = OpLabel
166         %87 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
167         %88 = OpLoad %v4float %87
168               OpStore %81 %88
169               OpBranch %84
170         %84 = OpLabel
171         %89 = OpLoad %v4float %81
172               OpReturnValue %89
173               OpFunctionEnd
174