xref: /aosp_15_r20/external/skia/tests/sksl/shared/Assignment.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 S {
8*c8dee2aaSAndroid Build Coastguard Worker    float f;
9*c8dee2aaSAndroid Build Coastguard Worker    array<float, 5> af;
10*c8dee2aaSAndroid Build Coastguard Worker    half4 h4;
11*c8dee2aaSAndroid Build Coastguard Worker    array<half4, 5> ah4;
12*c8dee2aaSAndroid Build Coastguard Worker};
13*c8dee2aaSAndroid Build Coastguard Workerstruct Uniforms {
14*c8dee2aaSAndroid Build Coastguard Worker    half4 colorGreen;
15*c8dee2aaSAndroid Build Coastguard Worker};
16*c8dee2aaSAndroid Build Coastguard Workerstruct Inputs {
17*c8dee2aaSAndroid Build Coastguard Worker};
18*c8dee2aaSAndroid Build Coastguard Workerstruct Outputs {
19*c8dee2aaSAndroid Build Coastguard Worker    half4 sk_FragColor [[color(0)]];
20*c8dee2aaSAndroid Build Coastguard Worker};
21*c8dee2aaSAndroid Build Coastguard Workerstruct Globals {
22*c8dee2aaSAndroid Build Coastguard Worker    half4 globalVar;
23*c8dee2aaSAndroid Build Coastguard Worker    S globalStruct;
24*c8dee2aaSAndroid Build Coastguard Worker};
25*c8dee2aaSAndroid Build Coastguard Workervoid keepAlive_vh(thread half& h) {
26*c8dee2aaSAndroid Build Coastguard Worker}
27*c8dee2aaSAndroid Build Coastguard Workervoid keepAlive_vf(thread float& f) {
28*c8dee2aaSAndroid Build Coastguard Worker}
29*c8dee2aaSAndroid Build Coastguard Workervoid keepAlive_vi(thread int& i) {
30*c8dee2aaSAndroid Build Coastguard Worker}
31*c8dee2aaSAndroid Build Coastguard Workervoid assignToFunctionParameter_vif(int x, thread float& y) {
32*c8dee2aaSAndroid Build Coastguard Worker    x = 1;
33*c8dee2aaSAndroid Build Coastguard Worker    y = 1.0;
34*c8dee2aaSAndroid Build Coastguard Worker}
35*c8dee2aaSAndroid Build Coastguard Workerfragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
36*c8dee2aaSAndroid Build Coastguard Worker    Globals _globals{{}, {}};
37*c8dee2aaSAndroid Build Coastguard Worker    (void)_globals;
38*c8dee2aaSAndroid Build Coastguard Worker    Outputs _out;
39*c8dee2aaSAndroid Build Coastguard Worker    (void)_out;
40*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp0;
41*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp1;
42*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp2;
43*c8dee2aaSAndroid Build Coastguard Worker    int _skTemp3;
44*c8dee2aaSAndroid Build Coastguard Worker    int _skTemp4;
45*c8dee2aaSAndroid Build Coastguard Worker    int _skTemp5;
46*c8dee2aaSAndroid Build Coastguard Worker    int _skTemp6;
47*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp7;
48*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp8;
49*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp9;
50*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp10;
51*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp11;
52*c8dee2aaSAndroid Build Coastguard Worker    int i = 0;
53*c8dee2aaSAndroid Build Coastguard Worker    int4 i4 = int4(1, 2, 3, 4);
54*c8dee2aaSAndroid Build Coastguard Worker    float3x3 f3x3 = float3x3(float3(1.0, 2.0, 3.0), float3(4.0, 5.0, 6.0), float3(7.0, 8.0, 9.0));
55*c8dee2aaSAndroid Build Coastguard Worker    half4 x;
56*c8dee2aaSAndroid Build Coastguard Worker    x.w = 0.0h;
57*c8dee2aaSAndroid Build Coastguard Worker    x.yx = half2(0.0h);
58*c8dee2aaSAndroid Build Coastguard Worker    array<int, 1> ai;
59*c8dee2aaSAndroid Build Coastguard Worker    ai[0] = 0;
60*c8dee2aaSAndroid Build Coastguard Worker    array<int4, 1> ai4;
61*c8dee2aaSAndroid Build Coastguard Worker    ai4[0] = int4(1, 2, 3, 4);
62*c8dee2aaSAndroid Build Coastguard Worker    array<half3x3, 1> ah3x3;
63*c8dee2aaSAndroid Build Coastguard Worker    ah3x3[0] = half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
64*c8dee2aaSAndroid Build Coastguard Worker    array<float4, 1> af4;
65*c8dee2aaSAndroid Build Coastguard Worker    af4[0].x = 0.0;
66*c8dee2aaSAndroid Build Coastguard Worker    af4[0].ywxz = float4(1.0);
67*c8dee2aaSAndroid Build Coastguard Worker    S s;
68*c8dee2aaSAndroid Build Coastguard Worker    s.f = 0.0;
69*c8dee2aaSAndroid Build Coastguard Worker    s.af[1] = 0.0;
70*c8dee2aaSAndroid Build Coastguard Worker    s.h4.zxy = half3(9.0h);
71*c8dee2aaSAndroid Build Coastguard Worker    s.ah4[2].yw = half2(5.0h);
72*c8dee2aaSAndroid Build Coastguard Worker    _globals.globalVar = half4(0.0h);
73*c8dee2aaSAndroid Build Coastguard Worker    _globals.globalStruct.f = 0.0;
74*c8dee2aaSAndroid Build Coastguard Worker    ((assignToFunctionParameter_vif(0, (_skTemp0 = f3x3[0].x))), (f3x3[0].x = _skTemp0));
75*c8dee2aaSAndroid Build Coastguard Worker    half l;
76*c8dee2aaSAndroid Build Coastguard Worker    l = 0.0h;
77*c8dee2aaSAndroid Build Coastguard Worker    ai[0] += ai4[0].x;
78*c8dee2aaSAndroid Build Coastguard Worker    s.f = 1.0;
79*c8dee2aaSAndroid Build Coastguard Worker    s.af[0] = 2.0;
80*c8dee2aaSAndroid Build Coastguard Worker    s.h4 = half4(1.0h);
81*c8dee2aaSAndroid Build Coastguard Worker    s.ah4[0] = half4(2.0h);
82*c8dee2aaSAndroid Build Coastguard Worker    float repeat;
83*c8dee2aaSAndroid Build Coastguard Worker    repeat = (repeat = 1.0);
84*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vf((_skTemp1 = af4[0].x))), (af4[0].x = _skTemp1));
85*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vh((_skTemp2 = ah3x3[0][0].x))), (ah3x3[0][0].x = _skTemp2));
86*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vi((_skTemp3 = i))), (i = _skTemp3));
87*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vi((_skTemp4 = i4.y))), (i4.y = _skTemp4));
88*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vi((_skTemp5 = ai[0]))), (ai[0] = _skTemp5));
89*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vi((_skTemp6 = ai4[0].x))), (ai4[0].x = _skTemp6));
90*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vh((_skTemp7 = x.y))), (x.y = _skTemp7));
91*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vf((_skTemp8 = s.f))), (s.f = _skTemp8));
92*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vh((_skTemp9 = l))), (l = _skTemp9));
93*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vf((_skTemp10 = f3x3[0].x))), (f3x3[0].x = _skTemp10));
94*c8dee2aaSAndroid Build Coastguard Worker    ((keepAlive_vf((_skTemp11 = repeat))), (repeat = _skTemp11));
95*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = _uniforms.colorGreen;
96*c8dee2aaSAndroid Build Coastguard Worker    return _out;
97*c8dee2aaSAndroid Build Coastguard Worker}
98