1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
// reg-based SHIFT test program.
# mach: bfin
.include "testutils.inc"
start
// Test FDEP with no sign extension
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0c08; // pos=12 len=8
R1.H = 0x00ff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xfead );
DBGA ( R7.H , 0x123f );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0c04; // pos=12 len=4
R1.H = 0x00ff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xfead );
DBGA ( R7.H , 0x1234 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0c05; // pos=12 len=5
R1.H = 0x00ff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xfead );
DBGA ( R7.H , 0x1235 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0010; // pos=0 len=16
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xffff );
DBGA ( R7.H , 0x1234 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0011; // pos=0 len=17
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xffff );
DBGA ( R7.H , 0x1234 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0114; // pos=1 len=20
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xffff );
DBGA ( R7.H , 0x1235 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x001f; // pos=0 len=31
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xffff );
DBGA ( R7.H , 0x1234 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x1c04; // pos=28 len=4
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xdead );
DBGA ( R7.H , 0xf234 );
R0.L = 0xdead;
R0.H = 0x0234;
R1.L = 0x1d04; // pos=29 len=4
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xdead );
DBGA ( R7.H , 0xe234 );
R0.L = 0xdead;
R0.H = 0x0234;
R1.L = 0x1f04; // pos=31 len=4
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xdead );
DBGA ( R7.H , 0x8234 );
R0.L = 0xdead;
R0.H = 0x0234;
R1.L = 0x2004; // pos=32 len=4, same as pos=0 len=4
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 );
DBGA ( R7.L , 0xdeaf );
DBGA ( R7.H , 0x0234 );
// Test FDEP with sign extension
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0c08; // pos=12 len=8
R1.H = 0x00ff;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0xfead );
DBGA ( R7.H , 0xffff );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
R0.L = 0xdead;
R0.H = 0x1234;
R1.L = 0x0c08; // pos=12 len=8
R1.H = 0x007f;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0xfead );
DBGA ( R7.H , 0x0007 );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
R0.L = 0xdea0;
R0.H = 0x1234;
R1.L = 0x0110; // pos=1 len=16
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0xfffe );
DBGA ( R7.H , 0xffff );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
R0.L = 0xdea0;
R0.H = 0x1234;
R1.L = 0x0101; // pos=1 len=1
R1.H = 0xffff;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0xfffe );
DBGA ( R7.H , 0xffff );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
R0.L = 0xdea0;
R0.H = 0x1234;
R1.L = 0x0102; // pos=1 len=2
R1.H = 0x0001;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0x0002 );
DBGA ( R7.H , 0x0000 );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
R0.L = 0xdea0;
R0.H = 0x1234;
R1.L = 0x0002; // pos=0 len=2
R1.H = 0x0001;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0x0001 );
DBGA ( R7.H , 0x0000 );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
R0.L = 0xdea0;
R0.H = 0x1234;
R1.L = 0x0000; // pos=0 len=0
R1.H = 0x000f;
R7 = DEPOSIT( R0, R1 ) (X);
DBGA ( R7.L , 0x0000 );
DBGA ( R7.H , 0x0000 );
CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
pass
|