| // 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 |