xref: /aosp_15_r20/external/skia/tests/sksl/shared/NumberConversions.metal (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker#include <metal_stdlib>
2*c8dee2aaSAndroid Build Coastguard Worker#include <simd/simd.h>
3*c8dee2aaSAndroid Build Coastguard Worker#ifdef __clang__
4*c8dee2aaSAndroid Build Coastguard Worker#pragma clang diagnostic ignored "-Wall"
5*c8dee2aaSAndroid Build Coastguard Worker#endif
6*c8dee2aaSAndroid Build Coastguard Workerusing namespace metal;
7*c8dee2aaSAndroid Build Coastguard Workerstruct Uniforms {
8*c8dee2aaSAndroid Build Coastguard Worker    float unknownInput;
9*c8dee2aaSAndroid Build Coastguard Worker};
10*c8dee2aaSAndroid Build Coastguard Workerstruct Inputs {
11*c8dee2aaSAndroid Build Coastguard Worker};
12*c8dee2aaSAndroid Build Coastguard Workerstruct Outputs {
13*c8dee2aaSAndroid Build Coastguard Worker    half4 sk_FragColor [[color(0)]];
14*c8dee2aaSAndroid Build Coastguard Worker};
15*c8dee2aaSAndroid Build Coastguard Workerfragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
16*c8dee2aaSAndroid Build Coastguard Worker    Outputs _out;
17*c8dee2aaSAndroid Build Coastguard Worker    (void)_out;
18*c8dee2aaSAndroid Build Coastguard Worker    bool b = true;
19*c8dee2aaSAndroid Build Coastguard Worker    short s = short(_uniforms.unknownInput);
20*c8dee2aaSAndroid Build Coastguard Worker    int i = int(_uniforms.unknownInput);
21*c8dee2aaSAndroid Build Coastguard Worker    ushort us = ushort(_uniforms.unknownInput);
22*c8dee2aaSAndroid Build Coastguard Worker    uint ui = uint(_uniforms.unknownInput);
23*c8dee2aaSAndroid Build Coastguard Worker    half h = half(_uniforms.unknownInput);
24*c8dee2aaSAndroid Build Coastguard Worker    float f = _uniforms.unknownInput;
25*c8dee2aaSAndroid Build Coastguard Worker    short s2s = s;
26*c8dee2aaSAndroid Build Coastguard Worker    short i2s = short(i);
27*c8dee2aaSAndroid Build Coastguard Worker    short us2s = short(us);
28*c8dee2aaSAndroid Build Coastguard Worker    short ui2s = short(ui);
29*c8dee2aaSAndroid Build Coastguard Worker    short h2s = short(h);
30*c8dee2aaSAndroid Build Coastguard Worker    short f2s = short(f);
31*c8dee2aaSAndroid Build Coastguard Worker    short b2s = short(b);
32*c8dee2aaSAndroid Build Coastguard Worker    int s2i = int(s);
33*c8dee2aaSAndroid Build Coastguard Worker    int i2i = i;
34*c8dee2aaSAndroid Build Coastguard Worker    int us2i = int(us);
35*c8dee2aaSAndroid Build Coastguard Worker    int ui2i = int(ui);
36*c8dee2aaSAndroid Build Coastguard Worker    int h2i = int(h);
37*c8dee2aaSAndroid Build Coastguard Worker    int f2i = int(f);
38*c8dee2aaSAndroid Build Coastguard Worker    int b2i = int(b);
39*c8dee2aaSAndroid Build Coastguard Worker    ushort s2us = ushort(s);
40*c8dee2aaSAndroid Build Coastguard Worker    ushort i2us = ushort(i);
41*c8dee2aaSAndroid Build Coastguard Worker    ushort us2us = us;
42*c8dee2aaSAndroid Build Coastguard Worker    ushort ui2us = ushort(ui);
43*c8dee2aaSAndroid Build Coastguard Worker    ushort h2us = ushort(h);
44*c8dee2aaSAndroid Build Coastguard Worker    ushort f2us = ushort(f);
45*c8dee2aaSAndroid Build Coastguard Worker    ushort b2us = ushort(b);
46*c8dee2aaSAndroid Build Coastguard Worker    uint s2ui = uint(s);
47*c8dee2aaSAndroid Build Coastguard Worker    uint i2ui = uint(i);
48*c8dee2aaSAndroid Build Coastguard Worker    uint us2ui = uint(us);
49*c8dee2aaSAndroid Build Coastguard Worker    uint ui2ui = ui;
50*c8dee2aaSAndroid Build Coastguard Worker    uint h2ui = uint(h);
51*c8dee2aaSAndroid Build Coastguard Worker    uint f2ui = uint(f);
52*c8dee2aaSAndroid Build Coastguard Worker    uint b2ui = uint(b);
53*c8dee2aaSAndroid Build Coastguard Worker    float s2f = float(s);
54*c8dee2aaSAndroid Build Coastguard Worker    float i2f = float(i);
55*c8dee2aaSAndroid Build Coastguard Worker    float us2f = float(us);
56*c8dee2aaSAndroid Build Coastguard Worker    float ui2f = float(ui);
57*c8dee2aaSAndroid Build Coastguard Worker    float h2f = float(h);
58*c8dee2aaSAndroid Build Coastguard Worker    float f2f = f;
59*c8dee2aaSAndroid Build Coastguard Worker    float b2f = float(b);
60*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor.x = (((((((((((((((((((((half(s) + half(i)) + half(us)) + half(ui)) + h) + half(f)) + half(s2s)) + half(i2s)) + half(us2s)) + half(ui2s)) + half(h2s)) + half(f2s)) + half(b2s)) + half(s2i)) + half(i2i)) + half(us2i)) + half(ui2i)) + half(h2i)) + half(f2i)) + half(b2i)) + half(s2us)) + half(i2us)) + half(us2us);
61*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor.x = _out.sk_FragColor.x + (((((((((((((((((half(ui2us) + half(h2us)) + half(f2us)) + half(b2us)) + half(s2ui)) + half(i2ui)) + half(us2ui)) + half(ui2ui)) + half(h2ui)) + half(f2ui)) + half(b2ui)) + half(s2f)) + half(i2f)) + half(us2f)) + half(ui2f)) + half(h2f)) + half(f2f)) + half(b2f));
62*c8dee2aaSAndroid Build Coastguard Worker    return _out;
63*c8dee2aaSAndroid Build Coastguard Worker}
64