xref: /aosp_15_r20/external/skia/tests/sksl/runtime/RecursiveComparison_Vectors.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct _GlobalUniforms {
4  colorGreen: vec4<f32>,
5  colorRed: vec4<f32>,
6};
7@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
8fn test_same_vectors_bbffff(eq: bool, f1: f32, f2: f32, f3: f32, f4: f32) -> bool {
9  {
10    let one: f32 = f32(_globalUniforms.colorGreen.x + 1.0);
11    let a: vec4<f32> = vec4<f32>(f1, f2, f3, f4);
12    let b: vec4<f32> = vec4<f32>(f1 * one, f2 * one, f3 * one, f4 * one);
13    var _skTemp0: bool;
14    if eq {
15      _skTemp0 = all(a == b);
16    } else {
17      _skTemp0 = any(a != b);
18    }
19    return _skTemp0;
20  }
21}
22fn test_diff_vectors_bbffff(eq: bool, f1: f32, f2: f32, f3: f32, f4: f32) -> bool {
23  {
24    let two: f32 = f32(_globalUniforms.colorGreen.x + 2.0);
25    let a: vec4<f32> = vec4<f32>(f1, f2, f3, f4);
26    let b: vec4<f32> = vec4<f32>(f1 * two, f2 * two, f3 * two, f4 * two);
27    var _skTemp1: bool;
28    if eq {
29      _skTemp1 = all(a == b);
30    } else {
31      _skTemp1 = any(a != b);
32    }
33    return _skTemp1;
34  }
35}
36fn _skslMain(coords: vec2<f32>) -> vec4<f32> {
37  {
38    let NAN1: f32 = f32(_globalUniforms.colorGreen.x / _globalUniforms.colorGreen.z);
39    let NAN2: f32 = f32(_globalUniforms.colorGreen.z / _globalUniforms.colorGreen.x);
40    let ZP: f32 = f32(_globalUniforms.colorGreen.x * _globalUniforms.colorGreen.z);
41    let ZM: f32 = f32(-_globalUniforms.colorGreen.x * _globalUniforms.colorGreen.z);
42    let F42: f32 = f32(_globalUniforms.colorGreen.y * 42.0);
43    let F43: f32 = f32(_globalUniforms.colorGreen.y * 43.0);
44    let F44: f32 = f32(_globalUniforms.colorGreen.y * 44.0);
45    let F45: f32 = f32(_globalUniforms.colorGreen.y * 45.0);
46    const EQ: bool = true;
47    const NE: bool = false;
48    let _0_one: f32 = f32(_globalUniforms.colorGreen.x + 1.0);
49    let _1_a: vec4<f32> = vec4<f32>(F42, ZM, ZP, F43);
50    let _2_b: vec4<f32> = vec4<f32>(F42 * _0_one, ZM * _0_one, ZP * _0_one, F43 * _0_one);
51    var _skTemp2: vec4<f32>;
52    var _skTemp3: bool;
53    var _skTemp4: bool;
54    var _skTemp5: bool;
55    var _skTemp6: bool;
56    var _skTemp7: bool;
57    var _skTemp8: bool;
58    var _skTemp9: bool;
59    var _skTemp10: bool;
60    if EQ {
61      _skTemp10 = all(_1_a == _2_b);
62    } else {
63      _skTemp10 = any(_1_a != _2_b);
64    }
65    if _skTemp10 {
66      let _skTemp11 = test_same_vectors_bbffff(NE, F42, ZM, ZP, F43);
67      _skTemp9 = !_skTemp11;
68    } else {
69      _skTemp9 = false;
70    }
71    if _skTemp9 {
72      let _skTemp12 = test_same_vectors_bbffff(NE, F42, NAN1, NAN2, F43);
73      _skTemp8 = _skTemp12;
74    } else {
75      _skTemp8 = false;
76    }
77    if _skTemp8 {
78      let _skTemp13 = test_same_vectors_bbffff(EQ, F42, NAN1, NAN2, F43);
79      _skTemp7 = !_skTemp13;
80    } else {
81      _skTemp7 = false;
82    }
83    if _skTemp7 {
84      let _skTemp14 = test_diff_vectors_bbffff(NE, F42, F43, F44, F45);
85      _skTemp6 = _skTemp14;
86    } else {
87      _skTemp6 = false;
88    }
89    if _skTemp6 {
90      let _skTemp15 = test_diff_vectors_bbffff(EQ, F42, F43, F44, F45);
91      _skTemp5 = !_skTemp15;
92    } else {
93      _skTemp5 = false;
94    }
95    if _skTemp5 {
96      let _skTemp16 = test_diff_vectors_bbffff(NE, NAN1, ZM, ZP, F42);
97      _skTemp4 = _skTemp16;
98    } else {
99      _skTemp4 = false;
100    }
101    if _skTemp4 {
102      let _skTemp17 = test_diff_vectors_bbffff(EQ, NAN1, ZM, ZP, F42);
103      _skTemp3 = !_skTemp17;
104    } else {
105      _skTemp3 = false;
106    }
107    if _skTemp3 {
108      _skTemp2 = _globalUniforms.colorGreen;
109    } else {
110      _skTemp2 = _globalUniforms.colorRed;
111    }
112    return vec4<f32>(_skTemp2);
113  }
114}
115@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> {
116  return _skslMain(_coords);
117}
118