xref: /aosp_15_r20/external/skia/tests/sksl/intrinsics/Frexp.hlsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workercbuffer _UniformBuffer : register(b0, space0)
2*c8dee2aaSAndroid Build Coastguard Worker{
3*c8dee2aaSAndroid Build Coastguard Worker    float4 _8_colorGreen : packoffset(c0);
4*c8dee2aaSAndroid Build Coastguard Worker    float4 _8_colorRed : packoffset(c1);
5*c8dee2aaSAndroid Build Coastguard Worker};
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Workerstatic float4 sk_FragColor;
9*c8dee2aaSAndroid Build Coastguard Worker
10*c8dee2aaSAndroid Build Coastguard Workerstruct SPIRV_Cross_Output
11*c8dee2aaSAndroid Build Coastguard Worker{
12*c8dee2aaSAndroid Build Coastguard Worker    float4 sk_FragColor : SV_Target0;
13*c8dee2aaSAndroid Build Coastguard Worker};
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Workerbool checkIntrinsicAsFunctionArg_bf3i3(float3 _28, int3 _29)
16*c8dee2aaSAndroid Build Coastguard Worker{
17*c8dee2aaSAndroid Build Coastguard Worker    bool _45 = false;
18*c8dee2aaSAndroid Build Coastguard Worker    if (all(bool3(_28.x == 0.75f.xxx.x, _28.y == 0.75f.xxx.y, _28.z == 0.75f.xxx.z)))
19*c8dee2aaSAndroid Build Coastguard Worker    {
20*c8dee2aaSAndroid Build Coastguard Worker        _45 = all(bool3(_29.x == int3(3, 3, 3).x, _29.y == int3(3, 3, 3).y, _29.z == int3(3, 3, 3).z));
21*c8dee2aaSAndroid Build Coastguard Worker    }
22*c8dee2aaSAndroid Build Coastguard Worker    else
23*c8dee2aaSAndroid Build Coastguard Worker    {
24*c8dee2aaSAndroid Build Coastguard Worker        _45 = false;
25*c8dee2aaSAndroid Build Coastguard Worker    }
26*c8dee2aaSAndroid Build Coastguard Worker    return _45;
27*c8dee2aaSAndroid Build Coastguard Worker}
28*c8dee2aaSAndroid Build Coastguard Worker
29*c8dee2aaSAndroid Build Coastguard Workerfloat4 main(float2 _47)
30*c8dee2aaSAndroid Build Coastguard Worker{
31*c8dee2aaSAndroid Build Coastguard Worker    float4 _57 = _8_colorGreen.yyyy * 6.0f;
32*c8dee2aaSAndroid Build Coastguard Worker    float4 value = _57;
33*c8dee2aaSAndroid Build Coastguard Worker    int4 _exp = int4(0, 0, 0, 0);
34*c8dee2aaSAndroid Build Coastguard Worker    int _69 = 0;
35*c8dee2aaSAndroid Build Coastguard Worker    float _65 = frexp(_57.x, _69);
36*c8dee2aaSAndroid Build Coastguard Worker    _exp.x = _69;
37*c8dee2aaSAndroid Build Coastguard Worker    float4 result = 0.0f.xxxx;
38*c8dee2aaSAndroid Build Coastguard Worker    result.x = _65;
39*c8dee2aaSAndroid Build Coastguard Worker    bool _81 = false;
40*c8dee2aaSAndroid Build Coastguard Worker    if (result.x == 0.75f)
41*c8dee2aaSAndroid Build Coastguard Worker    {
42*c8dee2aaSAndroid Build Coastguard Worker        _81 = _exp.x == 3;
43*c8dee2aaSAndroid Build Coastguard Worker    }
44*c8dee2aaSAndroid Build Coastguard Worker    else
45*c8dee2aaSAndroid Build Coastguard Worker    {
46*c8dee2aaSAndroid Build Coastguard Worker        _81 = false;
47*c8dee2aaSAndroid Build Coastguard Worker    }
48*c8dee2aaSAndroid Build Coastguard Worker    bool4 ok = bool4(false, false, false, false);
49*c8dee2aaSAndroid Build Coastguard Worker    ok.x = _81;
50*c8dee2aaSAndroid Build Coastguard Worker    int2 _87 = int2(0, 0);
51*c8dee2aaSAndroid Build Coastguard Worker    float2 _84 = frexp(value.xy, _87);
52*c8dee2aaSAndroid Build Coastguard Worker    int4 _91 = _exp;
53*c8dee2aaSAndroid Build Coastguard Worker    _exp = int4(_87.x, _87.y, _91.z, _91.w);
54*c8dee2aaSAndroid Build Coastguard Worker    float4 _93 = result;
55*c8dee2aaSAndroid Build Coastguard Worker    result = float4(_84.x, _84.y, _93.z, _93.w);
56*c8dee2aaSAndroid Build Coastguard Worker    bool _101 = false;
57*c8dee2aaSAndroid Build Coastguard Worker    if (float4(_84.x, _84.y, _93.z, _93.w).y == 0.75f)
58*c8dee2aaSAndroid Build Coastguard Worker    {
59*c8dee2aaSAndroid Build Coastguard Worker        _101 = int4(_87.x, _87.y, _91.z, _91.w).y == 3;
60*c8dee2aaSAndroid Build Coastguard Worker    }
61*c8dee2aaSAndroid Build Coastguard Worker    else
62*c8dee2aaSAndroid Build Coastguard Worker    {
63*c8dee2aaSAndroid Build Coastguard Worker        _101 = false;
64*c8dee2aaSAndroid Build Coastguard Worker    }
65*c8dee2aaSAndroid Build Coastguard Worker    ok.y = _101;
66*c8dee2aaSAndroid Build Coastguard Worker    int3 _107 = int3(0, 0, 0);
67*c8dee2aaSAndroid Build Coastguard Worker    float3 _104 = frexp(value.xyz, _107);
68*c8dee2aaSAndroid Build Coastguard Worker    int4 _109 = _exp;
69*c8dee2aaSAndroid Build Coastguard Worker    _exp = int4(_107.x, _107.y, _107.z, _109.w);
70*c8dee2aaSAndroid Build Coastguard Worker    float4 _111 = result;
71*c8dee2aaSAndroid Build Coastguard Worker    result = float4(_104.x, _104.y, _104.z, _111.w);
72*c8dee2aaSAndroid Build Coastguard Worker    bool _119 = false;
73*c8dee2aaSAndroid Build Coastguard Worker    if (float4(_104.x, _104.y, _104.z, _111.w).z == 0.75f)
74*c8dee2aaSAndroid Build Coastguard Worker    {
75*c8dee2aaSAndroid Build Coastguard Worker        _119 = int4(_107.x, _107.y, _107.z, _109.w).z == 3;
76*c8dee2aaSAndroid Build Coastguard Worker    }
77*c8dee2aaSAndroid Build Coastguard Worker    else
78*c8dee2aaSAndroid Build Coastguard Worker    {
79*c8dee2aaSAndroid Build Coastguard Worker        _119 = false;
80*c8dee2aaSAndroid Build Coastguard Worker    }
81*c8dee2aaSAndroid Build Coastguard Worker    ok.z = _119;
82*c8dee2aaSAndroid Build Coastguard Worker    int4 _124 = int4(0, 0, 0, 0);
83*c8dee2aaSAndroid Build Coastguard Worker    float4 _122 = frexp(value, _124);
84*c8dee2aaSAndroid Build Coastguard Worker    _exp = _124;
85*c8dee2aaSAndroid Build Coastguard Worker    result = _122;
86*c8dee2aaSAndroid Build Coastguard Worker    bool _132 = false;
87*c8dee2aaSAndroid Build Coastguard Worker    if (_122.w == 0.75f)
88*c8dee2aaSAndroid Build Coastguard Worker    {
89*c8dee2aaSAndroid Build Coastguard Worker        _132 = _124.w == 3;
90*c8dee2aaSAndroid Build Coastguard Worker    }
91*c8dee2aaSAndroid Build Coastguard Worker    else
92*c8dee2aaSAndroid Build Coastguard Worker    {
93*c8dee2aaSAndroid Build Coastguard Worker        _132 = false;
94*c8dee2aaSAndroid Build Coastguard Worker    }
95*c8dee2aaSAndroid Build Coastguard Worker    ok.w = _132;
96*c8dee2aaSAndroid Build Coastguard Worker    int3 _138 = int3(0, 0, 0);
97*c8dee2aaSAndroid Build Coastguard Worker    float3 _135 = frexp(value.wzy, _138);
98*c8dee2aaSAndroid Build Coastguard Worker    int4 _140 = _exp;
99*c8dee2aaSAndroid Build Coastguard Worker    _exp = int4(_138.y, _140.y, _138.x, _138.z);
100*c8dee2aaSAndroid Build Coastguard Worker    float3 _143 = _135.yxz;
101*c8dee2aaSAndroid Build Coastguard Worker    int3 _145 = int4(_138.y, _140.y, _138.x, _138.z).yxz;
102*c8dee2aaSAndroid Build Coastguard Worker    bool _146 = checkIntrinsicAsFunctionArg_bf3i3(_143, _145);
103*c8dee2aaSAndroid Build Coastguard Worker    bool funcOk = _146;
104*c8dee2aaSAndroid Build Coastguard Worker    bool _151 = false;
105*c8dee2aaSAndroid Build Coastguard Worker    if (all(ok))
106*c8dee2aaSAndroid Build Coastguard Worker    {
107*c8dee2aaSAndroid Build Coastguard Worker        _151 = _146;
108*c8dee2aaSAndroid Build Coastguard Worker    }
109*c8dee2aaSAndroid Build Coastguard Worker    else
110*c8dee2aaSAndroid Build Coastguard Worker    {
111*c8dee2aaSAndroid Build Coastguard Worker        _151 = false;
112*c8dee2aaSAndroid Build Coastguard Worker    }
113*c8dee2aaSAndroid Build Coastguard Worker    float4 _152 = 0.0f.xxxx;
114*c8dee2aaSAndroid Build Coastguard Worker    if (_151)
115*c8dee2aaSAndroid Build Coastguard Worker    {
116*c8dee2aaSAndroid Build Coastguard Worker        _152 = _8_colorGreen;
117*c8dee2aaSAndroid Build Coastguard Worker    }
118*c8dee2aaSAndroid Build Coastguard Worker    else
119*c8dee2aaSAndroid Build Coastguard Worker    {
120*c8dee2aaSAndroid Build Coastguard Worker        _152 = _8_colorRed;
121*c8dee2aaSAndroid Build Coastguard Worker    }
122*c8dee2aaSAndroid Build Coastguard Worker    return _152;
123*c8dee2aaSAndroid Build Coastguard Worker}
124*c8dee2aaSAndroid Build Coastguard Worker
125*c8dee2aaSAndroid Build Coastguard Workervoid frag_main()
126*c8dee2aaSAndroid Build Coastguard Worker{
127*c8dee2aaSAndroid Build Coastguard Worker    float2 _18 = 0.0f.xx;
128*c8dee2aaSAndroid Build Coastguard Worker    sk_FragColor = main(_18);
129*c8dee2aaSAndroid Build Coastguard Worker}
130*c8dee2aaSAndroid Build Coastguard Worker
131*c8dee2aaSAndroid Build Coastguard WorkerSPIRV_Cross_Output main()
132*c8dee2aaSAndroid Build Coastguard Worker{
133*c8dee2aaSAndroid Build Coastguard Worker    frag_main();
134*c8dee2aaSAndroid Build Coastguard Worker    SPIRV_Cross_Output stage_output;
135*c8dee2aaSAndroid Build Coastguard Worker    stage_output.sk_FragColor = sk_FragColor;
136*c8dee2aaSAndroid Build Coastguard Worker    return stage_output;
137*c8dee2aaSAndroid Build Coastguard Worker}
138