diff options
Diffstat (limited to 'sim/testsuite/sim/sh/testutils.inc')
-rw-r--r-- | sim/testsuite/sim/sh/testutils.inc | 591 |
1 files changed, 0 insertions, 591 deletions
diff --git a/sim/testsuite/sim/sh/testutils.inc b/sim/testsuite/sim/sh/testutils.inc deleted file mode 100644 index 8d3895e2581..00000000000 --- a/sim/testsuite/sim/sh/testutils.inc +++ /dev/null @@ -1,591 +0,0 @@ -# Support macros for the sh assembly test cases. - - .equ no_dsp, 0 - .equ yes_dsp, 1 - - .section .rodata - .align 2 -_pass: .string "pass\n" -_fail: .string "fail\n" -_stack: .fill 128, 4, 0 -stackt: - - .macro push reg - mov.l \reg, @-r15 - .endm - - .macro pop reg - mov.l @r15+, \reg - .endm - - .macro start - .text - .align 1 - .global start -start: mov.l stackp, r15 - bra main - nop - .align 2 -stackp: .long stackt -mpass: - mov #4, r4 - mov #1, r5 - mov.l ppass, r6 - mov #5, r7 - trapa #34 - rts - nop -mfail: - mov #4, r4 - mov #1, r5 - mov.l pfail, r6 - mov #5, r7 - trapa #34 - mov #1, r5 -mexit: - mov #1, r4 - mov #0, r6 - mov #0, r7 - trapa #34 - .align 2 -ppass: .long _pass -pfail: .long _fail - -mtesta5: - push r0 - mov.l a5a5, r0 - cmp/eq r1, r0 - bf mfail - cmp/eq r2, r0 - bf mfail - cmp/eq r3, r0 - bf mfail - cmp/eq r4, r0 - bf mfail - cmp/eq r5, r0 - bf mfail - cmp/eq r6, r0 - bf mfail - cmp/eq r7, r0 - bf mfail - cmp/eq r8, r0 - bf mfail - cmp/eq r9, r0 - bf mfail - cmp/eq r10, r0 - bf mfail - cmp/eq r11, r0 - bf mfail - cmp/eq r12, r0 - bf mfail - cmp/eq r13, r0 - bf mfail - cmp/eq r14, r0 - bf mfail - # restore and check r0 - pop r0 - cmp/eq r0, r1 - bf mfail - # pass - rts - nop -.if (sim_cpu == no_dsp) -mtesta5_fp: - push r0 - flds fr0, fpul - sts fpul, r0 - push r0 - mov.l a5a5, r0 - lds r0, fpul - fsts fpul, fr0 - fcmp/eq fr1, fr0 - bf mfail - fcmp/eq fr2, fr0 - bf mfail - fcmp/eq fr3, fr0 - bf mfail - fcmp/eq fr4, fr0 - bf mfail - fcmp/eq fr5, fr0 - bf mfail - fcmp/eq fr6, fr0 - bf mfail - fcmp/eq fr7, fr0 - bf mfail - fcmp/eq fr8, fr0 - bf mfail - fcmp/eq fr9, fr0 - bf mfail - fcmp/eq fr10, fr0 - bf mfail - fcmp/eq fr11, fr0 - bf mfail - fcmp/eq fr12, fr0 - bf mfail - fcmp/eq fr13, fr0 - bf mfail - fcmp/eq fr14, fr0 - bf mfail - fcmp/eq fr15, fr0 - bf mfail - # restore and check fr0 - pop r0 - lds r0, fpul - fsts fpul, fr0 - fcmp/eq fr0, fr1 - bf mfail - # restore r0 and pass - pop r0 - rts - nop -.endif - -mseta5: - mov.l a5a5, r0 - mov.l a5a5, r1 - mov.l a5a5, r2 - mov.l a5a5, r3 - mov.l a5a5, r4 - mov.l a5a5, r5 - mov.l a5a5, r6 - mov.l a5a5, r7 - mov.l a5a5, r8 - mov.l a5a5, r9 - mov.l a5a5, r10 - mov.l a5a5, r11 - mov.l a5a5, r12 - mov.l a5a5, r13 - mov.l a5a5, r14 - rts - nop - -.if (sim_cpu == no_dsp) -mseta5_fp: - push r0 - mov.l a5a5, r0 - lds r0, fpul - fsts fpul, fr0 - fsts fpul, fr1 - fsts fpul, fr2 - fsts fpul, fr3 - fsts fpul, fr4 - fsts fpul, fr5 - fsts fpul, fr6 - fsts fpul, fr7 - fsts fpul, fr8 - fsts fpul, fr9 - fsts fpul, fr10 - fsts fpul, fr11 - fsts fpul, fr12 - fsts fpul, fr13 - fsts fpul, fr14 - fsts fpul, fr15 - pop r0 - rts - nop -.endif - - .align 2 -a5a5: .long 0xa5a5a5a5 -main: - .endm - - .macro exit val - mov #\val, r5 - bra mexit - nop - .endm - - .macro pass - bsr mpass - nop - .endm - - .macro fail - bra mfail - nop - .endm - - # Assert value of register (any general register but r0) - # Preserves r0 on stack, restores it on success. - .macro assertreg val reg - push r0 - mov.l .Larval\@, r0 - cmp/eq r0, \reg - bt .Lar\@ - fail - .align 2 -.Larval\@: - .long \val -.Lar\@: pop r0 - .endm - - # Assert value of register zero - # Preserves r1 on stack, restores it on success. - .macro assertreg0 val - push r1 - mov.l .Lazval\@, r1 - cmp/eq r1, r0 - bt .Laz\@ - fail - .align 2 -.Lazval\@: - .long \val -.Laz\@: pop r1 - .endm - - # Assert value of system register - # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...] - .macro assert_sreg val reg - push r0 - sts \reg, r0 - assertreg0 \val - pop r0 - .endm - - # Assert value of system register that isn't directly stc-able - # [a1, m0, m1, ...] - .macro assert_sreg2 val reg - push r0 - sts a0, r0 - push r0 - pcopy \reg, a0 - sts a0, r0 - assertreg0 \val - pop r0 - lds r0, a0 - pop r0 - .endm - - # Assert value of control register - # [gbr, vbr, ssr, spc, sgr, dbr, r[0-7]_bank, sr, mod, re, rs, ...] - .macro assert_creg val reg - push r0 - stc \reg, r0 - assertreg0 \val - pop r0 - .endm - - # Assert integer value of fp register - # Preserves r0 on stack, restores it on success - # Assumes single-precision fp mode - .macro assert_fpreg_i val freg - push r0 - ftrc \freg, fpul - sts fpul, r0 - assertreg0 \val - pop r0 - .endm - - # Assert integer value of dp register - # Preserves r0 on stack, restores it on success - # Assumes double-precision fp mode - .macro assert_dpreg_i val dreg - push r0 - ftrc \dreg, fpul - sts fpul, r0 - assertreg0 \val - pop r0 - .endm - - # Assert hex value of fp register - # Preserves r0 on stack, restores it on success - # Assumes single-precision fp mode - .macro assert_fpreg_x val freg - push r0 - flds \freg, fpul - sts fpul, r0 - assertreg0 \val - pop r0 - .endm - - # Set FP bank 0 - # Saves and restores r0 and r1 - .macro bank0 - push r0 - push r1 - mov #32, r1 - shll16 r1 - not r1, r1 - sts fpscr, r0 - and r1, r0 - lds r0, fpscr - pop r1 - pop r0 - .endm - - # Set FP bank 1 - .macro bank1 - push r0 - push r1 - mov #32, r1 - shll16 r1 - sts fpscr, r0 - or r1, r0 - lds r0, fpscr - pop r1 - pop r0 - .endm - - # Set FP 32-bit xfer - .macro sz_32 - push r0 - push r1 - mov #16, r1 - shll16 r1 - not r1, r1 - sts fpscr, r0 - and r1, r0 - lds r0, fpscr - pop r1 - pop r0 - .endm - - # Set FP 64-bit xfer - .macro sz_64 - push r0 - push r1 - mov #16, r1 - shll16 r1 - sts fpscr, r0 - or r1, r0 - lds r0, fpscr - pop r1 - pop r0 - .endm - - # Set FP single precision - .macro single_prec - push r0 - push r1 - mov #8, r1 - shll16 r1 - not r1, r1 - sts fpscr, r0 - and r1, r0 - lds r0, fpscr - pop r1 - pop r0 - .endm - - # Set FP double precision - .macro double_prec - push r0 - push r1 - mov #8, r1 - shll16 r1 - sts fpscr, r0 - or r1, r0 - lds r0, fpscr - pop r1 - pop r0 - .endm - - .macro set_carry - sett - .endm - - .macro set_ovf - sett - .endm - - .macro clear_carry - clrt - .endm - - .macro clear_ovf - clrt - .endm - - # sets, clrs - - - .macro set_grs_a5a5 - bsr mseta5 - nop - .endm - - .macro set_greg val greg - mov.l gregval\@, \greg - bra set_greg\@ - nop - .align 2 -gregval\@: .long \val -set_greg\@: - .endm - - .macro set_fprs_a5a5 - bsr mseta5_fp - nop - .endm - - .macro test_grs_a5a5 - bsr mtesta5 - nop - .endm - - .macro test_fprs_a5a5 - bsr mtesta5_fp - nop - .endm - - .macro test_gr_a5a5 reg - assertreg 0xa5a5a5a5 \reg - .endm - - .macro test_fpr_a5a5 reg - assert_fpreg_x 0xa5a5a5a5 \reg - .endm - - .macro test_gr0_a5a5 - assertreg0 0xa5a5a5a5 - .endm - - # Perform a single to double precision floating point conversion. - # Assumes correct settings of fpscr. - .macro _s2d fpr dpr - flds \fpr, fpul - fcnvsd fpul, \dpr - .endm - - # Manipulate the status register - .macro set_sr val - push r0 - mov.l .Lsrval\@, r0 - ldc r0, sr - pop r0 - bra .Lsetsr\@ - nop - .align 2 -.Lsrval\@: - .long \val -.Lsetsr\@: - .endm - - .macro get_sr reg - stc sr, \reg - .endm - - .macro test_sr val - push r0 - get_sr r0 - assertreg0 \val - pop r0 - .endm - - .macro set_sr_bit val - push r0 - push r1 - get_sr r0 - mov.l .Lsrbitval\@, r1 - or r1, r0 - ldc r0, sr - pop r1 - pop r0 - bra .Lsrbit\@ - nop - .align 2 -.Lsrbitval\@: - .long \val -.Lsrbit\@: - .endm - - .macro test_sr_bit_set val - push r0 - push r1 - get_sr r0 - mov.l .Ltsbsval\@, r1 - tst r1, r0 - bf .Ltsbs\@ - fail - .align 2 -.Ltsbsval\@: - .long \val -.Ltsbs\@: - pop r1 - pop r0 - .endm - - .macro test_sr_bit_clear val - push r0 - push r1 - get_sr r0 - mov.l .Ltsbcval\@, r1 - not r0, r0 - tst r1, r0 - bf .Ltsbc\@ - fail - .align 2 -.Ltsbcval\@: - .long \val -.Ltsbc\@: - pop r1 - pop r0 - .endm - - # Set system registers - .macro set_sreg val reg - # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...] - push r0 - mov.l .Lssrval\@, r0 - lds r0, \reg - pop r0 - bra .Lssr\@ - nop - .align 2 -.Lssrval\@: - .long \val -.Lssr\@: - .endm - - .macro set_sreg2 val reg - # [a1, m0, m1, ...] - push r0 - sts a0, r0 - push r0 - mov.l .Lssr2val\@, r0 - lds r0, a0 - pcopy a0, \reg - pop r0 - lds r0, a0 - pop r0 - bra .Lssr2_\@ - nop - .align 2 -.Lssr2val\@: - .long \val -.Lssr2_\@: - .endm - - - .macro set_creg val reg - # [gbr, vbr, ssr, spc, sgr, dbr... ] - push r0 - mov.l .Lscrval\@, r0 - ldc r0, \reg - pop r0 - bra .Lscr\@ - nop - .align 2 -.Lscrval\@: - .long \val -.Lscr\@: - .endm - - .macro set_dctrue - push r0 - sts dsr, r0 - or #1, r0 - lds r0, dsr - pop r0 - .endm - - .macro set_dcfalse - push r0 - sts dsr, r0 - not r0, r0 - or #1, r0 - not r0, r0 - lds r0, dsr - pop r0 - .endm |