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