xref: /aosp_15_r20/external/skia/tests/sksl/shared/IntegerDivisionES3.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               OpName %_entrypoint_v "_entrypoint_v"
10               OpName %main "main"
11               OpName %zero "zero"
12               OpName %one "one"
13               OpName %x "x"
14               OpName %y "y"
15               OpName %_0_x "_0_x"
16               OpName %_1_result "_1_result"
17               OpDecorate %sk_FragColor RelaxedPrecision
18               OpDecorate %sk_FragColor Location 0
19               OpDecorate %sk_FragColor Index 0
20               OpMemberDecorate %_UniformBuffer 0 Offset 0
21               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
22               OpDecorate %_UniformBuffer Block
23               OpDecorate %7 Binding 0
24               OpDecorate %7 DescriptorSet 0
25               OpDecorate %29 RelaxedPrecision
26               OpDecorate %30 RelaxedPrecision
27               OpDecorate %34 RelaxedPrecision
28               OpDecorate %35 RelaxedPrecision
29               OpDecorate %88 RelaxedPrecision
30               OpDecorate %94 RelaxedPrecision
31      %float = OpTypeFloat 32
32    %v4float = OpTypeVector %float 4
33%_ptr_Output_v4float = OpTypePointer Output %v4float
34%sk_FragColor = OpVariable %_ptr_Output_v4float Output
35%_UniformBuffer = OpTypeStruct %v4float
36%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
37          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
38       %void = OpTypeVoid
39         %12 = OpTypeFunction %void
40    %float_0 = OpConstant %float 0
41    %v2float = OpTypeVector %float 2
42         %16 = OpConstantComposite %v2float %float_0 %float_0
43%_ptr_Function_v2float = OpTypePointer Function %v2float
44         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
45        %int = OpTypeInt 32 1
46%_ptr_Function_int = OpTypePointer Function %int
47%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
48      %int_0 = OpConstant %int 0
49    %int_100 = OpConstant %int 100
50       %bool = OpTypeBool
51      %int_1 = OpConstant %int 1
52    %float_1 = OpConstant %float 1
53%float_0_00392156886 = OpConstant %float 0.00392156886
54%_entrypoint_v = OpFunction %void None %12
55         %13 = OpLabel
56         %17 = OpVariable %_ptr_Function_v2float Function
57               OpStore %17 %16
58         %19 = OpFunctionCall %v4float %main %17
59               OpStore %sk_FragColor %19
60               OpReturn
61               OpFunctionEnd
62       %main = OpFunction %v4float None %20
63         %21 = OpFunctionParameter %_ptr_Function_v2float
64         %22 = OpLabel
65       %zero = OpVariable %_ptr_Function_int Function
66        %one = OpVariable %_ptr_Function_int Function
67          %x = OpVariable %_ptr_Function_int Function
68          %y = OpVariable %_ptr_Function_int Function
69       %_0_x = OpVariable %_ptr_Function_int Function
70  %_1_result = OpVariable %_ptr_Function_int Function
71         %26 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
72         %29 = OpLoad %v4float %26
73         %30 = OpCompositeExtract %float %29 0
74         %31 = OpConvertFToS %int %30
75               OpStore %zero %31
76         %33 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
77         %34 = OpLoad %v4float %33
78         %35 = OpCompositeExtract %float %34 1
79         %36 = OpConvertFToS %int %35
80               OpStore %one %36
81               OpStore %x %31
82               OpBranch %38
83         %38 = OpLabel
84               OpLoopMerge %42 %41 None
85               OpBranch %39
86         %39 = OpLabel
87         %43 = OpLoad %int %x
88         %45 = OpSLessThan %bool %43 %int_100
89               OpBranchConditional %45 %40 %42
90         %40 = OpLabel
91         %48 = OpLoad %int %one
92               OpStore %y %48
93               OpBranch %49
94         %49 = OpLabel
95               OpLoopMerge %53 %52 None
96               OpBranch %50
97         %50 = OpLabel
98         %54 = OpLoad %int %y
99         %55 = OpSLessThan %bool %54 %int_100
100               OpBranchConditional %55 %51 %53
101         %51 = OpLabel
102         %57 = OpLoad %int %x
103               OpStore %_0_x %57
104               OpStore %_1_result %int_0
105               OpBranch %59
106         %59 = OpLabel
107               OpLoopMerge %63 %62 None
108               OpBranch %60
109         %60 = OpLabel
110         %64 = OpLoad %int %_0_x
111         %65 = OpLoad %int %y
112         %66 = OpSGreaterThanEqual %bool %64 %65
113               OpBranchConditional %66 %61 %63
114         %61 = OpLabel
115         %68 = OpLoad %int %_1_result
116         %69 = OpIAdd %int %68 %int_1
117               OpStore %_1_result %69
118         %70 = OpLoad %int %_0_x
119         %71 = OpLoad %int %y
120         %72 = OpISub %int %70 %71
121               OpStore %_0_x %72
122               OpBranch %62
123         %62 = OpLabel
124               OpBranch %59
125         %63 = OpLabel
126         %73 = OpLoad %int %x
127         %74 = OpLoad %int %y
128         %75 = OpSDiv %int %73 %74
129         %76 = OpLoad %int %_1_result
130         %77 = OpINotEqual %bool %75 %76
131               OpSelectionMerge %79 None
132               OpBranchConditional %77 %78 %79
133         %78 = OpLabel
134         %81 = OpLoad %int %x
135         %82 = OpConvertSToF %float %81
136         %84 = OpFMul %float %82 %float_0_00392156886
137         %85 = OpLoad %int %y
138         %86 = OpConvertSToF %float %85
139         %87 = OpFMul %float %86 %float_0_00392156886
140         %88 = OpCompositeConstruct %v4float %float_1 %84 %87 %float_1
141               OpReturnValue %88
142         %79 = OpLabel
143               OpBranch %52
144         %52 = OpLabel
145         %89 = OpLoad %int %y
146         %90 = OpIAdd %int %89 %int_1
147               OpStore %y %90
148               OpBranch %49
149         %53 = OpLabel
150               OpBranch %41
151         %41 = OpLabel
152         %91 = OpLoad %int %x
153         %92 = OpIAdd %int %91 %int_1
154               OpStore %x %92
155               OpBranch %38
156         %42 = OpLabel
157         %93 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
158         %94 = OpLoad %v4float %93
159               OpReturnValue %94
160               OpFunctionEnd
161