xref: /aosp_15_r20/external/skia/tests/sksl/folding/VectorScalarFolding.glsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker
2*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorRed;
3*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorGreen;
4*c8dee2aaSAndroid Build Coastguard Workeruniform float unknownInput;
5*c8dee2aaSAndroid Build Coastguard Workerbool test_int_b() {
6*c8dee2aaSAndroid Build Coastguard Worker    bool ok = true;
7*c8dee2aaSAndroid Build Coastguard Worker    ivec4 x = ivec4(6, 6, 7, 8);
8*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(6, 6, 7, 8);
9*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(7, 9, 9, 9);
10*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(7, 9, 9, 9);
11*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(9, 9, 10, 10);
12*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(9, 9, 10, 10);
13*c8dee2aaSAndroid Build Coastguard Worker    x.xyz = ivec3(6);
14*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(6, 6, 6, 10);
15*c8dee2aaSAndroid Build Coastguard Worker    x.xy = ivec2(3);
16*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(3, 3, 6, 10);
17*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(6);
18*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(6);
19*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(6, 6, 7, 8);
20*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(6, 6, 7, 8);
21*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(-7, -9, -9, -9);
22*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(-7, -9, -9, -9);
23*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(9, 9, 10, 10);
24*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(9, 9, 10, 10);
25*c8dee2aaSAndroid Build Coastguard Worker    x.xyz = ivec3(6);
26*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(6, 6, 6, 10);
27*c8dee2aaSAndroid Build Coastguard Worker    x.xy = ivec2(8);
28*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(8, 8, 6, 10);
29*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(200, 100, 50, 25);
30*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(200, 100, 50, 25);
31*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(6);
32*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(6);
33*c8dee2aaSAndroid Build Coastguard Worker    int unknown = int(unknownInput);
34*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
35*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
36*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(0);
37*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(0);
38*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(0) / unknown;
39*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(0);
40*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
41*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
42*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
43*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
44*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
45*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
46*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
47*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
48*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
49*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
50*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
51*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
52*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(0);
53*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(0);
54*c8dee2aaSAndroid Build Coastguard Worker    x = 0 / ivec4(unknown);
55*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(0);
56*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
57*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
58*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
59*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
60*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(0);
61*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(0);
62*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
63*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
64*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
65*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
66*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
67*c8dee2aaSAndroid Build Coastguard Worker    x += 1;
68*c8dee2aaSAndroid Build Coastguard Worker    x -= 1;
69*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
70*c8dee2aaSAndroid Build Coastguard Worker    x = ivec4(unknown);
71*c8dee2aaSAndroid Build Coastguard Worker    x = x + 1;
72*c8dee2aaSAndroid Build Coastguard Worker    x = x - 1;
73*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && x == ivec4(unknown);
74*c8dee2aaSAndroid Build Coastguard Worker    return ok;
75*c8dee2aaSAndroid Build Coastguard Worker}
76*c8dee2aaSAndroid Build Coastguard Workervec4 main() {
77*c8dee2aaSAndroid Build Coastguard Worker    bool _0_ok = true;
78*c8dee2aaSAndroid Build Coastguard Worker    vec4 _1_x = vec4(6.0, 6.0, 7.0, 8.0);
79*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(6.0, 6.0, 7.0, 8.0);
80*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(7.0, 9.0, 9.0, 9.0);
81*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(7.0, 9.0, 9.0, 9.0);
82*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(9.0, 9.0, 10.0, 10.0);
83*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(9.0, 9.0, 10.0, 10.0);
84*c8dee2aaSAndroid Build Coastguard Worker    _1_x.xyz = vec3(6.0);
85*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(6.0, 6.0, 6.0, 10.0);
86*c8dee2aaSAndroid Build Coastguard Worker    _1_x.xy = vec2(3.0);
87*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(3.0, 3.0, 6.0, 10.0);
88*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(6.0);
89*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(6.0);
90*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(6.0, 6.0, 7.0, 8.0);
91*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(6.0, 6.0, 7.0, 8.0);
92*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(-7.0, -9.0, -9.0, -9.0);
93*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(-7.0, -9.0, -9.0, -9.0);
94*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(9.0, 9.0, 10.0, 10.0);
95*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(9.0, 9.0, 10.0, 10.0);
96*c8dee2aaSAndroid Build Coastguard Worker    _1_x.xyz = vec3(6.0);
97*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(6.0, 6.0, 6.0, 10.0);
98*c8dee2aaSAndroid Build Coastguard Worker    _1_x.xy = vec2(8.0);
99*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(8.0, 8.0, 6.0, 10.0);
100*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(2.0, 1.0, 0.5, 0.25);
101*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(2.0, 1.0, 0.5, 0.25);
102*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(6.0);
103*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(6.0);
104*c8dee2aaSAndroid Build Coastguard Worker    float _2_unknown = unknownInput;
105*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
106*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
107*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(0.0);
108*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(0.0);
109*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(0.0) / _2_unknown;
110*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(0.0);
111*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
112*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
113*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
114*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
115*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
116*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
117*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
118*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
119*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
120*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
121*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
122*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
123*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(0.0);
124*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(0.0);
125*c8dee2aaSAndroid Build Coastguard Worker    _1_x = 0.0 / vec4(_2_unknown);
126*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(0.0);
127*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
128*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
129*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
130*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
131*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(0.0);
132*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(0.0);
133*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
134*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
135*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
136*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
137*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
138*c8dee2aaSAndroid Build Coastguard Worker    _1_x += 1.0;
139*c8dee2aaSAndroid Build Coastguard Worker    _1_x -= 1.0;
140*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
141*c8dee2aaSAndroid Build Coastguard Worker    _1_x = vec4(_2_unknown);
142*c8dee2aaSAndroid Build Coastguard Worker    _1_x = _1_x + 1.0;
143*c8dee2aaSAndroid Build Coastguard Worker    _1_x = _1_x - 1.0;
144*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && _1_x == vec4(_2_unknown);
145*c8dee2aaSAndroid Build Coastguard Worker    return _0_ok && test_int_b() ? colorGreen : colorRed;
146*c8dee2aaSAndroid Build Coastguard Worker}
147