1cb93a386Sopenharmony_ci#include <metal_stdlib> 2cb93a386Sopenharmony_ci#include <simd/simd.h> 3cb93a386Sopenharmony_ciusing namespace metal; 4cb93a386Sopenharmony_cistruct Uniforms { 5cb93a386Sopenharmony_ci half4 colorGreen; 6cb93a386Sopenharmony_ci half4 colorRed; 7cb93a386Sopenharmony_ci}; 8cb93a386Sopenharmony_cistruct Inputs { 9cb93a386Sopenharmony_ci}; 10cb93a386Sopenharmony_cistruct Outputs { 11cb93a386Sopenharmony_ci half4 sk_FragColor [[color(0)]]; 12cb93a386Sopenharmony_ci}; 13cb93a386Sopenharmony_civoid bar_vf(thread float& x); 14cb93a386Sopenharmony_civoid _skOutParamHelper0_bar_vf(thread float& x) { 15cb93a386Sopenharmony_ci float _var0 = x; 16cb93a386Sopenharmony_ci bar_vf(_var0); 17cb93a386Sopenharmony_ci x = _var0; 18cb93a386Sopenharmony_ci} 19cb93a386Sopenharmony_cifloat foo_ff2(const float2 v) { 20cb93a386Sopenharmony_ci return v.x * v.y; 21cb93a386Sopenharmony_ci} 22cb93a386Sopenharmony_civoid bar_vf(thread float& x) { 23cb93a386Sopenharmony_ci array<float, 2> y; 24cb93a386Sopenharmony_ci y[0] = x; 25cb93a386Sopenharmony_ci y[1] = x * 2.0; 26cb93a386Sopenharmony_ci x = foo_ff2(float2(y[0], y[1])); 27cb93a386Sopenharmony_ci} 28cb93a386Sopenharmony_cifragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 29cb93a386Sopenharmony_ci Outputs _out; 30cb93a386Sopenharmony_ci (void)_out; 31cb93a386Sopenharmony_ci float x = 10.0; 32cb93a386Sopenharmony_ci _skOutParamHelper0_bar_vf(x); 33cb93a386Sopenharmony_ci _out.sk_FragColor = x == 200.0 ? _uniforms.colorGreen : _uniforms.colorRed; 34cb93a386Sopenharmony_ci return _out; 35cb93a386Sopenharmony_ci} 36