1 1.1 christos # Hitachi H8 testcase 'rotl' 2 1.1 christos # mach(): h8300s h8sx 3 1.1 christos # as(h8300): --defsym sim_cpu=0 4 1.1 christos # as(h8300h): --defsym sim_cpu=1 5 1.1 christos # as(h8300s): --defsym sim_cpu=2 6 1.1 christos # as(h8sx): --defsym sim_cpu=3 7 1.1 christos # ld(h8300h): -m h8300helf 8 1.1 christos # ld(h8300s): -m h8300self 9 1.1 christos # ld(h8sx): -m h8300sxelf 10 1.1 christos 11 1.1 christos .include "testutils.inc" 12 1.1 christos 13 1.1 christos start 14 1.1 christos 15 1.1 christos .data 16 1.1 christos byte_dest: .byte 0xa5 17 1.1 christos .align 2 18 1.1 christos word_dest: .word 0xa5a5 19 1.1 christos .align 4 20 1.1 christos long_dest: .long 0xa5a5a5a5 21 1.1 christos 22 1.1 christos .text 23 1.1 christos 24 1.1 christos rotl_b_reg8_1: 25 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 26 1.1 christos set_ccr_zero 27 1.1 christos 28 1.1 christos rotl.b r0l ; shift left arithmetic by one 29 1.1 christos 30 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 31 1.1 christos test_zero_clear 32 1.1 christos test_ovf_clear 33 1.1 christos test_neg_clear 34 1.1 christos test_h_gr16 0xa54b r0 ; 1010 0101 -> 0100 1011 35 1.1 christos .if (sim_cpu) 36 1.1 christos test_h_gr32 0xa5a5a54b er0 37 1.1 christos .endif 38 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 39 1.1 christos test_gr_a5a5 2 40 1.1 christos test_gr_a5a5 3 41 1.1 christos test_gr_a5a5 4 42 1.1 christos test_gr_a5a5 5 43 1.1 christos test_gr_a5a5 6 44 1.1 christos test_gr_a5a5 7 45 1.1 christos 46 1.1 christos .if (sim_cpu == h8sx) 47 1.1 christos rotl_b_ind_1: 48 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 49 1.1 christos set_ccr_zero 50 1.1 christos 51 1.1 christos mov #byte_dest, er0 52 1.1 christos rotl.b @er0 ; shift right arithmetic by one, indirect 53 1.1 christos 54 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 55 1.1 christos test_zero_clear 56 1.1 christos test_ovf_clear 57 1.1 christos test_neg_clear 58 1.1 christos 59 1.1 christos test_h_gr32 byte_dest er0 60 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 61 1.1 christos test_gr_a5a5 2 62 1.1 christos test_gr_a5a5 3 63 1.1 christos test_gr_a5a5 4 64 1.1 christos test_gr_a5a5 5 65 1.1 christos test_gr_a5a5 6 66 1.1 christos test_gr_a5a5 7 67 1.1 christos ; 1010 0101 -> 0100 1011 68 1.1 christos cmp.b #0x4b, @byte_dest 69 1.1 christos beq .Lbind1 70 1.1 christos fail 71 1.1 christos .Lbind1: 72 1.1 christos mov.b #0xa5, @byte_dest 73 1.1 christos 74 1.1 christos rotl_b_indexb16_1: 75 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 76 1.1 christos set_ccr_zero 77 1.1 christos 78 1.1 christos mov.b #5, r0l 79 1.1 christos rotl.b @(byte_dest-5:16, r0.b) ; indexed byte/byte 80 1.1 christos 81 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 82 1.1 christos test_zero_clear 83 1.1 christos test_ovf_clear 84 1.1 christos test_neg_clear 85 1.1 christos 86 1.1 christos test_h_gr32 0xa5a5a505 er0 87 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 88 1.1 christos test_gr_a5a5 2 89 1.1 christos test_gr_a5a5 3 90 1.1 christos test_gr_a5a5 4 91 1.1 christos test_gr_a5a5 5 92 1.1 christos test_gr_a5a5 6 93 1.1 christos test_gr_a5a5 7 94 1.1 christos ; 1010 0101 -> 0100 1011 95 1.1 christos cmp.b #0x4b, @byte_dest 96 1.1 christos beq .Lbindexb161 97 1.1 christos fail 98 1.1 christos .Lbindexb161: 99 1.1 christos mov.b #0xa5, @byte_dest 100 1.1 christos 101 1.1 christos rotl_b_indexw16_1: 102 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 103 1.1 christos set_ccr_zero 104 1.1 christos 105 1.1 christos mov.w #256, r0 106 1.1 christos rotl.b @(byte_dest-256:16, r0.w) ; indexed byte/word 107 1.1 christos 108 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 109 1.1 christos test_zero_clear 110 1.1 christos test_ovf_clear 111 1.1 christos test_neg_clear 112 1.1 christos 113 1.1 christos test_h_gr32 0xa5a50100 er0 114 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 115 1.1 christos test_gr_a5a5 2 116 1.1 christos test_gr_a5a5 3 117 1.1 christos test_gr_a5a5 4 118 1.1 christos test_gr_a5a5 5 119 1.1 christos test_gr_a5a5 6 120 1.1 christos test_gr_a5a5 7 121 1.1 christos ; 1010 0101 -> 0100 1011 122 1.1 christos cmp.b #0x4b, @byte_dest 123 1.1 christos beq .Lbindexw161 124 1.1 christos fail 125 1.1 christos .Lbindexw161: 126 1.1 christos mov.b #0xa5, @byte_dest 127 1.1 christos 128 1.1 christos rotl_b_indexl16_1: 129 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 130 1.1 christos set_ccr_zero 131 1.1 christos 132 1.1 christos mov.l #0xffffffff, er0 133 1.1 christos rotl.b @(byte_dest+1:16, er0.l) ; indexed byte/long 134 1.1 christos 135 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 136 1.1 christos test_zero_clear 137 1.1 christos test_ovf_clear 138 1.1 christos test_neg_clear 139 1.1 christos 140 1.1 christos test_h_gr32 0xffffffff er0 141 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 142 1.1 christos test_gr_a5a5 2 143 1.1 christos test_gr_a5a5 3 144 1.1 christos test_gr_a5a5 4 145 1.1 christos test_gr_a5a5 5 146 1.1 christos test_gr_a5a5 6 147 1.1 christos test_gr_a5a5 7 148 1.1 christos ; 1010 0101 -> 0100 1011 149 1.1 christos cmp.b #0x4b, @byte_dest 150 1.1 christos beq .Lbindexl161 151 1.1 christos fail 152 1.1 christos .Lbindexl161: 153 1.1 christos mov.b #0xa5, @byte_dest 154 1.1 christos 155 1.1 christos rotl_b_indexb32_1: 156 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 157 1.1 christos set_ccr_zero 158 1.1 christos 159 1.1 christos mov.b #5, r1l 160 1.1 christos rotl.b @(byte_dest-5:32, r1.b) ; indexed byte/byte 161 1.1 christos 162 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 163 1.1 christos test_zero_clear 164 1.1 christos test_ovf_clear 165 1.1 christos test_neg_clear 166 1.1 christos 167 1.1 christos test_h_gr32 0xa5a5a505 er1 168 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 169 1.1 christos test_gr_a5a5 2 170 1.1 christos test_gr_a5a5 3 171 1.1 christos test_gr_a5a5 4 172 1.1 christos test_gr_a5a5 5 173 1.1 christos test_gr_a5a5 6 174 1.1 christos test_gr_a5a5 7 175 1.1 christos ; 1010 0101 -> 0100 1011 176 1.1 christos cmp.b #0x4b, @byte_dest 177 1.1 christos beq .Lbindexb321 178 1.1 christos fail 179 1.1 christos .Lbindexb321: 180 1.1 christos mov.b #0xa5, @byte_dest 181 1.1 christos 182 1.1 christos rotl_b_indexw32_1: 183 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 184 1.1 christos set_ccr_zero 185 1.1 christos 186 1.1 christos mov.w #256, r1 187 1.1 christos rotl.b @(byte_dest-256:32, r1.w) ; indexed byte/word 188 1.1 christos 189 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 190 1.1 christos test_zero_clear 191 1.1 christos test_ovf_clear 192 1.1 christos test_neg_clear 193 1.1 christos 194 1.1 christos test_h_gr32 0xa5a50100 er1 195 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 196 1.1 christos test_gr_a5a5 2 197 1.1 christos test_gr_a5a5 3 198 1.1 christos test_gr_a5a5 4 199 1.1 christos test_gr_a5a5 5 200 1.1 christos test_gr_a5a5 6 201 1.1 christos test_gr_a5a5 7 202 1.1 christos ; 1010 0101 -> 0100 1011 203 1.1 christos cmp.b #0x4b, @byte_dest 204 1.1 christos beq .Lbindexw321 205 1.1 christos fail 206 1.1 christos .Lbindexw321: 207 1.1 christos mov.b #0xa5, @byte_dest 208 1.1 christos 209 1.1 christos rotl_b_indexl32_1: 210 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 211 1.1 christos set_ccr_zero 212 1.1 christos 213 1.1 christos mov.l #0xffffffff, er1 214 1.1 christos rotl.b @(byte_dest+1:32, er1.l) ; indexed byte/long 215 1.1 christos 216 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 217 1.1 christos test_zero_clear 218 1.1 christos test_ovf_clear 219 1.1 christos test_neg_clear 220 1.1 christos 221 1.1 christos test_h_gr32 0xffffffff er1 222 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 223 1.1 christos test_gr_a5a5 2 224 1.1 christos test_gr_a5a5 3 225 1.1 christos test_gr_a5a5 4 226 1.1 christos test_gr_a5a5 5 227 1.1 christos test_gr_a5a5 6 228 1.1 christos test_gr_a5a5 7 229 1.1 christos ; 1010 0101 -> 0100 1011 230 1.1 christos cmp.b #0x4b, @byte_dest 231 1.1 christos beq .Lbindexl321 232 1.1 christos fail 233 1.1 christos .Lbindexl321: 234 1.1 christos mov.b #0xa5, @byte_dest 235 1.1 christos 236 1.1 christos .endif 237 1.1 christos 238 1.1 christos rotl_b_reg8_2: 239 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 240 1.1 christos set_ccr_zero 241 1.1 christos 242 1.1 christos rotl.b #2, r0l ; shift left arithmetic by two 243 1.1 christos 244 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 245 1.1 christos test_zero_clear 246 1.1 christos test_ovf_clear 247 1.1 christos test_neg_set 248 1.1 christos 249 1.1 christos test_h_gr16 0xa596 r0 ; 1010 0101 -> 1001 0110 250 1.1 christos .if (sim_cpu) 251 1.1 christos test_h_gr32 0xa5a5a596 er0 252 1.1 christos .endif 253 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 254 1.1 christos test_gr_a5a5 2 255 1.1 christos test_gr_a5a5 3 256 1.1 christos test_gr_a5a5 4 257 1.1 christos test_gr_a5a5 5 258 1.1 christos test_gr_a5a5 6 259 1.1 christos test_gr_a5a5 7 260 1.1 christos 261 1.1 christos .if (sim_cpu == h8sx) 262 1.1 christos rotl_b_ind_2: 263 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 264 1.1 christos set_ccr_zero 265 1.1 christos 266 1.1 christos mov #byte_dest, er0 267 1.1 christos rotl.b #2, @er0 ; shift right arithmetic by one, indirect 268 1.1 christos 269 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 270 1.1 christos test_zero_clear 271 1.1 christos test_ovf_clear 272 1.1 christos test_neg_set 273 1.1 christos 274 1.1 christos test_h_gr32 byte_dest er0 275 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 276 1.1 christos test_gr_a5a5 2 277 1.1 christos test_gr_a5a5 3 278 1.1 christos test_gr_a5a5 4 279 1.1 christos test_gr_a5a5 5 280 1.1 christos test_gr_a5a5 6 281 1.1 christos test_gr_a5a5 7 282 1.1 christos ; 1010 0101 -> 1001 0110 283 1.1 christos cmp.b #0x96, @byte_dest 284 1.1 christos beq .Lbind2 285 1.1 christos fail 286 1.1 christos .Lbind2: 287 1.1 christos mov.b #0xa5, @byte_dest 288 1.1 christos 289 1.1 christos rotl_b_indexb16_2: 290 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 291 1.1 christos set_ccr_zero 292 1.1 christos 293 1.1 christos mov.b #5, r0l 294 1.1 christos rotl.b #2, @(byte_dest-5:16, r0.b) ; indexed byte/byte 295 1.1 christos 296 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 297 1.1 christos test_zero_clear 298 1.1 christos test_ovf_clear 299 1.1 christos test_neg_set 300 1.1 christos 301 1.1 christos test_h_gr32 0xa5a5a505 er0 302 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 303 1.1 christos test_gr_a5a5 2 304 1.1 christos test_gr_a5a5 3 305 1.1 christos test_gr_a5a5 4 306 1.1 christos test_gr_a5a5 5 307 1.1 christos test_gr_a5a5 6 308 1.1 christos test_gr_a5a5 7 309 1.1 christos ; 1010 0101 -> 1001 0110 310 1.1 christos cmp.b #0x96, @byte_dest 311 1.1 christos beq .Lbindexb162 312 1.1 christos fail 313 1.1 christos .Lbindexb162: 314 1.1 christos mov.b #0xa5, @byte_dest 315 1.1 christos 316 1.1 christos rotl_b_indexw16_2: 317 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 318 1.1 christos set_ccr_zero 319 1.1 christos 320 1.1 christos mov.w #256, r0 321 1.1 christos rotl.b #2, @(byte_dest-256:16, r0.w) ; indexed byte/word 322 1.1 christos 323 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 324 1.1 christos test_zero_clear 325 1.1 christos test_ovf_clear 326 1.1 christos test_neg_set 327 1.1 christos 328 1.1 christos test_h_gr32 0xa5a50100 er0 329 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 330 1.1 christos test_gr_a5a5 2 331 1.1 christos test_gr_a5a5 3 332 1.1 christos test_gr_a5a5 4 333 1.1 christos test_gr_a5a5 5 334 1.1 christos test_gr_a5a5 6 335 1.1 christos test_gr_a5a5 7 336 1.1 christos ; 1010 0101 -> 1001 0110 337 1.1 christos cmp.b #0x96, @byte_dest 338 1.1 christos beq .Lbindexw162 339 1.1 christos fail 340 1.1 christos .Lbindexw162: 341 1.1 christos mov.b #0xa5, @byte_dest 342 1.1 christos 343 1.1 christos rotl_b_indexl16_2: 344 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 345 1.1 christos set_ccr_zero 346 1.1 christos 347 1.1 christos mov.l #0xffffffff, er0 348 1.1 christos rotl.b #2, @(byte_dest+1:16, er0.l) ; indexed byte/long 349 1.1 christos 350 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 351 1.1 christos test_zero_clear 352 1.1 christos test_ovf_clear 353 1.1 christos test_neg_set 354 1.1 christos 355 1.1 christos test_h_gr32 0xffffffff er0 356 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 357 1.1 christos test_gr_a5a5 2 358 1.1 christos test_gr_a5a5 3 359 1.1 christos test_gr_a5a5 4 360 1.1 christos test_gr_a5a5 5 361 1.1 christos test_gr_a5a5 6 362 1.1 christos test_gr_a5a5 7 363 1.1 christos ; 1010 0101 -> 1001 0110 364 1.1 christos cmp.b #0x96, @byte_dest 365 1.1 christos beq .Lbindexl162 366 1.1 christos fail 367 1.1 christos .Lbindexl162: 368 1.1 christos mov.b #0xa5, @byte_dest 369 1.1 christos 370 1.1 christos rotl_b_indexb32_2: 371 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 372 1.1 christos set_ccr_zero 373 1.1 christos 374 1.1 christos mov.b #5, r1l 375 1.1 christos rotl.b #2, @(byte_dest-5:32, r1.b) ; indexed byte/byte 376 1.1 christos 377 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 378 1.1 christos test_zero_clear 379 1.1 christos test_ovf_clear 380 1.1 christos test_neg_set 381 1.1 christos 382 1.1 christos test_h_gr32 0xa5a5a505 er1 383 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 384 1.1 christos test_gr_a5a5 2 385 1.1 christos test_gr_a5a5 3 386 1.1 christos test_gr_a5a5 4 387 1.1 christos test_gr_a5a5 5 388 1.1 christos test_gr_a5a5 6 389 1.1 christos test_gr_a5a5 7 390 1.1 christos ; 1010 0101 -> 1001 0110 391 1.1 christos cmp.b #0x96, @byte_dest 392 1.1 christos beq .Lbindexb322 393 1.1 christos fail 394 1.1 christos .Lbindexb322: 395 1.1 christos mov.b #0xa5, @byte_dest 396 1.1 christos 397 1.1 christos rotl_b_indexw32_2: 398 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 399 1.1 christos set_ccr_zero 400 1.1 christos 401 1.1 christos mov.w #256, r1 402 1.1 christos rotl.b #2, @(byte_dest-256:32, r1.w) ; indexed byte/word 403 1.1 christos 404 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 405 1.1 christos test_zero_clear 406 1.1 christos test_ovf_clear 407 1.1 christos test_neg_set 408 1.1 christos 409 1.1 christos test_h_gr32 0xa5a50100 er1 410 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 411 1.1 christos test_gr_a5a5 2 412 1.1 christos test_gr_a5a5 3 413 1.1 christos test_gr_a5a5 4 414 1.1 christos test_gr_a5a5 5 415 1.1 christos test_gr_a5a5 6 416 1.1 christos test_gr_a5a5 7 417 1.1 christos ; 1010 0101 -> 1001 0110 418 1.1 christos cmp.b #0x96, @byte_dest 419 1.1 christos beq .Lbindexw322 420 1.1 christos fail 421 1.1 christos .Lbindexw322: 422 1.1 christos mov.b #0xa5, @byte_dest 423 1.1 christos 424 1.1 christos rotl_b_indexl32_2: 425 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 426 1.1 christos set_ccr_zero 427 1.1 christos 428 1.1 christos mov.l #0xffffffff, er1 429 1.1 christos rotl.b #2, @(byte_dest+1:32, er1.l) ; indexed byte/long 430 1.1 christos 431 1.1 christos test_carry_clear ; H=0 N=1 Z=0 C=0 432 1.1 christos test_zero_clear 433 1.1 christos test_ovf_clear 434 1.1 christos test_neg_set 435 1.1 christos 436 1.1 christos test_h_gr32 0xffffffff er1 437 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 438 1.1 christos test_gr_a5a5 2 439 1.1 christos test_gr_a5a5 3 440 1.1 christos test_gr_a5a5 4 441 1.1 christos test_gr_a5a5 5 442 1.1 christos test_gr_a5a5 6 443 1.1 christos test_gr_a5a5 7 444 1.1 christos ; 1010 0101 -> 1001 0110 445 1.1 christos cmp.b #0x96, @byte_dest 446 1.1 christos beq .Lbindexl322 447 1.1 christos fail 448 1.1 christos .Lbindexl322: 449 1.1 christos mov.b #0xa5, @byte_dest 450 1.1 christos 451 1.1 christos .endif 452 1.1 christos 453 1.1 christos .if (sim_cpu) ; Not available in h8300 mode 454 1.1 christos rotl_w_reg16_1: 455 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 456 1.1 christos set_ccr_zero 457 1.1 christos 458 1.1 christos rotl.w r0 ; shift left arithmetic by one 459 1.1 christos 460 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 461 1.1 christos test_zero_clear 462 1.1 christos test_ovf_clear 463 1.1 christos test_neg_clear 464 1.1 christos test_h_gr16 0x4b4b r0 ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 465 1.1 christos test_h_gr32 0xa5a54b4b er0 466 1.1 christos 467 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 468 1.1 christos test_gr_a5a5 2 469 1.1 christos test_gr_a5a5 3 470 1.1 christos test_gr_a5a5 4 471 1.1 christos test_gr_a5a5 5 472 1.1 christos test_gr_a5a5 6 473 1.1 christos test_gr_a5a5 7 474 1.1 christos 475 1.1 christos .if (sim_cpu == h8sx) 476 1.1 christos rotl_w_indexb16_1: 477 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 478 1.1 christos set_ccr_zero 479 1.1 christos 480 1.1 christos mov.b #5, r0l 481 1.1 christos rotl.w @(word_dest-10:16, r0.b) ; indexed word/byte 482 1.1 christos 483 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 484 1.1 christos test_zero_clear 485 1.1 christos test_ovf_clear 486 1.1 christos test_neg_clear 487 1.1 christos 488 1.1 christos test_h_gr32 0xa5a5a505 er0 489 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 490 1.1 christos test_gr_a5a5 2 491 1.1 christos test_gr_a5a5 3 492 1.1 christos test_gr_a5a5 4 493 1.1 christos test_gr_a5a5 5 494 1.1 christos test_gr_a5a5 6 495 1.1 christos test_gr_a5a5 7 496 1.1 christos ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 497 1.1 christos cmp.w #0x4b4b, @word_dest 498 1.1 christos beq .Lwindexb161 499 1.1 christos fail 500 1.1 christos .Lwindexb161: 501 1.1 christos mov.w #0xa5a5, @word_dest 502 1.1 christos 503 1.1 christos rotl_w_indexw16_1: 504 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 505 1.1 christos set_ccr_zero 506 1.1 christos 507 1.1 christos mov.w #256, r0 508 1.1 christos rotl.w @(word_dest-512:16, r0.w) ; indexed word/word 509 1.1 christos 510 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 511 1.1 christos test_zero_clear 512 1.1 christos test_ovf_clear 513 1.1 christos test_neg_clear 514 1.1 christos 515 1.1 christos test_h_gr32 0xa5a50100 er0 516 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 517 1.1 christos test_gr_a5a5 2 518 1.1 christos test_gr_a5a5 3 519 1.1 christos test_gr_a5a5 4 520 1.1 christos test_gr_a5a5 5 521 1.1 christos test_gr_a5a5 6 522 1.1 christos test_gr_a5a5 7 523 1.1 christos ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 524 1.1 christos cmp.w #0x4b4b, @word_dest 525 1.1 christos beq .Lwindexw161 526 1.1 christos fail 527 1.1 christos .Lwindexw161: 528 1.1 christos mov.w #0xa5a5, @word_dest 529 1.1 christos 530 1.1 christos rotl_w_indexl16_1: 531 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 532 1.1 christos set_ccr_zero 533 1.1 christos 534 1.1 christos mov.l #0xffffffff, er0 535 1.1 christos rotl.w @(word_dest+2:16, er0.l) ; indexed word/long 536 1.1 christos 537 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 538 1.1 christos test_zero_clear 539 1.1 christos test_ovf_clear 540 1.1 christos test_neg_clear 541 1.1 christos 542 1.1 christos test_h_gr32 0xffffffff er0 543 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 544 1.1 christos test_gr_a5a5 2 545 1.1 christos test_gr_a5a5 3 546 1.1 christos test_gr_a5a5 4 547 1.1 christos test_gr_a5a5 5 548 1.1 christos test_gr_a5a5 6 549 1.1 christos test_gr_a5a5 7 550 1.1 christos ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 551 1.1 christos cmp.w #0x4b4b, @word_dest 552 1.1 christos beq .Lwindexl161 553 1.1 christos fail 554 1.1 christos .Lwindexl161: 555 1.1 christos mov.w #0xa5a5, @word_dest 556 1.1 christos 557 1.1 christos rotl_w_indexb32_1: 558 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 559 1.1 christos set_ccr_zero 560 1.1 christos 561 1.1 christos mov.b #5, r1l 562 1.1 christos rotl.w @(word_dest-10:32, r1.b) ; indexed word/byte 563 1.1 christos 564 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 565 1.1 christos test_zero_clear 566 1.1 christos test_ovf_clear 567 1.1 christos test_neg_clear 568 1.1 christos 569 1.1 christos test_h_gr32 0xa5a5a505 er1 570 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 571 1.1 christos test_gr_a5a5 2 572 1.1 christos test_gr_a5a5 3 573 1.1 christos test_gr_a5a5 4 574 1.1 christos test_gr_a5a5 5 575 1.1 christos test_gr_a5a5 6 576 1.1 christos test_gr_a5a5 7 577 1.1 christos ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 578 1.1 christos cmp.w #0x4b4b, @word_dest 579 1.1 christos beq .Lwindexb321 580 1.1 christos fail 581 1.1 christos .Lwindexb321: 582 1.1 christos mov.w #0xa5a5, @word_dest 583 1.1 christos 584 1.1 christos rotl_w_indexw32_1: 585 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 586 1.1 christos set_ccr_zero 587 1.1 christos 588 1.1 christos mov.w #256, r1 589 1.1 christos rotl.w @(word_dest-512:32, r1.w) ; indexed word/byte 590 1.1 christos 591 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 592 1.1 christos test_zero_clear 593 1.1 christos test_ovf_clear 594 1.1 christos test_neg_clear 595 1.1 christos 596 1.1 christos test_h_gr32 0xa5a50100 er1 597 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 598 1.1 christos test_gr_a5a5 2 599 1.1 christos test_gr_a5a5 3 600 1.1 christos test_gr_a5a5 4 601 1.1 christos test_gr_a5a5 5 602 1.1 christos test_gr_a5a5 6 603 1.1 christos test_gr_a5a5 7 604 1.1 christos ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 605 1.1 christos cmp.w #0x4b4b, @word_dest 606 1.1 christos beq .Lwindexw321 607 1.1 christos fail 608 1.1 christos .Lwindexw321: 609 1.1 christos mov.w #0xa5a5, @word_dest 610 1.1 christos 611 1.1 christos rotl_w_indexl32_1: 612 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 613 1.1 christos set_ccr_zero 614 1.1 christos 615 1.1 christos mov.l #0xffffffff, er1 616 1.1 christos rotl.w @(word_dest+2:32, er1.l) ; indexed word/byte 617 1.1 christos 618 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 619 1.1 christos test_zero_clear 620 1.1 christos test_ovf_clear 621 1.1 christos test_neg_clear 622 1.1 christos 623 1.1 christos test_h_gr32 0xffffffff er1 624 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 625 1.1 christos test_gr_a5a5 2 626 1.1 christos test_gr_a5a5 3 627 1.1 christos test_gr_a5a5 4 628 1.1 christos test_gr_a5a5 5 629 1.1 christos test_gr_a5a5 6 630 1.1 christos test_gr_a5a5 7 631 1.1 christos ; 1010 0101 1010 0101 -> 0100 1011 0100 1011 632 1.1 christos cmp.w #0x4b4b, @word_dest 633 1.1 christos beq .Lwindexl321 634 1.1 christos fail 635 1.1 christos .Lwindexl321: 636 1.1 christos mov.w #0xa5a5, @word_dest 637 1.1 christos .endif 638 1.1 christos 639 1.1 christos rotl_w_reg16_2: 640 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 641 1.1 christos set_ccr_zero 642 1.1 christos 643 1.1 christos rotl.w #2, r0 ; shift left arithmetic by two 644 1.1 christos 645 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 646 1.1 christos test_zero_clear 647 1.1 christos test_ovf_clear 648 1.1 christos test_neg_set 649 1.1 christos test_h_gr16 0x9696 r0 ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 650 1.1 christos test_h_gr32 0xa5a59696 er0 651 1.1 christos 652 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 653 1.1 christos test_gr_a5a5 2 654 1.1 christos test_gr_a5a5 3 655 1.1 christos test_gr_a5a5 4 656 1.1 christos test_gr_a5a5 5 657 1.1 christos test_gr_a5a5 6 658 1.1 christos test_gr_a5a5 7 659 1.1 christos 660 1.1 christos .if (sim_cpu == h8sx) 661 1.1 christos rotl_w_indexb16_2: 662 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 663 1.1 christos set_ccr_zero 664 1.1 christos 665 1.1 christos mov.b #5, r0l 666 1.1 christos rotl.w #2, @(word_dest-10:16, r0.b) ; indexed word/byte 667 1.1 christos 668 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 669 1.1 christos test_zero_clear 670 1.1 christos test_ovf_clear 671 1.1 christos test_neg_set 672 1.1 christos 673 1.1 christos test_h_gr32 0xa5a5a505 er0 674 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 675 1.1 christos test_gr_a5a5 2 676 1.1 christos test_gr_a5a5 3 677 1.1 christos test_gr_a5a5 4 678 1.1 christos test_gr_a5a5 5 679 1.1 christos test_gr_a5a5 6 680 1.1 christos test_gr_a5a5 7 681 1.1 christos ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 682 1.1 christos cmp.w #0x9696, @word_dest 683 1.1 christos beq .Lwindexb162 684 1.1 christos fail 685 1.1 christos .Lwindexb162: 686 1.1 christos mov.w #0xa5a5, @word_dest 687 1.1 christos 688 1.1 christos rotl_w_indexw16_2: 689 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 690 1.1 christos set_ccr_zero 691 1.1 christos 692 1.1 christos mov.w #256, r0 693 1.1 christos rotl.w #2, @(word_dest-512:16, r0.w) ; indexed word/word 694 1.1 christos 695 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 696 1.1 christos test_zero_clear 697 1.1 christos test_ovf_clear 698 1.1 christos test_neg_set 699 1.1 christos 700 1.1 christos test_h_gr32 0xa5a50100 er0 701 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 702 1.1 christos test_gr_a5a5 2 703 1.1 christos test_gr_a5a5 3 704 1.1 christos test_gr_a5a5 4 705 1.1 christos test_gr_a5a5 5 706 1.1 christos test_gr_a5a5 6 707 1.1 christos test_gr_a5a5 7 708 1.1 christos ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 709 1.1 christos cmp.w #0x9696, @word_dest 710 1.1 christos beq .Lwindexw162 711 1.1 christos fail 712 1.1 christos .Lwindexw162: 713 1.1 christos mov.w #0xa5a5, @word_dest 714 1.1 christos 715 1.1 christos rotl_w_indexl16_2: 716 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 717 1.1 christos set_ccr_zero 718 1.1 christos 719 1.1 christos mov.l #0xffffffff, er0 720 1.1 christos rotl.w #2, @(word_dest+2:16, er0.l) ; indexed word/long 721 1.1 christos 722 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 723 1.1 christos test_zero_clear 724 1.1 christos test_ovf_clear 725 1.1 christos test_neg_set 726 1.1 christos 727 1.1 christos test_h_gr32 0xffffffff er0 728 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 729 1.1 christos test_gr_a5a5 2 730 1.1 christos test_gr_a5a5 3 731 1.1 christos test_gr_a5a5 4 732 1.1 christos test_gr_a5a5 5 733 1.1 christos test_gr_a5a5 6 734 1.1 christos test_gr_a5a5 7 735 1.1 christos ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 736 1.1 christos cmp.w #0x9696, @word_dest 737 1.1 christos beq .Lwindexl162 738 1.1 christos fail 739 1.1 christos .Lwindexl162: 740 1.1 christos mov.w #0xa5a5, @word_dest 741 1.1 christos 742 1.1 christos rotl_w_indexb32_2: 743 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 744 1.1 christos set_ccr_zero 745 1.1 christos 746 1.1 christos mov.b #5, r1l 747 1.1 christos rotl.w #2, @(word_dest-10:32, r1.b) ; indexed word/byte 748 1.1 christos 749 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 750 1.1 christos test_zero_clear 751 1.1 christos test_ovf_clear 752 1.1 christos test_neg_set 753 1.1 christos 754 1.1 christos test_h_gr32 0xa5a5a505 er1 755 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 756 1.1 christos test_gr_a5a5 2 757 1.1 christos test_gr_a5a5 3 758 1.1 christos test_gr_a5a5 4 759 1.1 christos test_gr_a5a5 5 760 1.1 christos test_gr_a5a5 6 761 1.1 christos test_gr_a5a5 7 762 1.1 christos ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 763 1.1 christos cmp.w #0x9696, @word_dest 764 1.1 christos beq .Lwindexb322 765 1.1 christos fail 766 1.1 christos .Lwindexb322: 767 1.1 christos mov.w #0xa5a5, @word_dest 768 1.1 christos 769 1.1 christos rotl_w_indexw32_2: 770 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 771 1.1 christos set_ccr_zero 772 1.1 christos 773 1.1 christos mov.w #256, r1 774 1.1 christos rotl.w #2, @(word_dest-512:32, r1.w) ; indexed word/byte 775 1.1 christos 776 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 777 1.1 christos test_zero_clear 778 1.1 christos test_ovf_clear 779 1.1 christos test_neg_set 780 1.1 christos 781 1.1 christos test_h_gr32 0xa5a50100 er1 782 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 783 1.1 christos test_gr_a5a5 2 784 1.1 christos test_gr_a5a5 3 785 1.1 christos test_gr_a5a5 4 786 1.1 christos test_gr_a5a5 5 787 1.1 christos test_gr_a5a5 6 788 1.1 christos test_gr_a5a5 7 789 1.1 christos ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 790 1.1 christos cmp.w #0x9696, @word_dest 791 1.1 christos beq .Lwindexw322 792 1.1 christos fail 793 1.1 christos .Lwindexw322: 794 1.1 christos mov.w #0xa5a5, @word_dest 795 1.1 christos 796 1.1 christos rotl_w_indexl32_2: 797 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 798 1.1 christos set_ccr_zero 799 1.1 christos 800 1.1 christos mov.l #0xffffffff, er1 801 1.1 christos rotl.w #2, @(word_dest+2:32, er1.l) ; indexed word/byte 802 1.1 christos 803 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 804 1.1 christos test_zero_clear 805 1.1 christos test_ovf_clear 806 1.1 christos test_neg_set 807 1.1 christos 808 1.1 christos test_h_gr32 0xffffffff er1 809 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 810 1.1 christos test_gr_a5a5 2 811 1.1 christos test_gr_a5a5 3 812 1.1 christos test_gr_a5a5 4 813 1.1 christos test_gr_a5a5 5 814 1.1 christos test_gr_a5a5 6 815 1.1 christos test_gr_a5a5 7 816 1.1 christos ; 1010 0101 1010 0101 -> 1001 0110 1001 0110 817 1.1 christos cmp.w #0x9696, @word_dest 818 1.1 christos beq .Lwindexl322 819 1.1 christos fail 820 1.1 christos .Lwindexl322: 821 1.1 christos mov.w #0xa5a5, @word_dest 822 1.1 christos .endif 823 1.1 christos 824 1.1 christos rotl_l_reg32_1: 825 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 826 1.1 christos set_ccr_zero 827 1.1 christos 828 1.1 christos rotl.l er0 ; shift left arithmetic by one 829 1.1 christos 830 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 831 1.1 christos test_zero_clear 832 1.1 christos test_ovf_clear 833 1.1 christos test_neg_clear 834 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 835 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 836 1.1 christos test_h_gr32 0x4b4b4b4b er0 837 1.1 christos 838 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 839 1.1 christos test_gr_a5a5 2 840 1.1 christos test_gr_a5a5 3 841 1.1 christos test_gr_a5a5 4 842 1.1 christos test_gr_a5a5 5 843 1.1 christos test_gr_a5a5 6 844 1.1 christos test_gr_a5a5 7 845 1.1 christos 846 1.1 christos .if (sim_cpu == h8sx) 847 1.1 christos rotl_l_indexb16_1: 848 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 849 1.1 christos set_ccr_zero 850 1.1 christos 851 1.1 christos mov.b #5, r0l 852 1.1 christos rotl.l @(long_dest-20:16, er0.b) ; indexed long/byte 853 1.1 christos 854 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 855 1.1 christos test_zero_clear 856 1.1 christos test_ovf_clear 857 1.1 christos test_neg_clear 858 1.1 christos 859 1.1 christos test_h_gr32 0xa5a5a505 er0 860 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 861 1.1 christos test_gr_a5a5 2 862 1.1 christos test_gr_a5a5 3 863 1.1 christos test_gr_a5a5 4 864 1.1 christos test_gr_a5a5 5 865 1.1 christos test_gr_a5a5 6 866 1.1 christos test_gr_a5a5 7 867 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 868 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 869 1.1 christos cmp.l #0x4b4b4b4b, @long_dest 870 1.1 christos beq .Llindexb161 871 1.1 christos fail 872 1.1 christos .Llindexb161: 873 1.1 christos mov.l #0xa5a5a5a5, @long_dest 874 1.1 christos 875 1.1 christos rotl_l_indexw16_1: 876 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 877 1.1 christos set_ccr_zero 878 1.1 christos 879 1.1 christos mov.w #256, r0 880 1.1 christos rotl.l @(long_dest-1024:16, er0.w) ; indexed long/word 881 1.1 christos 882 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 883 1.1 christos test_zero_clear 884 1.1 christos test_ovf_clear 885 1.1 christos test_neg_clear 886 1.1 christos 887 1.1 christos test_h_gr32 0xa5a50100 er0 888 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 889 1.1 christos test_gr_a5a5 2 890 1.1 christos test_gr_a5a5 3 891 1.1 christos test_gr_a5a5 4 892 1.1 christos test_gr_a5a5 5 893 1.1 christos test_gr_a5a5 6 894 1.1 christos test_gr_a5a5 7 895 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 896 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 897 1.1 christos cmp.l #0x4b4b4b4b, @long_dest 898 1.1 christos beq .Llindexw161 899 1.1 christos fail 900 1.1 christos .Llindexw161: 901 1.1 christos mov.l #0xa5a5a5a5, @long_dest 902 1.1 christos 903 1.1 christos rotl_l_indexl16_1: 904 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 905 1.1 christos set_ccr_zero 906 1.1 christos 907 1.1 christos mov.l #0xffffffff, er0 908 1.1 christos rotl.l @(long_dest+4:16, er0.l) ; indexed long/long 909 1.1 christos 910 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 911 1.1 christos test_zero_clear 912 1.1 christos test_ovf_clear 913 1.1 christos test_neg_clear 914 1.1 christos 915 1.1 christos test_h_gr32 0xffffffff er0 916 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 917 1.1 christos test_gr_a5a5 2 918 1.1 christos test_gr_a5a5 3 919 1.1 christos test_gr_a5a5 4 920 1.1 christos test_gr_a5a5 5 921 1.1 christos test_gr_a5a5 6 922 1.1 christos test_gr_a5a5 7 923 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 924 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 925 1.1 christos cmp.l #0x4b4b4b4b, @long_dest 926 1.1 christos beq .Llindexl161 927 1.1 christos fail 928 1.1 christos .Llindexl161: 929 1.1 christos mov.l #0xa5a5a5a5, @long_dest 930 1.1 christos 931 1.1 christos rotl_l_indexb32_1: 932 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 933 1.1 christos set_ccr_zero 934 1.1 christos 935 1.1 christos mov.b #5, r1l 936 1.1 christos rotl.l @(long_dest-20:32, er1.b) ; indexed long/byte 937 1.1 christos 938 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 939 1.1 christos test_zero_clear 940 1.1 christos test_ovf_clear 941 1.1 christos test_neg_clear 942 1.1 christos 943 1.1 christos test_h_gr32 0xa5a5a505 er1 944 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 945 1.1 christos test_gr_a5a5 2 946 1.1 christos test_gr_a5a5 3 947 1.1 christos test_gr_a5a5 4 948 1.1 christos test_gr_a5a5 5 949 1.1 christos test_gr_a5a5 6 950 1.1 christos test_gr_a5a5 7 951 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 952 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 953 1.1 christos cmp.l #0x4b4b4b4b, @long_dest 954 1.1 christos beq .Llindexb321 955 1.1 christos fail 956 1.1 christos .Llindexb321: 957 1.1 christos mov.l #0xa5a5a5a5, @long_dest 958 1.1 christos 959 1.1 christos rotl_l_indexw32_1: 960 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 961 1.1 christos set_ccr_zero 962 1.1 christos 963 1.1 christos mov.w #256, r1 964 1.1 christos rotl.l @(long_dest-1024:32, er1.w) ; indexed long/byte 965 1.1 christos 966 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 967 1.1 christos test_zero_clear 968 1.1 christos test_ovf_clear 969 1.1 christos test_neg_clear 970 1.1 christos 971 1.1 christos test_h_gr32 0xa5a50100 er1 972 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 973 1.1 christos test_gr_a5a5 2 974 1.1 christos test_gr_a5a5 3 975 1.1 christos test_gr_a5a5 4 976 1.1 christos test_gr_a5a5 5 977 1.1 christos test_gr_a5a5 6 978 1.1 christos test_gr_a5a5 7 979 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 980 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 981 1.1 christos cmp.l #0x4b4b4b4b, @long_dest 982 1.1 christos beq .Llindexw321 983 1.1 christos fail 984 1.1 christos .Llindexw321: 985 1.1 christos mov.l #0xa5a5a5a5, @long_dest 986 1.1 christos 987 1.1 christos rotl_l_indexl32_1: 988 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 989 1.1 christos set_ccr_zero 990 1.1 christos 991 1.1 christos mov.l #0xffffffff, er1 992 1.1 christos rotl.l @(long_dest+4:32, er1.l) ; indexed long/byte 993 1.1 christos 994 1.1 christos test_carry_set ; H=0 N=0 Z=0 V=0 C=1 995 1.1 christos test_zero_clear 996 1.1 christos test_ovf_clear 997 1.1 christos test_neg_clear 998 1.1 christos 999 1.1 christos test_h_gr32 0xffffffff er1 1000 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 1001 1.1 christos test_gr_a5a5 2 1002 1.1 christos test_gr_a5a5 3 1003 1.1 christos test_gr_a5a5 4 1004 1.1 christos test_gr_a5a5 5 1005 1.1 christos test_gr_a5a5 6 1006 1.1 christos test_gr_a5a5 7 1007 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1008 1.1 christos ; -> 0100 1011 0100 1011 0100 1011 0100 1011 1009 1.1 christos cmp.l #0x4b4b4b4b, @long_dest 1010 1.1 christos beq .Llindexl321 1011 1.1 christos fail 1012 1.1 christos .Llindexl321: 1013 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1014 1.1 christos .endif 1015 1.1 christos 1016 1.1 christos rotl_l_reg32_2: 1017 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1018 1.1 christos set_ccr_zero 1019 1.1 christos 1020 1.1 christos rotl.l #2, er0 ; shift left arithmetic by two 1021 1.1 christos 1022 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1023 1.1 christos test_zero_clear 1024 1.1 christos test_ovf_clear 1025 1.1 christos test_neg_set 1026 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1027 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1028 1.1 christos test_h_gr32 0x96969696 er0 1029 1.1 christos 1030 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 1031 1.1 christos test_gr_a5a5 2 1032 1.1 christos test_gr_a5a5 3 1033 1.1 christos test_gr_a5a5 4 1034 1.1 christos test_gr_a5a5 5 1035 1.1 christos test_gr_a5a5 6 1036 1.1 christos test_gr_a5a5 7 1037 1.1 christos 1038 1.1 christos .if (sim_cpu == h8sx) 1039 1.1 christos rotl_l_indexb16_2: 1040 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1041 1.1 christos set_ccr_zero 1042 1.1 christos 1043 1.1 christos mov.b #5, r0l 1044 1.1 christos rotl.l #2, @(long_dest-20:16, er0.b) ; indexed long/byte 1045 1.1 christos 1046 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1047 1.1 christos test_zero_clear 1048 1.1 christos test_ovf_clear 1049 1.1 christos test_neg_set 1050 1.1 christos 1051 1.1 christos test_h_gr32 0xa5a5a505 er0 1052 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 1053 1.1 christos test_gr_a5a5 2 1054 1.1 christos test_gr_a5a5 3 1055 1.1 christos test_gr_a5a5 4 1056 1.1 christos test_gr_a5a5 5 1057 1.1 christos test_gr_a5a5 6 1058 1.1 christos test_gr_a5a5 7 1059 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1060 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1061 1.1 christos cmp.l #0x96969696, @long_dest 1062 1.1 christos beq .Llindexb162 1063 1.1 christos fail 1064 1.1 christos .Llindexb162: 1065 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1066 1.1 christos 1067 1.1 christos rotl_l_indexw16_2: 1068 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1069 1.1 christos set_ccr_zero 1070 1.1 christos 1071 1.1 christos mov.w #256, r0 1072 1.1 christos rotl.l #2, @(long_dest-1024:16, er0.w) ; indexed long/word 1073 1.1 christos 1074 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1075 1.1 christos test_zero_clear 1076 1.1 christos test_ovf_clear 1077 1.1 christos test_neg_set 1078 1.1 christos 1079 1.1 christos test_h_gr32 0xa5a50100 er0 1080 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 1081 1.1 christos test_gr_a5a5 2 1082 1.1 christos test_gr_a5a5 3 1083 1.1 christos test_gr_a5a5 4 1084 1.1 christos test_gr_a5a5 5 1085 1.1 christos test_gr_a5a5 6 1086 1.1 christos test_gr_a5a5 7 1087 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1088 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1089 1.1 christos cmp.l #0x96969696, @long_dest 1090 1.1 christos beq .Llindexw162 1091 1.1 christos fail 1092 1.1 christos .Llindexw162: 1093 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1094 1.1 christos 1095 1.1 christos rotl_l_indexl16_2: 1096 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1097 1.1 christos set_ccr_zero 1098 1.1 christos 1099 1.1 christos mov.l #0xffffffff, er0 1100 1.1 christos rotl.l #2, @(long_dest+4:16, er0.l) ; indexed long/long 1101 1.1 christos 1102 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1103 1.1 christos test_zero_clear 1104 1.1 christos test_ovf_clear 1105 1.1 christos test_neg_set 1106 1.1 christos 1107 1.1 christos test_h_gr32 0xffffffff er0 1108 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed 1109 1.1 christos test_gr_a5a5 2 1110 1.1 christos test_gr_a5a5 3 1111 1.1 christos test_gr_a5a5 4 1112 1.1 christos test_gr_a5a5 5 1113 1.1 christos test_gr_a5a5 6 1114 1.1 christos test_gr_a5a5 7 1115 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1116 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1117 1.1 christos cmp.l #0x96969696, @long_dest 1118 1.1 christos beq .Llindexl162 1119 1.1 christos fail 1120 1.1 christos .Llindexl162: 1121 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1122 1.1 christos 1123 1.1 christos rotl_l_indexb32_2: 1124 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1125 1.1 christos set_ccr_zero 1126 1.1 christos 1127 1.1 christos mov.b #5, r1l 1128 1.1 christos rotl.l #2, @(long_dest-20:32, er1.b) ; indexed long/byte 1129 1.1 christos 1130 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1131 1.1 christos test_zero_clear 1132 1.1 christos test_ovf_clear 1133 1.1 christos test_neg_set 1134 1.1 christos 1135 1.1 christos test_h_gr32 0xa5a5a505 er1 1136 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 1137 1.1 christos test_gr_a5a5 2 1138 1.1 christos test_gr_a5a5 3 1139 1.1 christos test_gr_a5a5 4 1140 1.1 christos test_gr_a5a5 5 1141 1.1 christos test_gr_a5a5 6 1142 1.1 christos test_gr_a5a5 7 1143 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1144 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1145 1.1 christos cmp.l #0x96969696, @long_dest 1146 1.1 christos beq .Llindexb322 1147 1.1 christos fail 1148 1.1 christos .Llindexb322: 1149 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1150 1.1 christos 1151 1.1 christos rotl_l_indexw32_2: 1152 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1153 1.1 christos set_ccr_zero 1154 1.1 christos 1155 1.1 christos mov.w #256, r1 1156 1.1 christos rotl.l #2, @(long_dest-1024:32, er1.w) ; indexed long/byte 1157 1.1 christos 1158 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1159 1.1 christos test_zero_clear 1160 1.1 christos test_ovf_clear 1161 1.1 christos test_neg_set 1162 1.1 christos 1163 1.1 christos test_h_gr32 0xa5a50100 er1 1164 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 1165 1.1 christos test_gr_a5a5 2 1166 1.1 christos test_gr_a5a5 3 1167 1.1 christos test_gr_a5a5 4 1168 1.1 christos test_gr_a5a5 5 1169 1.1 christos test_gr_a5a5 6 1170 1.1 christos test_gr_a5a5 7 1171 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1172 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1173 1.1 christos cmp.l #0x96969696, @long_dest 1174 1.1 christos beq .Llindexw322 1175 1.1 christos fail 1176 1.1 christos .Llindexw322: 1177 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1178 1.1 christos 1179 1.1 christos rotl_l_indexl32_2: 1180 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern 1181 1.1 christos set_ccr_zero 1182 1.1 christos 1183 1.1 christos mov.l #0xffffffff, er1 1184 1.1 christos rotl.l #2, @(long_dest+4:32, er1.l) ; indexed long/byte 1185 1.1 christos 1186 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0 1187 1.1 christos test_zero_clear 1188 1.1 christos test_ovf_clear 1189 1.1 christos test_neg_set 1190 1.1 christos 1191 1.1 christos test_h_gr32 0xffffffff er1 1192 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed 1193 1.1 christos test_gr_a5a5 2 1194 1.1 christos test_gr_a5a5 3 1195 1.1 christos test_gr_a5a5 4 1196 1.1 christos test_gr_a5a5 5 1197 1.1 christos test_gr_a5a5 6 1198 1.1 christos test_gr_a5a5 7 1199 1.1 christos ; 1010 0101 1010 0101 1010 0101 1010 0101 1200 1.1 christos ; -> 1001 0110 1001 0110 1001 0110 1001 0110 1201 1.1 christos cmp.l #0x96969696, @long_dest 1202 1.1 christos beq .Llindexl322 1203 1.1 christos fail 1204 1.1 christos .Llindexl322: 1205 1.1 christos mov.l #0xa5a5a5a5, @long_dest 1206 1.1 christos .endif 1207 1.1 christos .endif 1208 1.1 christos 1209 1.1 christos pass 1210 1.1 christos 1211 1.1 christos exit 0 1212 1.1 christos 1213