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