xref: /aosp_15_r20/external/skia/tests/sksl/blend/BlendMultiply.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 "src"
9               OpMemberName %_UniformBuffer 1 "dst"
10               OpName %main "main"
11               OpDecorate %sk_FragColor RelaxedPrecision
12               OpDecorate %sk_FragColor Location 0
13               OpDecorate %sk_FragColor Index 0
14               OpMemberDecorate %_UniformBuffer 0 Offset 0
15               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
16               OpMemberDecorate %_UniformBuffer 1 Offset 16
17               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
18               OpDecorate %_UniformBuffer Block
19               OpDecorate %7 Binding 0
20               OpDecorate %7 DescriptorSet 0
21               OpDecorate %18 RelaxedPrecision
22               OpDecorate %19 RelaxedPrecision
23               OpDecorate %20 RelaxedPrecision
24               OpDecorate %23 RelaxedPrecision
25               OpDecorate %24 RelaxedPrecision
26               OpDecorate %26 RelaxedPrecision
27               OpDecorate %28 RelaxedPrecision
28               OpDecorate %29 RelaxedPrecision
29               OpDecorate %30 RelaxedPrecision
30               OpDecorate %32 RelaxedPrecision
31               OpDecorate %33 RelaxedPrecision
32               OpDecorate %34 RelaxedPrecision
33               OpDecorate %35 RelaxedPrecision
34               OpDecorate %37 RelaxedPrecision
35               OpDecorate %38 RelaxedPrecision
36               OpDecorate %40 RelaxedPrecision
37               OpDecorate %41 RelaxedPrecision
38               OpDecorate %42 RelaxedPrecision
39               OpDecorate %43 RelaxedPrecision
40               OpDecorate %44 RelaxedPrecision
41               OpDecorate %45 RelaxedPrecision
42               OpDecorate %46 RelaxedPrecision
43               OpDecorate %48 RelaxedPrecision
44               OpDecorate %49 RelaxedPrecision
45               OpDecorate %51 RelaxedPrecision
46               OpDecorate %52 RelaxedPrecision
47               OpDecorate %53 RelaxedPrecision
48               OpDecorate %55 RelaxedPrecision
49               OpDecorate %56 RelaxedPrecision
50               OpDecorate %57 RelaxedPrecision
51               OpDecorate %58 RelaxedPrecision
52               OpDecorate %59 RelaxedPrecision
53      %float = OpTypeFloat 32
54    %v4float = OpTypeVector %float 4
55%_ptr_Output_v4float = OpTypePointer Output %v4float
56%sk_FragColor = OpVariable %_ptr_Output_v4float Output
57%_UniformBuffer = OpTypeStruct %v4float %v4float
58%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
59          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
60       %void = OpTypeVoid
61         %11 = OpTypeFunction %void
62    %float_1 = OpConstant %float 1
63%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
64        %int = OpTypeInt 32 1
65      %int_0 = OpConstant %int 0
66      %int_1 = OpConstant %int 1
67    %v3float = OpTypeVector %float 3
68       %main = OpFunction %void None %11
69         %12 = OpLabel
70         %14 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
71         %18 = OpLoad %v4float %14
72         %19 = OpCompositeExtract %float %18 3
73         %20 = OpFSub %float %float_1 %19
74         %21 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
75         %23 = OpLoad %v4float %21
76         %24 = OpVectorShuffle %v3float %23 %23 0 1 2
77         %26 = OpVectorTimesScalar %v3float %24 %20
78         %27 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
79         %28 = OpLoad %v4float %27
80         %29 = OpCompositeExtract %float %28 3
81         %30 = OpFSub %float %float_1 %29
82         %31 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
83         %32 = OpLoad %v4float %31
84         %33 = OpVectorShuffle %v3float %32 %32 0 1 2
85         %34 = OpVectorTimesScalar %v3float %33 %30
86         %35 = OpFAdd %v3float %26 %34
87         %36 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
88         %37 = OpLoad %v4float %36
89         %38 = OpVectorShuffle %v3float %37 %37 0 1 2
90         %39 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
91         %40 = OpLoad %v4float %39
92         %41 = OpVectorShuffle %v3float %40 %40 0 1 2
93         %42 = OpFMul %v3float %38 %41
94         %43 = OpFAdd %v3float %35 %42
95         %44 = OpCompositeExtract %float %43 0
96         %45 = OpCompositeExtract %float %43 1
97         %46 = OpCompositeExtract %float %43 2
98         %47 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
99         %48 = OpLoad %v4float %47
100         %49 = OpCompositeExtract %float %48 3
101         %50 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
102         %51 = OpLoad %v4float %50
103         %52 = OpCompositeExtract %float %51 3
104         %53 = OpFSub %float %float_1 %52
105         %54 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
106         %55 = OpLoad %v4float %54
107         %56 = OpCompositeExtract %float %55 3
108         %57 = OpFMul %float %53 %56
109         %58 = OpFAdd %float %49 %57
110         %59 = OpCompositeConstruct %v4float %44 %45 %46 %58
111               OpStore %sk_FragColor %59
112               OpReturn
113               OpFunctionEnd
114