xref: /openbmc/qemu/tests/tcg/xtensa/test_fp0_conv.S (revision 8e49197c)
1710b15f0SMax Filippov#include "macros.inc"
2*5c10f488SMax Filippov#include "fpu.h"
3710b15f0SMax Filippov
4710b15f0SMax Filippovtest_suite fp0_conv
5710b15f0SMax Filippov
6710b15f0SMax Filippov#if XCHAL_HAVE_FP
7710b15f0SMax Filippov
8710b15f0SMax Filippov.macro movfp fr, v
9710b15f0SMax Filippov    movi    a2, \v
10710b15f0SMax Filippov    wfr     \fr, a2
11710b15f0SMax Filippov.endm
12710b15f0SMax Filippov
13*5c10f488SMax Filippov.macro test_ftoi_ex op, r0, fr0, v, c, r, sr
14710b15f0SMax Filippov    movi    a2, 0
15710b15f0SMax Filippov    wur     a2, fsr
16710b15f0SMax Filippov    movfp   \fr0, \v
17710b15f0SMax Filippov    \op     \r0, \fr0, \c
18710b15f0SMax Filippov    dump    \r0
19710b15f0SMax Filippov    movi    a3, \r
20710b15f0SMax Filippov    assert  eq, \r0, a3
21710b15f0SMax Filippov    rur     a2, fsr
22*5c10f488SMax Filippov#if DFPU
23*5c10f488SMax Filippov    movi    a3, \sr
24*5c10f488SMax Filippov    assert  eq, a2, a3
25*5c10f488SMax Filippov#else
26710b15f0SMax Filippov    assert  eqi, a2, 0
27*5c10f488SMax Filippov#endif
28710b15f0SMax Filippov.endm
29710b15f0SMax Filippov
30*5c10f488SMax Filippov.macro test_ftoi op, r0, fr0, v, c, r, sr
31710b15f0SMax Filippov    movi    a2, 0
32710b15f0SMax Filippov    wur     a2, fcr
33*5c10f488SMax Filippov    test_ftoi_ex \op, \r0, \fr0, \v, \c, \r, \sr
34710b15f0SMax Filippov    movi    a2, 0x7c
35710b15f0SMax Filippov    wur     a2, fcr
36*5c10f488SMax Filippov    test_ftoi_ex \op, \r0, \fr0, \v, \c, \r, \sr
37710b15f0SMax Filippov.endm
38710b15f0SMax Filippov
39710b15f0SMax Filippov
40*5c10f488SMax Filippov.macro test_itof_ex op, fr0, ar0, v, c, r, sr
41710b15f0SMax Filippov    movi    a2, 0
42710b15f0SMax Filippov    wur     a2, fsr
43710b15f0SMax Filippov    movi    \ar0, \v
44710b15f0SMax Filippov    \op     \fr0, \ar0, \c
45710b15f0SMax Filippov
46710b15f0SMax Filippov    rfr     a2, \fr0
47710b15f0SMax Filippov    dump    a2
48710b15f0SMax Filippov    movi    a3, \r
49710b15f0SMax Filippov    assert  eq, a2, a3
50710b15f0SMax Filippov    rur     a2, fsr
51*5c10f488SMax Filippov#if DFPU
52*5c10f488SMax Filippov    movi    a3, \sr
53*5c10f488SMax Filippov    assert  eq, a2, a3
54*5c10f488SMax Filippov#else
55710b15f0SMax Filippov    assert  eqi, a2, 0
56*5c10f488SMax Filippov#endif
57710b15f0SMax Filippov.endm
58710b15f0SMax Filippov
59*5c10f488SMax Filippov.macro test_itof_rm op, fr0, ar0, v, c, rm, r, sr
60710b15f0SMax Filippov    movi    a2, \rm
61710b15f0SMax Filippov    wur     a2, fcr
62*5c10f488SMax Filippov    test_itof_ex \op, \fr0, \ar0, \v, \c, \r, \sr
63710b15f0SMax Filippov    movi    a2, (\rm) | 0x7c
64710b15f0SMax Filippov    wur     a2, fcr
65*5c10f488SMax Filippov    test_itof_ex \op, \fr0, \ar0, \v, \c, \r, \sr
66710b15f0SMax Filippov.endm
67710b15f0SMax Filippov
68*5c10f488SMax Filippov.macro test_itof op, fr0, ar0, v, c, r0, r1, r2, r3, sr
69*5c10f488SMax Filippov    test_itof_rm \op, \fr0, \ar0, \v, \c, 0, \r0, \sr
70*5c10f488SMax Filippov    test_itof_rm \op, \fr0, \ar0, \v, \c, 1, \r1, \sr
71*5c10f488SMax Filippov    test_itof_rm \op, \fr0, \ar0, \v, \c, 2, \r2, \sr
72*5c10f488SMax Filippov    test_itof_rm \op, \fr0, \ar0, \v, \c, 3, \r3, \sr
73710b15f0SMax Filippov.endm
74710b15f0SMax Filippov
75710b15f0SMax Filippovtest round_s
76710b15f0SMax Filippov    movi    a2, 1
77710b15f0SMax Filippov    wsr     a2, cpenable
78710b15f0SMax Filippov
79710b15f0SMax Filippov    /* NaN */
80*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xffc00001, 0, 0x7fffffff, FSR_V
81*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xff800001, 0, 0x7fffffff, FSR_V
82710b15f0SMax Filippov
83710b15f0SMax Filippov    /* -inf */
84*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xff800000, 0, 0x80000000, FSR_V
85710b15f0SMax Filippov
86710b15f0SMax Filippov    /* negative overflow */
87*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xceffffff, 1, 0x80000000, FSR_V
88*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xcf000000, 0, 0x80000000, FSR__
89*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xceffffff, 0, 0x80000080, FSR__
90710b15f0SMax Filippov
91710b15f0SMax Filippov    /* negative */
92*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xbfa00000, 1, -2, FSR_I  /* -1.25 * 2 */
93*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xbfc00000, 0, -2, FSR_I  /* -1.5 */
94*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xbf800000, 1, -2, FSR__  /* -1 * 2 */
95*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xbf800000, 0, -1, FSR__  /* -1 */
96*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xbf400000, 0, -1, FSR_I  /* -0.75 */
97*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0xbf000000, 0,  0, FSR_I  /* -0.5 */
98710b15f0SMax Filippov
99710b15f0SMax Filippov    /* positive */
100*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x3f000000, 0, 0, FSR_I /* 0.5 */
101*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x3f400000, 0, 1, FSR_I /* 0.75 */
102*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x3f800000, 0, 1, FSR__ /* 1 */
103*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x3f800000, 1, 2, FSR__ /* 1 * 2 */
104*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x3fc00000, 0, 2, FSR_I /* 1.5 */
105*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x3fa00000, 1, 2, FSR_I /* 1.25 * 2 */
106710b15f0SMax Filippov
107710b15f0SMax Filippov    /* positive overflow */
108*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x4effffff, 0, 0x7fffff80, FSR__
109*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x4f000000, 0, 0x7fffffff, FSR_V
110*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x4effffff, 1, 0x7fffffff, FSR_V
111710b15f0SMax Filippov
112710b15f0SMax Filippov    /* +inf */
113*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x7f800000, 0, 0x7fffffff, FSR_V
114710b15f0SMax Filippov
115710b15f0SMax Filippov    /* NaN */
116*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x7f800001, 0, 0x7fffffff, FSR_V
117*5c10f488SMax Filippov    test_ftoi round.s, a2, f0, 0x7fc00000, 0, 0x7fffffff, FSR_V
118710b15f0SMax Filippovtest_end
119710b15f0SMax Filippov
120710b15f0SMax Filippovtest trunc_s
121710b15f0SMax Filippov    /* NaN */
122*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xffc00001, 0, 0x7fffffff, FSR_V
123*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xff800001, 0, 0x7fffffff, FSR_V
124710b15f0SMax Filippov
125710b15f0SMax Filippov    /* -inf */
126*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xff800000, 0, 0x80000000, FSR_V
127710b15f0SMax Filippov
128710b15f0SMax Filippov    /* negative overflow */
129*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xceffffff, 1, 0x80000000, FSR_V
130*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xcf000000, 0, 0x80000000, FSR__
131*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xceffffff, 0, 0x80000080, FSR__
132710b15f0SMax Filippov
133710b15f0SMax Filippov    /* negative */
134*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xbfa00000, 1, -2, FSR_I /* -1.25 * 2 */
135*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xbfc00000, 0, -1, FSR_I /* -1.5 */
136*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xbf800000, 1, -2, FSR__ /* -1 * 2 */
137*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xbf800000, 0, -1, FSR__ /* -1 */
138*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xbf400000, 0,  0, FSR_I /* -0.75 */
139*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0xbf000000, 0,  0, FSR_I /* -0.5 */
140710b15f0SMax Filippov
141710b15f0SMax Filippov    /* positive */
142*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x3f000000, 0, 0, FSR_I /* 0.5 */
143*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x3f400000, 0, 0, FSR_I /* 0.75 */
144*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x3f800000, 0, 1, FSR__ /* 1 */
145*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x3f800000, 1, 2, FSR__ /* 1 * 2 */
146*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x3fc00000, 0, 1, FSR_I /* 1.5 */
147*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x3fa00000, 1, 2, FSR_I /* 1.25 * 2 */
148710b15f0SMax Filippov
149710b15f0SMax Filippov    /* positive overflow */
150*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x4effffff, 0, 0x7fffff80, FSR__
151*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x4f000000, 0, 0x7fffffff, FSR_V
152*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x4effffff, 1, 0x7fffffff, FSR_V
153710b15f0SMax Filippov
154710b15f0SMax Filippov    /* +inf */
155*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x7f800000, 0, 0x7fffffff, FSR_V
156710b15f0SMax Filippov
157710b15f0SMax Filippov    /* NaN */
158*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x7f800001, 0, 0x7fffffff, FSR_V
159*5c10f488SMax Filippov    test_ftoi trunc.s, a2, f0, 0x7fc00000, 0, 0x7fffffff, FSR_V
160710b15f0SMax Filippovtest_end
161710b15f0SMax Filippov
162710b15f0SMax Filippovtest floor_s
163710b15f0SMax Filippov    /* NaN */
164*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xffc00001, 0, 0x7fffffff, FSR_V
165*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xff800001, 0, 0x7fffffff, FSR_V
166710b15f0SMax Filippov
167710b15f0SMax Filippov    /* -inf */
168*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xff800000, 0, 0x80000000, FSR_V
169710b15f0SMax Filippov
170710b15f0SMax Filippov    /* negative overflow */
171*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xceffffff, 1, 0x80000000, FSR_V
172*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xcf000000, 0, 0x80000000, FSR__
173*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xceffffff, 0, 0x80000080, FSR__
174710b15f0SMax Filippov
175710b15f0SMax Filippov    /* negative */
176*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xbfa00000, 1, -3, FSR_I /* -1.25 * 2 */
177*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xbfc00000, 0, -2, FSR_I /* -1.5 */
178*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xbf800000, 1, -2, FSR__ /* -1 * 2 */
179*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xbf800000, 0, -1, FSR__ /* -1 */
180*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xbf400000, 0, -1, FSR_I /* -0.75 */
181*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0xbf000000, 0, -1, FSR_I /* -0.5 */
182710b15f0SMax Filippov
183710b15f0SMax Filippov    /* positive */
184*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x3f000000, 0, 0, FSR_I /* 0.5 */
185*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x3f400000, 0, 0, FSR_I /* 0.75 */
186*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x3f800000, 0, 1, FSR__ /* 1 */
187*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x3f800000, 1, 2, FSR__ /* 1 * 2 */
188*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x3fc00000, 0, 1, FSR_I /* 1.5 */
189*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x3fa00000, 1, 2, FSR_I /* 1.25 * 2 */
190710b15f0SMax Filippov
191710b15f0SMax Filippov    /* positive overflow */
192*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x4effffff, 0, 0x7fffff80, FSR__
193*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x4f000000, 0, 0x7fffffff, FSR_V
194*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x4effffff, 1, 0x7fffffff, FSR_V
195710b15f0SMax Filippov
196710b15f0SMax Filippov    /* +inf */
197*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x7f800000, 0, 0x7fffffff, FSR_V
198710b15f0SMax Filippov
199710b15f0SMax Filippov    /* NaN */
200*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x7f800001, 0, 0x7fffffff, FSR_V
201*5c10f488SMax Filippov    test_ftoi floor.s, a2, f0, 0x7fc00000, 0, 0x7fffffff, FSR_V
202710b15f0SMax Filippovtest_end
203710b15f0SMax Filippov
204710b15f0SMax Filippovtest ceil_s
205710b15f0SMax Filippov    /* NaN */
206*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xffc00001, 0, 0x7fffffff, FSR_V
207*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xff800001, 0, 0x7fffffff, FSR_V
208710b15f0SMax Filippov
209710b15f0SMax Filippov    /* -inf */
210*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xff800000, 0, 0x80000000, FSR_V
211710b15f0SMax Filippov
212710b15f0SMax Filippov    /* negative overflow */
213*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xceffffff, 1, 0x80000000, FSR_V
214*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xcf000000, 0, 0x80000000, FSR__
215*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xceffffff, 0, 0x80000080, FSR__
216710b15f0SMax Filippov
217710b15f0SMax Filippov    /* negative */
218*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xbfa00000, 1, -2, FSR_I /* -1.25 * 2 */
219*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xbfc00000, 0, -1, FSR_I /* -1.5 */
220*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xbf800000, 1, -2, FSR__ /* -1 * 2 */
221*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xbf800000, 0, -1, FSR__ /* -1 */
222*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xbf400000, 0,  0, FSR_I /* -0.75 */
223*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0xbf000000, 0,  0, FSR_I /* -0.5 */
224710b15f0SMax Filippov
225710b15f0SMax Filippov    /* positive */
226*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x3f000000, 0, 1, FSR_I /* 0.5 */
227*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x3f400000, 0, 1, FSR_I /* 0.75 */
228*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x3f800000, 0, 1, FSR__ /* 1 */
229*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x3f800000, 1, 2, FSR__ /* 1 * 2 */
230*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x3fc00000, 0, 2, FSR_I /* 1.5 */
231*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x3fa00000, 1, 3, FSR_I /* 1.25 * 2 */
232710b15f0SMax Filippov
233710b15f0SMax Filippov    /* positive overflow */
234*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x4effffff, 0, 0x7fffff80, FSR__
235*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x4f000000, 0, 0x7fffffff, FSR_V
236*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x4effffff, 1, 0x7fffffff, FSR_V
237710b15f0SMax Filippov
238710b15f0SMax Filippov    /* +inf */
239*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x7f800000, 0, 0x7fffffff, FSR_V
240710b15f0SMax Filippov
241710b15f0SMax Filippov    /* NaN */
242*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x7f800001, 0, 0x7fffffff, FSR_V
243*5c10f488SMax Filippov    test_ftoi ceil.s, a2, f0, 0x7fc00000, 0, 0x7fffffff, FSR_V
244710b15f0SMax Filippovtest_end
245710b15f0SMax Filippov
246710b15f0SMax Filippovtest utrunc_s
247710b15f0SMax Filippov    /* NaN */
248*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xffc00001, 0, 0xffffffff, FSR_V
249*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xff800001, 0, 0xffffffff, FSR_V
250710b15f0SMax Filippov
251710b15f0SMax Filippov    /* -inf */
252*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xff800000, 0, 0x80000000, FSR_V
253710b15f0SMax Filippov
254710b15f0SMax Filippov    /* negative overflow */
255*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xceffffff, 1, 0x80000000, FSR_V
256*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xcf000000, 0, 0x80000000, FSR_V
257*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xceffffff, 0, 0x80000080, FSR_V
258710b15f0SMax Filippov
259710b15f0SMax Filippov    /* negative */
260*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xbfa00000, 1, -2, FSR_V /* -1.25 * 2 */
261*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xbfc00000, 0, -1, FSR_V /* -1.5 */
262*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xbf800000, 1, -2, FSR_V /* -1 * 2 */
263*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xbf800000, 0, -1, FSR_V /* -1 */
264*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xbf400000, 0,  0, FSR_I /* -0.75 */
265*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0xbf000000, 0,  0, FSR_I /* -0.5 */
266710b15f0SMax Filippov
267710b15f0SMax Filippov    /* positive */
268*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x3f000000, 0, 0, FSR_I /* 0.5 */
269*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x3f400000, 0, 0, FSR_I /* 0.75 */
270*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x3f800000, 0, 1, FSR__ /* 1 */
271*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x3f800000, 1, 2, FSR__ /* 1 * 2 */
272*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x3fc00000, 0, 1, FSR_I /* 1.5 */
273*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x3fa00000, 1, 2, FSR_I /* 1.25 * 2 */
274710b15f0SMax Filippov
275710b15f0SMax Filippov    /* positive overflow */
276*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x4effffff, 0, 0x7fffff80, FSR__
277*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x4f000000, 0, 0x80000000, FSR__
278*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x4effffff, 1, 0xffffff00, FSR__
279*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x4f800000, 1, 0xffffffff, FSR_V
280710b15f0SMax Filippov
281710b15f0SMax Filippov    /* +inf */
282*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x7f800000, 0, 0xffffffff, FSR_V
283710b15f0SMax Filippov
284710b15f0SMax Filippov    /* NaN */
285*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x7f800001, 0, 0xffffffff, FSR_V
286*5c10f488SMax Filippov    test_ftoi utrunc.s, a2, f0, 0x7fc00000, 0, 0xffffffff, FSR_V
287710b15f0SMax Filippovtest_end
288710b15f0SMax Filippov
289710b15f0SMax Filippovtest float_s
290710b15f0SMax Filippov    test_itof float.s, f0, a2, -1, 0, \
291*5c10f488SMax Filippov        0xbf800000, 0xbf800000, 0xbf800000, 0xbf800000, FSR__
292*5c10f488SMax Filippov    test_itof float.s, f0, a2, 0, 0, 0, 0, 0, 0, FSR__
293710b15f0SMax Filippov    test_itof float.s, f0, a2, 1, 1, \
294*5c10f488SMax Filippov        0x3f000000, 0x3f000000, 0x3f000000, 0x3f000000, FSR__
295710b15f0SMax Filippov    test_itof float.s, f0, a2, 1, 0, \
296*5c10f488SMax Filippov        0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000, FSR__
297710b15f0SMax Filippov    test_itof float.s, f0, a2, 0x7fffffff, 0, \
298*5c10f488SMax Filippov        0x4f000000, 0x4effffff, 0x4f000000, 0x4effffff, FSR_I
299710b15f0SMax Filippovtest_end
300710b15f0SMax Filippov
301710b15f0SMax Filippovtest ufloat_s
302*5c10f488SMax Filippov    test_itof ufloat.s, f0, a2, 0, 0, 0, 0, 0, 0, FSR__
303710b15f0SMax Filippov    test_itof ufloat.s, f0, a2, 1, 1, \
304*5c10f488SMax Filippov        0x3f000000, 0x3f000000, 0x3f000000, 0x3f000000, FSR__
305710b15f0SMax Filippov    test_itof ufloat.s, f0, a2, 1, 0, \
306*5c10f488SMax Filippov        0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000, FSR__
307710b15f0SMax Filippov    test_itof ufloat.s, f0, a2, 0x7fffffff, 0, \
308*5c10f488SMax Filippov        0x4f000000, 0x4effffff, 0x4f000000, 0x4effffff, FSR_I
309710b15f0SMax Filippov    test_itof ufloat.s, f0, a2, 0xffffffff, 0, \
310*5c10f488SMax Filippov        0x4f800000, 0x4f7fffff, 0x4f800000, 0x4f7fffff, FSR_I
311710b15f0SMax Filippovtest_end
312710b15f0SMax Filippov
313710b15f0SMax Filippov#endif
314710b15f0SMax Filippov
315710b15f0SMax Filippovtest_suite_end
316