Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / tests / sksl / intrinsics / Frexp.metal
1 #include <metal_stdlib>
2 #include <simd/simd.h>
3 using namespace metal;
4 struct Uniforms {
5     half4 colorGreen;
6     half4 colorRed;
7 };
8 struct Inputs {
9 };
10 struct Outputs {
11     half4 sk_FragColor [[color(0)]];
12 };
13 float _skOutParamHelper0_frexp(float _var0, thread int4& exp) {
14     int _var1;
15     float _skResult = frexp(_var0, _var1);
16     exp.x = _var1;
17     return _skResult;
18 }
19 float2 _skOutParamHelper1_frexp(float2 _var0, thread int4& exp) {
20     int2 _var1;
21     float2 _skResult = frexp(_var0, _var1);
22     exp.xy = _var1;
23     return _skResult;
24 }
25 float3 _skOutParamHelper2_frexp(float3 _var0, thread int4& exp) {
26     int3 _var1;
27     float3 _skResult = frexp(_var0, _var1);
28     exp.xyz = _var1;
29     return _skResult;
30 }
31 float4 _skOutParamHelper3_frexp(float4 _var0, thread int4& exp) {
32     int4 _var1;
33     float4 _skResult = frexp(_var0, _var1);
34     exp = _var1;
35     return _skResult;
36 }
37 fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
38     Outputs _out;
39     (void)_out;
40     float4 value = float4(_uniforms.colorGreen.yyyy * 6.0h);
41     int4 exp;
42     float4 result;
43     bool4 ok;
44     result.x =     _skOutParamHelper0_frexp(value.x, exp);
45     ok.x = result.x == 0.75 && exp.x == 3;
46     result.xy =     _skOutParamHelper1_frexp(value.xy, exp);
47     ok.y = result.y == 0.75 && exp.y == 3;
48     result.xyz =     _skOutParamHelper2_frexp(value.xyz, exp);
49     ok.z = result.z == 0.75 && exp.z == 3;
50     result =     _skOutParamHelper3_frexp(value, exp);
51     ok.w = result.w == 0.75 && exp.w == 3;
52     _out.sk_FragColor = all(ok) ? _uniforms.colorGreen : _uniforms.colorRed;
53     return _out;
54 }