binutils-gdb/sim/testsuite/bfin/s21.s
Mike Frysinger 0e7620dcdc sim: bfin: delete accidental ADI copyright
This wasn't supposed to be in here when it was first merged as we
had specifically disabled it for all the tests (and ADI has papers
in place w/the FSF).  Clean up this one.
2021-01-18 21:30:12 -05:00

298 lines
4.6 KiB
ArmAsm

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