// Shifter test program. | |
// Test instructions | |
// RL0 = SIGNBITS R1; | |
// RL0 = SIGNBITS RL1; | |
// RL0 = SIGNBITS RH1; | |
# mach: bfin | |
.include "testutils.inc" | |
start | |
// on 32-b word | |
R1.L = 0xffff; | |
R1.H = 0x7fff; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0000 ); | |
R1.L = 0xffff; | |
R1.H = 0x30ff; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0001 ); | |
R1.L = 0xff0f; | |
R1.H = 0x10ff; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0002 ); | |
R1.L = 0xff0f; | |
R1.H = 0xe0ff; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0002 ); | |
R1.L = 0x0001; | |
R1.H = 0x0000; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0001e ); | |
R1.L = 0xfffe; | |
R1.H = 0xffff; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0001e ); | |
R1.L = 0xffff; // return largest norm for -1 | |
R1.H = 0xffff; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x0001f ); | |
R1.L = 0; // return largest norm for zero | |
R1.H = 0; | |
R0.L = SIGNBITS R1; | |
DBGA ( R0.L , 0x001f ); | |
// on 16-b word | |
R1.L = 0x7fff; | |
R1.H = 0xffff; | |
R0.L = SIGNBITS R1.L; | |
DBGA ( R0.L , 0x0000 ); | |
R1.L = 0x0fff; | |
R1.H = 0x0001; | |
R0.L = SIGNBITS R1.H; | |
DBGA ( R0.L , 0x000e ); | |
R1.L = 0x0fff; | |
R1.H = 0xffff; | |
R0.L = SIGNBITS R1.H; | |
DBGA ( R0.L , 0x000f ); | |
R1.L = 0x0fff; | |
R1.H = 0xfffe; | |
R0.L = SIGNBITS R1.H; | |
DBGA ( R0.L , 0x000e ); | |
pass |