xref: /aosp_15_r20/external/skia/resources/sksl/shared/Overflow.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1uniform half4 colorGreen;
2
3half4 main(float2 coords) {
4    const half h = 999999999.9;
5    half hugeH = h * h * h * h * h * h * h * h * h * h * h * h * h * h * h;
6
7    const float f = 999999999.9;
8    float hugeF = f * f * f * f * f * f * f * f * f * f * f * f * f * f * f;
9
10    int hugeI = 16384
11                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
12                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
13
14    uint hugeU = uint(16384)
15                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
16                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
17
18    short hugeS = short(8192)
19                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
20
21    ushort hugeUS = ushort(8192)
22                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
23
24    int hugeNI = -16384
25                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
26                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
27
28    short hugeNS = short(-8192)
29                * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
30
31    const int4 i4 = int4(2, 2, 2, 2);
32    int4 hugeIvec = i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 *
33                    i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 *
34                    i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4 * i4;
35
36    const uint4 u4 = uint4(2, 2, 2, 2);
37    uint4 hugeUvec = u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 *
38                     u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 *
39                     u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4 * u4;
40
41    float4x4 hugeMxM = float4x4(1e20, 1e20, 1e20, 1e20,
42                                1e20, 1e20, 1e20, 1e20,
43                                1e20, 1e20, 1e20, 1e20,
44                                1e20, 1e20, 1e20, 1e20) *
45                       float4x4(1e20, 1e20, 1e20, 1e20,
46                                1e20, 1e20, 1e20, 1e20,
47                                1e20, 1e20, 1e20, 1e20,
48                                1e20, 1e20, 1e20, 1e20);
49
50    float4 hugeMxV = float4x4(1e20, 1e20, 1e20, 1e20,
51                              1e20, 1e20, 1e20, 1e20,
52                              1e20, 1e20, 1e20, 1e20,
53                              1e20, 1e20, 1e20, 1e20) *
54                     float4(1e20, 1e20, 1e20, 1e20);
55
56    float4 hugeVxM = float4(1e20, 1e20, 1e20, 1e20) *
57                     float4x4(1e20, 1e20, 1e20, 1e20,
58                              1e20, 1e20, 1e20, 1e20,
59                              1e20, 1e20, 1e20, 1e20,
60                              1e20, 1e20, 1e20, 1e20);
61
62    return colorGreen * saturate(hugeH) * saturate(half(hugeF)) * saturate(half(hugeI)) *
63                        saturate(half(hugeU)) * saturate(half(hugeS)) * saturate(half(hugeUS)) *
64                        saturate(half(hugeNI)) * saturate(half(hugeNS)) *
65                        saturate(half4(hugeIvec)) * saturate(half4(hugeUvec)) *
66                        saturate(half4(hugeMxM[0])) * saturate(half4(hugeMxV)) *
67                        saturate(half4(hugeVxM));
68}
69