]>
Commit | Line | Data |
---|---|---|
dd0f6109 AC |
1 | .include "t-macros.i" |
2 | ||
3 | start | |
4 | ||
5 | ### $f3 = $f2 / sqrt ($f1) | |
6 | ||
7 | test_rsqrt: | |
8 | loadfp $f1 4.0 | |
9 | loadfp $f2 1.0 | |
10 | rsqrt.s $f3, $f2, $f1 | |
11 | checkfp 0 $f3 0.5 | |
12 | ||
13 | ################ | |
14 | ||
15 | ||
16 | ## +1.0 / sqrt (+0.0) | |
17 | ## -> 0x7fffffff (+Max) D+SD | |
18 | test_rsqrt_1: | |
19 | clearfcsr | |
20 | loadfp $f1, +1.0 | |
21 | loadfp $f2, +0.0 | |
22 | rsqrt.s $f3, $f1, $f2 | |
23 | checkfpx 1 0x00010021 $f3 0x7fffffff | |
24 | ||
25 | ||
26 | ## -1.0 / sqrt (+0.0) | |
27 | ## -> 0xffffffff (-Max) D+SD | |
28 | test_rsqrt_2: | |
29 | clearfcsr | |
30 | loadfp $f1, -1.0 | |
31 | loadfp $f2, +0.0 | |
32 | rsqrt.s $f3, $f1, $f2 | |
33 | checkfpx 1 0x00010021 $f3 0xffffffff | |
34 | ||
35 | ||
36 | ## 0 / sqrt (-0) | |
37 | ##and 0 / sqrt (0) | |
38 | ## ->0x7fffffff I + SI | |
39 | test_rsqrt_3a: | |
40 | clearfcsr | |
41 | loadfp $f1, +0.0 | |
42 | loadfp $f2, -0.0 | |
43 | rsqrt.s $f3, $f1, $f2 | |
44 | checkfpx 1 0x00020041 $f3 0x7fffffff | |
45 | ||
46 | test_rsqrt_3b: | |
47 | clearfcsr | |
48 | loadfp $f1, +0.0 | |
49 | loadfp $f2, +0.0 | |
50 | rsqrt.s $f3, $f1, $f2 | |
51 | checkfpx 1 0x00020041 $f3 0x7fffffff | |
52 | ||
53 | ||
54 | ## Correctly: | |
55 | ## (-0) / sqrt (-0) | |
56 | ## ->FFFFFFFF (I + SI) | |
57 | test_rsqrt_4a: | |
58 | clearfcsr | |
59 | loadfp $f1, -0.0 | |
60 | loadfp $f2, -0.0 | |
61 | rsqrt.s $f3, $f1, $f2 | |
62 | checkfpx 1 0x00020041 $f3 0xffffffff | |
63 | ||
64 | test_rsqrt_4b: | |
65 | clearfcsr | |
66 | loadfp $f1, -0.0 | |
67 | loadfp $f2, +0.0 | |
68 | rsqrt.s $f3, $f1, $f2 | |
69 | checkfpx 1 0x00020041 $f3 0xffffffff | |
70 | ||
71 | ||
72 | ## (max) / sqrt (min*2) -> no O+SO | |
73 | ## | |
74 | test_rsqrt_5aa: | |
75 | clearfcsr | |
76 | loadfpx $f1, 0x7fffffff | |
77 | loadfpx $f2, 0x00800001 | |
78 | rsqrt.s $f3, $f1, $f2 | |
79 | checkfpx 1 0x00000001 $f3 0x7fffffff | |
80 | ||
81 | test_rsqrt_5ab: | |
82 | clearfcsr | |
83 | loadfpx $f1, 0x7fffffff | |
84 | loadfpx $f2, 0x80800001 | |
85 | rsqrt.s $f3, $f1, $f2 | |
86 | checkfpx 1 0x00020041 $f3 0x7fffffff | |
87 | ||
88 | test_rsqrt_5ba: | |
89 | clearfcsr | |
90 | loadfpx $f1, 0xffffffff | |
91 | loadfpx $f2, 0x00800001 | |
92 | rsqrt.s $f3, $f1, $f2 | |
93 | checkfpx 1 0x00000001 $f3 0xffffffff | |
94 | ||
95 | test_rsqrt_5bb: | |
96 | clearfcsr | |
97 | loadfpx $f1, 0xffffffff | |
98 | loadfpx $f2, 0x80800001 | |
99 | rsqrt.s $f3, $f1, $f2 | |
100 | checkfpx 1 0x00020041 $f3 0xffffffff | |
101 | ||
102 | ||
103 | ## (max) / sqrt (min*2) -> no U+SU | |
104 | ## | |
105 | test_rsqrt_6aa: | |
106 | clearfcsr | |
107 | loadfpx $f1, 0x00800001 | |
108 | loadfpx $f2, 0x7fffffff | |
109 | rsqrt.s $f3, $f1, $f2 | |
110 | checkfpx 1 0x00000001 $f3 0x00000000 | |
111 | ||
112 | test_rsqrt_6ab: | |
113 | clearfcsr | |
114 | loadfpx $f1, 0x00800001 | |
115 | loadfpx $f2, 0xffffffff | |
116 | rsqrt.s $f3, $f1, $f2 | |
117 | checkfpx 1 0x00020041 $f3 0x00000000 | |
118 | ||
119 | test_rsqrt_6ba: | |
120 | clearfcsr | |
121 | loadfpx $f1, 0x80800001 | |
122 | loadfpx $f2, 0x7fffffff | |
123 | rsqrt.s $f3, $f1, $f2 | |
124 | checkfpx 1 0x00000001 $f3 0x80000000 | |
125 | ||
126 | test_rsqrt_6bb: | |
127 | clearfcsr | |
128 | loadfpx $f1, 0x80800001 | |
129 | loadfpx $f2, 0xffffffff | |
130 | rsqrt.s $f3, $f1, $f2 | |
131 | checkfpx 1 0x00020041 $f3 0x80000000 | |
132 | ||
133 | ||
134 | ## Correctly: | |
135 | ## (max/min) / sqrt ([+-]0) | |
136 | ## ->MAX/MIN (D + SD) | |
137 | test_rsqrt_7aa: | |
138 | clearfcsr | |
139 | loadfpx $f1, 0x7fffffff | |
140 | loadfpx $f2, 0x00000000 | |
141 | rsqrt.s $f3, $f1, $f2 | |
142 | checkfpx 1 0x00010021 $f3 0x7fffffff | |
143 | ||
144 | test_rsqrt_7ab: | |
145 | clearfcsr | |
146 | loadfpx $f1, 0x7fffffff | |
147 | loadfpx $f2, 0x80000000 | |
148 | rsqrt.s $f3, $f1, $f2 | |
149 | checkfpx 1 0x00010021 $f3 0x7fffffff | |
150 | ||
151 | test_rsqrt_7ba: | |
152 | clearfcsr | |
153 | loadfpx $f1, 0xffffffff | |
154 | loadfpx $f2, 0x00000000 | |
155 | rsqrt.s $f3, $f1, $f2 | |
156 | checkfpx 1 0x00010021 $f3 0xffffffff | |
157 | ||
158 | test_rsqrt_7bb: | |
159 | clearfcsr | |
160 | loadfpx $f1, 0xffffffff | |
161 | loadfpx $f2, 0x80000000 | |
162 | rsqrt.s $f3, $f1, $f2 | |
163 | checkfpx 1 0x00010021 $f3 0xffffffff | |
164 | ||
165 | ||
166 | ## Like max/sqrt but check that bits are set/cleared | |
167 | ## | |
168 | test_rsqrt_9aa: | |
169 | clearfcsr | |
170 | loadfpx $f1, 0x7fffffff | |
171 | loadfpx $f2, 0x00000000 | |
172 | rsqrt.s $f3, $f1, $f2 | |
173 | loadfpx $f1, 0x00800001 | |
174 | loadfpx $f2, 0xffffffff | |
175 | rsqrt.s $f3, $f1, $f2 | |
176 | checkfpx 1 0x00020061 $f3 0x00000000 | |
177 | ||
178 | ||
179 | exit0 |