summaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/c_cc_flag_ccmv_depend.S
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bfin/c_cc_flag_ccmv_depend.S')
-rw-r--r--sim/testsuite/bfin/c_cc_flag_ccmv_depend.S80
1 files changed, 80 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/c_cc_flag_ccmv_depend.S b/sim/testsuite/bfin/c_cc_flag_ccmv_depend.S
new file mode 100644
index 00000000000..807a7531e6e
--- /dev/null
+++ b/sim/testsuite/bfin/c_cc_flag_ccmv_depend.S
@@ -0,0 +1,80 @@
+//Original:/proj/frio/dv/testcases/core/c_cc_flag_ccmv_depend/c_cc_flag_ccmv_depend.dsp
+// Spec Reference: ccflag followed by ccmv (# stalls)
+# mach: bfin
+
+#include "test.h"
+.include "testutils.inc"
+ start
+
+ R0 = 0;
+ ASTAT = R0;
+ imm32 r0, 0xa08d2311;
+ imm32 r1, 0x10120040;
+ imm32 r2, 0x62b61557;
+ imm32 r3, 0x07300007;
+ imm32 r4, 0x00740088;
+ imm32 r5, 0x609950aa;
+ imm32 r6, 0x20bb06cc;
+ imm32 r7, 0xd90e108f;
+
+ imm32 p1, 0x1401101f;
+ imm32 p2, 0x3204108e;
+ imm32 fp, 0xd93f1084;
+ imm32 p4, 0xeb04106f;
+ imm32 p5, 0xa90e5089;
+
+ CC = R7; // cc2dreg
+ IF CC R0 = R3; // ccmov
+ R6 = R0 + R4;
+
+ CC = ! CC; // cc2dreg
+ IF CC R1 = P1; // ccmov
+
+ CC = R5 < R1; // ccflag
+ R1 = ASTAT;
+ IF !CC R2 = R5; // ccmov
+
+ CC = R2 == R3; // ccflag
+ IF CC P1 = R4; // ccmov
+
+ CC = ! CC;
+ CC = R7 < R5;
+ IF CC P2 = P5; // ccmov
+
+ CC = P5 == 3;
+ IF CC FP = R2; // ccmov
+
+ R3 = ( A1 = R7.L * R4.L ), R2 = ( A0 = R7.H * R4.H ) (S2RND); // dsp32mac pair
+
+ CC = A0 == A1;
+ IF !CC R3 = R6; // ccmov
+ R7 = R3 + R2;
+
+ A0 += A1 (W32); // dsp32alu a0 + a1
+ CC = A0 < A1;
+ IF CC R4 = P4; // ccmov
+ R6 = R4;
+
+ R2.H = ( A1 = R2.L * R3.L ), A0 = R2.H * R3.L; // dsp32mac
+ CC = A0 <= A1;
+ IF CC R5 = P5; // ccmov
+
+ A1 = R2.L * R3.L, A0 += R2.L * R3.H; // dsp32mac
+ CC = A0 <= A1;
+ IF CC P5 = R6; // ccmov
+
+ CHECKREG r0, 0x07300007;
+ CHECKREG r1, (_AC0|_AC0_COPY);
+ CHECKREG r2, 0x00766960;
+ CHECKREG r3, 0x07A4008F;
+ CHECKREG r4, 0xEB04106F;
+ CHECKREG r5, 0xA90E5089;
+ CHECKREG r6, 0xEB04106F;
+ CHECKREG r7, 0x075D69EF;
+ CHECKREG p1, 0x1401101F;
+ CHECKREG p2, 0xA90E5089;
+ CHECKREG fp, 0xD93F1084;
+ CHECKREG p4, 0xEB04106F;
+ CHECKREG p5, 0xA90E5089;
+
+ pass