diff options
Diffstat (limited to 'sim/testsuite/sim/fr30/ldm1.cgs')
-rw-r--r-- | sim/testsuite/sim/fr30/ldm1.cgs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/sim/testsuite/sim/fr30/ldm1.cgs b/sim/testsuite/sim/fr30/ldm1.cgs new file mode 100644 index 00000000000..33cfcdba770 --- /dev/null +++ b/sim/testsuite/sim/fr30/ldm1.cgs @@ -0,0 +1,59 @@ +# fr30 testcase for ldm1 ($reglist_low) +# mach(): fr30 + + .include "testutils.inc" + + START + + .text + .global ldm1 +ldm1: + ; Test ldm1 ($reglist_low) + mvr_h_gr sp,r1 ; save stack pointer permanently + inci_h_gr -4,sp + mvi_h_mem 3,sp + inci_h_gr -4,sp + mvi_h_mem 2,sp + inci_h_gr -4,sp + mvi_h_mem 1,sp + inci_h_gr -4,sp + mvi_h_mem 0,sp + + set_cc 0x0f ; Condition codes should not change + ldm1 (r8,r10,r12,r14) + test_cc 1 1 1 1 + testr_h_gr sp,r1 + test_h_gr 0,r8 + test_h_gr 1,r10 + test_h_gr 2,r12 + test_h_gr 3,r14 + + inci_h_gr -16,sp + set_cc 0x0f ; Condition codes should not change + ldm1 (r9,r11,r13,r15) + test_cc 1 1 1 1 + test_h_gr 0,r9 + test_h_gr 1,r11 + test_h_gr 2,r13 + test_h_gr 3,r15 + + mvr_h_gr r1,sp ; restore stack pointer + inci_h_gr -16,sp + set_cc 0x0f ; Condition codes should not change + ldm1 (r9,r13,r15,r11); Order speficied should not matter + test_cc 1 1 1 1 + test_h_gr 0,r9 + test_h_gr 1,r11 + test_h_gr 2,r13 + test_h_gr 3,r15 + + mvr_h_gr r1,sp ; restore stack pointer + set_cc 0x0f ; Condition codes should not change + ldm1 () ; Nothing should happen + test_cc 1 1 1 1 + testr_h_gr sp,r1 + test_h_gr 0,r9 + test_h_gr 1,r11 + test_h_gr 2,r13 + + pass |