2004-01-07 Michael Snyder <msnyder@redhat.com>
* dmxy.s, fipr.s, fpchg.s, ldrc.s, loop.s, movli.s, movua.s, movxy.s, pabs.s, pclr.s, prnd.s, psub.s, pswap.s: New files. * allinsn.exp: Add new tests. * testutils.inc (set_sr_bit): Add argument. (set_greg): Add .align directives.
This commit is contained in:
parent
86bc60ebf4
commit
4321271fd4
|
@ -1,3 +1,11 @@
|
|||
2004-01-07 Michael Snyder <msnyder@redhat.com>
|
||||
|
||||
* dmxy.s, fipr.s, fpchg.s, ldrc.s, loop.s, movli.s, movua.s,
|
||||
movxy.s, pabs.s, pclr.s, prnd.s, psub.s, pswap.s: New files.
|
||||
* allinsn.exp: Add new tests.
|
||||
* testutils.inc (set_sr_bit): Add argument.
|
||||
(set_greg): Add .align directives.
|
||||
|
||||
2003-08-11 Michael Snyder <msnyder@redhat.com>
|
||||
|
||||
* macl.s: New file.
|
||||
|
|
|
@ -4,6 +4,7 @@ set all "sh shdsp"
|
|||
|
||||
if [istarget sh-*elf] {
|
||||
run_sim_test add.s $all
|
||||
run_sim_test dmxy.s shdsp
|
||||
run_sim_test fabs.s sh
|
||||
run_sim_test fadd.s sh
|
||||
run_sim_test fcmpeq.s sh
|
||||
|
@ -11,6 +12,7 @@ if [istarget sh-*elf] {
|
|||
run_sim_test fcnvds.s sh
|
||||
run_sim_test fcnvsd.s sh
|
||||
run_sim_test fdiv.s sh
|
||||
run_sim_test fipr.s sh
|
||||
run_sim_test fldi0.s sh
|
||||
run_sim_test fldi1.s sh
|
||||
run_sim_test flds.s sh
|
||||
|
@ -19,24 +21,35 @@ if [istarget sh-*elf] {
|
|||
run_sim_test fmov.s sh
|
||||
run_sim_test fmul.s sh
|
||||
run_sim_test fneg.s sh
|
||||
run_sim_test fpchg.s sh
|
||||
run_sim_test frchg.s sh
|
||||
run_sim_test fschg.s sh
|
||||
run_sim_test fsqrt.s sh
|
||||
run_sim_test fsub.s sh
|
||||
run_sim_test ftrc.s sh
|
||||
run_sim_test ldrc.s shdsp
|
||||
run_sim_test loop.s shdsp
|
||||
run_sim_test macl.s sh
|
||||
run_sim_test macw.s sh
|
||||
run_sim_test movli.s $all
|
||||
run_sim_test movua.s $all
|
||||
run_sim_test movxy.s shdsp
|
||||
run_sim_test pabs.s shdsp
|
||||
run_sim_test paddc.s shdsp
|
||||
run_sim_test padd.s shdsp
|
||||
run_sim_test pand.s shdsp
|
||||
run_sim_test pclr.s shdsp
|
||||
run_sim_test pdec.s shdsp
|
||||
run_sim_test pdmsb.s shdsp
|
||||
run_sim_test pinc.s shdsp
|
||||
run_sim_test pmuls.s shdsp
|
||||
run_sim_test prnd.s shdsp
|
||||
run_sim_test pshai.s shdsp
|
||||
run_sim_test pshar.s shdsp
|
||||
run_sim_test pshli.s shdsp
|
||||
run_sim_test pshlr.s shdsp
|
||||
run_sim_test psub.s shdsp
|
||||
run_sim_test pswap.s shdsp
|
||||
run_sim_test shll.s $all
|
||||
run_sim_test shll2.s $all
|
||||
run_sim_test shll8.s $all
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# sh testcase for setdmx, setdmy, clrdmxy
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
set_grs_a5a5
|
||||
setdmx
|
||||
test_sr_bit_set 0x400
|
||||
test_sr_bit_clear 0x800
|
||||
setdmy
|
||||
test_sr_bit_clear 0x400
|
||||
test_sr_bit_set 0x800
|
||||
clrdmxy
|
||||
test_sr_bit_clear 0x400
|
||||
test_sr_bit_clear 0x800
|
||||
|
||||
test_grs_a5a5
|
||||
pass
|
||||
exit 0
|
|
@ -0,0 +1,137 @@
|
|||
# sh testcase for fipr $fvm, $fvn
|
||||
# mach: sh
|
||||
# as(sh): -defsym sim_cpu=0
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
initv0:
|
||||
set_grs_a5a5
|
||||
set_fprs_a5a5
|
||||
# Load 1 into fr0.
|
||||
fldi1 fr0
|
||||
# Load 2 into fr1.
|
||||
fldi1 fr1
|
||||
fadd fr1, fr1
|
||||
# Load 4 into fr2.
|
||||
fldi1 fr2
|
||||
fadd fr2, fr2
|
||||
fadd fr2, fr2
|
||||
# Load 8 into fr3.
|
||||
fmov fr2, fr3
|
||||
fadd fr2, fr3
|
||||
|
||||
initv8:
|
||||
fldi1 fr8
|
||||
fldi0 fr9
|
||||
fldi1 fr10
|
||||
fldi0 fr11
|
||||
|
||||
fipr fv0, fv8
|
||||
test1:
|
||||
# Result will be in fr11.
|
||||
assert_fpreg_i 1, fr0
|
||||
assert_fpreg_i 2, fr1
|
||||
assert_fpreg_i 4, fr2
|
||||
assert_fpreg_i 8, fr3
|
||||
assert_fpreg_x 0xa5a5a5a5, fr4
|
||||
assert_fpreg_x 0xa5a5a5a5, fr5
|
||||
assert_fpreg_x 0xa5a5a5a5, fr6
|
||||
assert_fpreg_x 0xa5a5a5a5, fr7
|
||||
assert_fpreg_i 1, fr8
|
||||
assert_fpreg_i 0, fr9
|
||||
assert_fpreg_i 1, fr10
|
||||
assert_fpreg_i 5, fr11
|
||||
assert_fpreg_x 0xa5a5a5a5, fr12
|
||||
assert_fpreg_x 0xa5a5a5a5, fr13
|
||||
assert_fpreg_x 0xa5a5a5a5, fr14
|
||||
assert_fpreg_x 0xa5a5a5a5, fr15
|
||||
|
||||
test_grs_a5a5
|
||||
test_infp:
|
||||
# Test positive infinity
|
||||
fldi0 fr11
|
||||
mov.l infp, r0
|
||||
lds r0, fpul
|
||||
fsts fpul, fr0
|
||||
fipr fv0, fv8
|
||||
# fr11 should be plus infinity
|
||||
assert_fpreg_x 0x7f800000, fr11
|
||||
test_infm:
|
||||
# Test negitive infinity
|
||||
fldi0 fr11
|
||||
mov.l infm, r0
|
||||
lds r0, fpul
|
||||
fsts fpul, fr0
|
||||
fipr fv0, fv8
|
||||
# fr11 should be plus infinity
|
||||
assert_fpreg_x 0xff800000, fr11
|
||||
test_qnanp:
|
||||
# Test positive qnan
|
||||
fldi0 fr11
|
||||
mov.l qnanp, r0
|
||||
lds r0, fpul
|
||||
fsts fpul, fr0
|
||||
fipr fv0, fv8
|
||||
# fr11 should be plus qnan (or greater)
|
||||
flds fr11, fpul
|
||||
sts fpul, r1
|
||||
cmp/ge r0, r1
|
||||
bt .L0
|
||||
fail
|
||||
.L0:
|
||||
test_snanp:
|
||||
# Test positive snan
|
||||
fldi0 fr11
|
||||
mov.l snanp, r0
|
||||
lds r0, fpul
|
||||
fsts fpul, fr0
|
||||
fipr fv0, fv8
|
||||
# fr11 should be plus snan (or greater)
|
||||
flds fr11, fpul
|
||||
sts fpul, r1
|
||||
cmp/ge r0, r1
|
||||
bt .L1
|
||||
fail
|
||||
.L1:
|
||||
.if 0
|
||||
# Handling of nan and inf not implemented yet.
|
||||
test_qnanm:
|
||||
# Test negantive qnan
|
||||
fldi0 fr11
|
||||
mov.l qnanm, r0
|
||||
lds r0, fpul
|
||||
fsts fpul, fr0
|
||||
fipr fv0, fv8
|
||||
# fr11 should be minus qnan (or less)
|
||||
flds fr11, fpul
|
||||
sts fpul, r1
|
||||
cmp/ge r1, r0
|
||||
bt .L2
|
||||
fail
|
||||
.L2:
|
||||
test_snanm:
|
||||
# Test negative snan
|
||||
fldi0 fr11
|
||||
mov.l snanm, r0
|
||||
lds r0, fpul
|
||||
fsts fpul, fr0
|
||||
fipr fv0, fv8
|
||||
# fr11 should be minus snan (or less)
|
||||
flds fr11, fpul
|
||||
sts fpul, r1
|
||||
cmp/ge r1, r0
|
||||
bt .L3
|
||||
fail
|
||||
.L3:
|
||||
.endif
|
||||
pass
|
||||
exit 0
|
||||
|
||||
.align 2
|
||||
qnanp: .long 0x7f800001
|
||||
qnanm: .long 0xff800001
|
||||
snanp: .long 0x7fc00000
|
||||
snanm: .long 0xffc00000
|
||||
infp: .long 0x7f800000
|
||||
infm: .long 0xff800000
|
|
@ -0,0 +1,30 @@
|
|||
# sh testcase for fpchg
|
||||
# mach: sh
|
||||
# as(sh): -defsym sim_cpu=0
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
set_grs_a5a5
|
||||
set_fprs_a5a5
|
||||
sts fpscr, r0
|
||||
assertreg0 0
|
||||
fpchg
|
||||
sts fpscr, r0
|
||||
assertreg0 0x80000
|
||||
fpchg
|
||||
sts fpscr, r0
|
||||
assertreg0 0
|
||||
fpchg
|
||||
sts fpscr, r0
|
||||
assertreg0 0x80000
|
||||
fpchg
|
||||
sts fpscr, r0
|
||||
assertreg0 0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
test_fprs_a5a5
|
||||
|
||||
pass
|
||||
exit 0
|
|
@ -0,0 +1,118 @@
|
|||
# sh testcase for ldrc, strc
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
|
||||
setrc_imm:
|
||||
set_grs_a5a5
|
||||
# Test setrc
|
||||
#
|
||||
ldrs lstart
|
||||
ldre lend
|
||||
setrc #0xff
|
||||
get_sr r1
|
||||
shlr16 r1
|
||||
set_greg 0xfff, r0
|
||||
and r0, r1
|
||||
assertreg 0xff, r1
|
||||
|
||||
stc rs, r0 ! rs unchanged
|
||||
assertreg0 lstart
|
||||
stc re, r0 ! re unchanged
|
||||
assertreg0 lend
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
|
||||
test_grs_a5a5
|
||||
|
||||
setrc_reg:
|
||||
set_grs_a5a5
|
||||
# Test setrc
|
||||
#
|
||||
ldrs lstart
|
||||
ldre lend
|
||||
set_greg 0xfff, r0
|
||||
setrc r0
|
||||
get_sr r1
|
||||
shlr16 r1
|
||||
set_greg 0xfff, r0
|
||||
and r0, r1
|
||||
assertreg 0xfff, r1
|
||||
|
||||
stc rs, r0 ! rs unchanged
|
||||
assertreg0 lstart
|
||||
stc re, r0 ! re unchanged
|
||||
assertreg0 lend
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
|
||||
test_grs_a5a5
|
||||
|
||||
bra ldrc_imm
|
||||
|
||||
.global lstart
|
||||
.align 2
|
||||
lstart: nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.global lend
|
||||
.align 2
|
||||
lend: nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
ldrc_imm:
|
||||
set_grs_a5a5
|
||||
# Test ldrc
|
||||
setrc #0x0 ! zero rc
|
||||
ldrc #0xa5
|
||||
get_sr r1
|
||||
shlr16 r1
|
||||
set_greg 0xfff, r0
|
||||
and r0, r1
|
||||
assertreg 0xa5, r1
|
||||
stc rs, r0 ! rs unchanged
|
||||
assertreg0 lstart
|
||||
stc re, r0
|
||||
assertreg0 lend+1 ! bit 0 set in re
|
||||
|
||||
# fix up re for next test
|
||||
dt r0 ! Ugh! No DEC insn!
|
||||
ldc r0, re
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
|
||||
test_grs_a5a5
|
||||
|
||||
ldrc_reg:
|
||||
set_grs_a5a5
|
||||
# Test ldrc
|
||||
setrc #0x0 ! zero rc
|
||||
set_greg 0xa5a, r0
|
||||
ldrc r0
|
||||
get_sr r1
|
||||
shlr16 r1
|
||||
set_greg 0xfff, r0
|
||||
and r0, r1
|
||||
assertreg 0xa5a, r1
|
||||
stc rs, r0 ! rs unchanged
|
||||
assertreg0 lstart
|
||||
stc re, r0
|
||||
assertreg0 lend+1 ! bit 0 set in re
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
|
||||
test_grs_a5a5
|
||||
|
||||
pass
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,311 @@
|
|||
# sh testcase for loop control
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
loop1:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop1_start0+8
|
||||
ldre Loop1_start0+4
|
||||
setrc #5
|
||||
Loop1_start0:
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute one instruction five times.
|
||||
Loop1_begin:
|
||||
add #1, r1 ! Within loop
|
||||
Loop1_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+8, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop2:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop2_start0+6
|
||||
ldre Loop2_start0+4
|
||||
setrc #5
|
||||
Loop2_start0:
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute two instructions five times.
|
||||
Loop2_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loop2_end:
|
||||
add #3, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 14 (ten in loop, three after, one before)
|
||||
assertreg 0xa5a5a5a5+14, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop3:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop3_start0+4
|
||||
ldre Loop3_start0+4
|
||||
setrc #5
|
||||
Loop3_start0:
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute three instructions five times.
|
||||
Loop3_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loop3_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+18, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop4:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop4_begin
|
||||
ldre Loop4_last3+4
|
||||
setrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute four instructions five times.
|
||||
Loop4_begin:
|
||||
Loop4_last3:
|
||||
add #1, r1 ! Within loop
|
||||
Loop4_last2:
|
||||
add #1, r1 ! Within loop
|
||||
Loop4_last1:
|
||||
add #1, r1 ! Within loop
|
||||
Loop4_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop4_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 23 (20 in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+23, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop5:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop5_begin
|
||||
ldre Loop5_last3+4
|
||||
setrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute five instructions five times.
|
||||
Loop5_begin:
|
||||
add #1, r1 ! Within loop
|
||||
Loop5_last3:
|
||||
add #1, r1 ! Within loop
|
||||
Loop5_last2:
|
||||
add #1, r1 ! Within loop
|
||||
Loop5_last1:
|
||||
add #1, r1 ! Within loop
|
||||
Loop5_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop5_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 28 (25 in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+28, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loopn:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loopn_begin
|
||||
ldre Loopn_last3+4
|
||||
setrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute n instructions five times.
|
||||
Loopn_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loopn_last3:
|
||||
add #1, r1 ! Within loop
|
||||
Loopn_last2:
|
||||
add #1, r1 ! Within loop
|
||||
Loopn_last1:
|
||||
add #1, r1 ! Within loop
|
||||
Loopn_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loopn_end:
|
||||
add #3, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 64 (60 in loop, three after, one before)
|
||||
assertreg 0xa5a5a5a5+64, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop1e:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop1e_begin
|
||||
ldre Loop1e_last
|
||||
ldrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute one instruction five times.
|
||||
Loop1e_begin:
|
||||
Loop1e_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop1e_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+8, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop2e:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop2e_begin
|
||||
ldre Loop2e_last
|
||||
ldrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute two instructions five times.
|
||||
Loop2e_begin:
|
||||
add #1, r1 ! Within loop
|
||||
Loop2e_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop2e_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 13 (ten in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+13, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop3e:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop3e_begin
|
||||
ldre Loop3e_last
|
||||
ldrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute three instructions five times.
|
||||
Loop3e_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loop3e_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop3e_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+18, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop4e:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop4e_begin
|
||||
ldre Loop4e_last
|
||||
ldrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute four instructions five times.
|
||||
Loop4e_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loop4e_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop4e_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 23 (twenty in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+23, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop5e:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop5e_begin
|
||||
ldre Loop5e_last
|
||||
ldrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute five instructions five times.
|
||||
Loop5e_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loop5e_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop5e_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 28 (twenty five in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+28, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
loop_n_e:
|
||||
set_grs_a5a5
|
||||
|
||||
ldrs Loop_n_e_begin
|
||||
ldre Loop_n_e_last
|
||||
ldrc #5
|
||||
add #1, r1 ! Before loop
|
||||
# Loop should execute n instructions five times.
|
||||
Loop_n_e_begin:
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
add #1, r1 ! Within loop
|
||||
Loop_n_e_last:
|
||||
add #1, r1 ! Within loop
|
||||
Loop_n_e_end:
|
||||
add #2, r1 ! After loop
|
||||
|
||||
# r1 = 0xa5a5a5a5 + 48 (forty five in loop, two after, one before)
|
||||
assertreg 0xa5a5a5a5+48, r1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
|
||||
pass
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
# sh testcase for movli
|
||||
# mach: all
|
||||
# as(sh): -defsym sim_cpu=0
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
.align 2
|
||||
x: .long 1
|
||||
y: .long 2
|
||||
z: .long 3
|
||||
|
||||
start
|
||||
set_grs_a5a5
|
||||
mov.l xptr, r1
|
||||
mov.l yptr, r2
|
||||
# Move linked/conditional, x to y
|
||||
movli.l @r1, r0
|
||||
movco.l r0, @r2
|
||||
|
||||
# Check result.
|
||||
assertreg0 1
|
||||
mov.l yptr, r1
|
||||
mov.l @r1, r2
|
||||
assertreg 1, r2
|
||||
|
||||
# Now attempt an unlinked move of r0 to z
|
||||
mov.l zptr, r1
|
||||
movco.l r0, @r1
|
||||
|
||||
# Check that z is unchanged.
|
||||
mov.l zptr, r1
|
||||
mov.l @r1, r2
|
||||
assertreg 3, 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
|
||||
|
||||
.align 2
|
||||
xptr: .long x
|
||||
yptr: .long y
|
||||
zptr: .long z
|
|
@ -0,0 +1,129 @@
|
|||
# sh testcase for movua
|
||||
# mach: all
|
||||
# as(sh): -defsym sim_cpu=0
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
movua_1:
|
||||
set_grs_a5a5
|
||||
mov.l srcp, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x00010203
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x01020304
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x02030405
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x03040506
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x04050607
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x05060708
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x06070809
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x0708090a
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x08090a0b
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x090a0b0c
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x0a0b0c0d
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x0b0c0d0e
|
||||
|
||||
add #1, r1
|
||||
movua.l @r1, r0
|
||||
assertreg0 0x0c0d0e0f
|
||||
|
||||
assertreg src+12, 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
|
||||
|
||||
bra movua_4:
|
||||
nop
|
||||
|
||||
.align 0
|
||||
src: .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
|
||||
.align 2
|
||||
srcp: .long src
|
||||
|
||||
movua_4:
|
||||
set_grs_a5a5
|
||||
mov.l srcp2, r1
|
||||
movua.l @r1+, r0
|
||||
assertreg0 0x00010203
|
||||
assertreg src+4, r1
|
||||
|
||||
mov.l srcp2, r1
|
||||
add #1, r1
|
||||
movua.l @r1+, r0
|
||||
assertreg0 0x01020304
|
||||
assertreg src+5, r1
|
||||
|
||||
mov.l srcp2, r1
|
||||
add #2, r1
|
||||
movua.l @r1+, r0
|
||||
assertreg0 0x02030405
|
||||
assertreg src+6, r1
|
||||
|
||||
mov.l srcp2, r1
|
||||
add #3, r1
|
||||
movua.l @r1+, r0
|
||||
assertreg0 0x03040506
|
||||
assertreg src+7, 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
|
||||
|
||||
srcp2: .long src
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,54 @@
|
|||
# sh testcase for pabs
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
# FIXME: opcode table ambiguity in ignored bits 4-7.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
pabs x0, x1
|
||||
pabs y0, y1
|
||||
assert_sreg 0x5a5a5a5b, x1
|
||||
assert_sreg 0x5a5a5a5b, y1
|
||||
pabs x1, x0
|
||||
pabs y1, y0
|
||||
assert_sreg 0x5a5a5a5b, x0
|
||||
assert_sreg 0x5a5a5a5b, y0
|
||||
|
||||
set_dcfalse
|
||||
dct pabs a0, a0
|
||||
dct pabs m0, m0
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
set_dctrue
|
||||
dct pabs a0, a0
|
||||
dct pabs m0, m0
|
||||
assert_sreg 0x5a5a5a5b, a0
|
||||
assert_sreg2 0x5a5a5a5b, m0
|
||||
|
||||
set_dctrue
|
||||
dcf pabs a1, a1
|
||||
dcf pabs m1, m1
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
set_dcfalse
|
||||
dcf pabs a1, a1
|
||||
dcf pabs m1, m1
|
||||
assert_sreg2 0x5a5a5a5b, a1
|
||||
assert_sreg2 0x5a5a5a5b, m1
|
||||
|
||||
test_grs_a5a5
|
||||
|
||||
pass
|
||||
exit 0
|
|
@ -0,0 +1,65 @@
|
|||
# sh testcase for pclr
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
# FIXME: opcode table ambiguity in ignored bits 4-7.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
pclr_cc:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
assert_sreg 0xa5a5a5a5, x0
|
||||
pclr x0
|
||||
assert_sreg 0, x0
|
||||
|
||||
set_dcfalse
|
||||
dct pclr x1
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
set_dctrue
|
||||
dct pclr x1
|
||||
assert_sreg 0, x1
|
||||
|
||||
set_dctrue
|
||||
dcf pclr y0
|
||||
assert_sreg 0xa5a5a5a5, y0
|
||||
set_dcfalse
|
||||
dcf pclr y0
|
||||
assert_sreg 0, y0
|
||||
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
|
||||
pclr_pmuls:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
pclr x0 pmuls y0, y1, a0
|
||||
|
||||
assert_sreg 0, x0
|
||||
assert_sreg 0x3fc838b2, a0 ! 0xa5a5 x 0xa5a5
|
||||
|
||||
test_grs_a5a5
|
||||
|
||||
pass
|
||||
exit 0
|
|
@ -0,0 +1,90 @@
|
|||
# sh testcase for prnd
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
# FIXME: opcode table ambiguity in ignored bits 4-7.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
# prnd(0xa5a5a5a5) = 0xa5a60000
|
||||
prnd x0, x0
|
||||
prnd y0, y0
|
||||
assert_sreg 0xa5a60000, x0
|
||||
assert_sreg 0xa5a60000, y0
|
||||
|
||||
# prnd(1) = 1
|
||||
mov #1, r0
|
||||
shll16 r0
|
||||
lds r0, x0
|
||||
pcopy x0, y0
|
||||
prnd x0, x0
|
||||
prnd y0, y0
|
||||
assert_sreg 0x10000, x0
|
||||
assert_sreg 0x10000, y0
|
||||
|
||||
# prnd(1.4999999) = 1
|
||||
mov #1, r0
|
||||
shll8 r0
|
||||
or #0x7f, r0
|
||||
shll8 r0
|
||||
or #0xff, r0
|
||||
lds r0, x0
|
||||
pcopy x0, y0
|
||||
prnd x0, x0
|
||||
prnd y0, y0
|
||||
assert_sreg 0x10000, x0
|
||||
assert_sreg 0x10000, y0
|
||||
|
||||
# prnd(1.5) = 2
|
||||
mov #1, r0
|
||||
shll8 r0
|
||||
or #0x80, r0
|
||||
shll8 r0
|
||||
lds r0, x0
|
||||
pcopy x0, y0
|
||||
prnd x0, x0
|
||||
prnd y0, y0
|
||||
assert_sreg 0x20000, x0
|
||||
assert_sreg 0x20000, y0
|
||||
|
||||
# dct prnd
|
||||
set_dcfalse
|
||||
dct prnd x0, x1
|
||||
dct prnd y0, y1
|
||||
assert_sreg2 0xa5a5a5a5, x1
|
||||
assert_sreg2 0xa5a5a5a5, y1
|
||||
set_dctrue
|
||||
dct prnd x0, x1
|
||||
dct prnd y0, y1
|
||||
assert_sreg2 0x20000, x1
|
||||
assert_sreg2 0x20000, y1
|
||||
|
||||
# dcf prnd
|
||||
set_dctrue
|
||||
dcf prnd x0, m0
|
||||
dcf prnd y0, m1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
set_dcfalse
|
||||
dcf prnd x0, m0
|
||||
dcf prnd y0, m1
|
||||
assert_sreg2 0x20000, m0
|
||||
assert_sreg2 0x20000, m1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
pass
|
||||
exit 0
|
|
@ -0,0 +1,64 @@
|
|||
# sh testcase for psub
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
psub_sx_sy:
|
||||
# 0xa5a5a5a5 minus 0xa5a5a5a5 equals zero
|
||||
psub x0, y0, a0
|
||||
assert_sreg 0, a0
|
||||
|
||||
psub_sy_sx:
|
||||
# 100 - 25 = 75
|
||||
mov #100, r0
|
||||
mov #25, r1
|
||||
lds r0, y1
|
||||
lds r1, x1
|
||||
psub y1, x1, a0
|
||||
assert_sreg 75, a0
|
||||
|
||||
dct_psub:
|
||||
# 100 - 25 = 75
|
||||
set_dcfalse
|
||||
dct psub y1, x1, a1
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
set_dctrue
|
||||
dct psub y1, x1, a1
|
||||
assert_sreg2 75, a1
|
||||
|
||||
dcf_psub:
|
||||
# 25 - 100 = -75
|
||||
set_dctrue
|
||||
dcf psub x1, y1, m1
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
set_dcfalse
|
||||
dcf psub x1, y1, m1
|
||||
assert_sreg2 -75, m1
|
||||
|
||||
psub_pmuls:
|
||||
# 25 - 100 = -75, and 2 x 2 = 8 (yes, eight, not four)
|
||||
mov #2, r0
|
||||
shll16 r0
|
||||
lds r0, x0
|
||||
lds r0, y0
|
||||
psub x1, y1, a1 pmuls x0, y0, a0
|
||||
assert_sreg 8, a0
|
||||
assert_sreg2 -75, a1
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
set_greg 0xa5a5a5a5, r1
|
||||
test_grs_a5a5
|
||||
pass
|
||||
exit 0
|
|
@ -0,0 +1,177 @@
|
|||
# sh testcase for pswap
|
||||
# mach: shdsp
|
||||
# as(shdsp): -defsym sim_cpu=1 -dsp
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
|
||||
pswapx:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
set_greg 0xa5a57777, r0
|
||||
lds r0, x0
|
||||
pswap x0, y0
|
||||
assert_sreg 0x7777a5a5, y0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a57777, x0
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
|
||||
pswapy:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
set_greg 0xa5a57777, r0
|
||||
lds r0, y0
|
||||
pswap y0, x0
|
||||
assert_sreg 0x7777a5a5, x0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a57777, y0
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
|
||||
pswapa:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
set_greg 0xa5a57777, r0
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
pswap a1, y0
|
||||
assert_sreg 0x7777a5a5, y0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a57777, a0
|
||||
assert_sreg2 0xa5a57777, a1
|
||||
assert_sreg 0xa5a5a5a5, x0
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
|
||||
pswapm:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
set_greg 0xa5a57777, r0
|
||||
lds r0, a0
|
||||
pcopy a0, m1
|
||||
pswap m1, y0
|
||||
assert_sreg 0x7777a5a5, y0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a57777, a0
|
||||
assert_sreg2 0xa5a57777, m1
|
||||
assert_sreg 0xa5a5a5a5, x0
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
|
||||
|
||||
dct_pswapx:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
set_greg 0xa5a57777, r0
|
||||
lds r0, x0
|
||||
set_dcfalse
|
||||
dct pswap x0, y0
|
||||
assert_sreg 0xa5a5a5a5, y0
|
||||
set_dctrue
|
||||
dct pswap x0, y0
|
||||
assert_sreg 0x7777a5a5, y0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a57777, x0
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
|
||||
dcf_pswapy:
|
||||
set_grs_a5a5
|
||||
lds r0, a0
|
||||
pcopy a0, a1
|
||||
lds r0, x0
|
||||
lds r0, x1
|
||||
lds r0, y0
|
||||
lds r0, y1
|
||||
pcopy x0, m0
|
||||
pcopy y1, m1
|
||||
|
||||
set_greg 0xa5a57777, r0
|
||||
lds r0, x0
|
||||
set_dctrue
|
||||
dcf pswap x0, y0
|
||||
assert_sreg 0xa5a5a5a5, y0
|
||||
set_dcfalse
|
||||
dcf pswap x0, y0
|
||||
assert_sreg 0x7777a5a5, y0
|
||||
|
||||
set_greg 0xa5a5a5a5, r0
|
||||
test_grs_a5a5
|
||||
assert_sreg 0xa5a57777, x0
|
||||
assert_sreg 0xa5a5a5a5, x1
|
||||
assert_sreg 0xa5a5a5a5, y1
|
||||
assert_sreg 0xa5a5a5a5, a0
|
||||
assert_sreg2 0xa5a5a5a5, a1
|
||||
assert_sreg2 0xa5a5a5a5, m0
|
||||
assert_sreg2 0xa5a5a5a5, m1
|
||||
|
||||
pass
|
||||
exit 0
|
|
@ -473,7 +473,7 @@ set_greg\@:
|
|||
pop r0
|
||||
.endm
|
||||
|
||||
.macro set_sr_bit
|
||||
.macro set_sr_bit val
|
||||
push r0
|
||||
push r1
|
||||
get_sr r0
|
||||
|
@ -532,6 +532,7 @@ set_greg\@:
|
|||
pop r0
|
||||
bra .Lssr\@
|
||||
nop
|
||||
.align 2
|
||||
.Lssrval\@:
|
||||
.long \val
|
||||
.Lssr\@:
|
||||
|
@ -550,6 +551,7 @@ set_greg\@:
|
|||
pop r0
|
||||
bra .Lssr2_\@
|
||||
nop
|
||||
.align 2
|
||||
.Lssr2val\@:
|
||||
.long \val
|
||||
.Lssr2_\@:
|
||||
|
@ -564,6 +566,7 @@ set_greg\@:
|
|||
pop r0
|
||||
bra .Lscr\@
|
||||
nop
|
||||
.align 2
|
||||
.Lscrval\@:
|
||||
.long \val
|
||||
.Lscr\@:
|
||||
|
|
Loading…
Reference in New Issue