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