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