aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/add_shift.S
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bfin/add_shift.S')
-rw-r--r--sim/testsuite/bfin/add_shift.S53
1 files changed, 53 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/add_shift.S b/sim/testsuite/bfin/add_shift.S
new file mode 100644
index 0000000..8a8bf63
--- /dev/null
+++ b/sim/testsuite/bfin/add_shift.S
@@ -0,0 +1,53 @@
+// ACP 5.6 Flags for dreg=(dreg+dreg)<<1,2
+# mach: bfin
+
+#include "test.h"
+.include "testutils.inc"
+ start
+
+
+ r1=0;
+ ASTAT = R1;
+ r2=0;
+ r2.h=0x4000;
+ r2=(r2+r1)<<2;
+ dbga (r2.l,0x0);
+ dbga (r2.h,0x0);
+ _dbg ASTAT;
+ r7=ASTAT;
+ CHECKREG R7, (_VS|_V|_V_COPY|_AZ)
+
+ r2=0;
+ r2.h=0x4000;
+ r2=(r2+r1)<<1;
+ dbga (r2.l,0x0);
+ dbga (r2.h,0x8000);
+ _dbg ASTAT;
+ r7=ASTAT;
+ CHECKREG R7, (_VS|_V|_V_COPY|_AN)
+
+ r1=0;
+ r1.h=0xd300;
+ r2=0;
+ r2.h=0xb700;
+ r2=(r2+r1)<<1;
+ dbga (r2.l,0x0);
+ dbga (r2.h,0x1400);
+ _dbg ASTAT;
+ r7=ASTAT;
+ CHECKREG R7, (_VS|_V|_V_COPY)
+
+ r0 = 1;
+ r0 <<= 31; // r0 should be 0x80000000
+ r7 = 0;
+ ASTAT = r7;
+ _dbg r0;
+ r1 = r0;
+ _dbg r1;
+ r1 = (r1 + r0) << 1; // add overflows to zero, no shift overflow
+ _dbg r1;
+ _dbg ASTAT;
+ r7 = ASTAT;
+ CHECKREG R7, (_VS|_V|_V_COPY|_AZ);
+
+ pass