1*11029e94SMax Filippov#include "macros.inc" 2*11029e94SMax Filippov#include "fpu.h" 3*11029e94SMax Filippov 4*11029e94SMax Filippovtest_suite fp0_sqrt 5*11029e94SMax Filippov 6*11029e94SMax Filippov#if XCHAL_HAVE_FP_SQRT 7*11029e94SMax Filippov 8*11029e94SMax Filippov.macro sqrt_seq r, a, y, t1, hn, h2, t5, h 9*11029e94SMax Filippov sqrt0.s \y, \a 10*11029e94SMax Filippov const.s \t1, 0 11*11029e94SMax Filippov maddn.s \t1, \y, \y 12*11029e94SMax Filippov nexp01.s \hn, \a 13*11029e94SMax Filippov const.s \r, 3 14*11029e94SMax Filippov addexp.s \hn, \r 15*11029e94SMax Filippov maddn.s \r, \t1, \hn 16*11029e94SMax Filippov nexp01.s \t1, \a 17*11029e94SMax Filippov neg.s \h2, \t1 18*11029e94SMax Filippov maddn.s \y, \r, \y 19*11029e94SMax Filippov const.s \r, 0 20*11029e94SMax Filippov const.s \t5, 0 21*11029e94SMax Filippov const.s \h, 0 22*11029e94SMax Filippov maddn.s \r, \h2, \y 23*11029e94SMax Filippov maddn.s \t5, \y, \hn 24*11029e94SMax Filippov const.s \hn, 3 25*11029e94SMax Filippov maddn.s \h, \hn, \y 26*11029e94SMax Filippov maddn.s \t1, \r, \r 27*11029e94SMax Filippov maddn.s \hn, \t5, \y 28*11029e94SMax Filippov neg.s \y, \h 29*11029e94SMax Filippov maddn.s \r, \t1, \y 30*11029e94SMax Filippov maddn.s \h, \hn, \h 31*11029e94SMax Filippov mksadj.s \y, \a 32*11029e94SMax Filippov nexp01.s \a, \a 33*11029e94SMax Filippov maddn.s \a, \r, \r 34*11029e94SMax Filippov neg.s \t1, \h 35*11029e94SMax Filippov addexpm.s \r, \y 36*11029e94SMax Filippov addexp.s \t1, \y 37*11029e94SMax Filippov divn.s \r, \a, \t1 38*11029e94SMax Filippov.endm 39*11029e94SMax Filippov 40*11029e94SMax Filippov.macro sqrt_s fr0, fr1 41*11029e94SMax Filippov sqrt_seq \fr0, \fr1, f10, f11, f12, f13, f14, f15 42*11029e94SMax Filippov.endm 43*11029e94SMax Filippov 44*11029e94SMax Filippov.macro movfp fr, v 45*11029e94SMax Filippov movi a2, \v 46*11029e94SMax Filippov wfr \fr, a2 47*11029e94SMax Filippov.endm 48*11029e94SMax Filippov 49*11029e94SMax Filippov.macro check_res fr, r, sr 50*11029e94SMax Filippov rfr a2, \fr 51*11029e94SMax Filippov dump a2 52*11029e94SMax Filippov movi a3, \r 53*11029e94SMax Filippov assert eq, a2, a3 54*11029e94SMax Filippov rur a2, fsr 55*11029e94SMax Filippov movi a3, \sr 56*11029e94SMax Filippov assert eq, a2, a3 57*11029e94SMax Filippov.endm 58*11029e94SMax Filippov 59*11029e94SMax Filippovtest sqrt_s 60*11029e94SMax Filippov movi a2, 1 61*11029e94SMax Filippov wsr a2, cpenable 62*11029e94SMax Filippov 63*11029e94SMax Filippov test_op1 sqrt_s, f0, f1, 0x40000000, \ 64*11029e94SMax Filippov 0x3fb504f3, 0x3fb504f3, 0x3fb504f4, 0x3fb504f3, \ 65*11029e94SMax Filippov FSR_I, FSR_I, FSR_I, FSR_I 66*11029e94SMax Filippov test_op1 sqrt_s, f3, f4, F32_1, \ 67*11029e94SMax Filippov F32_1, F32_1, F32_1, F32_1, \ 68*11029e94SMax Filippov FSR__, FSR__, FSR__, FSR__ 69*11029e94SMax Filippov test_op1 sqrt_s, f6, f7, F32_MINUS | F32_1, \ 70*11029e94SMax Filippov F32_DNAN, F32_DNAN, F32_DNAN, F32_DNAN, \ 71*11029e94SMax Filippov FSR_V, FSR_V, FSR_V, FSR_V 72*11029e94SMax Filippovtest_end 73*11029e94SMax Filippov 74*11029e94SMax Filippov#endif 75*11029e94SMax Filippov 76*11029e94SMax Filippovtest_suite_end 77