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