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