1
0
mirror of https://github.com/j-core/j-core-ice40.git synced 2026-02-27 17:13:20 +00:00
Files
j-core.j-core-ice40/testrom/tests/testmov2.s
2019-03-03 19:35:20 -05:00

430 lines
7.1 KiB
ArmAsm

/**************
Initialization
**************/
.global _testmov2
_testmov2:
sts.l pr, @-r15
mov.l _pfail, r13 !fail address
bra _testgo
nop
_pfail: .long _fail
_testgo:
/********************
MOVA @(disp, PC), R0
********************/
mov #0xaa, r1
mova _mova_target, r0
jmp @r0
nop
jmp @r13
nop
jmp @r13
nop
jmp @r13
nop
_mova_target:
bra _mova_target2
mova _mova_target3, r0
jmp @r13
nop
_mova_target2:
jmp @r0 ! jmp _mova_target4
nop
_mova_target3:
mov #0x55, r1 ! should be skipped
jmp @r13 ! should be skipped
_mova_target4:
nop
mov r1, r0
cmp/eq #0xaa, r0
bt .+6
jmp @r13
nop
/**********************
MOV.L R0, @(disp, GBR)
MOV.W R0, @(disp, GBR)
MOV.B R0, @(disp, GBR)
MOV.L @(disp, GBR), R0
MOV.W @(disp, GBR), R0
MOV.B @(disp, GBR), R0
**********************/
mov.l _pram0, r1
ldc r1, gbr
mov.l _p11223344, r0
mov.l r0, @(4, gbr)
mov.w r0, @(10, gbr)
mov.b r0, @(13, gbr)
mov #0xff, r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
mov.l @(4, r1), r0
mov.l _p11223344, r2
cmp/eq r2, r0
bt .+6
jmp @r13
nop
mov.w @(10, r1), r0
mov.l _p00003344, r2
cmp/eq r2, r0
bt .+6
jmp @r13
nop
mov.b @(13, r1), r0
mov.l _p00000044, r2
cmp/eq r2, r0
bt .+6
jmp @r13
nop
mov.l @(4, gbr), r0
mov.l _p11223344, r2
cmp/eq r2, r0
bt .+6
jmp @r13
nop
mov.w @(10, gbr), r0
mov.l _p00003344, r2
cmp/eq r2, r0
bt .+6
jmp @r13
nop
mov.b @(13, gbr), r0
mov.l _p00000044, r2
cmp/eq r2, r0
bt .+6
jmp @r13
nop
/*********************
MOV.L Rm, @(disp, Rn)
MOV.W R0, @(disp, Rn)
MOV.B R0, @(disp, Rn)
*********************/
mov.l _pram0, r1
mov.l _p11223344, r2
mov.l _pram0_16, r3
mov.l r2, @(16, r1)
mov.l @r3, r0
cmp/eq r2, r0
bt .+6
jmp @r13
nop
mov #0xff, r0
mov.l r0, @(8, r1)
mov.l _p11223344, r0
mov.w r0, @(8, r1)
mov r1, r5
add #8, r5
mov.b @(0, r5), r0
cmp/eq #0x33, r0
bt .+6
jmp @r13
nop
mov.b @(1, r5), r0
cmp/eq #0x44, r0
bt .+6
jmp @r13
nop
mov.w @(2, r5), r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
mov #0xff, r0
mov.l r0, @(4, r1)
mov.l _p11223344, r0
mov.b r0, @(4, r1)
mov r1, r5
add #4, r5
mov.b @(0, r5), r0
cmp/eq #0x44, r0
bt .+6
jmp @r13
nop
mov.b @(1, r5), r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
mov.w @(2, r5), r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
/*********************
MOV.L @(disp, Rm), Rn
MOV.W @(disp, Rm), R0
MOV.B @(disp, Rm), R0
*********************/
mov.l _pram0_16, r1
mov.l _p11223344, r2
mov.l r2, @r1
mov.l _pram0, r3
mov.l @(16, r3), r4
cmp/eq r4, r2
bt .+6
jmp @r13
nop
mov.w @(16, r3), r0
mov.l _p00001122, r4
cmp/eq r4, r0
bt .+6
jmp @r13
nop
add #4, r3
mov.b @(16-4, r3), r0
mov.l _p00000011, r4
cmp/eq r4, r0
bt .+6
jmp @r13
nop
/*******************
MOV.B @(R0, Rm), Rn
*******************/
mov.l _pram0, r1
mov.l _p04050607, r0
mov.l _p11223344, r2
mov.l r0, @(0, r1)
mov.l r2, @(4, r1)
mov.b @(0, r1), r0
mov.l _pram0, r3
mov.b @(r0, r3), r4
mov.l _p00000011, r0
cmp/eq r4, r0
bt .+6
jmp @r13
nop
/*******************
MOV.W @(R0, Rm), Rn
*******************/
mov.l _pram0, r1
mov.l _p04050607, r0
mov.l _p11223344, r2
mov.l r0, @(0, r1)
mov.l r2, @(4, r1)
mov.b @(0, r1), r0
mov.l _pram0, r3
mov.w @(r0, r3), r4
mov.l _p00001122, r0
cmp/eq r4, r0
bt .+6
jmp @r13
nop
/*******************
MOV.L @(R0, Rm), Rn
*******************/
mov.l _pram0, r1
mov.l _p04050607, r0
mov.l _p11223344, r2
mov.l r0, @(0, r1)
mov.l r2, @(4, r1)
mov.b @(0, r1), r0
mov.l _pram0, r3
mov.l @(r0, r3), r4
mov.l _p11223344, r0
cmp/eq r4, r0
bt .+6
jmp @r13
nop
mov.l _pram0, r3
mov.b @(0, r1), r0
mov.l @(r0, r3), r4
mov.l _p11223344, r0
cmp/eq r4, r0
bt .+6
jmp @r13
nop
/*******************
MOV.B Rm, @(R0, Rn)
*******************/
mov.l _pram0, r1
mov.l _pram0_16, r3
mov.l _p00010203, r0
mov.l _p04050607, r2
mov.l r0, @(0, r1)
mov.l r2, @(4, r1)
mov #0xff, r0
mov.l r0, @(4, r3)
mov.l _p01234567, r2
mov.b @(4, r1), r0 ! r0=4
mov.b r2, @(r0, r3)
mov r3, r5
add #4, r5
mov.b @(0, r5), r0
cmp/eq #0x67, r0
bt .+6
jmp @r13
nop
mov.b @(1, r5), r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
mov.w @(2, r5), r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
/*******************
MOV.W Rm, @(R0, Rn)
*******************/
mov.l _pram0, r1
mov.l _pram0_16, r3
mov.l _p00010203, r0
mov.l _p04050607, r2
mov.l r0, @(0, r1)
mov.l r2, @(4, r1)
mov #0xff, r0
mov.l r0, @(4, r3)
mov.l _p01234567, r2
mov.b @(4, r1), r0 ! r0=4
mov.w r2, @(r0, r3)
mov r3, r5
add #4, r5
mov.b @(0, r5), r0
cmp/eq #0x45, r0
bt .+6
jmp @r13
nop
mov.b @(1, r5), r0
cmp/eq #0x67, r0
bt .+6
jmp @r13
nop
mov.w @(2, r5), r0
cmp/eq #0xff, r0
bt .+6
jmp @r13
nop
/***********************
MOV.L Rm, @(R0, Rn)
***********************/
mov.l _pram0, r1
mov.l _pram0_16, r3
mov.l _p00010203, r0
mov.l _p04050607, r2
mov.l r0, @(0, r1)
mov.l r2, @(4, r1)
mov #0xff, r0
mov.l r0, @(4, r3)
mov.l _p01234567, r2
mov.b @(4, r1), r0 ! r0=4
mov.l r2, @(r0, r3)
mov r3, r5
add #4, r5
mov.l @r5, r4
cmp/eq r2, r4
bt .+6
jmp @r13
nop
mov.b @(4, r1), r0 ! r0=4
mov.l _p01234567, r2
mov.l r2, @(r0, r3)
mov r3, r5
add #4, r5
mov.l @r5, r4
cmp/eq r2, r4
bt .+6
jmp @r13
nop
mov.l _p01234567, r2
mov.b @(4, r1), r0 ! r0=4
mov.l _pram0_16, r3
mov.l r2, @(r0, r3)
mov r3, r5
add #4, r5
mov.l @r5, r4
cmp/eq r2, r4
bt .+6
jmp @r13
nop
/**************
Constant Table
**************/
bra _constantend
nop
.align 4
_pram0 : .long _ram0+128
_pram0_4 : .long _ram0+128+4
_pram0_12 : .long _ram0+128+16-4
_pram0_16 : .long _ram0+128+16
_p01234567: .long 0x01234567
_p89abcdef: .long 0x89abcdef
_p55aa55aa: .long 0x55aa55aa
_p11223344: .long 0x11223344
_p00001122: .long 0x00001122
_p00000011: .long 0x00000011
_p00003344: .long 0x00003344
_p00000044: .long 0x00000044
_paabbccdd: .long 0xaabbccdd
_pffffaabb: .long 0xffffaabb
_pffffffaa: .long 0xffffffaa
_pccdd : .long 0xffffccdd
_p000003f3: .long 0x000003f3
_p00010203: .long 0x00010203
_p04050607: .long 0x04050607
_paabb : .word 0xaabb
.align 2
_constantend:
/**************
Congratulations
**************/
_pass:
lds.l @r15+, pr
mov.l _ppass_value, r0
mov.l _ppass_addr, r1
mov.l r0, @r1
rts
nop
.align 4
_ppass_addr: .long 0xABCD0000
_ppass_value: .long 0x00000022
/**********
You Failed
**********/
_fail:
mov.l _pfail_value, r0
mov.l _pfail_value, r1
bra _fail
nop
.align 4
_pfail_value: .long 0x88888888
.end