aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/m1.S
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bfin/m1.S')
-rw-r--r--sim/testsuite/bfin/m1.S58
1 files changed, 58 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/m1.S b/sim/testsuite/bfin/m1.S
new file mode 100644
index 0000000..5ddc5d3
--- /dev/null
+++ b/sim/testsuite/bfin/m1.S
@@ -0,0 +1,58 @@
+// MAC test program.
+// Test for positive and negative saturation using
+// SIGNED FRACTIONAL mode.
+# mach: bfin
+
+#include "test.h"
+.include "testutils.inc"
+ start
+
+ init_r_regs 0;
+ ASTAT = R0;
+
+// load r0=0x00007fff
+// load r1=0x00007fff
+ loadsym p0, data0
+ R0 = [ P0 ++ ];
+ R1 = [ P0 ++ ];
+
+ R5 = 0;
+ R4 = 0;
+ BITSET( R4 , 9 );
+ A1 = A0 = 0;
+
+LOOP1:
+ A1 -= R0.L * R1.L, A0 += R0.L * R1.L;
+//_DBG a1;
+//_DBG a0;
+ R4 += -1;
+ CC = R4 == R5;
+ IF !CC JUMP LOOP1;
+R3 = ASTAT;
+CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ);
+
+ _DBG A1;
+ _DBG A0;
+
+ R6 = A1.w;
+ _DBG ASTAT;
+ R7.L = A1.x;
+ R3 = ASTAT;
+ _DBG r3;
+ CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ);
+
+ CHECKREG R6, 0;
+ CHECKREG R7, 0x0000FF80;
+ R6 = A0.w;
+ R7.L = A0.x;
+ CHECKREG R6, 0xffffffff;
+ CHECKREG R7, 0x7f;
+
+ pass
+
+ .data 0x1000;
+data0:
+ .dw 0x7fff
+ .dw 0x0000
+ .dw 0x7fff
+ .dw 0x0000