1# frv testcase for cmcpxis $GRi,$GRj,$ACCk,$CCi,$cond 2# mach: all 3 4 .include "testutils.inc" 5 6 start 7 8 .global cmcpxis 9cmcpxis: 10 set_spr_immed 0x1b1b,cccr 11 12 ; Positive operands 13 set_fr_iimmed 2,4,fr7 ; multiply small numbers 14 set_fr_iimmed 5,3,fr8 15 cmcpxis fr7,fr8,acc0,cc0,1 16 test_accg_immed 0x00,accg0 17 test_acc_immed 26,acc0 18 19 set_fr_iimmed 3,1,fr7 ; multiply by 0 20 set_fr_iimmed 0,2,fr8 21 cmcpxis fr7,fr8,acc0,cc0,1 22 test_accg_immed 0,accg0 23 test_acc_immed 6,acc0 24 25 set_fr_iimmed 2,1,fr7 ; multiply by 1 26 set_fr_iimmed 1,1,fr8 27 cmcpxis fr7,fr8,acc0,cc0,1 28 test_accg_immed 0,accg0 29 test_acc_immed 3,acc0 30 31 set_fr_iimmed 0x3ff8,2,fr7 ; 15 bit result 32 set_fr_iimmed 0x0007,2,fr8 33 cmcpxis fr7,fr8,acc0,cc0,1 34 test_accg_immed 0,accg0 35 test_acc_limmed 0,0x7ffe,acc0 36 37 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 38 set_fr_iimmed 0x2000,2,fr8 39 cmcpxis fr7,fr8,acc0,cc0,1 40 test_accg_immed 0,accg0 41 test_acc_limmed 0x0000,0xc000,acc0 42 43 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 44 set_fr_iimmed 0x7fff,0x7fff,fr8 45 cmcpxis fr7,fr8,acc0,cc0,1 46 test_accg_immed 0,accg0 47 test_acc_limmed 0x3fff,0x0001,acc0 48 49 ; Mixed operands 50 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 51 set_fr_iimmed 1,0xfffd,fr8 52 cmcpxis fr7,fr8,acc0,cc0,1 53 test_accg_immed 0xff,accg0 54 test_acc_immed -9,acc0 55 56 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 57 set_fr_iimmed 0xfffe,1,fr8 58 cmcpxis fr7,fr8,acc0,cc0,1 59 test_accg_immed 0xff,accg0 60 test_acc_immed -6,acc0 61 62 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 63 set_fr_iimmed 0xfffe,1,fr8 64 cmcpxis fr7,fr8,acc0,cc0,1 65 test_accg_immed 0xff,accg0 66 test_acc_immed -2,acc0 67 68 set_fr_iimmed 0x2001,0xffff,fr7 ; 15 bit result 69 set_fr_iimmed 0xffff,0xfffe,fr8 70 cmcpxis fr7,fr8,acc0,cc4,1 71 test_accg_immed 0xff,accg0 72 test_acc_limmed 0xffff,0xbfff,acc0 73 74 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 75 set_fr_iimmed 0x0003,0xfffe,fr8 76 cmcpxis fr7,fr8,acc0,cc4,1 77 test_accg_immed 0xff,accg0 78 test_acc_limmed 0xffff,0x7ffa,acc0 79 80 set_fr_iimmed 0x7fff,0x7fff,fr7 ; max negative result 81 set_fr_iimmed 0x8000,0x8000,fr8 82 cmcpxis fr7,fr8,acc0,cc4,1 83 test_accg_immed 0xff,accg0 84 test_acc_limmed 0x8001,0x0000,acc0 85 86 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result 87 set_fr_iimmed 0x8000,0x8000,fr8 88 cmcpxis fr7,fr8,acc0,cc4,1 89 test_accg_immed 0,accg0 90 test_acc_limmed 0x8000,0x0000,acc0 91 92 ; Negative operands 93 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 94 set_fr_iimmed 0xfffb,0xfffd,fr8 95 cmcpxis fr7,fr8,acc0,cc4,1 96 test_accg_immed 0x00,accg0 97 test_acc_immed 26,acc0 98 99 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 100 set_fr_iimmed 0xffff,0xfffe,fr8 101 cmcpxis fr7,fr8,acc0,cc4,1 102 test_accg_immed 0,accg0 103 test_acc_immed 3,acc0 104 105 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 106 set_fr_iimmed 0x8001,0x7fff,fr8 107 cmcpxis fr7,fr8,acc0,cc4,1 108 test_accg_immed 0,accg0 109 test_acc_immed 0x3fff0001,acc0 110 111 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 112 set_fr_iimmed 0x8000,0x8000,fr8 113 cmcpxis fr7,fr8,acc0,cc4,1 114 test_accg_immed 0,accg0 115 test_acc_immed 0x40000000,acc0 116 117 ; Positive operands 118 set_fr_iimmed 2,4,fr7 ; multiply small numbers 119 set_fr_iimmed 5,3,fr8 120 cmcpxis fr7,fr8,acc0,cc1,0 121 test_accg_immed 0x00,accg0 122 test_acc_immed 26,acc0 123 124 set_fr_iimmed 3,1,fr7 ; multiply by 0 125 set_fr_iimmed 0,2,fr8 126 cmcpxis fr7,fr8,acc0,cc1,0 127 test_accg_immed 0,accg0 128 test_acc_immed 6,acc0 129 130 set_fr_iimmed 2,1,fr7 ; multiply by 1 131 set_fr_iimmed 1,1,fr8 132 cmcpxis fr7,fr8,acc0,cc1,0 133 test_accg_immed 0,accg0 134 test_acc_immed 3,acc0 135 136 set_fr_iimmed 0x3ff8,2,fr7 ; 15 bit result 137 set_fr_iimmed 0x0007,2,fr8 138 cmcpxis fr7,fr8,acc0,cc1,0 139 test_accg_immed 0,accg0 140 test_acc_limmed 0,0x7ffe,acc0 141 142 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 143 set_fr_iimmed 0x2000,2,fr8 144 cmcpxis fr7,fr8,acc0,cc1,0 145 test_accg_immed 0,accg0 146 test_acc_limmed 0x0000,0xc000,acc0 147 148 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 149 set_fr_iimmed 0x7fff,0x7fff,fr8 150 cmcpxis fr7,fr8,acc0,cc1,0 151 test_accg_immed 0,accg0 152 test_acc_limmed 0x3fff,0x0001,acc0 153 154 ; Mixed operands 155 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 156 set_fr_iimmed 1,0xfffd,fr8 157 cmcpxis fr7,fr8,acc0,cc1,0 158 test_accg_immed 0xff,accg0 159 test_acc_immed -9,acc0 160 161 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 162 set_fr_iimmed 0xfffe,1,fr8 163 cmcpxis fr7,fr8,acc0,cc1,0 164 test_accg_immed 0xff,accg0 165 test_acc_immed -6,acc0 166 167 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 168 set_fr_iimmed 0xfffe,1,fr8 169 cmcpxis fr7,fr8,acc0,cc1,0 170 test_accg_immed 0xff,accg0 171 test_acc_immed -2,acc0 172 173 set_fr_iimmed 0x2001,0xffff,fr7 ; 15 bit result 174 set_fr_iimmed 0xffff,0xfffe,fr8 175 cmcpxis fr7,fr8,acc0,cc5,0 176 test_accg_immed 0xff,accg0 177 test_acc_limmed 0xffff,0xbfff,acc0 178 179 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 180 set_fr_iimmed 0x0003,0xfffe,fr8 181 cmcpxis fr7,fr8,acc0,cc5,0 182 test_accg_immed 0xff,accg0 183 test_acc_limmed 0xffff,0x7ffa,acc0 184 185 set_fr_iimmed 0x7fff,0x7fff,fr7 ; max negative result 186 set_fr_iimmed 0x8000,0x8000,fr8 187 cmcpxis fr7,fr8,acc0,cc5,0 188 test_accg_immed 0xff,accg0 189 test_acc_limmed 0x8001,0x0000,acc0 190 191 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result 192 set_fr_iimmed 0x8000,0x8000,fr8 193 cmcpxis fr7,fr8,acc0,cc5,0 194 test_accg_immed 0,accg0 195 test_acc_limmed 0x8000,0x0000,acc0 196 197 ; Negative operands 198 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 199 set_fr_iimmed 0xfffb,0xfffd,fr8 200 cmcpxis fr7,fr8,acc0,cc5,0 201 test_accg_immed 0x00,accg0 202 test_acc_immed 26,acc0 203 204 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 205 set_fr_iimmed 0xffff,0xfffe,fr8 206 cmcpxis fr7,fr8,acc0,cc5,0 207 test_accg_immed 0,accg0 208 test_acc_immed 3,acc0 209 210 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 211 set_fr_iimmed 0x8001,0x7fff,fr8 212 cmcpxis fr7,fr8,acc0,cc5,0 213 test_accg_immed 0,accg0 214 test_acc_immed 0x3fff0001,acc0 215 216 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 217 set_fr_iimmed 0x8000,0x8000,fr8 218 cmcpxis fr7,fr8,acc0,cc5,0 219 test_accg_immed 0,accg0 220 test_acc_immed 0x40000000,acc0 221 222 ; Positive operands 223 set_accg_immed 0x00000011,accg0 224 set_acc_immed 0x11111111,acc0 225 set_fr_iimmed 2,4,fr7 ; multiply small numbers 226 set_fr_iimmed 5,3,fr8 227 cmcpxis fr7,fr8,acc0,cc0,0 228 test_accg_immed 0x00000011,accg0 229 test_acc_immed 0x11111111,acc0 230 231 set_fr_iimmed 3,1,fr7 ; multiply by 0 232 set_fr_iimmed 0,2,fr8 233 cmcpxis fr7,fr8,acc0,cc0,0 234 test_accg_immed 0x00000011,accg0 235 test_acc_immed 0x11111111,acc0 236 237 set_fr_iimmed 2,1,fr7 ; multiply by 1 238 set_fr_iimmed 1,1,fr8 239 cmcpxis fr7,fr8,acc0,cc0,0 240 test_accg_immed 0x00000011,accg0 241 test_acc_immed 0x11111111,acc0 242 243 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 244 set_fr_iimmed 0x0007,2,fr8 245 cmcpxis fr7,fr8,acc0,cc0,0 246 test_accg_immed 0x00000011,accg0 247 test_acc_immed 0x11111111,acc0 248 249 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 250 set_fr_iimmed 0x2000,2,fr8 251 cmcpxis fr7,fr8,acc0,cc0,0 252 test_accg_immed 0x00000011,accg0 253 test_acc_immed 0x11111111,acc0 254 255 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 256 set_fr_iimmed 0x7fff,0x7fff,fr8 257 cmcpxis fr7,fr8,acc0,cc0,0 258 test_accg_immed 0x00000011,accg0 259 test_acc_immed 0x11111111,acc0 260 261 ; Mixed operands 262 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 263 set_fr_iimmed 1,0xfffd,fr8 264 cmcpxis fr7,fr8,acc0,cc0,0 265 test_accg_immed 0x00000011,accg0 266 test_acc_immed 0x11111111,acc0 267 268 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 269 set_fr_iimmed 0xfffe,1,fr8 270 cmcpxis fr7,fr8,acc0,cc0,0 271 test_accg_immed 0x00000011,accg0 272 test_acc_immed 0x11111111,acc0 273 274 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 275 set_fr_iimmed 0xfffe,1,fr8 276 cmcpxis fr7,fr8,acc0,cc4,0 277 test_accg_immed 0x00000011,accg0 278 test_acc_immed 0x11111111,acc0 279 280 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 281 set_fr_iimmed 0xfff9,0xfffe,fr8 282 cmcpxis fr7,fr8,acc0,cc4,0 283 test_accg_immed 0x00000011,accg0 284 test_acc_immed 0x11111111,acc0 285 286 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 287 set_fr_iimmed 0x0003,0xfffe,fr8 288 cmcpxis fr7,fr8,acc0,cc4,0 289 test_accg_immed 0x00000011,accg0 290 test_acc_immed 0x11111111,acc0 291 292 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 293 set_fr_iimmed 0x8000,0x8000,fr8 294 cmcpxis fr7,fr8,acc0,cc4,0 295 test_accg_immed 0x00000011,accg0 296 test_acc_immed 0x11111111,acc0 297 298 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 299 set_fr_iimmed 0x8000,0x8000,fr8 300 cmcpxis fr7,fr8,acc0,cc4,0 301 test_accg_immed 0x00000011,accg0 302 test_acc_immed 0x11111111,acc0 303 304 ; Negative operands 305 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 306 set_fr_iimmed 0xfffb,0xfffd,fr8 307 cmcpxis fr7,fr8,acc0,cc4,0 308 test_accg_immed 0x00000011,accg0 309 test_acc_immed 0x11111111,acc0 310 311 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 312 set_fr_iimmed 0xffff,0xfffe,fr8 313 cmcpxis fr7,fr8,acc0,cc4,0 314 test_accg_immed 0x00000011,accg0 315 test_acc_immed 0x11111111,acc0 316 317 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 318 set_fr_iimmed 0x8001,0x7fff,fr8 319 cmcpxis fr7,fr8,acc0,cc4,0 320 test_accg_immed 0x00000011,accg0 321 test_acc_immed 0x11111111,acc0 322 323 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 324 set_fr_iimmed 0x8000,0x8000,fr8 325 cmcpxis fr7,fr8,acc0,cc4,0 326 test_accg_immed 0x00000011,accg0 327 test_acc_immed 0x11111111,acc0 328 329 ; Positive operands 330 set_accg_immed 0x00000011,accg0 331 set_acc_immed 0x11111111,acc0 332 set_fr_iimmed 2,4,fr7 ; multiply small numbers 333 set_fr_iimmed 5,3,fr8 334 cmcpxis fr7,fr8,acc0,cc1,1 335 test_accg_immed 0x00000011,accg0 336 test_acc_immed 0x11111111,acc0 337 338 set_fr_iimmed 3,1,fr7 ; multiply by 0 339 set_fr_iimmed 0,2,fr8 340 cmcpxis fr7,fr8,acc0,cc1,1 341 test_accg_immed 0x00000011,accg0 342 test_acc_immed 0x11111111,acc0 343 344 set_fr_iimmed 2,1,fr7 ; multiply by 1 345 set_fr_iimmed 1,1,fr8 346 cmcpxis fr7,fr8,acc0,cc1,1 347 test_accg_immed 0x00000011,accg0 348 test_acc_immed 0x11111111,acc0 349 350 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 351 set_fr_iimmed 0x0007,2,fr8 352 cmcpxis fr7,fr8,acc0,cc1,1 353 test_accg_immed 0x00000011,accg0 354 test_acc_immed 0x11111111,acc0 355 356 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 357 set_fr_iimmed 0x2000,2,fr8 358 cmcpxis fr7,fr8,acc0,cc1,1 359 test_accg_immed 0x00000011,accg0 360 test_acc_immed 0x11111111,acc0 361 362 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 363 set_fr_iimmed 0x7fff,0x7fff,fr8 364 cmcpxis fr7,fr8,acc0,cc1,1 365 test_accg_immed 0x00000011,accg0 366 test_acc_immed 0x11111111,acc0 367 368 ; Mixed operands 369 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 370 set_fr_iimmed 1,0xfffd,fr8 371 cmcpxis fr7,fr8,acc0,cc1,1 372 test_accg_immed 0x00000011,accg0 373 test_acc_immed 0x11111111,acc0 374 375 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 376 set_fr_iimmed 0xfffe,1,fr8 377 cmcpxis fr7,fr8,acc0,cc1,1 378 test_accg_immed 0x00000011,accg0 379 test_acc_immed 0x11111111,acc0 380 381 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 382 set_fr_iimmed 0xfffe,1,fr8 383 cmcpxis fr7,fr8,acc0,cc5,1 384 test_accg_immed 0x00000011,accg0 385 test_acc_immed 0x11111111,acc0 386 387 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 388 set_fr_iimmed 0xfff9,0xfffe,fr8 389 cmcpxis fr7,fr8,acc0,cc5,1 390 test_accg_immed 0x00000011,accg0 391 test_acc_immed 0x11111111,acc0 392 393 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 394 set_fr_iimmed 0x0003,0xfffe,fr8 395 cmcpxis fr7,fr8,acc0,cc5,1 396 test_accg_immed 0x00000011,accg0 397 test_acc_immed 0x11111111,acc0 398 399 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 400 set_fr_iimmed 0x8000,0x8000,fr8 401 cmcpxis fr7,fr8,acc0,cc5,1 402 test_accg_immed 0x00000011,accg0 403 test_acc_immed 0x11111111,acc0 404 405 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 406 set_fr_iimmed 0x8000,0x8000,fr8 407 cmcpxis fr7,fr8,acc0,cc5,1 408 test_accg_immed 0x00000011,accg0 409 test_acc_immed 0x11111111,acc0 410 411 ; Negative operands 412 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 413 set_fr_iimmed 0xfffb,0xfffd,fr8 414 cmcpxis fr7,fr8,acc0,cc5,1 415 test_accg_immed 0x00000011,accg0 416 test_acc_immed 0x11111111,acc0 417 418 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 419 set_fr_iimmed 0xffff,0xfffe,fr8 420 cmcpxis fr7,fr8,acc0,cc5,1 421 test_accg_immed 0x00000011,accg0 422 test_acc_immed 0x11111111,acc0 423 424 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 425 set_fr_iimmed 0x8001,0x7fff,fr8 426 cmcpxis fr7,fr8,acc0,cc5,1 427 test_accg_immed 0x00000011,accg0 428 test_acc_immed 0x11111111,acc0 429 430 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 431 set_fr_iimmed 0x8000,0x8000,fr8 432 cmcpxis fr7,fr8,acc0,cc5,1 433 test_accg_immed 0x00000011,accg0 434 test_acc_immed 0x11111111,acc0 435 436 ; Positive operands 437 set_accg_immed 0x00000011,accg0 438 set_acc_immed 0x11111111,acc0 439 set_fr_iimmed 2,4,fr7 ; multiply small numbers 440 set_fr_iimmed 5,3,fr8 441 cmcpxis fr7,fr8,acc0,cc2,1 442 test_accg_immed 0x00000011,accg0 443 test_acc_immed 0x11111111,acc0 444 445 set_fr_iimmed 3,1,fr7 ; multiply by 0 446 set_fr_iimmed 0,2,fr8 447 cmcpxis fr7,fr8,acc0,cc2,1 448 test_accg_immed 0x00000011,accg0 449 test_acc_immed 0x11111111,acc0 450 451 set_fr_iimmed 2,1,fr7 ; multiply by 1 452 set_fr_iimmed 1,1,fr8 453 cmcpxis fr7,fr8,acc0,cc2,1 454 test_accg_immed 0x00000011,accg0 455 test_acc_immed 0x11111111,acc0 456 457 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 458 set_fr_iimmed 0x0007,2,fr8 459 cmcpxis fr7,fr8,acc0,cc2,1 460 test_accg_immed 0x00000011,accg0 461 test_acc_immed 0x11111111,acc0 462 463 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 464 set_fr_iimmed 0x2000,2,fr8 465 cmcpxis fr7,fr8,acc0,cc2,1 466 test_accg_immed 0x00000011,accg0 467 test_acc_immed 0x11111111,acc0 468 469 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 470 set_fr_iimmed 0x7fff,0x7fff,fr8 471 cmcpxis fr7,fr8,acc0,cc2,1 472 test_accg_immed 0x00000011,accg0 473 test_acc_immed 0x11111111,acc0 474 475 ; Mixed operands 476 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 477 set_fr_iimmed 1,0xfffd,fr8 478 cmcpxis fr7,fr8,acc0,cc2,1 479 test_accg_immed 0x00000011,accg0 480 test_acc_immed 0x11111111,acc0 481 482 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 483 set_fr_iimmed 0xfffe,1,fr8 484 cmcpxis fr7,fr8,acc0,cc2,1 485 test_accg_immed 0x00000011,accg0 486 test_acc_immed 0x11111111,acc0 487 488 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 489 set_fr_iimmed 0xfffe,1,fr8 490 cmcpxis fr7,fr8,acc0,cc6,1 491 test_accg_immed 0x00000011,accg0 492 test_acc_immed 0x11111111,acc0 493 494 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 495 set_fr_iimmed 0xfff9,0xfffe,fr8 496 cmcpxis fr7,fr8,acc0,cc6,1 497 test_accg_immed 0x00000011,accg0 498 test_acc_immed 0x11111111,acc0 499 500 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 501 set_fr_iimmed 0x0003,0xfffe,fr8 502 cmcpxis fr7,fr8,acc0,cc6,1 503 test_accg_immed 0x00000011,accg0 504 test_acc_immed 0x11111111,acc0 505 506 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 507 set_fr_iimmed 0x8000,0x8000,fr8 508 cmcpxis fr7,fr8,acc0,cc6,1 509 test_accg_immed 0x00000011,accg0 510 test_acc_immed 0x11111111,acc0 511 512 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 513 set_fr_iimmed 0x8000,0x8000,fr8 514 cmcpxis fr7,fr8,acc0,cc6,1 515 test_accg_immed 0x00000011,accg0 516 test_acc_immed 0x11111111,acc0 517 518 ; Negative operands 519 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 520 set_fr_iimmed 0xfffb,0xfffd,fr8 521 cmcpxis fr7,fr8,acc0,cc6,1 522 test_accg_immed 0x00000011,accg0 523 test_acc_immed 0x11111111,acc0 524 525 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 526 set_fr_iimmed 0xffff,0xfffe,fr8 527 cmcpxis fr7,fr8,acc0,cc6,1 528 test_accg_immed 0x00000011,accg0 529 test_acc_immed 0x11111111,acc0 530 531 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 532 set_fr_iimmed 0x8001,0x7fff,fr8 533 cmcpxis fr7,fr8,acc0,cc6,1 534 test_accg_immed 0x00000011,accg0 535 test_acc_immed 0x11111111,acc0 536 537 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 538 set_fr_iimmed 0x8000,0x8000,fr8 539 cmcpxis fr7,fr8,acc0,cc6,1 540 test_accg_immed 0x00000011,accg0 541 test_acc_immed 0x11111111,acc0 542 543 ; Positive operands 544 set_accg_immed 0x00000011,accg0 545 set_acc_immed 0x11111111,acc0 546 set_fr_iimmed 2,4,fr7 ; multiply small numbers 547 set_fr_iimmed 5,3,fr8 548 cmcpxis fr7,fr8,acc0,cc2,1 549 test_accg_immed 0x00000011,accg0 550 test_acc_immed 0x11111111,acc0 551 552 set_fr_iimmed 3,1,fr7 ; multiply by 0 553 set_fr_iimmed 0,2,fr8 554 cmcpxis fr7,fr8,acc0,cc2,0 555 test_accg_immed 0x00000011,accg0 556 test_acc_immed 0x11111111,acc0 557 558 set_fr_iimmed 2,1,fr7 ; multiply by 1 559 set_fr_iimmed 1,1,fr8 560 cmcpxis fr7,fr8,acc0,cc2,1 561 test_accg_immed 0x00000011,accg0 562 test_acc_immed 0x11111111,acc0 563 564 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 565 set_fr_iimmed 0x0007,2,fr8 566 cmcpxis fr7,fr8,acc0,cc2,0 567 test_accg_immed 0x00000011,accg0 568 test_acc_immed 0x11111111,acc0 569 570 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 571 set_fr_iimmed 0x2000,2,fr8 572 cmcpxis fr7,fr8,acc0,cc2,1 573 test_accg_immed 0x00000011,accg0 574 test_acc_immed 0x11111111,acc0 575 576 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 577 set_fr_iimmed 0x7fff,0x7fff,fr8 578 cmcpxis fr7,fr8,acc0,cc2,0 579 test_accg_immed 0x00000011,accg0 580 test_acc_immed 0x11111111,acc0 581 582 ; Mixed operands 583 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 584 set_fr_iimmed 1,0xfffd,fr8 585 cmcpxis fr7,fr8,acc0,cc2,1 586 test_accg_immed 0x00000011,accg0 587 test_acc_immed 0x11111111,acc0 588 589 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 590 set_fr_iimmed 0xfffe,1,fr8 591 cmcpxis fr7,fr8,acc0,cc2,0 592 test_accg_immed 0x00000011,accg0 593 test_acc_immed 0x11111111,acc0 594 595 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 596 set_fr_iimmed 0xfffe,1,fr8 597 cmcpxis fr7,fr8,acc0,cc6,1 598 test_accg_immed 0x00000011,accg0 599 test_acc_immed 0x11111111,acc0 600 601 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 602 set_fr_iimmed 0xfff9,0xfffe,fr8 603 cmcpxis fr7,fr8,acc0,cc6,0 604 test_accg_immed 0x00000011,accg0 605 test_acc_immed 0x11111111,acc0 606 607 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 608 set_fr_iimmed 0x0003,0xfffe,fr8 609 cmcpxis fr7,fr8,acc0,cc6,1 610 test_accg_immed 0x00000011,accg0 611 test_acc_immed 0x11111111,acc0 612 613 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 614 set_fr_iimmed 0x8000,0x8000,fr8 615 cmcpxis fr7,fr8,acc0,cc6,0 616 test_accg_immed 0x00000011,accg0 617 test_acc_immed 0x11111111,acc0 618 619 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 620 set_fr_iimmed 0x8000,0x8000,fr8 621 cmcpxis fr7,fr8,acc0,cc6,1 622 test_accg_immed 0x00000011,accg0 623 test_acc_immed 0x11111111,acc0 624 625 ; Negative operands 626 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 627 set_fr_iimmed 0xfffb,0xfffd,fr8 628 cmcpxis fr7,fr8,acc0,cc6,0 629 test_accg_immed 0x00000011,accg0 630 test_acc_immed 0x11111111,acc0 631 632 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 633 set_fr_iimmed 0xffff,0xfffe,fr8 634 cmcpxis fr7,fr8,acc0,cc6,1 635 test_accg_immed 0x00000011,accg0 636 test_acc_immed 0x11111111,acc0 637 638 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 639 set_fr_iimmed 0x8001,0x7fff,fr8 640 cmcpxis fr7,fr8,acc0,cc6,0 641 test_accg_immed 0x00000011,accg0 642 test_acc_immed 0x11111111,acc0 643 644 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 645 set_fr_iimmed 0x8000,0x8000,fr8 646 cmcpxis fr7,fr8,acc0,cc6,1 647 test_accg_immed 0x00000011,accg0 648 test_acc_immed 0x11111111,acc0 649 650 ; Positive operands 651 set_accg_immed 0x00000011,accg0 652 set_acc_immed 0x11111111,acc0 653 set_fr_iimmed 2,4,fr7 ; multiply small numbers 654 set_fr_iimmed 5,3,fr8 655 cmcpxis fr7,fr8,acc0,cc2,0 656 test_accg_immed 0x00000011,accg0 657 test_acc_immed 0x11111111,acc0 658 659 set_fr_iimmed 3,1,fr7 ; multiply by 0 660 set_fr_iimmed 0,2,fr8 661 cmcpxis fr7,fr8,acc0,cc2,1 662 test_accg_immed 0x00000011,accg0 663 test_acc_immed 0x11111111,acc0 664 665 set_fr_iimmed 2,1,fr7 ; multiply by 1 666 set_fr_iimmed 1,1,fr8 667 cmcpxis fr7,fr8,acc0,cc2,0 668 test_accg_immed 0x00000011,accg0 669 test_acc_immed 0x11111111,acc0 670 671 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 672 set_fr_iimmed 0x0007,2,fr8 673 cmcpxis fr7,fr8,acc0,cc2,1 674 test_accg_immed 0x00000011,accg0 675 test_acc_immed 0x11111111,acc0 676 677 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 678 set_fr_iimmed 0x2000,2,fr8 679 cmcpxis fr7,fr8,acc0,cc2,0 680 test_accg_immed 0x00000011,accg0 681 test_acc_immed 0x11111111,acc0 682 683 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 684 set_fr_iimmed 0x7fff,0x7fff,fr8 685 cmcpxis fr7,fr8,acc0,cc2,1 686 test_accg_immed 0x00000011,accg0 687 test_acc_immed 0x11111111,acc0 688 689 ; Mixed operands 690 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 691 set_fr_iimmed 1,0xfffd,fr8 692 cmcpxis fr7,fr8,acc0,cc2,0 693 test_accg_immed 0x00000011,accg0 694 test_acc_immed 0x11111111,acc0 695 696 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 697 set_fr_iimmed 0xfffe,1,fr8 698 cmcpxis fr7,fr8,acc0,cc2,1 699 test_accg_immed 0x00000011,accg0 700 test_acc_immed 0x11111111,acc0 701 702 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 703 set_fr_iimmed 0xfffe,1,fr8 704 cmcpxis fr7,fr8,acc0,cc6,0 705 test_accg_immed 0x00000011,accg0 706 test_acc_immed 0x11111111,acc0 707 708 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 709 set_fr_iimmed 0xfff9,0xfffe,fr8 710 cmcpxis fr7,fr8,acc0,cc6,1 711 test_accg_immed 0x00000011,accg0 712 test_acc_immed 0x11111111,acc0 713 714 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 715 set_fr_iimmed 0x0003,0xfffe,fr8 716 cmcpxis fr7,fr8,acc0,cc6,0 717 test_accg_immed 0x00000011,accg0 718 test_acc_immed 0x11111111,acc0 719 720 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 721 set_fr_iimmed 0x8000,0x8000,fr8 722 cmcpxis fr7,fr8,acc0,cc6,1 723 test_accg_immed 0x00000011,accg0 724 test_acc_immed 0x11111111,acc0 725 726 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 727 set_fr_iimmed 0x8000,0x8000,fr8 728 cmcpxis fr7,fr8,acc0,cc6,0 729 test_accg_immed 0x00000011,accg0 730 test_acc_immed 0x11111111,acc0 731 732 ; Negative operands 733 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 734 set_fr_iimmed 0xfffb,0xfffd,fr8 735 cmcpxis fr7,fr8,acc0,cc6,1 736 test_accg_immed 0x00000011,accg0 737 test_acc_immed 0x11111111,acc0 738 739 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 740 set_fr_iimmed 0xffff,0xfffe,fr8 741 cmcpxis fr7,fr8,acc0,cc6,0 742 test_accg_immed 0x00000011,accg0 743 test_acc_immed 0x11111111,acc0 744 745 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 746 set_fr_iimmed 0x8001,0x7fff,fr8 747 cmcpxis fr7,fr8,acc0,cc6,0 748 test_accg_immed 0x00000011,accg0 749 test_acc_immed 0x11111111,acc0 750 751 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 752 set_fr_iimmed 0x8000,0x8000,fr8 753 cmcpxis fr7,fr8,acc0,cc6,1 754 test_accg_immed 0x00000011,accg0 755 test_acc_immed 0x11111111,acc0 756; 757 ; Positive operands 758 set_accg_immed 0x00000011,accg0 759 set_acc_immed 0x11111111,acc0 760 set_fr_iimmed 2,4,fr7 ; multiply small numbers 761 set_fr_iimmed 5,3,fr8 762 cmcpxis fr7,fr8,acc0,cc3,1 763 test_accg_immed 0x00000011,accg0 764 test_acc_immed 0x11111111,acc0 765 766 set_fr_iimmed 3,1,fr7 ; multiply by 0 767 set_fr_iimmed 0,2,fr8 768 cmcpxis fr7,fr8,acc0,cc3,0 769 test_accg_immed 0x00000011,accg0 770 test_acc_immed 0x11111111,acc0 771 772 set_fr_iimmed 2,1,fr7 ; multiply by 1 773 set_fr_iimmed 1,1,fr8 774 cmcpxis fr7,fr8,acc0,cc3,1 775 test_accg_immed 0x00000011,accg0 776 test_acc_immed 0x11111111,acc0 777 778 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 779 set_fr_iimmed 0x0007,2,fr8 780 cmcpxis fr7,fr8,acc0,cc3,0 781 test_accg_immed 0x00000011,accg0 782 test_acc_immed 0x11111111,acc0 783 784 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 785 set_fr_iimmed 0x2000,2,fr8 786 cmcpxis fr7,fr8,acc0,cc3,1 787 test_accg_immed 0x00000011,accg0 788 test_acc_immed 0x11111111,acc0 789 790 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 791 set_fr_iimmed 0x7fff,0x7fff,fr8 792 cmcpxis fr7,fr8,acc0,cc3,0 793 test_accg_immed 0x00000011,accg0 794 test_acc_immed 0x11111111,acc0 795 796 ; Mixed operands 797 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 798 set_fr_iimmed 1,0xfffd,fr8 799 cmcpxis fr7,fr8,acc0,cc3,1 800 test_accg_immed 0x00000011,accg0 801 test_acc_immed 0x11111111,acc0 802 803 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 804 set_fr_iimmed 0xfffe,1,fr8 805 cmcpxis fr7,fr8,acc0,cc3,0 806 test_accg_immed 0x00000011,accg0 807 test_acc_immed 0x11111111,acc0 808 809 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 810 set_fr_iimmed 0xfffe,1,fr8 811 cmcpxis fr7,fr8,acc0,cc6,1 812 test_accg_immed 0x00000011,accg0 813 test_acc_immed 0x11111111,acc0 814 815 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 816 set_fr_iimmed 0xfff9,0xfffe,fr8 817 cmcpxis fr7,fr8,acc0,cc6,0 818 test_accg_immed 0x00000011,accg0 819 test_acc_immed 0x11111111,acc0 820 821 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 822 set_fr_iimmed 0x0003,0xfffe,fr8 823 cmcpxis fr7,fr8,acc0,cc6,1 824 test_accg_immed 0x00000011,accg0 825 test_acc_immed 0x11111111,acc0 826 827 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 828 set_fr_iimmed 0x8000,0x8000,fr8 829 cmcpxis fr7,fr8,acc0,cc6,0 830 test_accg_immed 0x00000011,accg0 831 test_acc_immed 0x11111111,acc0 832 833 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 834 set_fr_iimmed 0x8000,0x8000,fr8 835 cmcpxis fr7,fr8,acc0,cc6,1 836 test_accg_immed 0x00000011,accg0 837 test_acc_immed 0x11111111,acc0 838 839 ; Negative operands 840 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 841 set_fr_iimmed 0xfffb,0xfffd,fr8 842 cmcpxis fr7,fr8,acc0,cc6,0 843 test_accg_immed 0x00000011,accg0 844 test_acc_immed 0x11111111,acc0 845 846 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 847 set_fr_iimmed 0xffff,0xfffe,fr8 848 cmcpxis fr7,fr8,acc0,cc6,1 849 test_accg_immed 0x00000011,accg0 850 test_acc_immed 0x11111111,acc0 851 852 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 853 set_fr_iimmed 0x8001,0x7fff,fr8 854 cmcpxis fr7,fr8,acc0,cc6,0 855 test_accg_immed 0x00000011,accg0 856 test_acc_immed 0x11111111,acc0 857 858 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 859 set_fr_iimmed 0x8000,0x8000,fr8 860 cmcpxis fr7,fr8,acc0,cc6,1 861 test_accg_immed 0x00000011,accg0 862 test_acc_immed 0x11111111,acc0 863 864 ; Positive operands 865 set_accg_immed 0x00000011,accg0 866 set_acc_immed 0x11111111,acc0 867 set_fr_iimmed 2,4,fr7 ; multiply small numbers 868 set_fr_iimmed 5,3,fr8 869 cmcpxis fr7,fr8,acc0,cc3,0 870 test_accg_immed 0x00000011,accg0 871 test_acc_immed 0x11111111,acc0 872 873 set_fr_iimmed 3,1,fr7 ; multiply by 0 874 set_fr_iimmed 0,2,fr8 875 cmcpxis fr7,fr8,acc0,cc3,1 876 test_accg_immed 0x00000011,accg0 877 test_acc_immed 0x11111111,acc0 878 879 set_fr_iimmed 2,1,fr7 ; multiply by 1 880 set_fr_iimmed 1,1,fr8 881 cmcpxis fr7,fr8,acc0,cc3,0 882 test_accg_immed 0x00000011,accg0 883 test_acc_immed 0x11111111,acc0 884 885 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result 886 set_fr_iimmed 0x0007,2,fr8 887 cmcpxis fr7,fr8,acc0,cc3,1 888 test_accg_immed 0x00000011,accg0 889 test_acc_immed 0x11111111,acc0 890 891 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result 892 set_fr_iimmed 0x2000,2,fr8 893 cmcpxis fr7,fr8,acc0,cc3,0 894 test_accg_immed 0x00000011,accg0 895 test_acc_immed 0x11111111,acc0 896 897 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result 898 set_fr_iimmed 0x7fff,0x7fff,fr8 899 cmcpxis fr7,fr8,acc0,cc3,1 900 test_accg_immed 0x00000011,accg0 901 test_acc_immed 0x11111111,acc0 902 903 ; Mixed operands 904 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers 905 set_fr_iimmed 1,0xfffd,fr8 906 cmcpxis fr7,fr8,acc0,cc3,0 907 test_accg_immed 0x00000011,accg0 908 test_acc_immed 0x11111111,acc0 909 910 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1 911 set_fr_iimmed 0xfffe,1,fr8 912 cmcpxis fr7,fr8,acc0,cc3,1 913 test_accg_immed 0x00000011,accg0 914 test_acc_immed 0x11111111,acc0 915 916 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0 917 set_fr_iimmed 0xfffe,1,fr8 918 cmcpxis fr7,fr8,acc0,cc7,0 919 test_accg_immed 0x00000011,accg0 920 test_acc_immed 0x11111111,acc0 921 922 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result 923 set_fr_iimmed 0xfff9,0xfffe,fr8 924 cmcpxis fr7,fr8,acc0,cc7,1 925 test_accg_immed 0x00000011,accg0 926 test_acc_immed 0x11111111,acc0 927 928 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result 929 set_fr_iimmed 0x0003,0xfffe,fr8 930 cmcpxis fr7,fr8,acc0,cc7,0 931 test_accg_immed 0x00000011,accg0 932 test_acc_immed 0x11111111,acc0 933 934 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result 935 set_fr_iimmed 0x8000,0x8000,fr8 936 cmcpxis fr7,fr8,acc0,cc7,1 937 test_accg_immed 0x00000011,accg0 938 test_acc_immed 0x11111111,acc0 939 940 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result 941 set_fr_iimmed 0x8000,0x8000,fr8 942 cmcpxis fr7,fr8,acc0,cc7,0 943 test_accg_immed 0x00000011,accg0 944 test_acc_immed 0x11111111,acc0 945 946 ; Negative operands 947 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers 948 set_fr_iimmed 0xfffb,0xfffd,fr8 949 cmcpxis fr7,fr8,acc0,cc7,1 950 test_accg_immed 0x00000011,accg0 951 test_acc_immed 0x11111111,acc0 952 953 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1 954 set_fr_iimmed 0xffff,0xfffe,fr8 955 cmcpxis fr7,fr8,acc0,cc7,0 956 test_accg_immed 0x00000011,accg0 957 test_acc_immed 0x11111111,acc0 958 959 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result 960 set_fr_iimmed 0x8001,0x7fff,fr8 961 cmcpxis fr7,fr8,acc0,cc7,0 962 test_accg_immed 0x00000011,accg0 963 test_acc_immed 0x11111111,acc0 964 965 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result 966 set_fr_iimmed 0x8000,0x8000,fr8 967 cmcpxis fr7,fr8,acc0,cc7,1 968 test_accg_immed 0x00000011,accg0 969 test_acc_immed 0x11111111,acc0 970 971 pass 972