mirror of https://github.com/inolen/redream.git
98 lines
1.4 KiB
ArmAsm
98 lines
1.4 KiB
ArmAsm
test_movwlpc:
|
|
# MOV.W @(disp8,PC),Rn
|
|
mov.w .L1, r2
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r2 -12
|
|
|
|
test_movws:
|
|
# REGISTER_IN r0 -12
|
|
mov.l .L2, r1
|
|
mov.w r0, @r1
|
|
mov.w @r1, r2
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r2 -12
|
|
|
|
test_movwm:
|
|
mov.l .L2, r0
|
|
mov.w @r0+, r1
|
|
add r1, r1
|
|
mov.w r1, @-r0
|
|
mov.w @r0, r2
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r2 -24
|
|
|
|
test_movwm_rnisrm:
|
|
# test that reg is decremented
|
|
mov.l .L2, r0
|
|
add #2, r0
|
|
mov r0, r1
|
|
mov r1, r2
|
|
mov.w r1, @-r1
|
|
sub r1, r0
|
|
# test that reg was stored to .L2 before it was decremented
|
|
mov.w .L1, r1
|
|
mov #0xff, r3
|
|
shlr16 r3
|
|
and r3, r2
|
|
cmp/eq r2, r1
|
|
movt r1
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r0 2
|
|
# REGISTER_OUT r1 1
|
|
|
|
test_movwp:
|
|
mov.l .L2, r0
|
|
mov.w @r0+, r0
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r0, -12
|
|
|
|
test_movws0d:
|
|
mov.l .L2, r1
|
|
mov.w @(2, r1), r0
|
|
add r0, r0
|
|
mov.w r0, @(2, r1)
|
|
# overwrite r0 to make sure the next instruction is actually working
|
|
mov #99, r0
|
|
mov.w @(2, r1), r0
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r0 -26
|
|
|
|
test_movws0:
|
|
mov.l .L2, r0
|
|
mov #2, r1
|
|
mov.w @(r0, r1), r2
|
|
add r2, r2
|
|
mov.w r2, @(r0, r1)
|
|
mov.w @(r0, r1), r3
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r3 -26
|
|
|
|
test_movws0g:
|
|
mov.l .L2, r0
|
|
ldc r0, GBR
|
|
mov.w @(2, GBR), r0
|
|
add r0, r0
|
|
mov.w r0, @(2, GBR)
|
|
# overwrite r0 to make sure the next instruction is actually working
|
|
mov #99, r0
|
|
mov.w @(2, GBR), r0
|
|
rts
|
|
nop
|
|
# REGISTER_OUT r0 -26
|
|
|
|
.align 4
|
|
.L1:
|
|
.short -12
|
|
.short -13
|
|
|
|
.align 4
|
|
.L2:
|
|
.long .L1
|