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