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_cihalf2 tricky_h2hhh2h(half x, half y, thread half2& color, half z);
14cb93a386Sopenharmony_cihalf2 _skOutParamHelper0_tricky_h2hhh2h(half _var0, half _var1, thread half4& color, half _var3) {
15cb93a386Sopenharmony_ci    half2 _var2 = color.xz;
16cb93a386Sopenharmony_ci    half2 _skResult = tricky_h2hhh2h(_var0, _var1, _var2, _var3);
17cb93a386Sopenharmony_ci    color.xz = _var2;
18cb93a386Sopenharmony_ci    return _skResult;
19cb93a386Sopenharmony_ci}
20cb93a386Sopenharmony_civoid func_vh4(thread half4& color);
21cb93a386Sopenharmony_civoid _skOutParamHelper1_func_vh4(thread half4& result) {
22cb93a386Sopenharmony_ci    half4 _var0 = result;
23cb93a386Sopenharmony_ci    func_vh4(_var0);
24cb93a386Sopenharmony_ci    result = _var0;
25cb93a386Sopenharmony_ci}
26cb93a386Sopenharmony_cihalf2 tricky_h2hhh2h(half x, half y, thread half2& color, half z) {
27cb93a386Sopenharmony_ci    color = color.yx;
28cb93a386Sopenharmony_ci    return half2(x + y, z);
29cb93a386Sopenharmony_ci}
30cb93a386Sopenharmony_civoid func_vh4(thread half4& color) {
31cb93a386Sopenharmony_ci    half2 t =     _skOutParamHelper0_tricky_h2hhh2h(1.0h, 2.0h, color, 5.0h);
32cb93a386Sopenharmony_ci    color.yw = t;
33cb93a386Sopenharmony_ci}
34cb93a386Sopenharmony_cifragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
35cb93a386Sopenharmony_ci    Outputs _out;
36cb93a386Sopenharmony_ci    (void)_out;
37cb93a386Sopenharmony_ci    half4 result = half4(0.0h, 1.0h, 2.0h, 3.0h);
38cb93a386Sopenharmony_ci    _skOutParamHelper1_func_vh4(result);
39cb93a386Sopenharmony_ci    _out.sk_FragColor = all(result == half4(2.0h, 3.0h, 0.0h, 5.0h)) ? _uniforms.colorGreen : _uniforms.colorRed;
40cb93a386Sopenharmony_ci    return _out;
41cb93a386Sopenharmony_ci}
42