aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/mips/r6-forbidden.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/mips/r6-forbidden.s')
-rw-r--r--sim/testsuite/mips/r6-forbidden.s51
1 files changed, 51 insertions, 0 deletions
diff --git a/sim/testsuite/mips/r6-forbidden.s b/sim/testsuite/mips/r6-forbidden.s
new file mode 100644
index 0000000..6ce56d3
--- /dev/null
+++ b/sim/testsuite/mips/r6-forbidden.s
@@ -0,0 +1,51 @@
+# mips r6 test for forbidden slot behaviour
+# mach: mips32r6 mips64r6
+# as: -mabi=eabi
+# ld: -N -Ttext=0x80010000
+# output: *\\nReservedInstruction at PC = *\\nprogram stopped with signal 4 (Illegal instruction).\\n
+# xerror:
+
+ .include "testutils.inc"
+
+ setup
+
+ .set noreorder
+
+ .ent DIAG
+DIAG:
+
+ writemsg "[1] Test if FS is ignored when branch is taken"
+ li $4, 0
+ beqzalc $4, L1
+ bc L2
+
+L2:
+ fail
+
+L1:
+ writemsg "[2] Test if FS is used when branch is not taken"
+ li $4, 1
+ blezc $4, L3
+ addiu $4, $4, 1
+ li $2, 2
+ beq $4, $2, L4
+
+L3:
+ nop
+ fail
+
+L4:
+ writemsg "[3] Test if FS causes an error when it contains a branch"
+ li $4, 3
+ beqzalc $4, L6
+ bc L5
+
+L5:
+ nop
+ fail
+
+L6:
+ #There is no passing condition here, all routes to the end indicate failure
+ fail
+
+ .end DIAG