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