summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/fr30/ldm1.cgs
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/sim/fr30/ldm1.cgs')
-rw-r--r--sim/testsuite/sim/fr30/ldm1.cgs59
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