diff options
Diffstat (limited to 'sim/testsuite/bfin/add_shift.S')
-rw-r--r-- | sim/testsuite/bfin/add_shift.S | 53 |
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 |