1# Hitachi H8 testcase 'muls', 'muls/u', mulu', 'mulu/u', 'mulxs', 'mulxu' 2# mach(): all 3# as(h8300): --defsym sim_cpu=0 4# as(h8300h): --defsym sim_cpu=1 5# as(h8300s): --defsym sim_cpu=2 6# as(h8sx): --defsym sim_cpu=3 7# ld(h8300h): -m h8300helf 8# ld(h8300s): -m h8300self 9# ld(h8sx): -m h8300sxelf 10 11 .include "testutils.inc" 12 13 start 14 15.if (sim_cpu == h8sx) 16muls_w_reg_reg: 17 set_grs_a5a5 18 19 ;; muls.w rs, rd 20 mov.w #32, r1 21 mov.w #-2, r2 22 set_ccr_zero 23 muls.w r2, r1 24 25 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 26 test_neg_set 27 test_carry_clear 28 test_zero_clear 29 test_ovf_clear 30 31 test_gr_a5a5 0 32 test_h_gr16 -64 r1 33 test_h_gr32 0xa5a5fffe er2 34 test_gr_a5a5 3 35 test_gr_a5a5 4 36 test_gr_a5a5 5 37 test_gr_a5a5 6 38 test_gr_a5a5 7 39 40muls_w_imm4_reg: 41 set_grs_a5a5 42 43 ;; muls.w xx:4, rd 44 mov.w #-32, r1 45 set_ccr_zero 46 muls.w #2:4, r1 47 48 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 49 test_neg_set 50 test_carry_clear 51 test_zero_clear 52 test_ovf_clear 53 54 test_gr_a5a5 0 55 test_h_gr16 -64 r1 56 test_gr_a5a5 2 57 test_gr_a5a5 3 58 test_gr_a5a5 4 59 test_gr_a5a5 5 60 test_gr_a5a5 6 61 test_gr_a5a5 7 62 63muls_l_reg_reg: 64 set_grs_a5a5 65 66 ;; muls.l ers, erd 67 mov.l #320000, er1 68 mov.l #-2, er2 69 set_ccr_zero 70 muls.l er2, er1 71 72 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 73 test_neg_set 74 test_carry_clear 75 test_zero_clear 76 test_ovf_clear 77 78 test_gr_a5a5 0 79 test_h_gr32 -640000 er1 80 test_h_gr32 -2 er2 81 test_gr_a5a5 3 82 test_gr_a5a5 4 83 test_gr_a5a5 5 84 test_gr_a5a5 6 85 test_gr_a5a5 7 86 87muls_l_imm4_reg: 88 set_grs_a5a5 89 90 ;; muls.l xx:4, rd 91 mov.l #-320000, er1 92 set_ccr_zero 93 muls.l #2:4, er1 94 95 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 96 test_neg_set 97 test_carry_clear 98 test_zero_clear 99 test_ovf_clear 100 101 test_gr_a5a5 0 102 test_h_gr32 -640000 er1 103 test_gr_a5a5 2 104 test_gr_a5a5 3 105 test_gr_a5a5 4 106 test_gr_a5a5 5 107 test_gr_a5a5 6 108 test_gr_a5a5 7 109 110muls_u_l_reg_reg: 111 set_grs_a5a5 112 113 ;; muls/u.l ers, erd 114 mov.l #0x10000000, er1 115 mov.l #-16, er2 116 set_ccr_zero 117 muls/u.l er2, er1 118 119 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 120 test_neg_set 121 test_carry_clear 122 test_zero_clear 123 test_ovf_clear 124 125 test_gr_a5a5 0 126 test_h_gr32 -1 er1 127 test_h_gr32 -16 er2 128 test_gr_a5a5 3 129 test_gr_a5a5 4 130 test_gr_a5a5 5 131 test_gr_a5a5 6 132 test_gr_a5a5 7 133 134muls_u_l_imm4_reg: 135 set_grs_a5a5 136 137 ;; muls/u.l xx:4, rd 138 mov.l #0xffffffff, er1 139 set_ccr_zero 140 muls/u.l #2:4, er1 141 142 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 143 test_neg_set 144 test_carry_clear 145 test_zero_clear 146 test_ovf_clear 147 148 test_gr_a5a5 0 149 test_h_gr32 -1 er1 150 test_gr_a5a5 2 151 test_gr_a5a5 3 152 test_gr_a5a5 4 153 test_gr_a5a5 5 154 test_gr_a5a5 6 155 test_gr_a5a5 7 156 157mulu_w_reg_reg: 158 set_grs_a5a5 159 160 ;; mulu.w rs, rd 161 mov.w #32, r1 162 mov.w #-2, r2 163 set_ccr_zero 164 mulu.w r2, r1 165 166 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 167 test_cc_clear 168 169 test_gr_a5a5 0 170 test_h_gr16 -64 r1 171 test_h_gr32 0xa5a5fffe er2 172 test_gr_a5a5 3 173 test_gr_a5a5 4 174 test_gr_a5a5 5 175 test_gr_a5a5 6 176 test_gr_a5a5 7 177 178mulu_w_imm4_reg: 179 set_grs_a5a5 180 181 ;; mulu.w xx:4, rd 182 mov.w #32, r1 183 set_ccr_zero 184 mulu.w #-2:4, r1 185 186 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 187 test_cc_clear 188 189 test_gr_a5a5 0 190 test_h_gr16 0x1c0 r1 191 test_gr_a5a5 2 192 test_gr_a5a5 3 193 test_gr_a5a5 4 194 test_gr_a5a5 5 195 test_gr_a5a5 6 196 test_gr_a5a5 7 197 198mulu_l_reg_reg: 199 set_grs_a5a5 200 201 ;; mulu.l ers, erd 202 mov.l #320000, er1 203 mov.l #-2, er2 204 set_ccr_zero 205 mulu.l er2, er1 206 207 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 208 test_cc_clear 209 210 test_gr_a5a5 0 211 test_h_gr32 -640000 er1 212 test_h_gr32 -2 er2 213 test_gr_a5a5 3 214 test_gr_a5a5 4 215 test_gr_a5a5 5 216 test_gr_a5a5 6 217 test_gr_a5a5 7 218 219mulu_l_imm4_reg: 220 set_grs_a5a5 221 222 ;; mulu.l xx:4, rd 223 mov.l #320000, er1 224 set_ccr_zero 225 mulu.l #-2:4, er1 226 227 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 228 test_cc_clear 229 230 test_gr_a5a5 0 231 test_h_gr32 0x445c00 er1 232 test_gr_a5a5 2 233 test_gr_a5a5 3 234 test_gr_a5a5 4 235 test_gr_a5a5 5 236 test_gr_a5a5 6 237 test_gr_a5a5 7 238 239mulu_u_l_reg_reg: 240 set_grs_a5a5 241 242 ;; mulu/u.l ers, erd 243 mov.l #0x10000000, er1 244 mov.l #16, er2 245 set_ccr_zero 246 mulu/u.l er2, er1 247 248 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 249 test_cc_clear 250 251 test_gr_a5a5 0 252 test_h_gr32 1 er1 253 test_h_gr32 16 er2 254 test_gr_a5a5 3 255 test_gr_a5a5 4 256 test_gr_a5a5 5 257 test_gr_a5a5 6 258 test_gr_a5a5 7 259 260mulu_u_l_imm4_reg: 261 set_grs_a5a5 262 263 ;; mulu/u.l xx:4, rd 264 mov.l #0xffffffff, er1 265 set_ccr_zero 266 mulu/u.l #2:4, er1 267 268 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 269 test_cc_clear 270 271 test_gr_a5a5 0 272 test_h_gr32 0x1 er1 273 test_gr_a5a5 2 274 test_gr_a5a5 3 275 test_gr_a5a5 4 276 test_gr_a5a5 5 277 test_gr_a5a5 6 278 test_gr_a5a5 7 279.endif 280 281.if (sim_cpu) ; not equal to zero ie. not h8 282mulxs_b_reg_reg: 283 set_grs_a5a5 284 285 ;; mulxs.b rs, rd 286 mov.b #32, r1l 287 mov.b #-2, r2l 288 set_ccr_zero 289 mulxs.b r2l, r1 290 291 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 292 test_neg_set 293 test_carry_clear 294 test_zero_clear 295 test_ovf_clear 296 297 test_gr_a5a5 0 298 test_h_gr16 -64 r1 299 test_h_gr32 0xa5a5a5fe er2 300 test_gr_a5a5 3 301 test_gr_a5a5 4 302 test_gr_a5a5 5 303 test_gr_a5a5 6 304 test_gr_a5a5 7 305 306.if (sim_cpu == h8sx) 307mulxs_b_imm4_reg: 308 set_grs_a5a5 309 310 ;; mulxs.b xx:4, rd 311 mov.w #-32, r1 312 set_ccr_zero 313 mulxs.b #2:4, r1 314 315 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 316 test_neg_set 317 test_carry_clear 318 test_zero_clear 319 test_ovf_clear 320 321 test_gr_a5a5 0 322 test_h_gr16 -64 r1 323 test_gr_a5a5 2 324 test_gr_a5a5 3 325 test_gr_a5a5 4 326 test_gr_a5a5 5 327 test_gr_a5a5 6 328 test_gr_a5a5 7 329.endif ; h8sx 330 331mulxs_w_reg_reg: 332 set_grs_a5a5 333 334 ;; mulxs.w ers, erd 335 mov.w #0x1000, r1 336 mov.w #-0x1000, r2 337 set_ccr_zero 338 mulxs.w r2, er1 339 340 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 341 test_neg_set 342 test_carry_clear 343 test_zero_clear 344 test_ovf_clear 345 346 test_gr_a5a5 0 347 test_h_gr32 0xff000000 er1 348 test_h_gr32 0xa5a5f000 er2 349 test_gr_a5a5 3 350 test_gr_a5a5 4 351 test_gr_a5a5 5 352 test_gr_a5a5 6 353 test_gr_a5a5 7 354 355.if (sim_cpu == h8sx) 356mulxs_w_imm4_reg: 357 set_grs_a5a5 358 359 ;; mulxs.w xx:4, rd 360 mov.w #-1, r1 361 set_ccr_zero 362 mulxs.w #2:4, er1 363 364 ;; test ccr ; H=0 N=1 Z=0 V=0 C=0 365 test_neg_set 366 test_carry_clear 367 test_zero_clear 368 test_ovf_clear 369 370 test_gr_a5a5 0 371 test_h_gr32 -2 er1 372 test_gr_a5a5 2 373 test_gr_a5a5 3 374 test_gr_a5a5 4 375 test_gr_a5a5 5 376 test_gr_a5a5 6 377 test_gr_a5a5 7 378.endif ; h8sx 379.endif ; not h8 380 381mulxu_b_reg_reg: 382 set_grs_a5a5 383 384 ;; mulxu.b rs, rd 385 mov.b #32, r1l 386 mov.b #-2, r2l 387 set_ccr_zero 388 mulxu.b r2l, r1 389 390 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 391 test_cc_clear 392 393 test_gr_a5a5 0 394 test_h_gr16 0x1fc0 r1 395 test_h_gr16 0xa5fe r2 396.if (sim_cpu) 397 test_h_gr32 0xa5a5a5fe er2 398.endif 399 test_gr_a5a5 3 400 test_gr_a5a5 4 401 test_gr_a5a5 5 402 test_gr_a5a5 6 403 test_gr_a5a5 7 404 405.if (sim_cpu) ; not h8 406.if (sim_cpu == h8sx) 407mulxu_b_imm4_reg: 408 set_grs_a5a5 409 410 ;; mulxu.b xx:4, rd 411 mov.b #-32, r1l 412 set_ccr_zero 413 mulxu.b #2:4, r1 414 415 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 416 test_cc_clear 417 418 test_gr_a5a5 0 419 test_h_gr16 0x1c0 r1 420 test_gr_a5a5 2 421 test_gr_a5a5 3 422 test_gr_a5a5 4 423 test_gr_a5a5 5 424 test_gr_a5a5 6 425 test_gr_a5a5 7 426.endif ; h8sx 427 428mulxu_w_reg_reg: 429 set_grs_a5a5 430 431 ;; mulxu.w ers, erd 432 mov.w #0x1000, r1 433 mov.w #-0x1000, r2 434 set_ccr_zero 435 mulxu.w r2, er1 436 437 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 438 test_cc_clear 439 440 test_gr_a5a5 0 441 test_h_gr32 0x0f000000 er1 442 test_h_gr32 0xa5a5f000 er2 443 test_gr_a5a5 3 444 test_gr_a5a5 4 445 test_gr_a5a5 5 446 test_gr_a5a5 6 447 test_gr_a5a5 7 448 449.if (sim_cpu == h8sx) 450mulxu_w_imm4_reg: 451 set_grs_a5a5 452 453 ;; mulxu.w xx:4, rd 454 mov.w #-1, r1 455 set_ccr_zero 456 mulxu.w #2:4, er1 457 458 ;; test ccr ; H=0 N=0 Z=0 V=0 C=0 459 test_cc_clear 460 461 test_gr_a5a5 0 462 test_h_gr32 0x1fffe er1 463 test_gr_a5a5 2 464 test_gr_a5a5 3 465 test_gr_a5a5 4 466 test_gr_a5a5 5 467 test_gr_a5a5 6 468 test_gr_a5a5 7 469.endif ; h8sx 470.endif ; not h8 471 472 pass 473 474 exit 0 475