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