| // Test A0 = ROT (A0 by imm6); |
| # mach: bfin |
| |
| .include "testutils.inc" |
| start |
| |
| init_r_regs 0; |
| ASTAT = R0; |
| A0 = A1 = 0; |
| |
| // rot |
| // left by 1 |
| // 00 8000 0001 -> 01 0000 0002 cc=0 |
| R0.L = 0x0001; |
| R0.H = 0x8000; |
| R7 = 0; |
| CC = R7; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0 = ROT A0 BY 1; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0002 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0001 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot |
| // left by 1 |
| // 80 0000 0001 -> 00 0000 0002 cc=1 |
| R7 = 0; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY 1; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0002 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0000 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0001 ); |
| |
| // rot |
| // left by 1 with cc=1 |
| // 80 8000 0001 -> 01 0000 0003 cc=1 |
| R7 = 1; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x8000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY 1; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0003 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0001 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0001 ); |
| |
| // rot |
| // left by 2 with cc=1 |
| // 80 0000 0001 -> 00 0000 0007 cc=0 |
| R7 = 1; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY 2; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0007 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0000 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot |
| // left by 3 with cc=0 |
| R7 = 0; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY 3; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x000a ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0000 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot |
| // left by largest positive magnitude of 31 |
| // 80 0000 0001 -> 00 a000 0000 cc=0 |
| R7 = 0; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY 31; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0000 ); |
| DBGA ( R1.H , 0xa000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0000 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot |
| // right by 1 |
| // 80 0000 0001 -> 40 0000 0000 cc=1 |
| R7 = 0; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY -1; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0000 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0040 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0001 ); |
| |
| // rot |
| // right by 1 |
| // 80 0000 0001 -> c0 0000 0000 cc=1 |
| R7 = 1; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY -1; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0000 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0xffc0 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0001 ); |
| |
| // rot |
| // right by 2 |
| // 80 0000 0001 -> e0 0000 0000 cc=0 |
| R7 = 1; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY -2; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0000 ); |
| DBGA ( R1.H , 0x0000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0xffe0 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot |
| // right by 9 |
| // 80 0000 0001 -> 01 c000 0000 cc=0 |
| R7 = 1; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| A0 = ROT A0 BY -9; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0000 ); |
| DBGA ( R1.H , 0xc000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0001 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot |
| // right by 9 with reg |
| // 80 0000 0001 -> 01 c000 0000 cc=0 |
| R7 = 1; |
| CC = R7; |
| R0.L = 0x0001; |
| R0.H = 0x0000; |
| R1.L = 0x0080; |
| A1 = A0 = 0; |
| A0.w = R0; |
| A0.x = R1.L; |
| R5 = -9; |
| A0 = ROT A0 BY R5.L; |
| R1 = A0.w; |
| DBGA ( R1.L , 0x0000 ); |
| DBGA ( R1.H , 0xc000 ); |
| R1.L = A0.x; |
| DBGA ( R1.L , 0x0001 ); |
| R7 = CC; |
| DBGA ( R7.L , 0x0000 ); |
| |
| // rot left by 4 with cc=1 |
| R0.L = 0x789a; |
| R0.H = 0x3456; |
| A0.w = R0; |
| R0.L = 0x12; |
| A0.x = R0; |
| |
| R0 = 1; |
| CC = R0; |
| |
| A0 = ROT A0 BY 4; |
| |
| R4 = A0.w; |
| R5 = A0.x; |
| DBGA ( R4.H , 0x4567 ); DBGA ( R4.L , 0x89a8 ); |
| DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0023 ); |
| |
| // rot left by 28 with cc=1 |
| R0.L = 0x789a; |
| R0.H = 0x3456; |
| A0.w = R0; |
| R0.L = 0x12; |
| A0.x = R0; |
| |
| R0 = 1; |
| CC = R0; |
| |
| A0 = ROT A0 BY 28; |
| |
| R4 = A0.w; |
| R5 = A0.x; |
| DBGA ( R4.H , 0xa891 ); DBGA ( R4.L , 0xa2b3 ); |
| DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xff89 ); |
| |
| // rot right by 4 with cc=1 |
| R0.L = 0x789a; |
| R0.H = 0x3456; |
| A0.w = R0; |
| R0.L = 0x12; |
| A0.x = R0; |
| |
| R0 = 1; |
| CC = R0; |
| |
| A0 = ROT A0 BY -4; |
| |
| R4 = A0.w; |
| R5 = A0.x; |
| DBGA ( R4.H , 0x2345 ); DBGA ( R4.L , 0x6789 ); |
| DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0051 ); |
| |
| // rot right by 8 with cc=1 |
| R0.L = 0x789a; |
| R0.H = 0x3456; |
| A0.w = R0; |
| R0.L = 0x12; |
| A0.x = R0; |
| |
| R0 = 1; |
| CC = R0; |
| |
| A0 = ROT A0 BY -28; |
| |
| R4 = A0.w; |
| R5 = A0.x; |
| DBGA ( R4.H , 0xcf13 ); DBGA ( R4.L , 0x5123 ); |
| DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xff8a ); |
| |
| pass |