* allinsn.exp: Add new tests.
* bandor.s: New file. * bandornot.s: New file. * bclr.s: New file. * bld.s: New file. * bldnot.s: New file. * bset.s: New file. * bst.s: New file. * bxor.s: New file. * clip.s: New file. * div.s: New file. * fail.s: New file, make sure fail works. * fsca.s: New file. * fsrra.s: New file. * mov.s: New file. * mulr.s: New file. * pass.s: New file, make sure pass works. * pushpop.s: New file. * resbank.s: New file. * testutils.inc (bf8k, bt8k, assertmem): New macros.
This commit is contained in:
parent
ae0a84af70
commit
b4f0ee661e
|
@ -1,3 +1,27 @@
|
||||||
|
2004-09-08 Michael Snyder <msnyder@redhat.com>
|
||||||
|
|
||||||
|
Commited by Corinna Vinschen <vinschen@redhat.com>
|
||||||
|
* allinsn.exp: Add new tests.
|
||||||
|
* bandor.s: New file.
|
||||||
|
* bandornot.s: New file.
|
||||||
|
* bclr.s: New file.
|
||||||
|
* bld.s: New file.
|
||||||
|
* bldnot.s: New file.
|
||||||
|
* bset.s: New file.
|
||||||
|
* bst.s: New file.
|
||||||
|
* bxor.s: New file.
|
||||||
|
* clip.s: New file.
|
||||||
|
* div.s: New file.
|
||||||
|
* fail.s: New file, make sure fail works.
|
||||||
|
* fsca.s: New file.
|
||||||
|
* fsrra.s: New file.
|
||||||
|
* mov.s: New file.
|
||||||
|
* mulr.s: New file.
|
||||||
|
* pass.s: New file, make sure pass works.
|
||||||
|
* pushpop.s: New file.
|
||||||
|
* resbank.s: New file.
|
||||||
|
* testutils.inc (bf8k, bt8k, assertmem): New macros.
|
||||||
|
|
||||||
2004-02-12 Michael Snyder <msnyder@redhat.com>
|
2004-02-12 Michael Snyder <msnyder@redhat.com>
|
||||||
|
|
||||||
* and.s, movi.s, sett.s: New files.
|
* and.s, movi.s, sett.s: New files.
|
||||||
|
|
|
@ -5,6 +5,16 @@ set all "sh shdsp"
|
||||||
if [istarget sh-*elf] {
|
if [istarget sh-*elf] {
|
||||||
run_sim_test add.s $all
|
run_sim_test add.s $all
|
||||||
run_sim_test and.s $all
|
run_sim_test and.s $all
|
||||||
|
run_sim_test bandor.s sh
|
||||||
|
run_sim_test bandornot.s sh
|
||||||
|
run_sim_test bclr.s sh
|
||||||
|
run_sim_test bld.s sh
|
||||||
|
run_sim_test bldnot.s sh
|
||||||
|
run_sim_test bset.s sh
|
||||||
|
run_sim_test bst.s sh
|
||||||
|
run_sim_test bxor.s sh
|
||||||
|
run_sim_test clip.s sh
|
||||||
|
run_sim_test div.s sh
|
||||||
run_sim_test dmxy.s shdsp
|
run_sim_test dmxy.s shdsp
|
||||||
run_sim_test fabs.s sh
|
run_sim_test fabs.s sh
|
||||||
run_sim_test fadd.s sh
|
run_sim_test fadd.s sh
|
||||||
|
@ -32,10 +42,12 @@ if [istarget sh-*elf] {
|
||||||
run_sim_test loop.s shdsp
|
run_sim_test loop.s shdsp
|
||||||
run_sim_test macl.s sh
|
run_sim_test macl.s sh
|
||||||
run_sim_test macw.s sh
|
run_sim_test macw.s sh
|
||||||
|
run_sim_test mov.s $all
|
||||||
run_sim_test movi.s $all
|
run_sim_test movi.s $all
|
||||||
run_sim_test movli.s $all
|
run_sim_test movli.s $all
|
||||||
run_sim_test movua.s $all
|
run_sim_test movua.s $all
|
||||||
run_sim_test movxy.s shdsp
|
run_sim_test movxy.s shdsp
|
||||||
|
run_sim_test mulr.s sh
|
||||||
run_sim_test pabs.s shdsp
|
run_sim_test pabs.s shdsp
|
||||||
run_sim_test paddc.s shdsp
|
run_sim_test paddc.s shdsp
|
||||||
run_sim_test padd.s shdsp
|
run_sim_test padd.s shdsp
|
||||||
|
@ -52,7 +64,9 @@ if [istarget sh-*elf] {
|
||||||
run_sim_test pshlr.s shdsp
|
run_sim_test pshlr.s shdsp
|
||||||
run_sim_test psub.s shdsp
|
run_sim_test psub.s shdsp
|
||||||
run_sim_test pswap.s shdsp
|
run_sim_test pswap.s shdsp
|
||||||
run_sim_test sett.s $all
|
run_sim_test pushpop.s sh
|
||||||
|
run_sim_test resbank.s sh
|
||||||
|
run_sim_test sett.s sh
|
||||||
run_sim_test shll.s $all
|
run_sim_test shll.s $all
|
||||||
run_sim_test shll2.s $all
|
run_sim_test shll2.s $all
|
||||||
run_sim_test shll8.s $all
|
run_sim_test shll8.s $all
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
# sh testcase for band, bor
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0xa5a5a5a5
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bandor_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
# Make sure T is true to start.
|
||||||
|
sett
|
||||||
|
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
band.b #0, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #1, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #2, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #3, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bor.b #4, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #5, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #6, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #7, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
band.b #0, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #1, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #2, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #3, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bra .L2
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
bor.b #4, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #5, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #6, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #7, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
band.b #0, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #1, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #2, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #3, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bor.b #4, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #5, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #6, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #7, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
band.b #0, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #1, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #2, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #3, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bor.b #4, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #5, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bor.b #6, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
band.b #7, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
# sh testcase for bandnot, bornot
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0xa5a5a5a5
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bandor_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
# Make sure T is true to start.
|
||||||
|
sett
|
||||||
|
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bandnot.b #0, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #1, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #2, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #3, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bornot.b #4, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #5, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #6, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #7, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bandnot.b #0, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #1, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #2, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #3, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bra .L2
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
bornot.b #4, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #5, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #6, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #7, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bandnot.b #0, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #1, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #2, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #3, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bornot.b #4, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #5, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #6, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #7, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bandnot.b #0, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #1, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #2, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #3, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bornot.b #4, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #5, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bornot.b #6, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bandnot.b #7, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
# sh testcase for bclr
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0xffffffff
|
||||||
|
_y: .long 0x55555555
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bclr_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bclr.b #0, @(3, r1)
|
||||||
|
assertmem _x, 0xfffffffe
|
||||||
|
bclr.b #1, @(3, r1)
|
||||||
|
assertmem _x, 0xfffffffc
|
||||||
|
bclr.b #2, @(3, r1)
|
||||||
|
assertmem _x, 0xfffffff8
|
||||||
|
bclr.b #3, @(3, r1)
|
||||||
|
assertmem _x, 0xfffffff0
|
||||||
|
|
||||||
|
bclr.b #4, @(3, r1)
|
||||||
|
assertmem _x, 0xffffffe0
|
||||||
|
bclr.b #5, @(3, r1)
|
||||||
|
assertmem _x, 0xffffffc0
|
||||||
|
bclr.b #6, @(3, r1)
|
||||||
|
assertmem _x, 0xffffff80
|
||||||
|
bclr.b #7, @(3, r1)
|
||||||
|
assertmem _x, 0xffffff00
|
||||||
|
|
||||||
|
bclr.b #0, @(2, r1)
|
||||||
|
assertmem _x, 0xfffffe00
|
||||||
|
bclr.b #1, @(2, r1)
|
||||||
|
assertmem _x, 0xfffffc00
|
||||||
|
bclr.b #2, @(2, r1)
|
||||||
|
assertmem _x, 0xfffff800
|
||||||
|
bclr.b #3, @(2, r1)
|
||||||
|
assertmem _x, 0xfffff000
|
||||||
|
|
||||||
|
bra .L2
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
y: .long _y
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
bclr.b #4, @(2, r1)
|
||||||
|
assertmem _x, 0xffffe000
|
||||||
|
bclr.b #5, @(2, r1)
|
||||||
|
assertmem _x, 0xffffc000
|
||||||
|
bclr.b #6, @(2, r1)
|
||||||
|
assertmem _x, 0xffff8000
|
||||||
|
bclr.b #7, @(2, r1)
|
||||||
|
assertmem _x, 0xffff0000
|
||||||
|
|
||||||
|
bclr.b #0, @(1, r1)
|
||||||
|
assertmem _x, 0xfffe0000
|
||||||
|
bclr.b #1, @(1, r1)
|
||||||
|
assertmem _x, 0xfffc0000
|
||||||
|
bclr.b #2, @(1, r1)
|
||||||
|
assertmem _x, 0xfff80000
|
||||||
|
bclr.b #3, @(1, r1)
|
||||||
|
assertmem _x, 0xfff00000
|
||||||
|
|
||||||
|
bclr.b #4, @(1, r1)
|
||||||
|
assertmem _x, 0xffe00000
|
||||||
|
bclr.b #5, @(1, r1)
|
||||||
|
assertmem _x, 0xffc00000
|
||||||
|
bclr.b #6, @(1, r1)
|
||||||
|
assertmem _x, 0xff800000
|
||||||
|
bclr.b #7, @(1, r1)
|
||||||
|
assertmem _x, 0xff000000
|
||||||
|
|
||||||
|
bclr.b #0, @(0, r1)
|
||||||
|
assertmem _x, 0xfe000000
|
||||||
|
bclr.b #1, @(0, r1)
|
||||||
|
assertmem _x, 0xfc000000
|
||||||
|
bclr.b #2, @(0, r1)
|
||||||
|
assertmem _x, 0xf8000000
|
||||||
|
bclr.b #3, @(0, r1)
|
||||||
|
assertmem _x, 0xf0000000
|
||||||
|
|
||||||
|
bclr.b #4, @(0, r1)
|
||||||
|
assertmem _x, 0xe0000000
|
||||||
|
bclr.b #5, @(0, r1)
|
||||||
|
assertmem _x, 0xc0000000
|
||||||
|
bclr.b #6, @(0, r1)
|
||||||
|
assertmem _x, 0x80000000
|
||||||
|
bclr.b #7, @(0, r1)
|
||||||
|
assertmem _x, 0x00000000
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
bclr_imm_reg:
|
||||||
|
set_greg 0xff, r1
|
||||||
|
bclr #0, r1
|
||||||
|
assertreg 0xfe, r1
|
||||||
|
bclr #1, r1
|
||||||
|
assertreg 0xfc, r1
|
||||||
|
bclr #2, r1
|
||||||
|
assertreg 0xf8, r1
|
||||||
|
bclr #3, r1
|
||||||
|
assertreg 0xf0, r1
|
||||||
|
|
||||||
|
bclr #4, r1
|
||||||
|
assertreg 0xe0, r1
|
||||||
|
bclr #5, r1
|
||||||
|
assertreg 0xc0, r1
|
||||||
|
bclr #6, r1
|
||||||
|
assertreg 0x80, r1
|
||||||
|
bclr #7, r1
|
||||||
|
assertreg 0x00, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
# sh testcase for bld
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0xa5a5a5a5
|
||||||
|
_y: .long 0x55555555
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bld_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bld.b #0, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #1, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #2, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #3, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bld.b #4, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #5, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #6, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #7, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bld.b #0, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #1, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #2, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #3, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bld.b #4, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #5, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #6, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #7, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bld.b #0, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #1, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #2, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #3, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bld.b #4, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #5, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #6, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #7, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bld.b #0, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #1, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #2, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #3, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bld.b #4, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #5, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bld.b #6, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bld.b #7, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
bld_imm_reg:
|
||||||
|
set_greg 0xa5a5a5a5, r1
|
||||||
|
bld #0, r1
|
||||||
|
bf8k mfail
|
||||||
|
bld #1, r1
|
||||||
|
bt8k mfail
|
||||||
|
bld #2, r1
|
||||||
|
bf8k mfail
|
||||||
|
bld #3, r1
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bld #4, r1
|
||||||
|
bt8k mfail
|
||||||
|
bld #5, r1
|
||||||
|
bf8k mfail
|
||||||
|
bld #6, r1
|
||||||
|
bt8k mfail
|
||||||
|
bld #7, r1
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
test_grs_a5a5
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
y: .long _y
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
# sh testcase for bldnot
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0xa5a5a5a5
|
||||||
|
_y: .long 0x55555555
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bldnot_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bldnot.b #0, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #1, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #2, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #3, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bldnot.b #4, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #5, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #6, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #7, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bldnot.b #0, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #1, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #2, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #3, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bldnot.b #4, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #5, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #6, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #7, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bldnot.b #0, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #1, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #2, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #3, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bldnot.b #4, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #5, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #6, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #7, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
bldnot.b #0, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #1, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #2, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #3, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bldnot.b #4, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #5, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bldnot.b #6, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bldnot.b #7, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
set_greg 0xa5a5a5a5, r1
|
||||||
|
|
||||||
|
test_grs_a5a5
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
y: .long _y
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
# sh testcase for bset
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0
|
||||||
|
_y: .long 0x55555555
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bset_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bset.b #0, @(3, r1)
|
||||||
|
assertmem _x, 0x1
|
||||||
|
bset.b #1, @(3, r1)
|
||||||
|
assertmem _x, 0x3
|
||||||
|
bset.b #2, @(3, r1)
|
||||||
|
assertmem _x, 0x7
|
||||||
|
bset.b #3, @(3, r1)
|
||||||
|
assertmem _x, 0xf
|
||||||
|
|
||||||
|
bset.b #4, @(3, r1)
|
||||||
|
assertmem _x, 0x1f
|
||||||
|
bset.b #5, @(3, r1)
|
||||||
|
assertmem _x, 0x3f
|
||||||
|
bset.b #6, @(3, r1)
|
||||||
|
assertmem _x, 0x7f
|
||||||
|
bset.b #7, @(3, r1)
|
||||||
|
assertmem _x, 0xff
|
||||||
|
|
||||||
|
bset.b #0, @(2, r1)
|
||||||
|
assertmem _x, 0x1ff
|
||||||
|
bset.b #1, @(2, r1)
|
||||||
|
assertmem _x, 0x3ff
|
||||||
|
bset.b #2, @(2, r1)
|
||||||
|
assertmem _x, 0x7ff
|
||||||
|
bset.b #3, @(2, r1)
|
||||||
|
assertmem _x, 0xfff
|
||||||
|
|
||||||
|
bra .L2
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
y: .long _y
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
bset.b #4, @(2, r1)
|
||||||
|
assertmem _x, 0x1fff
|
||||||
|
bset.b #5, @(2, r1)
|
||||||
|
assertmem _x, 0x3fff
|
||||||
|
bset.b #6, @(2, r1)
|
||||||
|
assertmem _x, 0x7fff
|
||||||
|
bset.b #7, @(2, r1)
|
||||||
|
assertmem _x, 0xffff
|
||||||
|
|
||||||
|
bset.b #0, @(1, r1)
|
||||||
|
assertmem _x, 0x1ffff
|
||||||
|
bset.b #1, @(1, r1)
|
||||||
|
assertmem _x, 0x3ffff
|
||||||
|
bset.b #2, @(1, r1)
|
||||||
|
assertmem _x, 0x7ffff
|
||||||
|
bset.b #3, @(1, r1)
|
||||||
|
assertmem _x, 0xfffff
|
||||||
|
|
||||||
|
bset.b #4, @(1, r1)
|
||||||
|
assertmem _x, 0x1fffff
|
||||||
|
bset.b #5, @(1, r1)
|
||||||
|
assertmem _x, 0x3fffff
|
||||||
|
bset.b #6, @(1, r1)
|
||||||
|
assertmem _x, 0x7fffff
|
||||||
|
bset.b #7, @(1, r1)
|
||||||
|
assertmem _x, 0xffffff
|
||||||
|
|
||||||
|
bset.b #0, @(0, r1)
|
||||||
|
assertmem _x, 0x1ffffff
|
||||||
|
bset.b #1, @(0, r1)
|
||||||
|
assertmem _x, 0x3ffffff
|
||||||
|
bset.b #2, @(0, r1)
|
||||||
|
assertmem _x, 0x7ffffff
|
||||||
|
bset.b #3, @(0, r1)
|
||||||
|
assertmem _x, 0xfffffff
|
||||||
|
|
||||||
|
bset.b #4, @(0, r1)
|
||||||
|
assertmem _x, 0x1fffffff
|
||||||
|
bset.b #5, @(0, r1)
|
||||||
|
assertmem _x, 0x3fffffff
|
||||||
|
bset.b #6, @(0, r1)
|
||||||
|
assertmem _x, 0x7fffffff
|
||||||
|
bset.b #7, @(0, r1)
|
||||||
|
assertmem _x, 0xffffffff
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
bset_imm_reg:
|
||||||
|
set_greg 0, r1
|
||||||
|
bset #0, r1
|
||||||
|
assertreg 0x1, r1
|
||||||
|
bset #1, r1
|
||||||
|
assertreg 0x3, r1
|
||||||
|
bset #2, r1
|
||||||
|
assertreg 0x7, r1
|
||||||
|
bset #3, r1
|
||||||
|
assertreg 0xf, r1
|
||||||
|
|
||||||
|
bset #4, r1
|
||||||
|
assertreg 0x1f, r1
|
||||||
|
bset #5, r1
|
||||||
|
assertreg 0x3f, r1
|
||||||
|
bset #6, r1
|
||||||
|
assertreg 0x7f, r1
|
||||||
|
bset #7, r1
|
||||||
|
assertreg 0xff, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
# sh testcase for bst
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0
|
||||||
|
_y: .long 0x55555555
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bst_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
# Make sure T is true to start.
|
||||||
|
sett
|
||||||
|
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bst.b #0, @(3, r1)
|
||||||
|
assertmem _x, 0x1
|
||||||
|
bst.b #1, @(3, r1)
|
||||||
|
assertmem _x, 0x3
|
||||||
|
bst.b #2, @(3, r1)
|
||||||
|
assertmem _x, 0x7
|
||||||
|
bst.b #3, @(3, r1)
|
||||||
|
assertmem _x, 0xf
|
||||||
|
|
||||||
|
bst.b #4, @(3, r1)
|
||||||
|
assertmem _x, 0x1f
|
||||||
|
bst.b #5, @(3, r1)
|
||||||
|
assertmem _x, 0x3f
|
||||||
|
bst.b #6, @(3, r1)
|
||||||
|
assertmem _x, 0x7f
|
||||||
|
bst.b #7, @(3, r1)
|
||||||
|
assertmem _x, 0xff
|
||||||
|
|
||||||
|
bst.b #0, @(2, r1)
|
||||||
|
assertmem _x, 0x1ff
|
||||||
|
bst.b #1, @(2, r1)
|
||||||
|
assertmem _x, 0x3ff
|
||||||
|
bst.b #2, @(2, r1)
|
||||||
|
assertmem _x, 0x7ff
|
||||||
|
bst.b #3, @(2, r1)
|
||||||
|
assertmem _x, 0xfff
|
||||||
|
|
||||||
|
bra .L2
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
y: .long _y
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
bst.b #4, @(2, r1)
|
||||||
|
assertmem _x, 0x1fff
|
||||||
|
bst.b #5, @(2, r1)
|
||||||
|
assertmem _x, 0x3fff
|
||||||
|
bst.b #6, @(2, r1)
|
||||||
|
assertmem _x, 0x7fff
|
||||||
|
bst.b #7, @(2, r1)
|
||||||
|
assertmem _x, 0xffff
|
||||||
|
|
||||||
|
bst.b #0, @(1, r1)
|
||||||
|
assertmem _x, 0x1ffff
|
||||||
|
bst.b #1, @(1, r1)
|
||||||
|
assertmem _x, 0x3ffff
|
||||||
|
bst.b #2, @(1, r1)
|
||||||
|
assertmem _x, 0x7ffff
|
||||||
|
bst.b #3, @(1, r1)
|
||||||
|
assertmem _x, 0xfffff
|
||||||
|
|
||||||
|
bst.b #4, @(1, r1)
|
||||||
|
assertmem _x, 0x1fffff
|
||||||
|
bst.b #5, @(1, r1)
|
||||||
|
assertmem _x, 0x3fffff
|
||||||
|
bst.b #6, @(1, r1)
|
||||||
|
assertmem _x, 0x7fffff
|
||||||
|
bst.b #7, @(1, r1)
|
||||||
|
assertmem _x, 0xffffff
|
||||||
|
|
||||||
|
bst.b #0, @(0, r1)
|
||||||
|
assertmem _x, 0x1ffffff
|
||||||
|
bst.b #1, @(0, r1)
|
||||||
|
assertmem _x, 0x3ffffff
|
||||||
|
bst.b #2, @(0, r1)
|
||||||
|
assertmem _x, 0x7ffffff
|
||||||
|
bst.b #3, @(0, r1)
|
||||||
|
assertmem _x, 0xfffffff
|
||||||
|
|
||||||
|
bst.b #4, @(0, r1)
|
||||||
|
assertmem _x, 0x1fffffff
|
||||||
|
bst.b #5, @(0, r1)
|
||||||
|
assertmem _x, 0x3fffffff
|
||||||
|
bst.b #6, @(0, r1)
|
||||||
|
assertmem _x, 0x7fffffff
|
||||||
|
bst.b #7, @(0, r1)
|
||||||
|
assertmem _x, 0xffffffff
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
bst_imm_reg:
|
||||||
|
set_greg 0, r1
|
||||||
|
bst #0, r1
|
||||||
|
assertreg 0x1, r1
|
||||||
|
bst #1, r1
|
||||||
|
assertreg 0x3, r1
|
||||||
|
bst #2, r1
|
||||||
|
assertreg 0x7, r1
|
||||||
|
bst #3, r1
|
||||||
|
assertreg 0xf, r1
|
||||||
|
|
||||||
|
bst #4, r1
|
||||||
|
assertreg 0x1f, r1
|
||||||
|
bst #5, r1
|
||||||
|
assertreg 0x3f, r1
|
||||||
|
bst #6, r1
|
||||||
|
assertreg 0x7f, r1
|
||||||
|
bst #7, r1
|
||||||
|
assertreg 0xff, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
# sh testcase for bxor
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_x: .long 0xa5a5a5a5
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
bxor_b_imm_disp12_reg:
|
||||||
|
set_grs_a5a5
|
||||||
|
# Make sure T is true to start.
|
||||||
|
sett
|
||||||
|
|
||||||
|
mov.l x, r1
|
||||||
|
|
||||||
|
bxor.b #0, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #1, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #2, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #3, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bxor.b #4, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #5, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #6, @(3, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #7, @(3, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bxor.b #0, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #1, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #2, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #3, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bra .L2
|
||||||
|
nop
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
x: .long _x
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
bxor.b #4, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #5, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #6, @(2, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #7, @(2, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bxor.b #0, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #1, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #2, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #3, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bxor.b #4, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #5, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #6, @(1, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #7, @(1, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bxor.b #0, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #1, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #2, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #3, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
bxor.b #4, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
bxor.b #5, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #6, @(0, r1)
|
||||||
|
bt8k mfail
|
||||||
|
bxor.b #7, @(0, r1)
|
||||||
|
bf8k mfail
|
||||||
|
|
||||||
|
assertreg _x, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
# sh testcase for clips, clipu
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
clips_b:
|
||||||
|
set_grs_a5a5
|
||||||
|
clips.b r1
|
||||||
|
test_gr0_a5a5
|
||||||
|
assertreg 0xffffff80 r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
clipu_b:
|
||||||
|
set_grs_a5a5
|
||||||
|
clipu.b r1
|
||||||
|
test_gr0_a5a5
|
||||||
|
assertreg 0xff r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
clips_w:
|
||||||
|
set_grs_a5a5
|
||||||
|
clips.w r1
|
||||||
|
test_gr0_a5a5
|
||||||
|
assertreg 0xffff8000 r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
clipu_w:
|
||||||
|
set_grs_a5a5
|
||||||
|
clipu.w r1
|
||||||
|
test_gr0_a5a5
|
||||||
|
assertreg 0xffff r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
|
@ -0,0 +1,199 @@
|
||||||
|
# sh testcase for divs and divu
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
divs_1: ! divide by one
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #1, r0
|
||||||
|
divs r0, r1
|
||||||
|
assertreg0 1
|
||||||
|
test_gr_a5a5 r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divs_2: ! divide by two
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #2, r0
|
||||||
|
divs r0, r1
|
||||||
|
assertreg0 2
|
||||||
|
assertreg 0xd2d2d2d3, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divs_3: ! divide by three
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #3, r0
|
||||||
|
divs r0, r1
|
||||||
|
assertreg0 3
|
||||||
|
assertreg 0xe1e1e1e2, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divs_0: ! divide by zero
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #0, r0
|
||||||
|
divs r0, r1
|
||||||
|
assertreg0 0
|
||||||
|
assertreg 0x7fffffff, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divs_o: ! divide signed overflow
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #16, r0
|
||||||
|
movi20 #0x8000, r1
|
||||||
|
shad r0, r1 ! r1 == 0x80000000
|
||||||
|
mov #-1, r0
|
||||||
|
divs r0, r1
|
||||||
|
assertreg0 -1
|
||||||
|
assertreg 0x7fffffff, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
|
||||||
|
divu_1: ! divide by one, unsigned
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #1, r0
|
||||||
|
divu r0, r1
|
||||||
|
assertreg0 1
|
||||||
|
test_gr_a5a5 r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divu_2: ! divide by two, unsigned
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #2, r0
|
||||||
|
divu r0, r1
|
||||||
|
assertreg0 2
|
||||||
|
assertreg 0x52d2d2d2, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divu_3: ! divide by three, unsigned
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #3, r0
|
||||||
|
divu r0, r1
|
||||||
|
assertreg0 3
|
||||||
|
assertreg 0x37373737, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
divu_0: ! divide by zero, unsigned
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #0, r0
|
||||||
|
divu r0, r1
|
||||||
|
assertreg0 0
|
||||||
|
assertreg 0xffffffff, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# sh testcase, fail
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
fail
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
# sh testcase for fsca
|
||||||
|
# mach: sh
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
fsca:
|
||||||
|
set_grs_a5a5
|
||||||
|
set_fprs_a5a5
|
||||||
|
# Start with angle zero
|
||||||
|
mov.l zero, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 0, fr2
|
||||||
|
assert_fpreg_i 1, fr3
|
||||||
|
|
||||||
|
mov.l plus_90, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 1, fr2
|
||||||
|
assert_fpreg_i 0, fr3
|
||||||
|
|
||||||
|
mov.l plus_180, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 0, fr2
|
||||||
|
assert_fpreg_i -1, fr3
|
||||||
|
|
||||||
|
mov.l plus_270, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i -1, fr2
|
||||||
|
assert_fpreg_i 0, fr3
|
||||||
|
|
||||||
|
mov.l plus_360, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 0, fr2
|
||||||
|
assert_fpreg_i 1, fr3
|
||||||
|
|
||||||
|
mov.l minus_90, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i -1, fr2
|
||||||
|
assert_fpreg_i 0, fr3
|
||||||
|
|
||||||
|
mov.l minus_180, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 0, fr2
|
||||||
|
assert_fpreg_i -1, fr3
|
||||||
|
|
||||||
|
mov.l minus_270, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 1, fr2
|
||||||
|
assert_fpreg_i 0, fr3
|
||||||
|
|
||||||
|
mov.l minus_360, r0
|
||||||
|
lds r0, fpul
|
||||||
|
fsca fpul, dr2
|
||||||
|
assert_fpreg_i 0, fr2
|
||||||
|
assert_fpreg_i 1, fr3
|
||||||
|
|
||||||
|
assertreg0 0xffff0000
|
||||||
|
set_greg 0xa5a5a5a5, r0
|
||||||
|
test_grs_a5a5
|
||||||
|
test_fpr_a5a5 fr0
|
||||||
|
test_fpr_a5a5 fr1
|
||||||
|
test_fpr_a5a5 fr4
|
||||||
|
test_fpr_a5a5 fr5
|
||||||
|
test_fpr_a5a5 fr6
|
||||||
|
test_fpr_a5a5 fr7
|
||||||
|
test_fpr_a5a5 fr8
|
||||||
|
test_fpr_a5a5 fr9
|
||||||
|
test_fpr_a5a5 fr10
|
||||||
|
test_fpr_a5a5 fr11
|
||||||
|
test_fpr_a5a5 fr12
|
||||||
|
test_fpr_a5a5 fr13
|
||||||
|
test_fpr_a5a5 fr14
|
||||||
|
test_fpr_a5a5 fr15
|
||||||
|
pass
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
zero: .long 0
|
||||||
|
one_bitty: .long 1
|
||||||
|
plus_90: .long 0x04000
|
||||||
|
plus_180: .long 0x08000
|
||||||
|
plus_270: .long 0x0c000
|
||||||
|
plus_360: .long 0x10000
|
||||||
|
minus_90: .long 0xffffc000
|
||||||
|
minus_180: .long 0xffff8000
|
||||||
|
minus_270: .long 0xffff4000
|
||||||
|
minus_360: .long 0xffff0000
|
||||||
|
minus_1_bitty: .long 0xffffffff
|
|
@ -0,0 +1,62 @@
|
||||||
|
# sh testcase for fsrra
|
||||||
|
# mach: sh
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
fsrra_single:
|
||||||
|
set_grs_a5a5
|
||||||
|
set_fprs_a5a5
|
||||||
|
# 1/sqrt(0.0) = +infinity.
|
||||||
|
fldi0 fr0
|
||||||
|
fsrra fr0
|
||||||
|
assert_fpreg_x 0x7f800000, fr0
|
||||||
|
|
||||||
|
# 1/sqrt(1.0) = 1.0.
|
||||||
|
fldi1 fr0
|
||||||
|
fsrra fr0
|
||||||
|
assert_fpreg_i 1, fr0
|
||||||
|
|
||||||
|
# 1/sqrt(4.0) = 1/2.0
|
||||||
|
fldi1 fr0
|
||||||
|
# Double it.
|
||||||
|
fadd fr0, fr0
|
||||||
|
# Double it again.
|
||||||
|
fadd fr0, fr0
|
||||||
|
fsrra fr0
|
||||||
|
fldi1 fr2
|
||||||
|
# Double it.
|
||||||
|
fadd fr2, fr2
|
||||||
|
fldi1 fr1
|
||||||
|
# Divide
|
||||||
|
fdiv fr2, fr1
|
||||||
|
fcmp/eq fr0, fr1
|
||||||
|
bt .L2
|
||||||
|
fail
|
||||||
|
.L2:
|
||||||
|
# Double-check (pun intended)
|
||||||
|
fadd fr0, fr0
|
||||||
|
assert_fpreg_i 1, fr0
|
||||||
|
fadd fr1, fr1
|
||||||
|
assert_fpreg_i 1, fr1
|
||||||
|
|
||||||
|
# And make sure the rest of the regs are un-affected.
|
||||||
|
assert_fpreg_i 2, fr2
|
||||||
|
test_fpr_a5a5 fr3
|
||||||
|
test_fpr_a5a5 fr4
|
||||||
|
test_fpr_a5a5 fr5
|
||||||
|
test_fpr_a5a5 fr6
|
||||||
|
test_fpr_a5a5 fr7
|
||||||
|
test_fpr_a5a5 fr8
|
||||||
|
test_fpr_a5a5 fr9
|
||||||
|
test_fpr_a5a5 fr10
|
||||||
|
test_fpr_a5a5 fr11
|
||||||
|
test_fpr_a5a5 fr12
|
||||||
|
test_fpr_a5a5 fr13
|
||||||
|
test_fpr_a5a5 fr14
|
||||||
|
test_fpr_a5a5 fr15
|
||||||
|
test_grs_a5a5
|
||||||
|
|
||||||
|
pass
|
||||||
|
exit 0
|
|
@ -0,0 +1,118 @@
|
||||||
|
# sh testcase for all mov.[bwl] instructions
|
||||||
|
# mach: sh
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_lsrc: .long 0x55555555
|
||||||
|
_wsrc: .long 0x55550000
|
||||||
|
_bsrc: .long 0x55000000
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
_ldst: .long 0
|
||||||
|
_wdst: .long 0
|
||||||
|
_bdst: .long 0
|
||||||
|
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
movb_disp12_reg: # Test 8-bit @(disp12,gr) -> gr
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l bsrc, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
mov.b @(444,r1), r2
|
||||||
|
|
||||||
|
assertreg _bsrc-444, r1
|
||||||
|
assertreg 0x55, r2
|
||||||
|
|
||||||
|
movb_reg_disp12: # Test 8-bit gr -> @(disp12,gr)
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l bdst, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
mov.b r2, @(444,r1)
|
||||||
|
|
||||||
|
assertreg _bdst-444, r1
|
||||||
|
assertmem _bdst, 0xa5000000
|
||||||
|
|
||||||
|
movw_disp12_reg: # Test 16-bit @(disp12,gr) -> gr
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l wsrc, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
mov.w @(444,r1), r2
|
||||||
|
|
||||||
|
assertreg _wsrc-444, r1
|
||||||
|
assertreg 0x5555, r2
|
||||||
|
|
||||||
|
movw_reg_disp12: # Test 16-bit gr -> @(disp12,gr)
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l wdst, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
mov.w r2, @(444,r1)
|
||||||
|
|
||||||
|
assertreg _wdst-444, r1
|
||||||
|
assertmem _wdst, 0xa5a50000
|
||||||
|
|
||||||
|
movl_disp12_reg: # Test 32-bit @(disp12,gr) -> gr
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l lsrc, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
mov.l @(444,r1), r2
|
||||||
|
|
||||||
|
assertreg _lsrc-444, r1
|
||||||
|
assertreg 0x55555555, r2
|
||||||
|
|
||||||
|
movl_reg_disp12: # Test 32-bit gr -> @(disp12,gr)
|
||||||
|
set_grs_a5a5
|
||||||
|
mov.l ldst, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
add #-111, r1
|
||||||
|
mov.l r2, @(444,r1)
|
||||||
|
|
||||||
|
assertreg _ldst-444, r1
|
||||||
|
assertmem _ldst, 0xa5a5a5a5
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
lsrc: .long _lsrc
|
||||||
|
wsrc: .long _wsrc
|
||||||
|
bsrc: .long _bsrc
|
||||||
|
|
||||||
|
ldst: .long _ldst
|
||||||
|
wdst: .long _wdst
|
||||||
|
bdst: .long _bdst
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# sh testcase for mov <#imm>
|
# sh testcase for all mov <#imm> instructions
|
||||||
# mach: all
|
# mach: sh
|
||||||
# as(sh): -defsym sim_cpu=0
|
# as(sh): -defsym sim_cpu=0
|
||||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
|
||||||
|
|
||||||
.include "testutils.inc"
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
@ -28,6 +27,48 @@ mov_i_reg: # Test <imm8>
|
||||||
test_gr_a5a5 r13
|
test_gr_a5a5 r13
|
||||||
test_gr_a5a5 r14
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
movi20_reg: # Test <imm20>
|
||||||
|
set_grs_a5a5
|
||||||
|
movi20 #-0x55555,r1
|
||||||
|
|
||||||
|
assertreg 0xfffaaaab, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
movi20s_reg: # Test <imm20> << 8
|
||||||
|
set_grs_a5a5
|
||||||
|
movi20s #-0x5555500,r1
|
||||||
|
|
||||||
|
assertreg 0xfaaaab00, r1
|
||||||
|
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -0,0 +1,162 @@
|
||||||
|
# sh testcase for mulr
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
mulr_1: ! multiply by one
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #1, r0
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 1
|
||||||
|
test_gr_a5a5 r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
mulr_2: ! multiply by two
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #2, r0
|
||||||
|
mov #12, r1
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 2
|
||||||
|
assertreg 24, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
mulr_3: ! multiply five by five
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #5, r0
|
||||||
|
mov #5, r1
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 5
|
||||||
|
assertreg 25, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
|
||||||
|
mulr_4: ! multiply 127 by 127
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #127, r0
|
||||||
|
mov #127, r1
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 127
|
||||||
|
assertreg 0x3f01, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
mulr_5: ! multiply -1 by -1
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #-1, r0
|
||||||
|
mov #-1, r1
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 -1
|
||||||
|
assertreg 1, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
mulr_6: ! multiply 46340 by 46340
|
||||||
|
set_grs_a5a5
|
||||||
|
movi20 #46340, r0
|
||||||
|
movi20 #46340, r1
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 46340
|
||||||
|
assertreg 0x7ffea810, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
mulr_7: ! multiply 7ffff by 7ffff (overflow)
|
||||||
|
set_grs_a5a5
|
||||||
|
movi20 #0x7ffff, r0
|
||||||
|
movi20 #0x7ffff, r1
|
||||||
|
mulr r0, r1
|
||||||
|
assertreg0 0x7ffff
|
||||||
|
assertreg 0xfff00001, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
# sh testcase, pass
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
set_grs_a5a5
|
||||||
|
test_grs_a5a5
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
# sh testcase for push/pop (mov,movml,movmu...) insns.
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
start
|
||||||
|
movml_1:
|
||||||
|
set_greg 0, r0
|
||||||
|
set_greg 1, r1
|
||||||
|
set_greg 2, r2
|
||||||
|
set_greg 3, r3
|
||||||
|
set_greg 4, r4
|
||||||
|
set_greg 5, r5
|
||||||
|
set_greg 6, r6
|
||||||
|
set_greg 7, r7
|
||||||
|
set_greg 8, r8
|
||||||
|
set_greg 9, r9
|
||||||
|
set_greg 10, r10
|
||||||
|
set_greg 11, r11
|
||||||
|
set_greg 12, r12
|
||||||
|
set_greg 13, r13
|
||||||
|
set_greg 14, r14
|
||||||
|
set_sreg 15, pr
|
||||||
|
|
||||||
|
movml.l r15,@-r15
|
||||||
|
|
||||||
|
assertmem stackt-4, 15
|
||||||
|
assertmem stackt-8, 14
|
||||||
|
assertmem stackt-12, 13
|
||||||
|
assertmem stackt-16, 12
|
||||||
|
assertmem stackt-20, 11
|
||||||
|
assertmem stackt-24, 10
|
||||||
|
assertmem stackt-28, 9
|
||||||
|
assertmem stackt-32, 8
|
||||||
|
assertmem stackt-36, 7
|
||||||
|
assertmem stackt-40, 6
|
||||||
|
assertmem stackt-44, 5
|
||||||
|
assertmem stackt-48, 4
|
||||||
|
assertmem stackt-52, 3
|
||||||
|
assertmem stackt-56, 2
|
||||||
|
assertmem stackt-60, 1
|
||||||
|
assertmem stackt-64, 0
|
||||||
|
|
||||||
|
assertreg0 0
|
||||||
|
assertreg 1, r1
|
||||||
|
assertreg 2, r2
|
||||||
|
assertreg 3, r3
|
||||||
|
assertreg 4, r4
|
||||||
|
assertreg 5, r5
|
||||||
|
assertreg 6, r6
|
||||||
|
assertreg 7, r7
|
||||||
|
assertreg 8, r8
|
||||||
|
assertreg 9, r9
|
||||||
|
assertreg 10, r10
|
||||||
|
assertreg 11, r11
|
||||||
|
assertreg 12, r12
|
||||||
|
assertreg 13, r13
|
||||||
|
assertreg 14, r14
|
||||||
|
mov r15, r0
|
||||||
|
assertreg0 stackt-64
|
||||||
|
|
||||||
|
movml_2:
|
||||||
|
set_grs_a5a5
|
||||||
|
movml.l @r15+, r15
|
||||||
|
assert_sreg 15, pr
|
||||||
|
assertreg0 0
|
||||||
|
assertreg 1, r1
|
||||||
|
assertreg 2, r2
|
||||||
|
assertreg 3, r3
|
||||||
|
assertreg 4, r4
|
||||||
|
assertreg 5, r5
|
||||||
|
assertreg 6, r6
|
||||||
|
assertreg 7, r7
|
||||||
|
assertreg 8, r8
|
||||||
|
assertreg 9, r9
|
||||||
|
assertreg 10, r10
|
||||||
|
assertreg 11, r11
|
||||||
|
assertreg 12, r12
|
||||||
|
assertreg 13, r13
|
||||||
|
assertreg 14, r14
|
||||||
|
mov r15, r0
|
||||||
|
assertreg0 stackt
|
||||||
|
|
||||||
|
movmu_1:
|
||||||
|
set_grs_a5a5
|
||||||
|
add #1,r14
|
||||||
|
add #2,r13
|
||||||
|
add #3,r12
|
||||||
|
set_sreg 0xa5a5,pr
|
||||||
|
|
||||||
|
movmu.l r12,@-r15
|
||||||
|
|
||||||
|
assert_sreg 0xa5a5,pr
|
||||||
|
assertreg 0xa5a5a5a6, r14
|
||||||
|
assertreg 0xa5a5a5a7, r13
|
||||||
|
assertreg 0xa5a5a5a8, r12
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r1
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
mov r15, r0
|
||||||
|
assertreg stackt-16, r0
|
||||||
|
|
||||||
|
assertmem stackt-4, 0xa5a5
|
||||||
|
assertmem stackt-8, 0xa5a5a5a6
|
||||||
|
assertmem stackt-12, 0xa5a5a5a7
|
||||||
|
assertmem stackt-16, 0xa5a5a5a8
|
||||||
|
|
||||||
|
movmu_2:
|
||||||
|
set_grs_a5a5
|
||||||
|
movmu.l @r15+,r12
|
||||||
|
|
||||||
|
assert_sreg 0xa5a5, pr
|
||||||
|
assertreg 0xa5a5a5a6, r14
|
||||||
|
assertreg 0xa5a5a5a7, r13
|
||||||
|
assertreg 0xa5a5a5a8, r12
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r1
|
||||||
|
test_gr_a5a5 r0
|
||||||
|
mov r15, r0
|
||||||
|
assertreg stackt, r0
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,268 @@
|
||||||
|
# sh testcase for ldbank stbank resbank
|
||||||
|
# mach: all
|
||||||
|
# as(sh): -defsym sim_cpu=0
|
||||||
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||||
|
|
||||||
|
.include "testutils.inc"
|
||||||
|
|
||||||
|
.macro SEND reg bankno regno
|
||||||
|
set_greg ((\bankno << 7) + (\regno << 2)), \reg
|
||||||
|
.endm
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
stbank_1:
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #0, r0
|
||||||
|
SEND r1, 0, 0
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #1, r0
|
||||||
|
SEND r1, 0, 1
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #2, r0
|
||||||
|
SEND r1, 0, 2
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #3, r0
|
||||||
|
SEND r1, 0, 3
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #4, r0
|
||||||
|
SEND r1, 0, 4
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #5, r0
|
||||||
|
SEND r1, 0, 5
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #6, r0
|
||||||
|
SEND r1, 0, 6
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #7, r0
|
||||||
|
SEND r1, 0, 7
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #8, r0
|
||||||
|
SEND r1, 0, 8
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #9, r0
|
||||||
|
SEND r1, 0, 9
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #10, r0
|
||||||
|
SEND r1, 0, 10
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #11, r0
|
||||||
|
SEND r1, 0, 11
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #12, r0
|
||||||
|
SEND r1, 0, 12
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #13, r0
|
||||||
|
SEND r1, 0, 13
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #14, r0
|
||||||
|
SEND r1, 0, 14
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #15, r0
|
||||||
|
SEND r1, 0, 15
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #16, r0
|
||||||
|
SEND r1, 0, 16
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #17, r0
|
||||||
|
SEND r1, 0, 17
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #18, r0
|
||||||
|
SEND r1, 0, 18
|
||||||
|
stbank r0, @r1
|
||||||
|
mov #19, r0
|
||||||
|
SEND r1, 0, 19
|
||||||
|
stbank r0, @r1
|
||||||
|
|
||||||
|
assertreg0 19
|
||||||
|
assertreg 19 << 2, r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
ldbank_1:
|
||||||
|
set_grs_a5a5
|
||||||
|
SEND r1, 0, 0
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 0
|
||||||
|
SEND r1, 0, 1
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 1
|
||||||
|
SEND r1, 0, 2
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 2
|
||||||
|
SEND r1, 0, 3
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 3
|
||||||
|
SEND r1, 0, 4
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 4
|
||||||
|
SEND r1, 0, 5
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 5
|
||||||
|
SEND r1, 0, 6
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 6
|
||||||
|
SEND r1, 0, 7
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 7
|
||||||
|
SEND r1, 0, 8
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 8
|
||||||
|
SEND r1, 0, 9
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 9
|
||||||
|
SEND r1, 0, 10
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 10
|
||||||
|
SEND r1, 0, 11
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 11
|
||||||
|
SEND r1, 0, 12
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 12
|
||||||
|
SEND r1, 0, 13
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 13
|
||||||
|
SEND r1, 0, 14
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 14
|
||||||
|
SEND r1, 0, 15
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 15
|
||||||
|
SEND r1, 0, 16
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 16
|
||||||
|
SEND r1, 0, 17
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 17
|
||||||
|
SEND r1, 0, 18
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 18
|
||||||
|
SEND r1, 0, 19
|
||||||
|
ldbank @r1, r0
|
||||||
|
assertreg0 19
|
||||||
|
|
||||||
|
assertreg (19 << 2), r1
|
||||||
|
test_gr_a5a5 r2
|
||||||
|
test_gr_a5a5 r3
|
||||||
|
test_gr_a5a5 r4
|
||||||
|
test_gr_a5a5 r5
|
||||||
|
test_gr_a5a5 r6
|
||||||
|
test_gr_a5a5 r7
|
||||||
|
test_gr_a5a5 r8
|
||||||
|
test_gr_a5a5 r9
|
||||||
|
test_gr_a5a5 r10
|
||||||
|
test_gr_a5a5 r11
|
||||||
|
test_gr_a5a5 r12
|
||||||
|
test_gr_a5a5 r13
|
||||||
|
test_gr_a5a5 r14
|
||||||
|
|
||||||
|
resbank_1:
|
||||||
|
set_grs_a5a5
|
||||||
|
mov #1, r0
|
||||||
|
trapa #13 ! magic trap, sets ibnr
|
||||||
|
|
||||||
|
resbank
|
||||||
|
|
||||||
|
assertreg0 0
|
||||||
|
assertreg 1, r1
|
||||||
|
assertreg 2, r2
|
||||||
|
assertreg 3, r3
|
||||||
|
assertreg 4, r4
|
||||||
|
assertreg 5, r5
|
||||||
|
assertreg 6, r6
|
||||||
|
assertreg 7, r7
|
||||||
|
assertreg 8, r8
|
||||||
|
assertreg 9, r9
|
||||||
|
assertreg 10, r10
|
||||||
|
assertreg 11, r11
|
||||||
|
assertreg 12, r12
|
||||||
|
assertreg 13, r13
|
||||||
|
assertreg 14, r14
|
||||||
|
assert_sreg 15, mach
|
||||||
|
assert_sreg 17, pr
|
||||||
|
assert_creg 18, gbr
|
||||||
|
assert_sreg 19, macl
|
||||||
|
|
||||||
|
resbank_2:
|
||||||
|
set_grs_a5a5
|
||||||
|
movi20 #555, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
add #-1, r0
|
||||||
|
mov.l r0, @-r15
|
||||||
|
|
||||||
|
set_sr_bit (1 << 14) ! set BO
|
||||||
|
|
||||||
|
resbank
|
||||||
|
|
||||||
|
assert_sreg 555, macl
|
||||||
|
assert_sreg 554, mach
|
||||||
|
assert_creg 553, gbr
|
||||||
|
assert_sreg 552, pr
|
||||||
|
assertreg 551, r14
|
||||||
|
assertreg 550, r13
|
||||||
|
assertreg 549, r12
|
||||||
|
assertreg 548, r11
|
||||||
|
assertreg 547, r10
|
||||||
|
assertreg 546, r9
|
||||||
|
assertreg 545, r8
|
||||||
|
assertreg 544, r7
|
||||||
|
assertreg 543, r6
|
||||||
|
assertreg 542, r5
|
||||||
|
assertreg 541, r4
|
||||||
|
assertreg 540, r3
|
||||||
|
assertreg 539, r2
|
||||||
|
assertreg 538, r1
|
||||||
|
assertreg0 537
|
||||||
|
|
||||||
|
mov r15, r0
|
||||||
|
assertreg0 stackt
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
exit 0
|
|
@ -205,6 +205,19 @@ main:
|
||||||
bra mfail
|
bra mfail
|
||||||
nop
|
nop
|
||||||
.endm
|
.endm
|
||||||
|
# Branch if false -- 8k range
|
||||||
|
.macro bf8k label
|
||||||
|
bt .Lbf8k\@
|
||||||
|
bra \label
|
||||||
|
.Lbf8k\@:
|
||||||
|
.endm
|
||||||
|
|
||||||
|
# Branch if true -- 8k range
|
||||||
|
.macro bt8k label
|
||||||
|
bf .Lbt8k\@
|
||||||
|
bra \label
|
||||||
|
.Lbt8k\@:
|
||||||
|
.endm
|
||||||
|
|
||||||
# Assert value of register (any general register but r0)
|
# Assert value of register (any general register but r0)
|
||||||
# Preserves r0 on stack, restores it on success.
|
# Preserves r0 on stack, restores it on success.
|
||||||
|
@ -589,3 +602,16 @@ set_greg\@:
|
||||||
lds r0, dsr
|
lds r0, dsr
|
||||||
pop r0
|
pop r0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro assertmem addr val
|
||||||
|
push r0
|
||||||
|
mov.l .Laddr\@, r0
|
||||||
|
mov.l @r0, r0
|
||||||
|
assertreg0 \val
|
||||||
|
bra .Lam\@
|
||||||
|
nop
|
||||||
|
.align 2
|
||||||
|
.Laddr\@:
|
||||||
|
.long \addr
|
||||||
|
.Lam\@: pop r0
|
||||||
|
.endm
|
||||||
|
|
Loading…
Reference in New Issue