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