Home | History | Annotate | Line # | Download | only in h8300
mova.s revision 1.1
      1 # Hitachi H8 testcase 'mova'
      2 # mach(): h8sx
      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 	.data
     14 foo:	.long	0x01010101
     15 	.long	0x10101010
     16 	.long	0x11111111
     17 
     18 	start
     19 
     20 movabl16_reg8:
     21 	set_grs_a5a5
     22 	set_ccr_zero
     23 
     24 	mova/b.l	@(1:16, r2l.b), er3
     25 
     26 	test_cc_clear
     27 	test_gr_a5a5	0	; Make sure other regs not affected
     28 	test_gr_a5a5	1
     29 	test_gr_a5a5	2
     30 	test_h_gr32	0xa6 er3
     31 	test_gr_a5a5	4
     32 	test_gr_a5a5	5
     33 	test_gr_a5a5	6
     34 	test_gr_a5a5	7
     35 
     36 movabl16_reg16:
     37 	set_grs_a5a5
     38 	set_ccr_zero
     39 
     40 	mova/b.l	@(1:16, r2.w), er3
     41 
     42 	test_cc_clear
     43 	test_gr_a5a5	0	; Make sure other regs not affected
     44 	test_gr_a5a5	1
     45 	test_gr_a5a5	2
     46 	test_h_gr32	0xa5a6 er3
     47 	test_gr_a5a5	4
     48 	test_gr_a5a5	5
     49 	test_gr_a5a5	6
     50 	test_gr_a5a5	7
     51 
     52 movabl32_reg8:
     53 	set_grs_a5a5
     54 	set_ccr_zero
     55 
     56 	mova/b.l	@(1:32, r2l.b), er3
     57 
     58 	test_cc_clear
     59 	test_gr_a5a5	0	; Make sure other regs not affected
     60 	test_gr_a5a5	1
     61 	test_gr_a5a5	2
     62 	test_h_gr32	0xa6 er3
     63 	test_gr_a5a5	4
     64 	test_gr_a5a5	5
     65 	test_gr_a5a5	6
     66 	test_gr_a5a5	7
     67 
     68 movabl32_reg16:
     69 	set_grs_a5a5
     70 	set_ccr_zero
     71 
     72 	mova/b.l	@(1:32, r2.w), er3
     73 
     74 	test_cc_clear
     75 	test_gr_a5a5	0	; Make sure other regs not affected
     76 	test_gr_a5a5	1
     77 	test_gr_a5a5	2
     78 	test_h_gr32	0xa5a6 er3
     79 	test_gr_a5a5	4
     80 	test_gr_a5a5	5
     81 	test_gr_a5a5	6
     82 	test_gr_a5a5	7
     83 
     84 movawl16_reg8:
     85 	set_grs_a5a5
     86 	set_ccr_zero
     87 
     88 	mova/w.l	@(1:16, r2l.b), er3
     89 
     90 	test_cc_clear
     91 	test_gr_a5a5	0	; Make sure other regs not affected
     92 	test_gr_a5a5	1
     93 	test_gr_a5a5	2
     94 	test_h_gr32	0x14b er3
     95 	test_gr_a5a5	4
     96 	test_gr_a5a5	5
     97 	test_gr_a5a5	6
     98 	test_gr_a5a5	7
     99 
    100 movawl16_reg16:
    101 	set_grs_a5a5
    102 	set_ccr_zero
    103 
    104 	mova/w.l	@(1:16, r2.w), er3
    105 
    106 	test_cc_clear
    107 	test_gr_a5a5	0	; Make sure other regs not affected
    108 	test_gr_a5a5	1
    109 	test_gr_a5a5	2
    110 	test_h_gr32	0x14b4b er3
    111 	test_gr_a5a5	4
    112 	test_gr_a5a5	5
    113 	test_gr_a5a5	6
    114 	test_gr_a5a5	7
    115 
    116 movawl32_reg8:
    117 	set_grs_a5a5
    118 	set_ccr_zero
    119 
    120 	mova/w.l	@(1:32, r2l.b), er3
    121 
    122 	test_cc_clear
    123 	test_gr_a5a5	0	; Make sure other regs not affected
    124 	test_gr_a5a5	1
    125 	test_gr_a5a5	2
    126 	test_h_gr32	0x14b er3
    127 	test_gr_a5a5	4
    128 	test_gr_a5a5	5
    129 	test_gr_a5a5	6
    130 	test_gr_a5a5	7
    131 
    132 movawl32_reg16:
    133 	set_grs_a5a5
    134 	set_ccr_zero
    135 
    136 	mova/w.l	@(1:32, r2.w), er3
    137 
    138 	test_cc_clear
    139 	test_gr_a5a5	0	; Make sure other regs not affected
    140 	test_gr_a5a5	1
    141 	test_gr_a5a5	2
    142 	test_h_gr32	0x14b4b er3
    143 	test_gr_a5a5	4
    144 	test_gr_a5a5	5
    145 	test_gr_a5a5	6
    146 	test_gr_a5a5	7
    147 
    148 movall16_reg8:
    149 	set_grs_a5a5
    150 	set_ccr_zero
    151 
    152 	mova/l.l	@(1:16, r2l.b), er3
    153 
    154 	test_cc_clear
    155 	test_gr_a5a5	0	; Make sure other regs not affected
    156 	test_gr_a5a5	1
    157 	test_gr_a5a5	2
    158 	test_h_gr32	0x295 er3
    159 	test_gr_a5a5	4
    160 	test_gr_a5a5	5
    161 	test_gr_a5a5	6
    162 	test_gr_a5a5	7
    163 
    164 movall16_reg16:
    165 	set_grs_a5a5
    166 	set_ccr_zero
    167 
    168 	mova/l.l	@(1:16, r2.w), er3
    169 
    170 	test_cc_clear
    171 	test_gr_a5a5	0	; Make sure other regs not affected
    172 	test_gr_a5a5	1
    173 	test_gr_a5a5	2
    174 	test_h_gr32	0x29695 er3
    175 	test_gr_a5a5	4
    176 	test_gr_a5a5	5
    177 	test_gr_a5a5	6
    178 	test_gr_a5a5	7
    179 
    180 movall32_reg8:
    181 	set_grs_a5a5
    182 	set_ccr_zero
    183 
    184 	mova/l.l	@(1:32, r2l.b), er3
    185 
    186 	test_cc_clear
    187 	test_gr_a5a5	0	; Make sure other regs not affected
    188 	test_gr_a5a5	1
    189 	test_gr_a5a5	2
    190 	test_h_gr32	0x295 er3
    191 	test_gr_a5a5	4
    192 	test_gr_a5a5	5
    193 	test_gr_a5a5	6
    194 	test_gr_a5a5	7
    195 
    196 movall32_reg16:
    197 	set_grs_a5a5
    198 	set_ccr_zero
    199 
    200 	mova/l.l	@(1:32, r2.w), er3
    201 
    202 	test_cc_clear
    203 	test_gr_a5a5	0	; Make sure other regs not affected
    204 	test_gr_a5a5	1
    205 	test_gr_a5a5	2
    206 	test_h_gr32	0x29695 er3
    207 	test_gr_a5a5	4
    208 	test_gr_a5a5	5
    209 	test_gr_a5a5	6
    210 	test_gr_a5a5	7
    211 
    212 t02_mova:
    213 	set_grs_a5a5
    214 	set_ccr_zero
    215 
    216 	mov.l	#0x01010101, er1
    217 	mova/b.c @(0x1234:16,r1l.b),er1 ; 7A891234
    218 	test_h_gr32	0x1235, er1 ; 1s
    219 	mov.l	#0x01010101, er1
    220 	mova/b.c @(0x1234:16,r1.w),er1 ; 7A991234
    221 	test_h_gr32	0x1335, er1 ; 2s
    222 	mov.l	#0x01010101, er1
    223 	mova/w.c @(0x1234:16,r1l.b),er1 ; 7AA91234
    224 	test_h_gr32	0x1236, er1 ; 3s
    225 	mov.l	#0x01010101, er1
    226 	mova/w.c @(0x1234:16,r1.w),er1 ; 7AB91234
    227 	test_h_gr32	0x1436, er1 ; 4s
    228 	mov.l	#0x01010101, er1
    229 	mova/l.c @(0x1234:16,r1l.b),er1 ; 7AC91234
    230 	test_h_gr32	0x1238, er1 ; 5s
    231 	mov.l	#0x01010101, er1
    232 	mova/l.c @(0x1234:16,r1.w),er1 ; 7AD91234
    233 	test_h_gr32	0x1638, er1 ; 6s
    234 	mov.l	#0x01010101, er1
    235 	mova/b.c @(0x12345678:32,r1l.b),er1 ; 7A8112345678
    236 	test_h_gr32	0x12345679, er1	; 7s
    237 	mov.l	#0x01010101, er1
    238 	mova/b.c @(0x12345678:32,r1.w),er1 ; 7A9112345678
    239 	test_h_gr32	0x12345779, er1	; 8s
    240 	mov.l	#0x01010101, er1
    241 	mova/w.c @(0x12345678:32,r1l.b),er1 ; 7AA112345678
    242 	test_h_gr32	0x1234567a, er1	; 9s
    243 	mov.l	#0x01010101, er1
    244 	mova/w.c @(0x12345678:32,r1.w),er1 ; 7AB112345678
    245 	test_h_gr32	0x1234587a, er1	; 10s
    246 	mov.l	#0x01010101, er1
    247 	mova/l.c @(0x12345678:32,r1l.b),er1 ; 7AC112345678
    248 	test_h_gr32	0x1234567c, er1	; 11s
    249 	mov.l	#0x01010101, er1
    250 	mova/l.c @(0x12345678:32,r1.w),er1 ; 7AD112345678
    251 	test_h_gr32	0x12345a7c, er1	; 12s
    252 
    253 t02b:
    254 	mov.l	#0x01010101, er3
    255 	mova/b.l @(0x1234:16,r3l.b),er1 ; 78B87A891234
    256 	test_h_gr32	0x1235, er1 ; 1
    257 	mova/b.l @(0x1234:16,r3.w),er1 ; 78397A991234
    258 	test_h_gr32	0x1335, er1 ; 2
    259 	mova/w.l @(0x1234:16,r3l.b),er1 ; 78B87AA91234
    260 	test_h_gr32	0x1236, er1 ; 3
    261 	mova/w.l @(0x1234:16,r3.w),er1 ; 78397AB91234
    262 	test_h_gr32	0x1436, er1 ; 4
    263 	mova/l.l @(0x1234:16,r3l.b),er1 ; 78B87AC91234
    264 	test_h_gr32	0x1238, er1 ; 5
    265 	mova/l.l @(0x1234:16,r3.w),er1 ; 78397AD91234
    266 	test_h_gr32	0x1638, er1 ; 6
    267 	mova/b.l @(0x12345678:32,r3l.b),er1 ; 78B87A8112345678
    268 	test_h_gr32	0x12345679, er1	; 7
    269 	mova/b.l @(0x12345678:32,r3.w),er1 ; 78397A9112345678
    270 	test_h_gr32	0x12345779, er1	; 8
    271 	mova/w.l @(0x12345678:32,r3l.b),er1 ; 78B87AA112345678
    272 	test_h_gr32	0x1234567a, er1	; 9
    273 	mova/w.l @(0x12345678:32,r3.w),er1 ; 78397AB112345678
    274 	test_h_gr32	0x1234587a, er1	; 10
    275 	mova/l.l @(0x12345678:32,r3l.b),er1 ; 78B87AC112345678
    276 	test_h_gr32	0x1234567c, er1	; 11
    277 	mova/l.l @(0x12345678:32,r3.w),er1 ; 78397AD112345678
    278 	test_h_gr32	0x12345a7c, er1	; 12
    279 	test_h_gr32	0x01010101, er3
    280 t02c:
    281 	mov.l	#foo, er2
    282 	mova/b.l @(0x1234:16,@er2.b),er1              ;017F02811234
    283 	test_h_gr32	0x1235, er1 ; 13
    284 	test_h_gr32	foo, er2
    285 	mova/b.l @(0x1234:16,@(0x1:2,er2).b),er1       ;017F12811234
    286 	test_h_gr32	0x1235, er1 ; 18
    287 	test_h_gr32	foo, er2
    288 	mova/b.l @(0x1234:16,@er2+.b),er1             ;017F82811234
    289 	test_h_gr32	0x1235, er1 ; 14
    290 	test_h_gr32	foo+1, er2
    291 	mova/b.l @(0x1234:16,@-er2.b),er1             ;017FB2811234
    292 	test_h_gr32	0x1235, er1 ; 17
    293 	test_h_gr32	foo, er2
    294 	mova/b.l @(0x1234:16,@+er2.b),er1             ;017F92811234
    295 	test_h_gr32	0x1235, er1 ; 16
    296 	test_h_gr32	foo+1, er2
    297 	mova/b.l @(0x1234:16,@er2-.b),er1             ;017FA2811234
    298 	test_h_gr32	0x1235, er1 ; 15
    299 	test_h_gr32	foo, er2
    300 t02d:
    301 	mov.l	#4, er2
    302 	mova/b.l @(0x1234:16, @(foo:16, er2).b), er1
    303 	test_h_gr32	0x1244, er1 ; 19
    304 	mova/b.l @(0x1234:16, @(foo:16, r2L.b).b), er1
    305 	test_h_gr32	0x1244, er1 ; 21
    306 	mova/b.l @(0x1234:16, @(foo:16, r2.w).b), er1
    307 	test_h_gr32	0x1244, er1 ; 22
    308 	mova/b.l @(0x1234:16, @(foo:16, er2.l).b), er1
    309 	test_h_gr32	0x1244, er1 ; 23
    310 
    311 	mov.l	#4, er2
    312 	mova/b.l @(0x1234:16, @(foo:32, er2).b), er1
    313 	test_h_gr32	0x1244, er1 ; 20
    314 	mova/b.l @(0x1234:16, @(foo:32, r2L.b).b), er1
    315 	test_h_gr32	0x1244, er1 ; 24
    316 	mova/b.l @(0x1234:16, @(foo:32, r2.w).b), er1
    317 	test_h_gr32	0x1244, er1 ; 25
    318 	mova/b.l @(0x1234:16, @(foo:32, er2.l).b), er1
    319 	test_h_gr32	0x1244, er1 ; 26
    320 
    321 	mova/b.l @(0x1234:16,@foo:16.b),er1
    322 	test_h_gr32	0x1235, er1 ; 27
    323 	mova/b.l @(0x1234:16,@foo:32.b),er1
    324 	test_h_gr32	0x1235, er1 ; 28
    325 
    326 t02e:
    327 	mov.l	#foo, er2
    328 	mova/b.l @(0x1234:16,@er2.w),er1              ;015F02911234
    329 	test_h_gr32	0x1335, er1 ; 29
    330 	test_h_gr32	foo, er2
    331 	mova/b.l @(0x1234:16,@(0x2:2,er2).w),er1    ;015F12911234
    332 	test_h_gr32	0x1335, er1 ; 34
    333 	test_h_gr32	foo, er2
    334 	mova/b.l @(0x1234:16,@er2+.w),er1             ;015F82911234
    335 	test_h_gr32	0x1335, er1 ; 30
    336 	test_h_gr32	foo+2, er2
    337 	mova/b.l @(0x1234:16,@-er2.w),er1             ;015FB2911234
    338 	test_h_gr32	0x1335, er1 ; 33
    339 	test_h_gr32	foo, er2
    340 	mova/b.l @(0x1234:16,@+er2.w),er1             ;015F92911234
    341 	test_h_gr32	0x1335, er1 ; 32
    342 	test_h_gr32	foo+2, er2
    343 	mova/b.l @(0x1234:16,@er2-.w),er1             ;015FA2911234
    344 	test_h_gr32	0x1335, er1 ; 31
    345 	test_h_gr32	foo, er2
    346 
    347 	mov.l	#4, er2
    348 	mova/b.l @(0x1234:16, @(foo:16, er2).w), er1
    349 	test_h_gr32	0x2244, er1 ; 35
    350 	shar.l	er2
    351 	mova/b.l @(0x1234:16, @(foo:16, r2L.b).w), er1
    352 	test_h_gr32	0x2244, er1 ; 37
    353 	mova/b.l @(0x1234:16, @(foo:16, r2.w).w), er1
    354 	test_h_gr32	0x2244, er1 ; 38
    355 	mova/b.l @(0x1234:16, @(foo:16, er2.l).w), er1
    356 	test_h_gr32	0x2244, er1 ; 39
    357 
    358 	mov.l	#4, er2
    359 	mova/b.l @(0x1234:16, @(foo:32, er2).w), er1
    360 	test_h_gr32	0x2244, er1 ; 36
    361 	shar.l	er2
    362 	mova/b.l @(0x1234:16, @(foo:32, r2L.b).w), er1
    363 	test_h_gr32	0x2244, er1 ; 40
    364 	mova/b.l @(0x1234:16, @(foo:32, r2.w).w), er1
    365 	test_h_gr32	0x2244, er1 ; 41
    366 	mova/b.l @(0x1234:16, @(foo:32, er2.l).w), er1
    367 	test_h_gr32	0x2244, er1 ; 42
    368 
    369 	mova/b.l @(0x1234:16,@foo:16.w),er1        ;015F40919ABC1234
    370 	test_h_gr32	0x1335, er1 ; 43
    371 	mova/b.l @(0x1234:16,@foo:32.w),er1        ;015F48919ABCDEF01234
    372 	test_h_gr32	0x1335, er1 ; 44
    373 
    374 t02f:
    375 	mov.l	#foo, er2
    376 	mova/w.l @(0x1234:16,@er2.b),er1           ;017F02A11234
    377 	test_h_gr32	0x1236, er1 ; 45
    378 	mova/w.l @(0x1234:16,@(0x1:2,er2).b),er1    ;017F12A11234
    379 	test_h_gr32	0x1236, er1 ; 50
    380 	mova/w.l @(0x1234:16,@er2+.b),er1          ;017F82A11234
    381 	test_h_gr32	0x1236, er1 ; 46
    382 	test_h_gr32	foo+1, er2
    383 	mova/w.l @(0x1234:16,@-er2.b),er1          ;017FB2A11234
    384 	test_h_gr32	0x1236, er1 ; 49
    385 	test_h_gr32	foo, er2
    386 	mova/w.l @(0x1234:16,@+er2.b),er1          ;017F92A11234
    387 	test_h_gr32	0x1236, er1 ; 48
    388 	test_h_gr32	foo+1, er2
    389 	mova/w.l @(0x1234:16,@er2-.b),er1          ;017FA2A11234
    390 	test_h_gr32	0x1236, er1 ; 47
    391 	test_h_gr32	foo, er2
    392 
    393 t02g:
    394 	mov.l	#4, er2
    395 	mova/w.l @(0x1234:16, @(foo:16, er2).b), er1
    396 	test_h_gr32	0x1254, er1 ; 51
    397 	mova/w.l @(0x1234:16, @(foo:16, r2L.b).b), er1
    398 	test_h_gr32	0x1254, er1 ; 53
    399 	mova/w.l @(0x1234:16, @(foo:16, r2.w).b), er1
    400 	test_h_gr32	0x1254, er1 ; 54
    401 	mova/w.l @(0x1234:16, @(foo:16, er2.l).b), er1
    402 	test_h_gr32	0x1254, er1 ; 55
    403 
    404 	mov.l	#4, er2
    405 	mova/w.l @(0x1234:16, @(foo:32, er2).b), er1
    406 	test_h_gr32	0x1254, er1 ; 52
    407 	mova/w.l @(0x1234:16, @(foo:32, r2L.b).b), er1
    408 	test_h_gr32	0x1254, er1 ; 56
    409 	mova/w.l @(0x1234:16, @(foo:32, r2.w).b), er1
    410 	test_h_gr32	0x1254, er1 ; 57
    411 	mova/w.l @(0x1234:16, @(foo:32, er2.l).b), er1
    412 	test_h_gr32	0x1254, er1 ; 58
    413 
    414 	mova/w.l @(0x1234:16,@foo:16.b),er1        ;017F40A19ABC1234
    415 	test_h_gr32	0x1236, er1 ; 59 (can't test -- points into the woods)
    416 	mova/w.l @(0x1234:16,@foo:32.b),er1        ;017F48A19ABCDEF01234
    417 	test_h_gr32	0x1236, er1 ; 60 (can't test -- points into the woods)
    418 
    419 t02h:
    420 	mov.l	#foo, er2
    421 	mova/w.l @(0x1234:16,@er2.w),er1           ;015F02B11234
    422 	test_h_gr32	0x1436, er1 ; 61
    423 	mova/w.l @(0x1234:16,@(0x2:2,er2).w),er1 ;015F12B11234
    424 	test_h_gr32	0x1436, er1 ; 66, 0x1234 + (@(4+foo).w << 1
    425 	mova/w.l @(0x1234:16,@er2+.w),er1          ;015F82B11234
    426 	test_h_gr32	0x1436, er1 ; 62
    427 	test_h_gr32	foo+2, er2
    428 	mova/w.l @(0x1234:16,@-er2.w),er1          ;015FB2B11234
    429 	test_h_gr32	0x1436, er1 ; 63
    430 	test_h_gr32	foo, er2
    431 	mova/w.l @(0x1234:16,@+er2.w),er1          ;015F92B11234
    432 	test_h_gr32	0x1436, er1 ; 64
    433 	test_h_gr32	foo+2, er2
    434 	mova/w.l @(0x1234:16,@er2-.w),er1          ;015FA2B11234
    435 	test_h_gr32	0x1436, er1 ; 65
    436 	test_h_gr32	foo, er2
    437 t02i:
    438 	mov.l	#4, er2
    439 	mova/w.l @(0x1234:16, @(foo:16, er2).w), er1
    440 	test_h_gr32	0x3254, er1 ; 67
    441 	shar.l	er2
    442 	mova/w.l @(0x1234:16, @(foo:16, r2L.b).w), er1
    443 	test_h_gr32	0x3254, er1 ; 69
    444 	mova/w.l @(0x1234:16, @(foo:16, r2.w).w), er1
    445 	test_h_gr32	0x3254, er1 ; 70
    446 	mova/w.l @(0x1234:16, @(foo:16, er2.l).w), er1
    447 	test_h_gr32	0x3254, er1 ; 71
    448 
    449 	mov.l	#4, er2
    450 	mova/w.l @(0x1234:16, @(foo:32, er2).w), er1
    451 	test_h_gr32	0x3254, er1 ; 68
    452 	shar.l	er2
    453 	mova/w.l @(0x1234:16, @(foo:32, r2L.b).w), er1
    454 	test_h_gr32	0x3254, er1 ; 72
    455 	mova/w.l @(0x1234:16, @(foo:32, r2.w).w), er1
    456 	test_h_gr32	0x3254, er1 ; 73
    457 	mova/w.l @(0x1234:16, @(foo:32, er2.l).w), er1
    458 	test_h_gr32	0x3254, er1 ; 74
    459 
    460 	mova/w.l @(0x1234:16,@foo:16.w),er1        ;015F40B19ABC1234
    461 	test_h_gr32	0x1436, er1 ; 75 (can't test -- points into the woods)
    462 	mova/w.l @(0x1234:16,@foo:32.w),er1        ;015F48B19ABCDEF01234
    463 	test_h_gr32	0x1436, er1 ; 76 (can't test -- points into the woods)
    464 
    465 t02j:
    466 	mov.l	#foo, er2
    467 	mova/l.l @(0x1234:16,@er2.b),er1           ;017F02C11234
    468 	test_h_gr32	0x1238, er1 ; 77
    469 	mova/l.l @(0x1234:16,@(0x1:2,er2).b),er1    ;017F12C11234
    470 	test_h_gr32	0x1238, er1 ; 82
    471 	mova/l.l @(0x1234:16,@er2+.b),er1          ;017F82C11234
    472 	test_h_gr32	0x1238, er1 ; 78
    473 	test_h_gr32	foo+1, er2
    474 	mova/l.l @(0x1234:16,@-er2.b),er1          ;017FB2C11234
    475 	test_h_gr32	0x1238, er1 ; 79
    476 	test_h_gr32	foo, er2
    477 	mova/l.l @(0x1234:16,@+er2.b),er1          ;017F92C11234
    478 	test_h_gr32	0x1238, er1 ; 80
    479 	test_h_gr32	foo+1, er2
    480 	mova/l.l @(0x1234:16,@er2-.b),er1          ;017FA2C11234
    481 	test_h_gr32	0x1238, er1 ; 81
    482 	test_h_gr32	foo, er2
    483 
    484 t02k:
    485 	mov.l	#4, er2
    486 	mova/l.l @(0x1234:16, @(foo:16, er2).b), er1
    487 	test_h_gr32	0x1274, er1 ; 83
    488 	mova/l.l @(0x1234:16, @(foo:16, r2L.b).b), er1
    489 	test_h_gr32	0x1274, er1 ; 85
    490 	mova/l.l @(0x1234:16, @(foo:16, r2.w).b), er1
    491 	test_h_gr32	0x1274, er1 ; 86
    492 	mova/l.l @(0x1234:16, @(foo:16, er2.l).b), er1
    493 	test_h_gr32	0x1274, er1 ; 87
    494 
    495 	mov.l	#4, er2
    496 	mova/l.l @(0x1234:16, @(foo:32, er2).b), er1
    497 	test_h_gr32	0x1274, er1 ; 84
    498 	mova/l.l @(0x1234:16, @(foo:32, r2L.b).b), er1
    499 	test_h_gr32	0x1274, er1 ; 88
    500 	mova/l.l @(0x1234:16, @(foo:32, r2.w).b), er1
    501 	test_h_gr32	0x1274, er1 ; 89
    502 	mova/l.l @(0x1234:16, @(foo:32, er2.l).b), er1
    503 	test_h_gr32	0x1274, er1 ; 90
    504 
    505 	mova/l.l @(0x1234:16,@foo:16.b),er1        ;017F40C19ABC1234
    506 	test_h_gr32	0x1238, er1 ; 91 (can't test -- points into the woods)
    507 	mova/l.l @(0x1234:16,@foo:32.b),er1        ;017F48C19ABCDEF01234
    508 	test_h_gr32	0x1238, er1 ; 92 (can't test -- points into the woods)
    509 
    510 t02l:
    511 	mov.l	#foo, er2
    512 	mova/l.l @(0x1234:16,@er2.w),er1           ;015F02D11234
    513 	test_h_gr32	0x1638, er1 ; 93
    514 	mova/l.l @(0x1234:16,@(0x2:2,er2).w),er1   ;015F12D11234
    515 	test_h_gr32	0x1638, er1 ; 98
    516 	mova/l.l @(0x1234:16,@er2+.w),er1          ;015F82D11234
    517 	test_h_gr32	0x1638, er1 ; 94
    518 	test_h_gr32	foo+2, er2
    519 	mova/l.l @(0x1234:16,@-er2.w),er1          ;015FB2D11234
    520 	test_h_gr32	0x1638, er1 ; 97
    521 	test_h_gr32	foo, er2
    522 	mova/l.l @(0x1234:16,@+er2.w),er1          ;015F92D11234
    523 	test_h_gr32	0x1638, er1 ; 96
    524 	test_h_gr32	foo+2, er2
    525 	mova/l.l @(0x1234:16,@er2-.w),er1          ;015FA2D11234
    526 	test_h_gr32	0x1638, er1 ; 95
    527 	test_h_gr32	foo, er2
    528 
    529 t02o:
    530 	mov.l	#4, er2
    531 	mova/l.l @(0x1234:16, @(foo:16, er2).w), er1
    532 	test_h_gr32	0x5274, er1 ; 99
    533 	shar.l	er2
    534 	mova/l.l @(0x1234:16, @(foo:16, r2L.b).w), er1
    535 	test_h_gr32	0x5274, er1 ; 101
    536 	mova/l.l @(0x1234:16, @(foo:16, r2.w).w), er1
    537 	test_h_gr32	0x5274, er1 ; 102
    538 	mova/l.l @(0x1234:16, @(foo:16, er2.l).w), er1
    539 	test_h_gr32	0x5274, er1 ; 103
    540 
    541 	mov.l	#4, er2
    542 	mova/l.l @(0x1234:16, @(foo:32, er2).w), er1
    543 	test_h_gr32	0x5274, er1 ; 100
    544 	shar.l	er2
    545 	mova/l.l @(0x1234:16, @(foo:32, r2L.b).w), er1
    546 	test_h_gr32	0x5274, er1 ; 104
    547 	mova/l.l @(0x1234:16, @(foo:32, r2.w).w), er1
    548 	test_h_gr32	0x5274, er1 ; 105
    549 	mova/l.l @(0x1234:16, @(foo:32, er2.l).w), er1
    550 	test_h_gr32	0x5274, er1 ; 106
    551 
    552 	mova/l.l @(0x1234:16,@foo:16.w),er1        ;015F40D19ABC1234
    553 	test_h_gr32	0x1638, er1 ; 107 (can't test -- points into the woods)
    554 	mova/l.l @(0x1234:16,@foo:32.w),er1        ;015F48D19ABCDEF01234
    555 	test_h_gr32	0x1638, er1 ; 108 (can't test -- points into the woods)
    556 
    557 t02p:
    558 	mov.l	#foo, er2
    559 	mova/b.l @(0x12345678:32,@er2.b),er1              ;017F028912345678
    560 	test_h_gr32	0x12345679, er1	; 109
    561 	mova/b.l @(0x12345678:32,@(0x1:2,er2).b),er1      ;017F128912345678
    562 	test_h_gr32	0x12345679, er1	; 114
    563 	mova/b.l @(0x12345678:32,@er2+.b),er1             ;017F828912345678
    564 	test_h_gr32	0x12345679, er1	; 110
    565 	test_h_gr32	foo+1, er2
    566 	mova/b.l @(0x12345678:32,@-er2.b),er1             ;017FB28912345678
    567 	test_h_gr32	0x12345679, er1	; 113
    568 	test_h_gr32	foo, er2
    569 	mova/b.l @(0x12345678:32,@+er2.b),er1             ;017F928912345678
    570 	test_h_gr32	0x12345679, er1	; 112
    571 	test_h_gr32	foo+1, er2
    572 	mova/b.l @(0x12345678:32,@er2-.b),er1             ;017FA28912345678
    573 	test_h_gr32	0x12345679, er1	; 111
    574 	test_h_gr32	foo, er2
    575 
    576 t02q:
    577 	mov.l	#4, er2
    578 	mova/b.l @(0x12345678:32, @(foo:16, er2).b), er1
    579 	test_h_gr32	0x12345688, er1 ; 115
    580 	mova/b.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
    581 	test_h_gr32	0x12345688, er1 ; 117
    582 	mova/b.l @(0x12345678:32, @(foo:16, r2.w).b), er1
    583 	test_h_gr32	0x12345688, er1 ; 118
    584 	mova/b.l @(0x12345678:32, @(foo:16, er2.l).b), er1
    585 	test_h_gr32	0x12345688, er1 ; 119
    586 
    587 	mov.l	#4, er2
    588 	mova/b.l @(0x12345678:32, @(foo:32, er2).b), er1
    589 	test_h_gr32	0x12345688, er1 ; 116
    590 	mova/b.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
    591 	test_h_gr32	0x12345688, er1 ; 120
    592 	mova/b.l @(0x12345678:32, @(foo:32, r2.w).b), er1
    593 	test_h_gr32	0x12345688, er1 ; 121
    594 	mova/b.l @(0x12345678:32, @(foo:32, er2.l).b), er1
    595 	test_h_gr32	0x12345688, er1 ; 122
    596 
    597 	mova/b.l @(0x12345678:32,@foo:16.b),er1
    598 	test_h_gr32	0x12345679, er1 ; 123
    599 	mova/b.l @(0x12345678:32,@foo:32.b),er1
    600 	test_h_gr32	0x12345679, er1 ; 124
    601 
    602 t02r:
    603 	mov.l	#foo, er2
    604 	mova/b.l @(0x12345678:32,@er2.w),er1              ;015F029912345678
    605 	test_h_gr32	0x12345779, er1	; 125
    606 	mova/b.l @(0x12345678:32,@(0x2:2,er2).w),er1      ;015F129912345678
    607 	test_h_gr32	0x12345779, er1 ; 130
    608 	mova/b.l @(0x12345678:32,@er2+.w),er1             ;015F829912345678
    609 	test_h_gr32	0x12345779, er1	; 126
    610 	test_h_gr32	foo+2, er2
    611 	mova/b.l @(0x12345678:32,@-er2.w),er1             ;015FB29912345678
    612 	test_h_gr32	0x12345779, er1	; 129
    613 	test_h_gr32	foo, er2
    614 	mova/b.l @(0x12345678:32,@+er2.w),er1             ;015F929912345678
    615 	test_h_gr32	0x12345779, er1 ; 128
    616 	test_h_gr32	foo+2, er2
    617 	mova/b.l @(0x12345678:32,@er2-.w),er1             ;015FA29912345678
    618 	test_h_gr32	0x12345779, er1 ; 127
    619 	test_h_gr32	foo, er2
    620 
    621 	mov.l	#4, er2
    622 	mova/b.l @(0x12345678:32, @(foo:16, er2).w), er1
    623 	test_h_gr32	0x12346688, er1 ; 131
    624 	shar.l	er2
    625 	mova/b.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
    626 	test_h_gr32	0x12346688, er1 ; 133
    627 	mova/b.l @(0x12345678:32, @(foo:16, r2.w).w), er1
    628 	test_h_gr32	0x12346688, er1 ; 134
    629 	mova/b.l @(0x12345678:32, @(foo:16, er2.l).w), er1
    630 	test_h_gr32	0x12346688, er1 ; 135
    631 
    632 	mov.l	#4, er2
    633 	mova/b.l @(0x12345678:32, @(foo:32, er2).w), er1
    634 	test_h_gr32	0x12346688, er1 ; 132
    635 	shar.l	er2
    636 	mova/b.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
    637 	test_h_gr32	0x12346688, er1 ; 136
    638 	mova/b.l @(0x12345678:32, @(foo:32, r2.w).w), er1
    639 	test_h_gr32	0x12346688, er1 ; 137
    640 	mova/b.l @(0x12345678:32, @(foo:32, er2.l).w), er1
    641 	test_h_gr32	0x12346688, er1 ; 138
    642 
    643 	mova/b.l @(0x12345678:32,@foo:16.w),er1
    644 	test_h_gr32	0x12345779, er1 ; 139
    645 	mova/b.l @(0x12345678:32,@foo:32.w),er1
    646 	test_h_gr32	0x12345779, er1 ; 140
    647 
    648 t02s:
    649 	mov.l	#foo, er2
    650 	mova/w.l @(0x12345678:32,@er2.b),er1           ;017F02A912345678
    651 	test_h_gr32	0x1234567a, er1	; 141
    652 	mova/w.l @(0x12345678:32,@(0x1:2,er2).b),er1   ;017F12A912345678
    653 	test_h_gr32	0x1234567a, er1	; 146
    654 	mova/w.l @(0x12345678:32,@er2+.b),er1          ;017F82A912345678
    655 	test_h_gr32	0x1234567a, er1	; 142
    656 	test_h_gr32	foo+1, er2
    657 	mova/w.l @(0x12345678:32,@-er2.b),er1          ;017FB2A912345678
    658 	test_h_gr32	0x1234567a, er1	; 145
    659 	test_h_gr32	foo, er2
    660 	mova/w.l @(0x12345678:32,@+er2.b),er1          ;017F92A912345678
    661 	test_h_gr32	0x1234567a, er1	; 144
    662 	test_h_gr32	foo+1, er2
    663 	mova/w.l @(0x12345678:32,@er2-.b),er1          ;017FA2A912345678
    664 	test_h_gr32	0x1234567a, er1	; 143
    665 	test_h_gr32	foo, er2
    666 
    667 	mov.l	#4, er2
    668 	mova/w.l @(0x12345678:32, @(foo:16, er2).b), er1
    669 	test_h_gr32	0x12345698, er1 ; 147
    670 	mova/w.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
    671 	test_h_gr32	0x12345698, er1 ; 149
    672 	mova/w.l @(0x12345678:32, @(foo:16, r2.w).b), er1
    673 	test_h_gr32	0x12345698, er1 ; 150
    674 	mova/w.l @(0x12345678:32, @(foo:16, er2.l).b), er1
    675 	test_h_gr32	0x12345698, er1 ; 151
    676 
    677 	mov.l	#4, er2
    678 	mova/w.l @(0x12345678:32, @(foo:32, er2).b), er1
    679 	test_h_gr32	0x12345698, er1 ; 148
    680 	mova/w.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
    681 	test_h_gr32	0x12345698, er1 ; 152
    682 	mova/w.l @(0x12345678:32, @(foo:32, r2.w).b), er1
    683 	test_h_gr32	0x12345698, er1 ; 153
    684 	mova/w.l @(0x12345678:32, @(foo:32, er2.l).b), er1
    685 	test_h_gr32	0x12345698, er1 ; 154
    686 
    687 	mova/w.l @(0x12345678:32,@foo:16.b),er1
    688 	test_h_gr32	0x1234567a, er1 ; 155
    689 	mova/w.l @(0x12345678:32,@foo:32.b),er1
    690 	test_h_gr32	0x1234567a, er1 ; 156
    691 
    692 t02t:
    693 	mov.l	#foo, er2
    694 	mova/w.l @(0x12345678:32,@er2.w),er1           ;015F02B912345678
    695 	test_h_gr32	0x1234587a, er1	; 157
    696 	mova/w.l @(0x12345678:32,@(0x2:2,er2).w),er1   ;015F12B912345678
    697 	test_h_gr32	0x1234587a, er1	; 162
    698 	mova/w.l @(0x12345678:32,@er2+.w),er1          ;015F82B912345678
    699 	test_h_gr32	0x1234587a, er1	; 158
    700 	test_h_gr32	foo+2, er2
    701 	mova/w.l @(0x12345678:32,@-er2.w),er1          ;015FB2B912345678
    702 	test_h_gr32	0x1234587a, er1	; 161
    703 	test_h_gr32	foo, er2
    704 	mova/w.l @(0x12345678:32,@+er2.w),er1          ;015F92B912345678
    705 	test_h_gr32	0x1234587a, er1	; 160
    706 	test_h_gr32	foo+2, er2
    707 	mova/w.l @(0x12345678:32,@er2-.w),er1          ;015FA2B912345678
    708 	test_h_gr32	0x1234587a, er1	; 159
    709 	test_h_gr32	foo, er2
    710 
    711 	mov.l	#4, er2
    712 	mova/w.l @(0x12345678:32, @(foo:16, er2).w), er1
    713 	test_h_gr32	0x12347698, er1 ; 163
    714 	shar.l	er2
    715 	mova/w.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
    716 	test_h_gr32	0x12347698, er1 ; 165
    717 	mova/w.l @(0x12345678:32, @(foo:16, r2.w).w), er1
    718 	test_h_gr32	0x12347698, er1 ; 166
    719 	mova/w.l @(0x12345678:32, @(foo:16, er2.l).w), er1
    720 	test_h_gr32	0x12347698, er1 ; 167
    721 
    722 	mov.l	#4, er2
    723 	mova/w.l @(0x12345678:32, @(foo:32, er2).w), er1
    724 	test_h_gr32	0x12347698, er1 ; 164
    725 	shar.l	er2
    726 	mova/w.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
    727 	test_h_gr32	0x12347698, er1 ; 168
    728 	mova/w.l @(0x12345678:32, @(foo:32, r2.w).w), er1
    729 	test_h_gr32	0x12347698, er1 ; 169
    730 	mova/w.l @(0x12345678:32, @(foo:32, er2.l).w), er1
    731 	test_h_gr32	0x12347698, er1 ; 170
    732 
    733 	mova/w.l @(0x12345678:32,@foo:16.w),er1
    734 	test_h_gr32	0x1234587a, er1 ; 171
    735 	mova/w.l @(0x12345678:32,@foo:32.w),er1
    736 	test_h_gr32	0x1234587a, er1 ; 172
    737 
    738 t02u:
    739 	mov.l	#foo, er2
    740 	mova/l.l @(0x12345678:32,@er2.b),er1           ;017F02C912345678
    741 	test_h_gr32	0x1234567c, er1	; 173
    742 	mova/l.l @(0x12345678:32,@(0x1:2,er2).b),er1   ;017F12C912345678
    743 	test_h_gr32	0x1234567c, er1	; 178
    744 	mova/l.l @(0x12345678:32,@er2+.b),er1          ;017F82C912345678
    745 	test_h_gr32	0x1234567c, er1	; 174
    746 	test_h_gr32	foo+1, er2
    747 	mova/l.l @(0x12345678:32,@-er2.b),er1          ;017FB2C912345678
    748 	test_h_gr32	0x1234567c, er1	; 177
    749 	test_h_gr32	foo, er2
    750 	mova/l.l @(0x12345678:32,@+er2.b),er1          ;017F92C912345678
    751 	test_h_gr32	0x1234567c, er1	; 176
    752 	test_h_gr32	foo+1, er2
    753 	mova/l.l @(0x12345678:32,@er2-.b),er1          ;017FA2C912345678
    754 	test_h_gr32	0x1234567c, er1	; 175
    755 	test_h_gr32	foo, er2
    756 
    757 	mov.l	#4, er2
    758 	mova/l.l @(0x12345678:32, @(foo:16, er2).b), er1
    759 	test_h_gr32	0x123456b8, er1 ; 179
    760 	mova/l.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
    761 	test_h_gr32	0x123456b8, er1 ; 181
    762 	mova/l.l @(0x12345678:32, @(foo:16, r2.w).b), er1
    763 	test_h_gr32	0x123456b8, er1 ; 182
    764 	mova/l.l @(0x12345678:32, @(foo:16, er2.l).b), er1
    765 	test_h_gr32	0x123456b8, er1 ; 183
    766 
    767 	mov.l	#4, er2
    768 	mova/l.l @(0x12345678:32, @(foo:32, er2).b), er1
    769 	test_h_gr32	0x123456b8, er1 ; 180
    770 	mova/l.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
    771 	test_h_gr32	0x123456b8, er1 ; 184
    772 	mova/l.l @(0x12345678:32, @(foo:32, r2.w).b), er1
    773 	test_h_gr32	0x123456b8, er1 ; 185
    774 	mova/l.l @(0x12345678:32, @(foo:32, er2.l).b), er1
    775 	test_h_gr32	0x123456b8, er1 ; 186
    776 
    777 	mova/l.l @(0x12345678:32,@foo:16.b),er1
    778 	test_h_gr32	0x1234567c, er1 ; 187
    779 	mova/l.l @(0x12345678:32,@foo:32.b),er1
    780 	test_h_gr32	0x1234567c, er1 ; 188
    781 
    782 t02v:
    783 	mov.l	#foo, er2
    784 	mova/l.l @(0x12345678:32,@er2.w),er1           ;015F02D912345678
    785 	test_h_gr32	0x12345a7c, er1	; 189
    786 	mova/l.l @(0x12345678:32,@(0x2:2,er2).w),er1   ;015F12D912345678
    787 	test_h_gr32	0x12345a7c, er1	; 194
    788 	mova/l.l @(0x12345678:32,@er2+.w),er1          ;015F82D912345678
    789 	test_h_gr32	0x12345a7c, er1	; 190
    790 	test_h_gr32	foo+2, er2
    791 	mova/l.l @(0x12345678:32,@-er2.w),er1          ;015FB2D912345678
    792 	test_h_gr32	0x12345a7c, er1	; 193
    793 	test_h_gr32	foo, er2
    794 	mova/l.l @(0x12345678:32,@+er2.w),er1          ;015F92D912345678
    795 	test_h_gr32	0x12345a7c, er1	; 192
    796 	test_h_gr32	foo+2, er2
    797 	mova/l.l @(0x12345678:32,@er2-.w),er1          ;015FA2D912345678
    798 	test_h_gr32	0x12345a7c, er1	; 191
    799 	test_h_gr32	foo, er2
    800 
    801 	mov.l	#4, er2
    802 	mova/l.l @(0x12345678:32, @(foo:16, er2).w), er1
    803 	test_h_gr32	0x123496b8, er1 ; 195
    804 	shar.l	er2
    805 	mova/l.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
    806 	test_h_gr32	0x123496b8, er1 ; 197
    807 	mova/l.l @(0x12345678:32, @(foo:16, r2.w).w), er1
    808 	test_h_gr32	0x123496b8, er1 ; 198
    809 	mova/l.l @(0x12345678:32, @(foo:16, er2.l).w), er1
    810 	test_h_gr32	0x123496b8, er1 ; 199
    811 
    812 	mov.l	#4, er2
    813 	mova/l.l @(0x12345678:32, @(foo:32, er2).w), er1
    814 	test_h_gr32	0x123496b8, er1 ; 195
    815 	shar.l	er2
    816 	mova/l.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
    817 	test_h_gr32	0x123496b8, er1 ; 197
    818 	mova/l.l @(0x12345678:32, @(foo:32, r2.w).w), er1
    819 	test_h_gr32	0x123496b8, er1 ; 198
    820 	mova/l.l @(0x12345678:32, @(foo:32, er2.l).w), er1
    821 	test_h_gr32	0x123496b8, er1 ; 199
    822 
    823 	mova/l.l @(0x12345678:32,@foo:16.w),er1
    824 	test_h_gr32	0x12345a7c, er1 ; 203
    825 	mova/l.l @(0x12345678:32,@foo:32.w),er1
    826 	test_h_gr32	0x12345a7c, er1 ; 204
    827 
    828 	test_gr_a5a5	0
    829 	test_h_gr32	2, er2
    830 	test_h_gr32	0x01010101, er3
    831 	test_gr_a5a5	4
    832 	test_gr_a5a5	5
    833 	test_gr_a5a5	6
    834 	test_gr_a5a5	7
    835 
    836 	pass
    837 
    838 	exit 0
    839