xref: /aosp_15_r20/external/skia/tests/sksl/shared/Control.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %main "main" %sk_FragColor
5               OpExecutionMode %main OriginUpperLeft
6               OpName %sk_FragColor "sk_FragColor"
7               OpName %_UniformBuffer "_UniformBuffer"
8               OpMemberName %_UniformBuffer 0 "unknownInput"
9               OpName %main "main"
10               OpName %i "i"
11               OpName %i_0 "i"
12               OpDecorate %sk_FragColor RelaxedPrecision
13               OpDecorate %sk_FragColor Location 0
14               OpDecorate %sk_FragColor Index 0
15               OpMemberDecorate %_UniformBuffer 0 Offset 0
16               OpDecorate %_UniformBuffer Block
17               OpDecorate %7 Binding 0
18               OpDecorate %7 DescriptorSet 0
19               OpDecorate %36 RelaxedPrecision
20               OpDecorate %38 RelaxedPrecision
21               OpDecorate %47 RelaxedPrecision
22               OpDecorate %50 RelaxedPrecision
23               OpDecorate %51 RelaxedPrecision
24               OpDecorate %52 RelaxedPrecision
25      %float = OpTypeFloat 32
26    %v4float = OpTypeVector %float 4
27%_ptr_Output_v4float = OpTypePointer Output %v4float
28%sk_FragColor = OpVariable %_ptr_Output_v4float Output
29%_UniformBuffer = OpTypeStruct %float
30%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
31          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
32       %void = OpTypeVoid
33         %11 = OpTypeFunction %void
34%_ptr_Uniform_float = OpTypePointer Uniform %float
35        %int = OpTypeInt 32 1
36      %int_0 = OpConstant %int 0
37    %float_5 = OpConstant %float 5
38       %bool = OpTypeBool
39 %float_0_75 = OpConstant %float 0.75
40         %25 = OpConstantComposite %v4float %float_0_75 %float_0_75 %float_0_75 %float_0_75
41%_ptr_Function_int = OpTypePointer Function %int
42     %int_10 = OpConstant %int 10
43  %float_0_5 = OpConstant %float 0.5
44      %int_1 = OpConstant %int 1
45 %float_0_25 = OpConstant %float 0.25
46         %49 = OpConstantComposite %v4float %float_0_25 %float_0_25 %float_0_25 %float_0_25
47      %int_2 = OpConstant %int 2
48    %int_100 = OpConstant %int 100
49       %main = OpFunction %void None %11
50         %12 = OpLabel
51          %i = OpVariable %_ptr_Function_int Function
52        %i_0 = OpVariable %_ptr_Function_int Function
53         %13 = OpAccessChain %_ptr_Uniform_float %7 %int_0
54         %17 = OpLoad %float %13
55         %19 = OpFOrdGreaterThan %bool %17 %float_5
56               OpSelectionMerge %23 None
57               OpBranchConditional %19 %21 %22
58         %21 = OpLabel
59               OpStore %sk_FragColor %25
60               OpBranch %23
61         %22 = OpLabel
62               OpKill
63         %23 = OpLabel
64               OpStore %i %int_0
65               OpBranch %28
66         %28 = OpLabel
67               OpLoopMerge %32 %31 None
68               OpBranch %29
69         %29 = OpLabel
70         %33 = OpLoad %int %i
71         %35 = OpSLessThan %bool %33 %int_10
72               OpBranchConditional %35 %30 %32
73         %30 = OpLabel
74         %36 = OpLoad %v4float %sk_FragColor
75         %38 = OpVectorTimesScalar %v4float %36 %float_0_5
76               OpStore %sk_FragColor %38
77         %39 = OpLoad %int %i
78         %41 = OpIAdd %int %39 %int_1
79               OpStore %i %41
80               OpBranch %31
81         %31 = OpLabel
82               OpBranch %28
83         %32 = OpLabel
84               OpBranch %42
85         %42 = OpLabel
86               OpLoopMerge %46 %45 None
87               OpBranch %43
88         %43 = OpLabel
89         %47 = OpLoad %v4float %sk_FragColor
90         %50 = OpFAdd %v4float %47 %49
91               OpStore %sk_FragColor %50
92               OpBranch %44
93         %44 = OpLabel
94               OpBranch %45
95         %45 = OpLabel
96         %51 = OpLoad %v4float %sk_FragColor
97         %52 = OpCompositeExtract %float %51 0
98         %53 = OpFOrdLessThan %bool %52 %float_0_75
99               OpBranchConditional %53 %42 %46
100         %46 = OpLabel
101               OpStore %i_0 %int_0
102               OpBranch %55
103         %55 = OpLabel
104               OpLoopMerge %59 %58 None
105               OpBranch %56
106         %56 = OpLabel
107         %60 = OpLoad %int %i_0
108         %61 = OpSLessThan %bool %60 %int_10
109               OpBranchConditional %61 %57 %59
110         %57 = OpLabel
111         %62 = OpLoad %int %i_0
112         %64 = OpSMod %int %62 %int_2
113         %65 = OpIEqual %bool %64 %int_1
114               OpSelectionMerge %68 None
115               OpBranchConditional %65 %66 %67
116         %66 = OpLabel
117               OpBranch %59
118         %67 = OpLabel
119         %69 = OpLoad %int %i_0
120         %71 = OpSGreaterThan %bool %69 %int_100
121               OpSelectionMerge %74 None
122               OpBranchConditional %71 %72 %73
123         %72 = OpLabel
124               OpReturn
125         %73 = OpLabel
126               OpBranch %58
127         %74 = OpLabel
128               OpBranch %68
129         %68 = OpLabel
130               OpBranch %58
131         %58 = OpLabel
132         %75 = OpLoad %int %i_0
133         %76 = OpIAdd %int %75 %int_1
134               OpStore %i_0 %76
135               OpBranch %55
136         %59 = OpLabel
137               OpReturn
138               OpFunctionEnd
139