| # mach: bfin |
| |
| // Shift test program. |
| // Test instructions |
| // RL0 = CC = BXOR (A0 AND R1) << 1; |
| // RL0 = CC = BXOR A0 AND R1; |
| // A0 <<=1 (BXOR A0 AND A1 CC); |
| // RL3 = CC = BXOR A0 AND A1 CC; |
| |
| .include "testutils.inc" |
| start |
| |
| init_r_regs 0; |
| ASTAT = R0; |
| |
| // RL0 = CC = BXOR (A0 AND R1) << 1; |
| R0.L = 0x1000; |
| R0.H = 0x0000; |
| A0.w = R0; |
| R0.L = 0x0000; |
| A0.x = R0.L; |
| R1.L = 0xffff; |
| R1.H = 0xffff; |
| R2.L = CC = BXORSHIFT( A0 , R1 ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0x2000 ); |
| DBGA ( R0.H , 0x0000 ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0x0000 ); |
| R0 = CC; |
| DBGA ( R0.L , 0x0001 ); |
| DBGA ( R0.H , 0x0000 ); |
| DBGA ( R2.L , 0x0001 ); |
| |
| R0.L = 0x1000; |
| R0.H = 0x0001; |
| A0.w = R0; |
| R0.L = 0x0000; |
| A0.x = R0.L; |
| R1.L = 0xffff; |
| R1.H = 0xffff; |
| R2.L = CC = BXORSHIFT( A0 , R1 ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0x2000 ); |
| DBGA ( R0.H , 0x0002 ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0x0000 ); |
| R0 = CC; |
| DBGA ( R0.L , 0x0000 ); |
| DBGA ( R0.H , 0x0000 ); |
| DBGA ( R2.L , 0x0000 ); |
| |
| R0.L = 0xffff; |
| R0.H = 0xffff; |
| A0.w = R0; |
| R0.L = 0x00ff; |
| A0.x = R0.L; |
| R1.L = 0xffff; |
| R1.H = 0xffff; |
| R2.L = CC = BXORSHIFT( A0 , R1 ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0xfffe ); |
| DBGA ( R0.H , 0xffff ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0xffff ); |
| R0 = CC; |
| DBGA ( R0.L , 0x0001 ); |
| DBGA ( R0.H , 0x0000 ); |
| DBGA ( R2.L , 0x0001 ); |
| |
| // no |
| R0.L = 0xffff; |
| R0.H = 0xffff; |
| A0.w = R0; |
| R0.L = 0x00ff; |
| A0.x = R0.L; |
| R1.L = 0xffff; |
| R1.H = 0xffff; |
| R2.L = CC = BXOR( A0 , R1 ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0xffff ); |
| DBGA ( R0.H , 0xffff ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0xffff ); |
| R0 = CC; |
| DBGA ( R0.L , 0x0000 ); |
| DBGA ( R0.H , 0x0000 ); |
| DBGA ( R2.H , 0x0000 ); |
| |
| // A0 <<=1 (BXOR A0 AND A1 CC); |
| |
| R0.L = 0x1000; |
| R0.H = 0x0000; |
| A0.w = R0; |
| R0.L = 0x0000; |
| A0.x = R0.L; |
| R0.L = 0xffff; |
| R0.H = 0xffff; |
| A1.w = R0; |
| R0.L = 0x00ff; |
| A1.x = R0.L; |
| R0.L = 0x0000; |
| R0.H = 0x0000; |
| CC = R0; |
| A0 = BXORSHIFT( A0 , A1, CC ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0x2001 ); |
| DBGA ( R0.H , 0x0000 ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0x0000 ); |
| |
| R0.L = 0x1000; |
| R0.H = 0x0000; |
| A0.w = R0; |
| R0.L = 0x0000; |
| A0.x = R0.L; |
| R0.L = 0x0fff; |
| R0.H = 0xffff; |
| A1.w = R0; |
| R0.L = 0x00ff; |
| A1.x = R0.L; |
| R0.L = 0x0000; |
| R0.H = 0x0000; |
| CC = R0; |
| A0 = BXORSHIFT( A0 , A1, CC ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0x2000 ); |
| DBGA ( R0.H , 0x0000 ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0x0000 ); |
| |
| R0.L = 0x1000; |
| R0.H = 0x0000; |
| A0.w = R0; |
| R0.L = 0x0000; |
| A0.x = R0.L; |
| R0.L = 0xffff; |
| R0.H = 0xffff; |
| A1.w = R0; |
| R0.L = 0x00ff; |
| A1.x = R0.L; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| CC = R0; |
| A0 = BXORSHIFT( A0 , A1, CC ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0x2000 ); |
| DBGA ( R0.H , 0x0000 ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0x0000 ); |
| |
| // no |
| |
| R0.L = 0x1000; |
| R0.H = 0x0000; |
| A0.w = R0; |
| R0.L = 0x0000; |
| A0.x = R0.L; |
| R0.L = 0xffff; |
| R0.H = 0xffff; |
| A1.w = R0; |
| R0.L = 0x00ff; |
| A1.x = R0.L; |
| R0.L = 0x0000; |
| R0.H = 0x0000; |
| CC = R0; |
| R2.L = CC = BXOR( A0 , A1, CC ); |
| R0 = A0.w; |
| DBGA ( R0.L , 0x1000 ); |
| DBGA ( R0.H , 0x0000 ); |
| R0.L = A0.x; |
| DBGA ( R0.L , 0x0000 ); |
| DBGA ( R2.L , 0x0001 ); |
| R0 = CC; |
| DBGA ( R0.L , 0x0001 ); |
| |
| pass |