fsrra.s revision 1.1 1 1.1 christos # sh testcase for fsrra
2 1.1 christos # mach: sh
3 1.1 christos # as(sh): -defsym sim_cpu=0
4 1.1 christos # xerror: test hasn't been run in a long time
5 1.1 christos
6 1.1 christos .include "testutils.inc"
7 1.1 christos
8 1.1 christos start
9 1.1 christos fsrra_single:
10 1.1 christos set_grs_a5a5
11 1.1 christos set_fprs_a5a5
12 1.1 christos # 1/sqrt(0.0) = +infinity.
13 1.1 christos fldi0 fr0
14 1.1 christos fsrra fr0
15 1.1 christos assert_fpreg_x 0x7f800000, fr0
16 1.1 christos
17 1.1 christos # 1/sqrt(1.0) = 1.0.
18 1.1 christos fldi1 fr0
19 1.1 christos fsrra fr0
20 1.1 christos assert_fpreg_i 1, fr0
21 1.1 christos
22 1.1 christos # 1/sqrt(4.0) = 1/2.0
23 1.1 christos fldi1 fr0
24 1.1 christos # Double it.
25 1.1 christos fadd fr0, fr0
26 1.1 christos # Double it again.
27 1.1 christos fadd fr0, fr0
28 1.1 christos fsrra fr0
29 1.1 christos fldi1 fr2
30 1.1 christos # Double it.
31 1.1 christos fadd fr2, fr2
32 1.1 christos fldi1 fr1
33 1.1 christos # Divide
34 1.1 christos fdiv fr2, fr1
35 1.1 christos fcmp/eq fr0, fr1
36 1.1 christos bt .L2
37 1.1 christos fail
38 1.1 christos .L2:
39 1.1 christos # Double-check (pun intended)
40 1.1 christos fadd fr0, fr0
41 1.1 christos assert_fpreg_i 1, fr0
42 1.1 christos fadd fr1, fr1
43 1.1 christos assert_fpreg_i 1, fr1
44 1.1 christos
45 1.1 christos # And make sure the rest of the regs are un-affected.
46 1.1 christos assert_fpreg_i 2, fr2
47 1.1 christos test_fpr_a5a5 fr3
48 1.1 christos test_fpr_a5a5 fr4
49 1.1 christos test_fpr_a5a5 fr5
50 1.1 christos test_fpr_a5a5 fr6
51 1.1 christos test_fpr_a5a5 fr7
52 1.1 christos test_fpr_a5a5 fr8
53 1.1 christos test_fpr_a5a5 fr9
54 1.1 christos test_fpr_a5a5 fr10
55 1.1 christos test_fpr_a5a5 fr11
56 1.1 christos test_fpr_a5a5 fr12
57 1.1 christos test_fpr_a5a5 fr13
58 1.1 christos test_fpr_a5a5 fr14
59 1.1 christos test_fpr_a5a5 fr15
60 1.1 christos test_grs_a5a5
61 1.1 christos
62 1.1 christos pass
63 1.1 christos exit 0
64