xref: /aosp_15_r20/external/skia/tests/sksl/folding/VectorScalarFolding.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct _GlobalUniforms {
4  colorRed: vec4<f32>,
5  colorGreen: vec4<f32>,
6  unknownInput: f32,
7};
8@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
9fn test_int_b() -> bool {
10  {
11    var ok: bool = true;
12    var x: vec4<i32> = vec4<i32>(6, 6, 7, 8);
13    ok = ok && all(x == vec4<i32>(6, 6, 7, 8));
14    x = vec4<i32>(7, 9, 9, 9);
15    ok = ok && all(x == vec4<i32>(7, 9, 9, 9));
16    x = vec4<i32>(9, 9, 10, 10);
17    ok = ok && all(x == vec4<i32>(9, 9, 10, 10));
18    x = vec4<i32>((vec3<i32>(6)), x.w);
19    ok = ok && all(x == vec4<i32>(6, 6, 6, 10));
20    x = vec4<i32>((vec2<i32>(3)), x.zw);
21    ok = ok && all(x == vec4<i32>(3, 3, 6, 10));
22    x = vec4<i32>(6);
23    ok = ok && all(x == vec4<i32>(6));
24    x = vec4<i32>(6, 6, 7, 8);
25    ok = ok && all(x == vec4<i32>(6, 6, 7, 8));
26    x = vec4<i32>(-7, -9, -9, -9);
27    ok = ok && all(x == vec4<i32>(-7, -9, -9, -9));
28    x = vec4<i32>(9, 9, 10, 10);
29    ok = ok && all(x == vec4<i32>(9, 9, 10, 10));
30    x = vec4<i32>((vec3<i32>(6)), x.w);
31    ok = ok && all(x == vec4<i32>(6, 6, 6, 10));
32    x = vec4<i32>((vec2<i32>(8)), x.zw);
33    ok = ok && all(x == vec4<i32>(8, 8, 6, 10));
34    x = vec4<i32>(200, 100, 50, 25);
35    ok = ok && all(x == vec4<i32>(200, 100, 50, 25));
36    x = vec4<i32>(6);
37    ok = ok && all(x == vec4<i32>(6));
38    let unknown: i32 = i32(_globalUniforms.unknownInput);
39    x = vec4<i32>(unknown);
40    ok = ok && all(x == vec4<i32>(unknown));
41    x = vec4<i32>(0);
42    ok = ok && all(x == vec4<i32>(0));
43    x = vec4<i32>(0) / unknown;
44    ok = ok && all(x == vec4<i32>(0));
45    x = vec4<i32>(unknown);
46    ok = ok && all(x == vec4<i32>(unknown));
47    x = vec4<i32>(unknown);
48    ok = ok && all(x == vec4<i32>(unknown));
49    x = vec4<i32>(unknown);
50    ok = ok && all(x == vec4<i32>(unknown));
51    x = vec4<i32>(unknown);
52    ok = ok && all(x == vec4<i32>(unknown));
53    x = vec4<i32>(unknown);
54    ok = ok && all(x == vec4<i32>(unknown));
55    x = vec4<i32>(unknown);
56    ok = ok && all(x == vec4<i32>(unknown));
57    x = vec4<i32>(0);
58    ok = ok && all(x == vec4<i32>(0));
59    x = 0 / vec4<i32>(unknown);
60    ok = ok && all(x == vec4<i32>(0));
61    x = vec4<i32>(unknown);
62    ok = ok && all(x == vec4<i32>(unknown));
63    x = vec4<i32>(unknown);
64    ok = ok && all(x == vec4<i32>(unknown));
65    x = vec4<i32>(0);
66    ok = ok && all(x == vec4<i32>(0));
67    x = vec4<i32>(unknown);
68    ok = ok && all(x == vec4<i32>(unknown));
69    x = vec4<i32>(unknown);
70    ok = ok && all(x == vec4<i32>(unknown));
71    x = vec4<i32>(unknown);
72    x = x + 1;
73    x = x - 1;
74    ok = ok && all(x == vec4<i32>(unknown));
75    x = vec4<i32>(unknown);
76    x = x + 1;
77    x = x - 1;
78    ok = ok && all(x == vec4<i32>(unknown));
79    return ok;
80  }
81}
82fn _skslMain(coords: vec2<f32>) -> vec4<f32> {
83  {
84    var _0_ok: bool = true;
85    var _1_x: vec4<f32> = vec4<f32>(6.0, 6.0, 7.0, 8.0);
86    _0_ok = _0_ok && all(_1_x == vec4<f32>(6.0, 6.0, 7.0, 8.0));
87    _1_x = vec4<f32>(7.0, 9.0, 9.0, 9.0);
88    _0_ok = _0_ok && all(_1_x == vec4<f32>(7.0, 9.0, 9.0, 9.0));
89    _1_x = vec4<f32>(9.0, 9.0, 10.0, 10.0);
90    _0_ok = _0_ok && all(_1_x == vec4<f32>(9.0, 9.0, 10.0, 10.0));
91    _1_x = vec4<f32>((vec3<f32>(6.0)), _1_x.w);
92    _0_ok = _0_ok && all(_1_x == vec4<f32>(6.0, 6.0, 6.0, 10.0));
93    _1_x = vec4<f32>((vec2<f32>(3.0)), _1_x.zw);
94    _0_ok = _0_ok && all(_1_x == vec4<f32>(3.0, 3.0, 6.0, 10.0));
95    _1_x = vec4<f32>(6.0);
96    _0_ok = _0_ok && all(_1_x == vec4<f32>(6.0));
97    _1_x = vec4<f32>(6.0, 6.0, 7.0, 8.0);
98    _0_ok = _0_ok && all(_1_x == vec4<f32>(6.0, 6.0, 7.0, 8.0));
99    _1_x = vec4<f32>(-7.0, -9.0, -9.0, -9.0);
100    _0_ok = _0_ok && all(_1_x == vec4<f32>(-7.0, -9.0, -9.0, -9.0));
101    _1_x = vec4<f32>(9.0, 9.0, 10.0, 10.0);
102    _0_ok = _0_ok && all(_1_x == vec4<f32>(9.0, 9.0, 10.0, 10.0));
103    _1_x = vec4<f32>((vec3<f32>(6.0)), _1_x.w);
104    _0_ok = _0_ok && all(_1_x == vec4<f32>(6.0, 6.0, 6.0, 10.0));
105    _1_x = vec4<f32>((vec2<f32>(8.0)), _1_x.zw);
106    _0_ok = _0_ok && all(_1_x == vec4<f32>(8.0, 8.0, 6.0, 10.0));
107    _1_x = vec4<f32>(2.0, 1.0, 0.5, 0.25);
108    _0_ok = _0_ok && all(_1_x == vec4<f32>(2.0, 1.0, 0.5, 0.25));
109    _1_x = vec4<f32>(6.0);
110    _0_ok = _0_ok && all(_1_x == vec4<f32>(6.0));
111    let _2_unknown: f32 = _globalUniforms.unknownInput;
112    _1_x = vec4<f32>(_2_unknown);
113    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
114    _1_x = vec4<f32>(0.0);
115    _0_ok = _0_ok && all(_1_x == vec4<f32>(0.0));
116    _1_x = vec4<f32>(0.0) / _2_unknown;
117    _0_ok = _0_ok && all(_1_x == vec4<f32>(0.0));
118    _1_x = vec4<f32>(_2_unknown);
119    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
120    _1_x = vec4<f32>(_2_unknown);
121    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
122    _1_x = vec4<f32>(_2_unknown);
123    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
124    _1_x = vec4<f32>(_2_unknown);
125    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
126    _1_x = vec4<f32>(_2_unknown);
127    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
128    _1_x = vec4<f32>(_2_unknown);
129    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
130    _1_x = vec4<f32>(0.0);
131    _0_ok = _0_ok && all(_1_x == vec4<f32>(0.0));
132    _1_x = 0.0 / vec4<f32>(_2_unknown);
133    _0_ok = _0_ok && all(_1_x == vec4<f32>(0.0));
134    _1_x = vec4<f32>(_2_unknown);
135    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
136    _1_x = vec4<f32>(_2_unknown);
137    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
138    _1_x = vec4<f32>(0.0);
139    _0_ok = _0_ok && all(_1_x == vec4<f32>(0.0));
140    _1_x = vec4<f32>(_2_unknown);
141    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
142    _1_x = vec4<f32>(_2_unknown);
143    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
144    _1_x = vec4<f32>(_2_unknown);
145    _1_x = _1_x + 1.0;
146    _1_x = _1_x - 1.0;
147    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
148    _1_x = vec4<f32>(_2_unknown);
149    _1_x = _1_x + 1.0;
150    _1_x = _1_x - 1.0;
151    _0_ok = _0_ok && all(_1_x == vec4<f32>(_2_unknown));
152    var _skTemp0: vec4<f32>;
153    var _skTemp1: bool;
154    if _0_ok {
155      let _skTemp2 = test_int_b();
156      _skTemp1 = _skTemp2;
157    } else {
158      _skTemp1 = false;
159    }
160    if _skTemp1 {
161      _skTemp0 = _globalUniforms.colorGreen;
162    } else {
163      _skTemp0 = _globalUniforms.colorRed;
164    }
165    return _skTemp0;
166  }
167}
168@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> {
169  return _skslMain(_coords);
170}
171