1 # frv testcase for maveh $FRi,$FRj,$FRj on fr400 machines 2 # mach: all 3 4 .include "../testutils.inc" 5 6 start 7 8 .global maveh 9 maveh: 10 ; Test Rounding toward positive infinity via RDAV 11 or_spr_immed 0x20000000,msr0 12 and_spr_immed 0xefffffff,msr0 13 14 set_fr_iimmed 0x0000,0x0000,fr10 15 set_fr_iimmed 0x0000,0x0000,fr11 16 maveh fr10,fr11,fr12 17 test_fr_limmed 0x0000,0x0000,fr12 18 19 set_fr_iimmed 0x0001,0x0000,fr10 20 set_fr_iimmed 0x0002,0x0001,fr11 21 maveh fr10,fr11,fr12 22 test_fr_limmed 0x0002,0x0001,fr12 23 24 set_fr_iimmed 0x0000,0xffff,fr10 25 set_fr_iimmed 0xffff,0xfffe,fr11 26 maveh fr10,fr11,fr12 27 test_fr_limmed 0x0000,0xffff,fr12 28 29 set_fr_iimmed 0xdead,0x0000,fr10 30 set_fr_iimmed 0x0000,0xbeef,fr11 31 maveh fr10,fr11,fr12 32 test_fr_limmed 0xef57,0xdf78,fr12 33 34 set_fr_iimmed 0x0000,0xdead,fr10 35 set_fr_iimmed 0xbeef,0x0000,fr11 36 maveh fr10,fr11,fr12 37 test_fr_limmed 0xdf78,0xef57,fr12 38 39 set_fr_iimmed 0x1234,0x5678,fr10 40 set_fr_iimmed 0x1111,0x1111,fr11 41 maveh fr10,fr11,fr12 42 test_fr_limmed 0x11a3,0x33c5,fr12 43 44 set_fr_iimmed 0x1234,0x5678,fr10 45 set_fr_iimmed 0xffff,0xffff,fr11 46 maveh fr10,fr11,fr12 47 test_fr_limmed 0x091a,0x2b3c,fr12 48 49 set_fr_iimmed 0x7ffe,0x7ffe,fr10 50 set_fr_iimmed 0x0002,0x0001,fr11 51 maveh fr10,fr11,fr12 52 test_fr_limmed 0x4000,0x4000,fr12 53 54 set_fr_iimmed 0x8001,0x8001,fr10 55 set_fr_iimmed 0xffff,0xfffe,fr11 56 maveh fr10,fr11,fr12 57 test_fr_limmed 0xc000,0xc000,fr12 58 59 set_fr_iimmed 0x8001,0x8001,fr10 60 set_fr_iimmed 0xfffe,0xfffe,fr11 61 maveh fr10,fr11,fr12 62 test_fr_limmed 0xc000,0xc000,fr12 63 64 set_fr_iimmed 0x8000,0x8000,fr10 65 set_fr_iimmed 0x7fff,0x7fff,fr11 66 maveh.p fr10,fr10,fr12 67 maveh fr11,fr11,fr13 68 test_fr_limmed 0x8000,0x8000,fr12 69 test_fr_limmed 0x7fff,0x7fff,fr13 70 71 ; Test Rounding toward nearest via RD 72 or_spr_immed 0x10000000,msr0 73 and_spr_immed 0x3fffffff,msr0 74 75 set_fr_iimmed 0x0000,0x0000,fr10 76 set_fr_iimmed 0x0000,0x0000,fr11 77 maveh fr10,fr11,fr12 78 test_fr_limmed 0x0000,0x0000,fr12 79 80 set_fr_iimmed 0x0001,0x0000,fr10 81 set_fr_iimmed 0x0002,0x0001,fr11 82 maveh fr10,fr11,fr12 83 test_fr_limmed 0x0002,0x0001,fr12 84 85 set_fr_iimmed 0x0000,0xffff,fr10 86 set_fr_iimmed 0xffff,0xfffe,fr11 87 maveh fr10,fr11,fr12 88 test_fr_limmed 0xffff,0xfffe,fr12 89 90 set_fr_iimmed 0xdead,0x0000,fr10 91 set_fr_iimmed 0x0000,0xbeef,fr11 92 maveh fr10,fr11,fr12 93 test_fr_limmed 0xef56,0xdf77,fr12 94 95 set_fr_iimmed 0x0000,0xdead,fr10 96 set_fr_iimmed 0xbeef,0x0000,fr11 97 maveh fr10,fr11,fr12 98 test_fr_limmed 0xdf77,0xef56,fr12 99 100 set_fr_iimmed 0x1234,0x5678,fr10 101 set_fr_iimmed 0x1111,0x1111,fr11 102 maveh fr10,fr11,fr12 103 test_fr_limmed 0x11a3,0x33c5,fr12 104 105 set_fr_iimmed 0x1234,0x5678,fr10 106 set_fr_iimmed 0xffff,0xffff,fr11 107 maveh fr10,fr11,fr12 108 test_fr_limmed 0x091a,0x2b3c,fr12 109 110 set_fr_iimmed 0x7ffe,0x7ffe,fr10 111 set_fr_iimmed 0x0002,0x0001,fr11 112 maveh fr10,fr11,fr12 113 test_fr_limmed 0x4000,0x4000,fr12 114 115 set_fr_iimmed 0x8001,0x8001,fr10 116 set_fr_iimmed 0xffff,0xfffe,fr11 117 maveh fr10,fr11,fr12 118 test_fr_limmed 0xc000,0xbfff,fr12 119 120 set_fr_iimmed 0x8001,0x8001,fr10 121 set_fr_iimmed 0xfffe,0xfffe,fr11 122 maveh fr10,fr11,fr12 123 test_fr_limmed 0xbfff,0xbfff,fr12 124 125 set_fr_iimmed 0x8000,0x8000,fr10 126 set_fr_iimmed 0x7fff,0x7fff,fr11 127 maveh.p fr10,fr10,fr12 128 maveh fr11,fr11,fr13 129 test_fr_limmed 0x8000,0x8000,fr12 130 test_fr_limmed 0x7fff,0x7fff,fr13 131 132 ; Test Rounding toward zero via RD 133 or_spr_immed 0x50000000,msr0 134 and_spr_immed 0x7fffffff,msr0 135 136 set_fr_iimmed 0x0000,0x0000,fr10 137 set_fr_iimmed 0x0000,0x0000,fr11 138 maveh fr10,fr11,fr12 139 test_fr_limmed 0x0000,0x0000,fr12 140 141 set_fr_iimmed 0x0001,0x0000,fr10 142 set_fr_iimmed 0x0002,0x0001,fr11 143 maveh fr10,fr11,fr12 144 test_fr_limmed 0x0001,0x0000,fr12 145 146 set_fr_iimmed 0x0000,0xffff,fr10 147 set_fr_iimmed 0xffff,0xfffe,fr11 148 maveh fr10,fr11,fr12 149 test_fr_limmed 0x0000,0xffff,fr12 150 151 set_fr_iimmed 0xdead,0x0000,fr10 152 set_fr_iimmed 0x0000,0xbeef,fr11 153 maveh fr10,fr11,fr12 154 test_fr_limmed 0xef57,0xdf78,fr12 155 156 set_fr_iimmed 0x0000,0xdead,fr10 157 set_fr_iimmed 0xbeef,0x0000,fr11 158 maveh fr10,fr11,fr12 159 test_fr_limmed 0xdf78,0xef57,fr12 160 161 set_fr_iimmed 0x1234,0x5678,fr10 162 set_fr_iimmed 0x1111,0x1111,fr11 163 maveh fr10,fr11,fr12 164 test_fr_limmed 0x11a2,0x33c4,fr12 165 166 set_fr_iimmed 0x1234,0x5678,fr10 167 set_fr_iimmed 0xffff,0xffff,fr11 168 maveh fr10,fr11,fr12 169 test_fr_limmed 0x0919,0x2b3b,fr12 170 171 set_fr_iimmed 0x7ffe,0x7ffe,fr10 172 set_fr_iimmed 0x0002,0x0001,fr11 173 maveh fr10,fr11,fr12 174 test_fr_limmed 0x4000,0x3fff,fr12 175 176 set_fr_iimmed 0x8001,0x8001,fr10 177 set_fr_iimmed 0xffff,0xfffe,fr11 178 maveh fr10,fr11,fr12 179 test_fr_limmed 0xc000,0xc000,fr12 180 181 set_fr_iimmed 0x8001,0x8001,fr10 182 set_fr_iimmed 0xfffe,0xfffe,fr11 183 maveh fr10,fr11,fr12 184 test_fr_limmed 0xc000,0xc000,fr12 185 186 set_fr_iimmed 0x8000,0x8000,fr10 187 set_fr_iimmed 0x7fff,0x7fff,fr11 188 maveh.p fr10,fr10,fr12 189 maveh fr11,fr11,fr13 190 test_fr_limmed 0x8000,0x8000,fr12 191 test_fr_limmed 0x7fff,0x7fff,fr13 192 193 ; Test Rounding toward positive infinity via RD 194 or_spr_immed 0x90000000,msr0 195 and_spr_immed 0xbfffffff,msr0 196 197 set_fr_iimmed 0x0000,0x0000,fr10 198 set_fr_iimmed 0x0000,0x0000,fr11 199 maveh fr10,fr11,fr12 200 test_fr_limmed 0x0000,0x0000,fr12 201 202 set_fr_iimmed 0x0001,0x0000,fr10 203 set_fr_iimmed 0x0002,0x0001,fr11 204 maveh fr10,fr11,fr12 205 test_fr_limmed 0x0002,0x0001,fr12 206 207 set_fr_iimmed 0x0000,0xffff,fr10 208 set_fr_iimmed 0xffff,0xfffe,fr11 209 maveh fr10,fr11,fr12 210 test_fr_limmed 0x0000,0xffff,fr12 211 212 set_fr_iimmed 0xdead,0x0000,fr10 213 set_fr_iimmed 0x0000,0xbeef,fr11 214 maveh fr10,fr11,fr12 215 test_fr_limmed 0xef57,0xdf78,fr12 216 217 set_fr_iimmed 0x0000,0xdead,fr10 218 set_fr_iimmed 0xbeef,0x0000,fr11 219 maveh fr10,fr11,fr12 220 test_fr_limmed 0xdf78,0xef57,fr12 221 222 set_fr_iimmed 0x1234,0x5678,fr10 223 set_fr_iimmed 0x1111,0x1111,fr11 224 maveh fr10,fr11,fr12 225 test_fr_limmed 0x11a3,0x33c5,fr12 226 227 set_fr_iimmed 0x1234,0x5678,fr10 228 set_fr_iimmed 0xffff,0xffff,fr11 229 maveh fr10,fr11,fr12 230 test_fr_limmed 0x091a,0x2b3c,fr12 231 232 set_fr_iimmed 0x7ffe,0x7ffe,fr10 233 set_fr_iimmed 0x0002,0x0001,fr11 234 maveh fr10,fr11,fr12 235 test_fr_limmed 0x4000,0x4000,fr12 236 237 set_fr_iimmed 0x8001,0x8001,fr10 238 set_fr_iimmed 0xffff,0xfffe,fr11 239 maveh fr10,fr11,fr12 240 test_fr_limmed 0xc000,0xc000,fr12 241 242 set_fr_iimmed 0x8001,0x8001,fr10 243 set_fr_iimmed 0xfffe,0xfffe,fr11 244 maveh fr10,fr11,fr12 245 test_fr_limmed 0xc000,0xc000,fr12 246 247 set_fr_iimmed 0x8000,0x8000,fr10 248 set_fr_iimmed 0x7fff,0x7fff,fr11 249 maveh.p fr10,fr10,fr12 250 maveh fr11,fr11,fr13 251 test_fr_limmed 0x8000,0x8000,fr12 252 test_fr_limmed 0x7fff,0x7fff,fr13 253 254 ; Test Rounding toward negative infinity via RD 255 or_spr_immed 0xd0000000,msr0 256 257 set_fr_iimmed 0x0000,0x0000,fr10 258 set_fr_iimmed 0x0000,0x0000,fr11 259 maveh fr10,fr11,fr12 260 test_fr_limmed 0x0000,0x0000,fr12 261 262 set_fr_iimmed 0x0001,0x0000,fr10 263 set_fr_iimmed 0x0002,0x0001,fr11 264 maveh fr10,fr11,fr12 265 test_fr_limmed 0x0001,0x0000,fr12 266 267 set_fr_iimmed 0x0000,0xffff,fr10 268 set_fr_iimmed 0xffff,0xfffe,fr11 269 maveh fr10,fr11,fr12 270 test_fr_limmed 0xffff,0xfffe,fr12 271 272 set_fr_iimmed 0xdead,0x0000,fr10 273 set_fr_iimmed 0x0000,0xbeef,fr11 274 maveh fr10,fr11,fr12 275 test_fr_limmed 0xef56,0xdf77,fr12 276 277 set_fr_iimmed 0x0000,0xdead,fr10 278 set_fr_iimmed 0xbeef,0x0000,fr11 279 maveh fr10,fr11,fr12 280 test_fr_limmed 0xdf77,0xef56,fr12 281 282 set_fr_iimmed 0x1234,0x5678,fr10 283 set_fr_iimmed 0x1111,0x1111,fr11 284 maveh fr10,fr11,fr12 285 test_fr_limmed 0x11a2,0x33c4,fr12 286 287 set_fr_iimmed 0x1234,0x5678,fr10 288 set_fr_iimmed 0xffff,0xffff,fr11 289 maveh fr10,fr11,fr12 290 test_fr_limmed 0x0919,0x2b3b,fr12 291 292 set_spr_immed 0,msr0 293 set_fr_iimmed 0x7ffe,0x7ffe,fr10 294 set_fr_iimmed 0x0002,0x0001,fr11 295 maveh fr10,fr11,fr12 296 test_fr_limmed 0x4000,0x3fff,fr12 297 298 set_spr_immed 0,msr0 299 set_fr_iimmed 0x8001,0x8001,fr10 300 set_fr_iimmed 0xffff,0xfffe,fr11 301 maveh fr10,fr11,fr12 302 test_fr_limmed 0xc000,0xbfff,fr12 303 304 set_spr_immed 0,msr0 305 set_fr_iimmed 0x8001,0x8001,fr10 306 set_fr_iimmed 0xfffe,0xfffe,fr11 307 maveh fr10,fr11,fr12 308 test_fr_limmed 0xbfff,0xbfff,fr12 309 310 set_spr_immed 0,msr0 311 set_spr_immed 0,msr1 312 set_fr_iimmed 0x8000,0x8000,fr10 313 set_fr_iimmed 0x7fff,0x7fff,fr11 314 maveh.p fr10,fr10,fr12 315 maveh fr11,fr11,fr13 316 test_fr_limmed 0x8000,0x8000,fr12 317 test_fr_limmed 0x7fff,0x7fff,fr13 318 319 pass 320