ftrc.s revision 1.1 1 1.1 christos # sh testcase for ftrc
2 1.1 christos # mach: sh
3 1.1 christos # as(sh): -defsym sim_cpu=0
4 1.1 christos
5 1.1 christos .include "testutils.inc"
6 1.1 christos
7 1.1 christos start
8 1.1 christos ftrc_single:
9 1.1 christos set_grs_a5a5
10 1.1 christos set_fprs_a5a5
11 1.1 christos # ftrc(0.0) = 0.
12 1.1 christos fldi0 fr0
13 1.1 christos ftrc fr0, fpul
14 1.1 christos # check results.
15 1.1 christos mov #0, r0
16 1.1 christos sts fpul, r1
17 1.1 christos cmp/eq r0, r1
18 1.1 christos bt .L0
19 1.1 christos fail
20 1.1 christos .L0:
21 1.1 christos # ftrc(1.5) = 1.
22 1.1 christos fldi1 fr0
23 1.1 christos fldi1 fr1
24 1.1 christos fldi1 fr2
25 1.1 christos # double it.
26 1.1 christos fadd fr2, fr2
27 1.1 christos # form the fraction.
28 1.1 christos fdiv fr2, fr1
29 1.1 christos fadd fr1, fr0
30 1.1 christos # now we've got 1.5 in fr0.
31 1.1 christos ftrc fr0, fpul
32 1.1 christos # check results.
33 1.1 christos mov #1, r0
34 1.1 christos sts fpul, r1
35 1.1 christos cmp/eq r0, r1
36 1.1 christos bt .L1
37 1.1 christos fail
38 1.1 christos .L1:
39 1.1 christos # ftrc(-1.5) = -1.
40 1.1 christos fldi1 fr0
41 1.1 christos fneg fr0
42 1.1 christos fldi1 fr1
43 1.1 christos fldi1 fr2
44 1.1 christos # double it.
45 1.1 christos fadd fr2, fr2
46 1.1 christos # form the fraction.
47 1.1 christos fdiv fr2, fr1
48 1.1 christos fneg fr1
49 1.1 christos # -1 + -0.5 = -1.5.
50 1.1 christos fadd fr1, fr0
51 1.1 christos # now we've got 1.5 in fr0.
52 1.1 christos ftrc fr0, fpul
53 1.1 christos # check results.
54 1.1 christos mov #1, r0
55 1.1 christos neg r0, r0
56 1.1 christos sts fpul, r1
57 1.1 christos cmp/eq r0, r1
58 1.1 christos bt ftrc_double
59 1.1 christos fail
60 1.1 christos
61 1.1 christos ftrc_double:
62 1.1 christos double_prec
63 1.1 christos # ftrc(0.0) = 0.
64 1.1 christos fldi0 fr0
65 1.1 christos _s2d fr0, dr0
66 1.1 christos ftrc dr0, fpul
67 1.1 christos # check results.
68 1.1 christos mov #0, r0
69 1.1 christos sts fpul, r1
70 1.1 christos cmp/eq r0, r1
71 1.1 christos bt .L10
72 1.1 christos fail
73 1.1 christos .L10:
74 1.1 christos # ftrc(1.5) = 1.
75 1.1 christos fldi1 fr0
76 1.1 christos fldi1 fr2
77 1.1 christos fldi1 fr4
78 1.1 christos # double it.
79 1.1 christos single_prec
80 1.1 christos fadd fr4, fr4
81 1.1 christos # form 0.5.
82 1.1 christos fdiv fr4, fr2
83 1.1 christos fadd fr2, fr0
84 1.1 christos double_prec
85 1.1 christos # now we've got 1.5 in fr0, so do some single->double
86 1.1 christos # conversions and perform the ftrc.
87 1.1 christos _s2d fr0, dr0
88 1.1 christos _s2d fr2, dr2
89 1.1 christos _s2d fr4, dr4
90 1.1 christos ftrc dr0, fpul
91 1.1 christos
92 1.1 christos # check results.
93 1.1 christos mov #1, r0
94 1.1 christos sts fpul, r1
95 1.1 christos cmp/eq r0, r1
96 1.1 christos bt .L11
97 1.1 christos fail
98 1.1 christos .L11:
99 1.1 christos # ftrc(-1.5) = -1.
100 1.1 christos fldi1 fr0
101 1.1 christos fneg fr0
102 1.1 christos fldi1 fr2
103 1.1 christos fldi1 fr4
104 1.1 christos single_prec
105 1.1 christos # double it.
106 1.1 christos fadd fr4, fr4
107 1.1 christos # form the fraction.
108 1.1 christos fdiv fr4, fr2
109 1.1 christos fneg fr2
110 1.1 christos # -1 + -0.5 = -1.5.
111 1.1 christos fadd fr2, fr0
112 1.1 christos double_prec
113 1.1 christos # now we've got 1.5 in fr0, so do some single->double
114 1.1 christos # conversions and perform the ftrc.
115 1.1 christos _s2d fr0, dr0
116 1.1 christos _s2d fr2, dr2
117 1.1 christos _s2d fr4, dr4
118 1.1 christos ftrc dr0, fpul
119 1.1 christos
120 1.1 christos # check results.
121 1.1 christos mov #1, r0
122 1.1 christos neg r0, r0
123 1.1 christos sts fpul, r1
124 1.1 christos cmp/eq r0, r1
125 1.1 christos bt .L12
126 1.1 christos fail
127 1.1 christos .L12:
128 1.1 christos assertreg0 -1
129 1.1 christos assertreg -1, r1
130 1.1 christos test_gr_a5a5 r2
131 1.1 christos test_gr_a5a5 r3
132 1.1 christos test_gr_a5a5 r4
133 1.1 christos test_gr_a5a5 r5
134 1.1 christos test_gr_a5a5 r6
135 1.1 christos test_gr_a5a5 r7
136 1.1 christos test_gr_a5a5 r8
137 1.1 christos test_gr_a5a5 r9
138 1.1 christos test_gr_a5a5 r10
139 1.1 christos test_gr_a5a5 r11
140 1.1 christos test_gr_a5a5 r12
141 1.1 christos test_gr_a5a5 r13
142 1.1 christos test_gr_a5a5 r14
143 1.1 christos
144 1.1 christos assert_dpreg_i 2, dr4
145 1.1 christos test_fpr_a5a5 fr6
146 1.1 christos test_fpr_a5a5 fr7
147 1.1 christos test_fpr_a5a5 fr8
148 1.1 christos test_fpr_a5a5 fr9
149 1.1 christos test_fpr_a5a5 fr10
150 1.1 christos test_fpr_a5a5 fr11
151 1.1 christos test_fpr_a5a5 fr12
152 1.1 christos test_fpr_a5a5 fr13
153 1.1 christos test_fpr_a5a5 fr14
154 1.1 christos test_fpr_a5a5 fr15
155 1.1 christos pass
156 1.1 christos exit 0
157