xref: /aosp_15_r20/external/skia/tests/sksl/shared/MatrixScalarMath.hlsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workercbuffer _UniformBuffer : register(b0, space0)
2*c8dee2aaSAndroid Build Coastguard Worker{
3*c8dee2aaSAndroid Build Coastguard Worker    float4 _9_colorGreen : packoffset(c0);
4*c8dee2aaSAndroid Build Coastguard Worker    float4 _9_colorRed : packoffset(c1);
5*c8dee2aaSAndroid Build Coastguard Worker    float4 _9_testInputs : packoffset(c2);
6*c8dee2aaSAndroid Build Coastguard Worker};
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Workerstatic float4 sk_FragColor;
10*c8dee2aaSAndroid Build Coastguard Worker
11*c8dee2aaSAndroid Build Coastguard Workerstruct SPIRV_Cross_Output
12*c8dee2aaSAndroid Build Coastguard Worker{
13*c8dee2aaSAndroid Build Coastguard Worker    float4 sk_FragColor : SV_Target0;
14*c8dee2aaSAndroid Build Coastguard Worker};
15*c8dee2aaSAndroid Build Coastguard Worker
16*c8dee2aaSAndroid Build Coastguard Workerbool test_bifffff22(int _29, float _30, float _31, float _32, float _33, float2x2 _34)
17*c8dee2aaSAndroid Build Coastguard Worker{
18*c8dee2aaSAndroid Build Coastguard Worker    float one = _9_colorRed.x;
19*c8dee2aaSAndroid Build Coastguard Worker    float2 _51 = float2(_30 * _9_colorRed.x, _31 * _9_colorRed.x);
20*c8dee2aaSAndroid Build Coastguard Worker    float2 _52 = float2(_32 * _9_colorRed.x, _33 * _9_colorRed.x);
21*c8dee2aaSAndroid Build Coastguard Worker    float2x2 m2 = float2x2(_51, _52);
22*c8dee2aaSAndroid Build Coastguard Worker    switch (_29)
23*c8dee2aaSAndroid Build Coastguard Worker    {
24*c8dee2aaSAndroid Build Coastguard Worker        case 1:
25*c8dee2aaSAndroid Build Coastguard Worker        {
26*c8dee2aaSAndroid Build Coastguard Worker            m2 = float2x2(1.0f.xx + _51, 1.0f.xx + _52);
27*c8dee2aaSAndroid Build Coastguard Worker            break;
28*c8dee2aaSAndroid Build Coastguard Worker        }
29*c8dee2aaSAndroid Build Coastguard Worker        case 2:
30*c8dee2aaSAndroid Build Coastguard Worker        {
31*c8dee2aaSAndroid Build Coastguard Worker            m2 = float2x2(m2[0] - 1.0f.xx, m2[1] - 1.0f.xx);
32*c8dee2aaSAndroid Build Coastguard Worker            break;
33*c8dee2aaSAndroid Build Coastguard Worker        }
34*c8dee2aaSAndroid Build Coastguard Worker        case 3:
35*c8dee2aaSAndroid Build Coastguard Worker        {
36*c8dee2aaSAndroid Build Coastguard Worker            m2 = m2 * 2.0f;
37*c8dee2aaSAndroid Build Coastguard Worker            break;
38*c8dee2aaSAndroid Build Coastguard Worker        }
39*c8dee2aaSAndroid Build Coastguard Worker        case 4:
40*c8dee2aaSAndroid Build Coastguard Worker        {
41*c8dee2aaSAndroid Build Coastguard Worker            m2 = m2 * 0.5f;
42*c8dee2aaSAndroid Build Coastguard Worker            break;
43*c8dee2aaSAndroid Build Coastguard Worker        }
44*c8dee2aaSAndroid Build Coastguard Worker    }
45*c8dee2aaSAndroid Build Coastguard Worker    bool _96 = false;
46*c8dee2aaSAndroid Build Coastguard Worker    if (m2[0].x == _34[0].x)
47*c8dee2aaSAndroid Build Coastguard Worker    {
48*c8dee2aaSAndroid Build Coastguard Worker        _96 = m2[0].y == _34[0].y;
49*c8dee2aaSAndroid Build Coastguard Worker    }
50*c8dee2aaSAndroid Build Coastguard Worker    else
51*c8dee2aaSAndroid Build Coastguard Worker    {
52*c8dee2aaSAndroid Build Coastguard Worker        _96 = false;
53*c8dee2aaSAndroid Build Coastguard Worker    }
54*c8dee2aaSAndroid Build Coastguard Worker    bool _106 = false;
55*c8dee2aaSAndroid Build Coastguard Worker    if (_96)
56*c8dee2aaSAndroid Build Coastguard Worker    {
57*c8dee2aaSAndroid Build Coastguard Worker        _106 = m2[1].x == _34[1].x;
58*c8dee2aaSAndroid Build Coastguard Worker    }
59*c8dee2aaSAndroid Build Coastguard Worker    else
60*c8dee2aaSAndroid Build Coastguard Worker    {
61*c8dee2aaSAndroid Build Coastguard Worker        _106 = false;
62*c8dee2aaSAndroid Build Coastguard Worker    }
63*c8dee2aaSAndroid Build Coastguard Worker    bool _116 = false;
64*c8dee2aaSAndroid Build Coastguard Worker    if (_106)
65*c8dee2aaSAndroid Build Coastguard Worker    {
66*c8dee2aaSAndroid Build Coastguard Worker        _116 = m2[1].y == _34[1].y;
67*c8dee2aaSAndroid Build Coastguard Worker    }
68*c8dee2aaSAndroid Build Coastguard Worker    else
69*c8dee2aaSAndroid Build Coastguard Worker    {
70*c8dee2aaSAndroid Build Coastguard Worker        _116 = false;
71*c8dee2aaSAndroid Build Coastguard Worker    }
72*c8dee2aaSAndroid Build Coastguard Worker    return _116;
73*c8dee2aaSAndroid Build Coastguard Worker}
74*c8dee2aaSAndroid Build Coastguard Worker
75*c8dee2aaSAndroid Build Coastguard Workerbool divisionTest_b()
76*c8dee2aaSAndroid Build Coastguard Worker{
77*c8dee2aaSAndroid Build Coastguard Worker    float _124 = _9_colorRed.x * 10.0f;
78*c8dee2aaSAndroid Build Coastguard Worker    float ten = _124;
79*c8dee2aaSAndroid Build Coastguard Worker    float2 _126 = _124.xx;
80*c8dee2aaSAndroid Build Coastguard Worker    float2x2 _127 = float2x2(_126, _126);
81*c8dee2aaSAndroid Build Coastguard Worker    float2x2 mat = _127;
82*c8dee2aaSAndroid Build Coastguard Worker    float2x2 _134 = _127 * (1.0f / _9_testInputs.x);
83*c8dee2aaSAndroid Build Coastguard Worker    float2x2 div = _134;
84*c8dee2aaSAndroid Build Coastguard Worker    float2x2 _139 = _127 * (1.0f / _9_testInputs.x);
85*c8dee2aaSAndroid Build Coastguard Worker    mat = _139;
86*c8dee2aaSAndroid Build Coastguard Worker    float4 _142 = abs(float4(_134[0].x, _134[0].y, _134[1].x, _134[1].y) + 8.0f.xxxx);
87*c8dee2aaSAndroid Build Coastguard Worker    bool _165 = false;
88*c8dee2aaSAndroid Build Coastguard Worker    if (all(bool4(_142.x < 0.00999999977648258209228515625f.xxxx.x, _142.y < 0.00999999977648258209228515625f.xxxx.y, _142.z < 0.00999999977648258209228515625f.xxxx.z, _142.w < 0.00999999977648258209228515625f.xxxx.w)))
89*c8dee2aaSAndroid Build Coastguard Worker    {
90*c8dee2aaSAndroid Build Coastguard Worker        float4 _158 = abs(float4(_139[0].x, _139[0].y, _139[1].x, _139[1].y) + 8.0f.xxxx);
91*c8dee2aaSAndroid Build Coastguard Worker        _165 = all(bool4(_158.x < 0.00999999977648258209228515625f.xxxx.x, _158.y < 0.00999999977648258209228515625f.xxxx.y, _158.z < 0.00999999977648258209228515625f.xxxx.z, _158.w < 0.00999999977648258209228515625f.xxxx.w));
92*c8dee2aaSAndroid Build Coastguard Worker    }
93*c8dee2aaSAndroid Build Coastguard Worker    else
94*c8dee2aaSAndroid Build Coastguard Worker    {
95*c8dee2aaSAndroid Build Coastguard Worker        _165 = false;
96*c8dee2aaSAndroid Build Coastguard Worker    }
97*c8dee2aaSAndroid Build Coastguard Worker    return _165;
98*c8dee2aaSAndroid Build Coastguard Worker}
99*c8dee2aaSAndroid Build Coastguard Worker
100*c8dee2aaSAndroid Build Coastguard Workerfloat4 main(float2 _167)
101*c8dee2aaSAndroid Build Coastguard Worker{
102*c8dee2aaSAndroid Build Coastguard Worker    float f1 = _9_colorGreen.y;
103*c8dee2aaSAndroid Build Coastguard Worker    float _177 = 2.0f * _9_colorGreen.y;
104*c8dee2aaSAndroid Build Coastguard Worker    float f2 = _177;
105*c8dee2aaSAndroid Build Coastguard Worker    float _183 = 3.0f * _9_colorGreen.y;
106*c8dee2aaSAndroid Build Coastguard Worker    float f3 = _183;
107*c8dee2aaSAndroid Build Coastguard Worker    float _189 = 4.0f * _9_colorGreen.y;
108*c8dee2aaSAndroid Build Coastguard Worker    float f4 = _189;
109*c8dee2aaSAndroid Build Coastguard Worker    float2x2 _RESERVED_IDENTIFIER_FIXUP_0_expected = float2x2(float2(_9_colorGreen.y + 1.0f, _177 + 1.0f), float2(_183 + 1.0f, _189 + 1.0f));
110*c8dee2aaSAndroid Build Coastguard Worker    float _RESERVED_IDENTIFIER_FIXUP_1_one = _9_colorRed.x;
111*c8dee2aaSAndroid Build Coastguard Worker    float2 _207 = float2(_9_colorGreen.y * _9_colorRed.x, _177 * _9_colorRed.x);
112*c8dee2aaSAndroid Build Coastguard Worker    float2 _208 = float2(_183 * _9_colorRed.x, _189 * _9_colorRed.x);
113*c8dee2aaSAndroid Build Coastguard Worker    float2x2 _RESERVED_IDENTIFIER_FIXUP_2_m2 = float2x2(_207, _208);
114*c8dee2aaSAndroid Build Coastguard Worker    _RESERVED_IDENTIFIER_FIXUP_2_m2 = float2x2(1.0f.xx + _207, 1.0f.xx + _208);
115*c8dee2aaSAndroid Build Coastguard Worker    bool _229 = false;
116*c8dee2aaSAndroid Build Coastguard Worker    if (_RESERVED_IDENTIFIER_FIXUP_2_m2[0].x == _RESERVED_IDENTIFIER_FIXUP_0_expected[0].x)
117*c8dee2aaSAndroid Build Coastguard Worker    {
118*c8dee2aaSAndroid Build Coastguard Worker        _229 = _RESERVED_IDENTIFIER_FIXUP_2_m2[0].y == _RESERVED_IDENTIFIER_FIXUP_0_expected[0].y;
119*c8dee2aaSAndroid Build Coastguard Worker    }
120*c8dee2aaSAndroid Build Coastguard Worker    else
121*c8dee2aaSAndroid Build Coastguard Worker    {
122*c8dee2aaSAndroid Build Coastguard Worker        _229 = false;
123*c8dee2aaSAndroid Build Coastguard Worker    }
124*c8dee2aaSAndroid Build Coastguard Worker    bool _239 = false;
125*c8dee2aaSAndroid Build Coastguard Worker    if (_229)
126*c8dee2aaSAndroid Build Coastguard Worker    {
127*c8dee2aaSAndroid Build Coastguard Worker        _239 = _RESERVED_IDENTIFIER_FIXUP_2_m2[1].x == _RESERVED_IDENTIFIER_FIXUP_0_expected[1].x;
128*c8dee2aaSAndroid Build Coastguard Worker    }
129*c8dee2aaSAndroid Build Coastguard Worker    else
130*c8dee2aaSAndroid Build Coastguard Worker    {
131*c8dee2aaSAndroid Build Coastguard Worker        _239 = false;
132*c8dee2aaSAndroid Build Coastguard Worker    }
133*c8dee2aaSAndroid Build Coastguard Worker    bool _249 = false;
134*c8dee2aaSAndroid Build Coastguard Worker    if (_239)
135*c8dee2aaSAndroid Build Coastguard Worker    {
136*c8dee2aaSAndroid Build Coastguard Worker        _249 = _RESERVED_IDENTIFIER_FIXUP_2_m2[1].y == _RESERVED_IDENTIFIER_FIXUP_0_expected[1].y;
137*c8dee2aaSAndroid Build Coastguard Worker    }
138*c8dee2aaSAndroid Build Coastguard Worker    else
139*c8dee2aaSAndroid Build Coastguard Worker    {
140*c8dee2aaSAndroid Build Coastguard Worker        _249 = false;
141*c8dee2aaSAndroid Build Coastguard Worker    }
142*c8dee2aaSAndroid Build Coastguard Worker    bool _266 = false;
143*c8dee2aaSAndroid Build Coastguard Worker    if (_249)
144*c8dee2aaSAndroid Build Coastguard Worker    {
145*c8dee2aaSAndroid Build Coastguard Worker        int _252 = 2;
146*c8dee2aaSAndroid Build Coastguard Worker        float _253 = _9_colorGreen.y;
147*c8dee2aaSAndroid Build Coastguard Worker        float _254 = _177;
148*c8dee2aaSAndroid Build Coastguard Worker        float _255 = _183;
149*c8dee2aaSAndroid Build Coastguard Worker        float _256 = _189;
150*c8dee2aaSAndroid Build Coastguard Worker        float2x2 _264 = float2x2(float2(_9_colorGreen.y - 1.0f, _177 - 1.0f), float2(_183 - 1.0f, _189 - 1.0f));
151*c8dee2aaSAndroid Build Coastguard Worker        _266 = test_bifffff22(_252, _253, _254, _255, _256, _264);
152*c8dee2aaSAndroid Build Coastguard Worker    }
153*c8dee2aaSAndroid Build Coastguard Worker    else
154*c8dee2aaSAndroid Build Coastguard Worker    {
155*c8dee2aaSAndroid Build Coastguard Worker        _266 = false;
156*c8dee2aaSAndroid Build Coastguard Worker    }
157*c8dee2aaSAndroid Build Coastguard Worker    bool _284 = false;
158*c8dee2aaSAndroid Build Coastguard Worker    if (_266)
159*c8dee2aaSAndroid Build Coastguard Worker    {
160*c8dee2aaSAndroid Build Coastguard Worker        int _270 = 3;
161*c8dee2aaSAndroid Build Coastguard Worker        float _271 = _9_colorGreen.y;
162*c8dee2aaSAndroid Build Coastguard Worker        float _272 = _177;
163*c8dee2aaSAndroid Build Coastguard Worker        float _273 = _183;
164*c8dee2aaSAndroid Build Coastguard Worker        float _274 = _189;
165*c8dee2aaSAndroid Build Coastguard Worker        float2x2 _282 = float2x2(float2(_9_colorGreen.y * 2.0f, _177 * 2.0f), float2(_183 * 2.0f, _189 * 2.0f));
166*c8dee2aaSAndroid Build Coastguard Worker        _284 = test_bifffff22(_270, _271, _272, _273, _274, _282);
167*c8dee2aaSAndroid Build Coastguard Worker    }
168*c8dee2aaSAndroid Build Coastguard Worker    else
169*c8dee2aaSAndroid Build Coastguard Worker    {
170*c8dee2aaSAndroid Build Coastguard Worker        _284 = false;
171*c8dee2aaSAndroid Build Coastguard Worker    }
172*c8dee2aaSAndroid Build Coastguard Worker    bool _302 = false;
173*c8dee2aaSAndroid Build Coastguard Worker    if (_284)
174*c8dee2aaSAndroid Build Coastguard Worker    {
175*c8dee2aaSAndroid Build Coastguard Worker        int _288 = 4;
176*c8dee2aaSAndroid Build Coastguard Worker        float _289 = _9_colorGreen.y;
177*c8dee2aaSAndroid Build Coastguard Worker        float _290 = _177;
178*c8dee2aaSAndroid Build Coastguard Worker        float _291 = _183;
179*c8dee2aaSAndroid Build Coastguard Worker        float _292 = _189;
180*c8dee2aaSAndroid Build Coastguard Worker        float2x2 _300 = float2x2(float2(_9_colorGreen.y * 0.5f, _177 * 0.5f), float2(_183 * 0.5f, _189 * 0.5f));
181*c8dee2aaSAndroid Build Coastguard Worker        _302 = test_bifffff22(_288, _289, _290, _291, _292, _300);
182*c8dee2aaSAndroid Build Coastguard Worker    }
183*c8dee2aaSAndroid Build Coastguard Worker    else
184*c8dee2aaSAndroid Build Coastguard Worker    {
185*c8dee2aaSAndroid Build Coastguard Worker        _302 = false;
186*c8dee2aaSAndroid Build Coastguard Worker    }
187*c8dee2aaSAndroid Build Coastguard Worker    bool _306 = false;
188*c8dee2aaSAndroid Build Coastguard Worker    if (_302)
189*c8dee2aaSAndroid Build Coastguard Worker    {
190*c8dee2aaSAndroid Build Coastguard Worker        _306 = divisionTest_b();
191*c8dee2aaSAndroid Build Coastguard Worker    }
192*c8dee2aaSAndroid Build Coastguard Worker    else
193*c8dee2aaSAndroid Build Coastguard Worker    {
194*c8dee2aaSAndroid Build Coastguard Worker        _306 = false;
195*c8dee2aaSAndroid Build Coastguard Worker    }
196*c8dee2aaSAndroid Build Coastguard Worker    float4 _307 = 0.0f.xxxx;
197*c8dee2aaSAndroid Build Coastguard Worker    if (_306)
198*c8dee2aaSAndroid Build Coastguard Worker    {
199*c8dee2aaSAndroid Build Coastguard Worker        _307 = _9_colorGreen;
200*c8dee2aaSAndroid Build Coastguard Worker    }
201*c8dee2aaSAndroid Build Coastguard Worker    else
202*c8dee2aaSAndroid Build Coastguard Worker    {
203*c8dee2aaSAndroid Build Coastguard Worker        _307 = _9_colorRed;
204*c8dee2aaSAndroid Build Coastguard Worker    }
205*c8dee2aaSAndroid Build Coastguard Worker    return _307;
206*c8dee2aaSAndroid Build Coastguard Worker}
207*c8dee2aaSAndroid Build Coastguard Worker
208*c8dee2aaSAndroid Build Coastguard Workervoid frag_main()
209*c8dee2aaSAndroid Build Coastguard Worker{
210*c8dee2aaSAndroid Build Coastguard Worker    float2 _19 = 0.0f.xx;
211*c8dee2aaSAndroid Build Coastguard Worker    sk_FragColor = main(_19);
212*c8dee2aaSAndroid Build Coastguard Worker}
213*c8dee2aaSAndroid Build Coastguard Worker
214*c8dee2aaSAndroid Build Coastguard WorkerSPIRV_Cross_Output main()
215*c8dee2aaSAndroid Build Coastguard Worker{
216*c8dee2aaSAndroid Build Coastguard Worker    frag_main();
217*c8dee2aaSAndroid Build Coastguard Worker    SPIRV_Cross_Output stage_output;
218*c8dee2aaSAndroid Build Coastguard Worker    stage_output.sk_FragColor = sk_FragColor;
219*c8dee2aaSAndroid Build Coastguard Worker    return stage_output;
220*c8dee2aaSAndroid Build Coastguard Worker}
221