1# frv testcase for cmqmulhu $GRi,$GRj,$GRk,$CCi,$cond 2# mach: all 3 4 .include "testutils.inc" 5 6 start 7 8 .global cmqmulhu 9cmqmulhu: 10 set_spr_immed 0x1b1b,cccr 11 12 set_fr_iimmed 3,2,fr8 ; multiply small numbers 13 set_fr_iimmed 2,3,fr10 14 set_fr_iimmed 1,2,fr9 ; multiply by 1 15 set_fr_iimmed 2,1,fr11 16 cmqmulhu fr8,fr10,acc0,cc0,1 17 test_accg_immed 0,accg0 18 test_acc_immed 6,acc0 19 test_accg_immed 0,accg1 20 test_acc_immed 6,acc1 21 test_accg_immed 0,accg2 22 test_acc_immed 2,acc2 23 test_accg_immed 0,accg3 24 test_acc_immed 2,acc3 25 26 set_fr_iimmed 0,2,fr8 ; multiply by 0 27 set_fr_iimmed 2,0,fr10 28 set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 29 set_fr_iimmed 2,0x3fff,fr11 30 cmqmulhu fr8,fr10,acc0,cc0,1 31 test_accg_immed 0,accg0 32 test_acc_immed 0,acc0 33 test_accg_immed 0,accg1 34 test_acc_immed 0,acc1 35 test_accg_immed 0,accg2 36 test_acc_limmed 0x0000,0x7ffe,acc2 37 test_accg_immed 0,accg3 38 test_acc_limmed 0x0000,0x7ffe,acc3 39 40 set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 41 set_fr_iimmed 2,0x4000,fr10 42 set_fr_iimmed 0x8000,2,fr9 ; 17 bit result 43 set_fr_iimmed 2,0x8000,fr11 44 cmqmulhu fr8,fr10,acc0,cc4,1 45 test_accg_immed 0,accg0 46 test_acc_limmed 0x0000,0x8000,acc0 47 test_accg_immed 0,accg1 48 test_acc_limmed 0x0000,0x8000,acc1 49 test_accg_immed 0,accg2 50 test_acc_immed 0x00010000,acc2 51 test_accg_immed 0,accg3 52 test_acc_immed 0x00010000,acc3 53 54 set_fr_iimmed 0x7fff,0x7fff,fr8 ; max positive result 55 set_fr_iimmed 0x7fff,0x7fff,fr10 56 set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 57 set_fr_iimmed 0x8000,0x8000,fr11 58 cmqmulhu fr8,fr10,acc0,cc4,1 59 test_accg_immed 0,accg0 60 test_acc_immed 0x3fff0001,acc0 61 test_accg_immed 0,accg1 62 test_acc_immed 0x3fff0001,acc1 63 test_accg_immed 0,accg2 64 test_acc_limmed 0x4000,0x0000,acc2 65 test_accg_immed 0,accg3 66 test_acc_limmed 0x4000,0x0000,acc3 67 68 set_fr_iimmed 0xffff,0xffff,fr8 ; max positive result 69 set_fr_iimmed 0xffff,0xffff,fr10 70 set_fr_iimmed 0xffff,0xffff,fr9 ; max positive result 71 set_fr_iimmed 0xffff,0xffff,fr11 72 cmqmulhu fr8,fr10,acc0,cc4,1 73 test_accg_immed 0,accg0 74 test_acc_limmed 0xfffe,0x0001,acc0 75 test_accg_immed 0,accg1 76 test_acc_limmed 0xfffe,0x0001,acc1 77 test_accg_immed 0,accg2 78 test_acc_limmed 0xfffe,0x0001,acc2 79 test_accg_immed 0,accg3 80 test_acc_limmed 0xfffe,0x0001,acc3 81 82 set_fr_iimmed 3,2,fr8 ; multiply small numbers 83 set_fr_iimmed 2,3,fr10 84 set_fr_iimmed 1,2,fr9 ; multiply by 1 85 set_fr_iimmed 2,1,fr11 86 cmqmulhu fr8,fr10,acc0,cc1,0 87 test_accg_immed 0,accg0 88 test_acc_immed 6,acc0 89 test_accg_immed 0,accg1 90 test_acc_immed 6,acc1 91 test_accg_immed 0,accg2 92 test_acc_immed 2,acc2 93 test_accg_immed 0,accg3 94 test_acc_immed 2,acc3 95 96 set_fr_iimmed 0,2,fr8 ; multiply by 0 97 set_fr_iimmed 2,0,fr10 98 set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 99 set_fr_iimmed 2,0x3fff,fr11 100 cmqmulhu fr8,fr10,acc0,cc1,0 101 test_accg_immed 0,accg0 102 test_acc_immed 0,acc0 103 test_accg_immed 0,accg1 104 test_acc_immed 0,acc1 105 test_accg_immed 0,accg2 106 test_acc_limmed 0x0000,0x7ffe,acc2 107 test_accg_immed 0,accg3 108 test_acc_limmed 0x0000,0x7ffe,acc3 109 110 set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 111 set_fr_iimmed 2,0x4000,fr10 112 set_fr_iimmed 0x8000,2,fr9 ; 17 bit result 113 set_fr_iimmed 2,0x8000,fr11 114 cmqmulhu fr8,fr10,acc0,cc5,0 115 test_accg_immed 0,accg0 116 test_acc_limmed 0x0000,0x8000,acc0 117 test_accg_immed 0,accg1 118 test_acc_limmed 0x0000,0x8000,acc1 119 test_accg_immed 0,accg2 120 test_acc_immed 0x00010000,acc2 121 test_accg_immed 0,accg3 122 test_acc_immed 0x00010000,acc3 123 124 set_fr_iimmed 0x7fff,0x7fff,fr8 ; max positive result 125 set_fr_iimmed 0x7fff,0x7fff,fr10 126 set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 127 set_fr_iimmed 0x8000,0x8000,fr11 128 cmqmulhu fr8,fr10,acc0,cc5,0 129 test_accg_immed 0,accg0 130 test_acc_immed 0x3fff0001,acc0 131 test_accg_immed 0,accg1 132 test_acc_immed 0x3fff0001,acc1 133 test_accg_immed 0,accg2 134 test_acc_limmed 0x4000,0x0000,acc2 135 test_accg_immed 0,accg3 136 test_acc_limmed 0x4000,0x0000,acc3 137 138 set_fr_iimmed 0xffff,0xffff,fr8 ; max positive result 139 set_fr_iimmed 0xffff,0xffff,fr10 140 set_fr_iimmed 0xffff,0xffff,fr9 ; max positive result 141 set_fr_iimmed 0xffff,0xffff,fr11 142 cmqmulhu fr8,fr10,acc0,cc5,0 143 test_accg_immed 0,accg0 144 test_acc_limmed 0xfffe,0x0001,acc0 145 test_accg_immed 0,accg1 146 test_acc_limmed 0xfffe,0x0001,acc1 147 test_accg_immed 0,accg2 148 test_acc_limmed 0xfffe,0x0001,acc2 149 test_accg_immed 0,accg3 150 test_acc_limmed 0xfffe,0x0001,acc3 151 152 set_accg_immed 0x00000011,accg0 153 set_acc_immed 0x11111111,acc0 154 set_accg_immed 0x00000022,accg1 155 set_acc_immed 0x22222222,acc1 156 set_accg_immed 0x00000033,accg2 157 set_acc_immed 0x33333333,acc2 158 set_accg_immed 0x00000044,accg3 159 set_acc_immed 0x44444444,acc3 160 set_fr_iimmed 3,2,fr8 ; multiply small numbers 161 set_fr_iimmed 2,3,fr10 162 set_fr_iimmed 1,2,fr9 ; multiply by 1 163 set_fr_iimmed 2,1,fr11 164 cmqmulhu fr8,fr10,acc0,cc0,0 165 test_accg_immed 0x00000011,accg0 166 test_acc_immed 0x11111111,acc0 167 test_accg_immed 0x00000022,accg1 168 test_acc_immed 0x22222222,acc1 169 test_accg_immed 0x00000033,accg2 170 test_acc_immed 0x33333333,acc2 171 test_accg_immed 0x00000044,accg3 172 test_acc_immed 0x44444444,acc3 173 174 set_fr_iimmed 0,2,fr8 ; multiply by 0 175 set_fr_iimmed 2,0,fr10 176 set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 177 set_fr_iimmed 2,0x3fff,fr11 178 cmqmulhu fr8,fr10,acc0,cc0,0 179 test_accg_immed 0x00000011,accg0 180 test_acc_immed 0x11111111,acc0 181 test_accg_immed 0x00000022,accg1 182 test_acc_immed 0x22222222,acc1 183 test_accg_immed 0x00000033,accg2 184 test_acc_immed 0x33333333,acc2 185 test_accg_immed 0x00000044,accg3 186 test_acc_immed 0x44444444,acc3 187 188 set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 189 set_fr_iimmed 2,0x4000,fr10 190 set_fr_iimmed 0x8000,2,fr9 ; 17 bit result 191 set_fr_iimmed 2,0x8000,fr11 192 cmqmulhu fr8,fr10,acc0,cc4,0 193 test_accg_immed 0x00000011,accg0 194 test_acc_immed 0x11111111,acc0 195 test_accg_immed 0x00000022,accg1 196 test_acc_immed 0x22222222,acc1 197 test_accg_immed 0x00000033,accg2 198 test_acc_immed 0x33333333,acc2 199 test_accg_immed 0x00000044,accg3 200 test_acc_immed 0x44444444,acc3 201 202 set_fr_iimmed 0x7fff,0x7fff,fr8 ; max positive result 203 set_fr_iimmed 0x7fff,0x7fff,fr10 204 set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 205 set_fr_iimmed 0x8000,0x8000,fr11 206 cmqmulhu fr8,fr10,acc0,cc4,0 207 test_accg_immed 0x00000011,accg0 208 test_acc_immed 0x11111111,acc0 209 test_accg_immed 0x00000022,accg1 210 test_acc_immed 0x22222222,acc1 211 test_accg_immed 0x00000033,accg2 212 test_acc_immed 0x33333333,acc2 213 test_accg_immed 0x00000044,accg3 214 test_acc_immed 0x44444444,acc3 215 216 set_fr_iimmed 0xffff,0xffff,fr8 ; max positive result 217 set_fr_iimmed 0xffff,0xffff,fr10 218 set_fr_iimmed 0xffff,0xffff,fr9 ; max positive result 219 set_fr_iimmed 0xffff,0xffff,fr11 220 cmqmulhu fr8,fr10,acc0,cc4,0 221 test_accg_immed 0x00000011,accg0 222 test_acc_immed 0x11111111,acc0 223 test_accg_immed 0x00000022,accg1 224 test_acc_immed 0x22222222,acc1 225 test_accg_immed 0x00000033,accg2 226 test_acc_immed 0x33333333,acc2 227 test_accg_immed 0x00000044,accg3 228 test_acc_immed 0x44444444,acc3 229 230 set_accg_immed 0x00000011,accg0 231 set_acc_immed 0x11111111,acc0 232 set_accg_immed 0x00000022,accg1 233 set_acc_immed 0x22222222,acc1 234 set_accg_immed 0x00000033,accg2 235 set_acc_immed 0x33333333,acc2 236 set_accg_immed 0x00000044,accg3 237 set_acc_immed 0x44444444,acc3 238 set_fr_iimmed 3,2,fr8 ; multiply small numbers 239 set_fr_iimmed 2,3,fr10 240 set_fr_iimmed 1,2,fr9 ; multiply by 1 241 set_fr_iimmed 2,1,fr11 242 cmqmulhu fr8,fr10,acc0,cc1,1 243 test_accg_immed 0x00000011,accg0 244 test_acc_immed 0x11111111,acc0 245 test_accg_immed 0x00000022,accg1 246 test_acc_immed 0x22222222,acc1 247 test_accg_immed 0x00000033,accg2 248 test_acc_immed 0x33333333,acc2 249 test_accg_immed 0x00000044,accg3 250 test_acc_immed 0x44444444,acc3 251 252 set_fr_iimmed 0,2,fr8 ; multiply by 0 253 set_fr_iimmed 2,0,fr10 254 set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 255 set_fr_iimmed 2,0x3fff,fr11 256 cmqmulhu fr8,fr10,acc0,cc1,1 257 test_accg_immed 0x00000011,accg0 258 test_acc_immed 0x11111111,acc0 259 test_accg_immed 0x00000022,accg1 260 test_acc_immed 0x22222222,acc1 261 test_accg_immed 0x00000033,accg2 262 test_acc_immed 0x33333333,acc2 263 test_accg_immed 0x00000044,accg3 264 test_acc_immed 0x44444444,acc3 265 266 set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 267 set_fr_iimmed 2,0x4000,fr10 268 set_fr_iimmed 0x8000,2,fr9 ; 17 bit result 269 set_fr_iimmed 2,0x8000,fr11 270 cmqmulhu fr8,fr10,acc0,cc5,1 271 test_accg_immed 0x00000011,accg0 272 test_acc_immed 0x11111111,acc0 273 test_accg_immed 0x00000022,accg1 274 test_acc_immed 0x22222222,acc1 275 test_accg_immed 0x00000033,accg2 276 test_acc_immed 0x33333333,acc2 277 test_accg_immed 0x00000044,accg3 278 test_acc_immed 0x44444444,acc3 279 280 set_fr_iimmed 0x7fff,0x7fff,fr8 ; max positive result 281 set_fr_iimmed 0x7fff,0x7fff,fr10 282 set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 283 set_fr_iimmed 0x8000,0x8000,fr11 284 cmqmulhu fr8,fr10,acc0,cc5,1 285 test_accg_immed 0x00000011,accg0 286 test_acc_immed 0x11111111,acc0 287 test_accg_immed 0x00000022,accg1 288 test_acc_immed 0x22222222,acc1 289 test_accg_immed 0x00000033,accg2 290 test_acc_immed 0x33333333,acc2 291 test_accg_immed 0x00000044,accg3 292 test_acc_immed 0x44444444,acc3 293 294 set_fr_iimmed 0xffff,0xffff,fr8 ; max positive result 295 set_fr_iimmed 0xffff,0xffff,fr10 296 set_fr_iimmed 0xffff,0xffff,fr9 ; max positive result 297 set_fr_iimmed 0xffff,0xffff,fr11 298 cmqmulhu fr8,fr10,acc0,cc5,1 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_accg_immed 0x00000011,accg0 309 set_acc_immed 0x11111111,acc0 310 set_accg_immed 0x00000022,accg1 311 set_acc_immed 0x22222222,acc1 312 set_accg_immed 0x00000033,accg2 313 set_acc_immed 0x33333333,acc2 314 set_accg_immed 0x00000044,accg3 315 set_acc_immed 0x44444444,acc3 316 set_fr_iimmed 3,2,fr8 ; multiply small numbers 317 set_fr_iimmed 2,3,fr10 318 set_fr_iimmed 1,2,fr9 ; multiply by 1 319 set_fr_iimmed 2,1,fr11 320 cmqmulhu fr8,fr10,acc0,cc2,1 321 test_accg_immed 0x00000011,accg0 322 test_acc_immed 0x11111111,acc0 323 test_accg_immed 0x00000022,accg1 324 test_acc_immed 0x22222222,acc1 325 test_accg_immed 0x00000033,accg2 326 test_acc_immed 0x33333333,acc2 327 test_accg_immed 0x00000044,accg3 328 test_acc_immed 0x44444444,acc3 329 330 set_fr_iimmed 0,2,fr8 ; multiply by 0 331 set_fr_iimmed 2,0,fr10 332 set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 333 set_fr_iimmed 2,0x3fff,fr11 334 cmqmulhu fr8,fr10,acc0,cc2,0 335 test_accg_immed 0x00000011,accg0 336 test_acc_immed 0x11111111,acc0 337 test_accg_immed 0x00000022,accg1 338 test_acc_immed 0x22222222,acc1 339 test_accg_immed 0x00000033,accg2 340 test_acc_immed 0x33333333,acc2 341 test_accg_immed 0x00000044,accg3 342 test_acc_immed 0x44444444,acc3 343 344 set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 345 set_fr_iimmed 2,0x4000,fr10 346 set_fr_iimmed 0x8000,2,fr9 ; 17 bit result 347 set_fr_iimmed 2,0x8000,fr11 348 cmqmulhu fr8,fr10,acc0,cc6,1 349 test_accg_immed 0x00000011,accg0 350 test_acc_immed 0x11111111,acc0 351 test_accg_immed 0x00000022,accg1 352 test_acc_immed 0x22222222,acc1 353 test_accg_immed 0x00000033,accg2 354 test_acc_immed 0x33333333,acc2 355 test_accg_immed 0x00000044,accg3 356 test_acc_immed 0x44444444,acc3 357 358 set_fr_iimmed 0x7fff,0x7fff,fr8 ; max positive result 359 set_fr_iimmed 0x7fff,0x7fff,fr10 360 set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 361 set_fr_iimmed 0x8000,0x8000,fr11 362 cmqmulhu fr8,fr10,acc0,cc6,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 test_accg_immed 0x00000033,accg2 368 test_acc_immed 0x33333333,acc2 369 test_accg_immed 0x00000044,accg3 370 test_acc_immed 0x44444444,acc3 371 372 set_fr_iimmed 0xffff,0xffff,fr8 ; max positive result 373 set_fr_iimmed 0xffff,0xffff,fr10 374 set_fr_iimmed 0xffff,0xffff,fr9 ; max positive result 375 set_fr_iimmed 0xffff,0xffff,fr11 376 cmqmulhu fr8,fr10,acc0,cc6,1 377 test_accg_immed 0x00000011,accg0 378 test_acc_immed 0x11111111,acc0 379 test_accg_immed 0x00000022,accg1 380 test_acc_immed 0x22222222,acc1 381 test_accg_immed 0x00000033,accg2 382 test_acc_immed 0x33333333,acc2 383 test_accg_immed 0x00000044,accg3 384 test_acc_immed 0x44444444,acc3 385; 386 set_accg_immed 0x00000011,accg0 387 set_acc_immed 0x11111111,acc0 388 set_accg_immed 0x00000022,accg1 389 set_acc_immed 0x22222222,acc1 390 set_accg_immed 0x00000033,accg2 391 set_acc_immed 0x33333333,acc2 392 set_accg_immed 0x00000044,accg3 393 set_acc_immed 0x44444444,acc3 394 set_fr_iimmed 3,2,fr8 ; multiply small numbers 395 set_fr_iimmed 2,3,fr10 396 set_fr_iimmed 1,2,fr9 ; multiply by 1 397 set_fr_iimmed 2,1,fr11 398 cmqmulhu fr8,fr10,acc0,cc3,1 399 test_accg_immed 0x00000011,accg0 400 test_acc_immed 0x11111111,acc0 401 test_accg_immed 0x00000022,accg1 402 test_acc_immed 0x22222222,acc1 403 test_accg_immed 0x00000033,accg2 404 test_acc_immed 0x33333333,acc2 405 test_accg_immed 0x00000044,accg3 406 test_acc_immed 0x44444444,acc3 407 408 set_fr_iimmed 0,2,fr8 ; multiply by 0 409 set_fr_iimmed 2,0,fr10 410 set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 411 set_fr_iimmed 2,0x3fff,fr11 412 cmqmulhu fr8,fr10,acc0,cc3,0 413 test_accg_immed 0x00000011,accg0 414 test_acc_immed 0x11111111,acc0 415 test_accg_immed 0x00000022,accg1 416 test_acc_immed 0x22222222,acc1 417 test_accg_immed 0x00000033,accg2 418 test_acc_immed 0x33333333,acc2 419 test_accg_immed 0x00000044,accg3 420 test_acc_immed 0x44444444,acc3 421 422 set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 423 set_fr_iimmed 2,0x4000,fr10 424 set_fr_iimmed 0x8000,2,fr9 ; 17 bit result 425 set_fr_iimmed 2,0x8000,fr11 426 cmqmulhu fr8,fr10,acc0,cc7,1 427 test_accg_immed 0x00000011,accg0 428 test_acc_immed 0x11111111,acc0 429 test_accg_immed 0x00000022,accg1 430 test_acc_immed 0x22222222,acc1 431 test_accg_immed 0x00000033,accg2 432 test_acc_immed 0x33333333,acc2 433 test_accg_immed 0x00000044,accg3 434 test_acc_immed 0x44444444,acc3 435 436 set_fr_iimmed 0x7fff,0x7fff,fr8 ; max positive result 437 set_fr_iimmed 0x7fff,0x7fff,fr10 438 set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 439 set_fr_iimmed 0x8000,0x8000,fr11 440 cmqmulhu fr8,fr10,acc0,cc7,0 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 test_accg_immed 0x00000033,accg2 446 test_acc_immed 0x33333333,acc2 447 test_accg_immed 0x00000044,accg3 448 test_acc_immed 0x44444444,acc3 449 450 set_fr_iimmed 0xffff,0xffff,fr8 ; max positive result 451 set_fr_iimmed 0xffff,0xffff,fr10 452 set_fr_iimmed 0xffff,0xffff,fr9 ; max positive result 453 set_fr_iimmed 0xffff,0xffff,fr11 454 cmqmulhu fr8,fr10,acc0,cc7,1 455 test_accg_immed 0x00000011,accg0 456 test_acc_immed 0x11111111,acc0 457 test_accg_immed 0x00000022,accg1 458 test_acc_immed 0x22222222,acc1 459 test_accg_immed 0x00000033,accg2 460 test_acc_immed 0x33333333,acc2 461 test_accg_immed 0x00000044,accg3 462 test_acc_immed 0x44444444,acc3 463 464 pass 465