summaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/c_ccflag_pr_pr_uu.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bfin/c_ccflag_pr_pr_uu.s')
-rw-r--r--sim/testsuite/bfin/c_ccflag_pr_pr_uu.s212
1 files changed, 212 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/c_ccflag_pr_pr_uu.s b/sim/testsuite/bfin/c_ccflag_pr_pr_uu.s
new file mode 100644
index 00000000000..0cde8c23c40
--- /dev/null
+++ b/sim/testsuite/bfin/c_ccflag_pr_pr_uu.s
@@ -0,0 +1,212 @@
+//Original:/proj/frio/dv/testcases/core/c_ccflag_pr_pr_uu/c_ccflag_pr_pr_uu.dsp
+// Spec Reference: ccflag pr-pr (uu)
+# mach: bfin
+
+.include "testutils.inc"
+ start
+
+INIT_R_REGS 0;
+
+//imm32 p0, 0x00110022;
+imm32 p1, 0x00110022;
+imm32 p2, 0x00330044;
+imm32 p3, 0x00550066;
+
+imm32 p4, 0x00770088;
+imm32 p5, 0x009900aa;
+imm32 fp, 0x00bb00cc;
+imm32 sp, 0x00000000;
+
+ASTAT = R0;
+R4 = ASTAT;
+
+// positive preg-1 EQUAL to positive preg-2
+CC = P2 < P1 (IU);
+R6 = ASTAT;
+CC = P2 <= P1 (IU);
+R7 = ASTAT;
+CHECKREG r4, 0x00000000;
+CHECKREG r5, 0x00000000;
+CHECKREG r6, 0x00000000;
+CHECKREG r7, 0x00000000;
+
+// positive preg-1 GREATER than positive preg-2
+CC = P3 < P2 (IU);
+R6 = ASTAT;
+CC = P3 <= P2 (IU);
+R7 = ASTAT;
+CHECKREG r6, 0x00000000;
+CHECKREG r7, 0x00000000;
+// positive preg-1 LESS than positive preg-2
+CC = P2 < P3 (IU);
+R6 = ASTAT;
+CC = P2 <= P3 (IU);
+R7 = ASTAT;
+CHECKREG r6, 0x00000020;
+CHECKREG r7, 0x00000020;
+
+//imm32 p0, 0x01230123;
+imm32 p1, 0x81230123;
+imm32 p2, 0x04560456;
+imm32 p3, 0x87890789;
+// operate on negative number
+R0 = 0;
+ASTAT = R0;
+R4 = ASTAT;
+
+// positive preg-1 GREATER than negative preg-2
+CC = P2 < P1 (IU);
+R6 = ASTAT;
+CC = P2 <= P1 (IU);
+R7 = ASTAT;
+CHECKREG r4, 0x00000000;
+CHECKREG r6, 0x00000020;
+CHECKREG r7, 0x00000020;
+
+// negative preg-1 LESS than POSITIVE preg-2 small
+CC = P3 < P2 (IU);
+R6 = ASTAT;
+CC = P3 <= P2 (IU);
+R7 = ASTAT;
+CHECKREG r6, 0x00000000;
+CHECKREG r7, 0x00000000;
+
+// negative preg-1 GREATER than negative preg-2
+CC = P1 < P3 (IU);
+R6 = ASTAT;
+CC = P1 <= P3 (IU);
+R7 = ASTAT;
+CHECKREG r6, 0x00000020;
+CHECKREG r7, 0x00000020;
+
+// negative preg-1 LESS than negative preg-2
+CC = P3 < P1 (IU);
+R6 = ASTAT;
+CC = P3 <= P1 (IU);
+R7 = ASTAT;
+CHECKREG r6, 0x00000000;
+CHECKREG r7, 0x00000000;
+
+
+//imm32 p0, 0x80230123;
+imm32 p1, 0x00230123;
+imm32 p2, 0x80560056;
+imm32 p3, 0x00890089;
+// operate on negative number
+R0 = 0;
+ASTAT = R0;
+R4 = ASTAT;
+
+// negative preg-1 LESS than POSITIVE preg-2
+CC = P2 < P3 (IU);
+R6 = ASTAT;
+CC = P2 <= P3 (IU);
+R7 = ASTAT;
+CHECKREG r4, 0x00000000; // overflow and carry but not negative
+CHECKREG r6, 0x00000000; // cc overflow, carry and negative
+CHECKREG r7, 0x00000000;
+
+
+imm32 p4, 0x44444444;
+imm32 p5, 0x55555555;
+imm32 fp, 0x66666666;
+imm32 sp, 0x77777777;
+
+//imm32 p0, 0x00000000;
+imm32 p1, 0x11111111;
+imm32 p2, 0x00000000;
+imm32 p3, 0x33333333;
+
+ASTAT = R0;
+R3 = ASTAT;
+CHECKREG r3, 0x00000000;
+
+// positive preg-1 EQUAL to positive preg-2
+CC = P4 < P5;
+R1 = ASTAT;
+CC = P4 <= P5;
+R2 = ASTAT;
+CHECKREG r1, 0x00000020;
+CHECKREG r2, 0x00000020;
+
+// positive preg-1 GREATER than positive preg-2
+CC = SP < FP (IU);
+R1 = ASTAT;
+CC = SP <= FP (IU);
+R2 = ASTAT;
+CHECKREG r1, 0x00000000;
+CHECKREG r2, 0x00000000;
+
+
+// positive preg-1 LESS than positive preg-2
+CC = FP < SP (IU);
+R1 = ASTAT;
+CC = FP <= SP (IU);
+R2 = ASTAT;
+CHECKREG r1, 0x00000020;
+CHECKREG r2, 0x00000020;
+
+imm32 p4, 0x01230123;
+imm32 p5, 0x81230123;
+imm32 fp, 0x04560456;
+imm32 sp, 0x87890789;
+// operate on negative number
+R0 = 0;
+ASTAT = R0;
+R3 = ASTAT; // nop;
+CHECKREG r3, 0x00000000;
+
+// positive preg-1 GREATER than negative preg-2
+CC = P4 < P5 (IU);
+R2 = ASTAT;
+CC = P4 <= P5 (IU);
+R3 = ASTAT;
+CHECKREG r2, 0x00000020;
+CHECKREG r3, 0x00000020;
+
+// negative preg-1 LESS than POSITIVE preg-2 small
+CC = SP < FP (IU);
+R1 = ASTAT;
+CC = SP <= FP (IU);
+R2 = ASTAT;
+CHECKREG r1, 0x00000000;
+CHECKREG r2, 0x00000000;
+
+// negative preg-1 GREATER than negative preg-2
+CC = P5 < SP (IU);
+R1 = ASTAT;
+CC = P5 <= SP (IU);
+R2 = ASTAT;
+CHECKREG r1, 0x00000020;
+CHECKREG r2, 0x00000020;
+
+// negative preg-1 LESS than negative preg-2
+CC = SP < P5 (IU);
+R2 = ASTAT;
+CC = SP <= P5 (IU);
+R3 = ASTAT;
+CHECKREG r1, 0x00000020;
+CHECKREG r2, 0x00000000;
+CHECKREG r3, 0x00000000;
+
+
+imm32 p4, 0x80230123;
+imm32 p5, 0x00230123;
+imm32 fp, 0x80560056;
+imm32 sp, 0x00890089;
+// operate on negative number
+R0 = 0;
+ASTAT = R0;
+R0 = ASTAT;
+
+// negative preg-1 LESS than POSITIVE preg-2
+CC = R6 < R7 (IU);
+R2 = ASTAT;
+CC = R6 <= R7 (IU);
+R3 = ASTAT;
+CHECKREG r0, 0x00000000; // overflow and carry but not negative
+CHECKREG r2, 0x00001005; // cc overflow, carry and negative
+CHECKREG r3, 0x00001025;
+
+
+pass;