1// reg-based SHIFT test program. 2# mach: bfin 3 4.include "testutils.inc" 5 start 6 7 8// Test FEXT with no sign extension 9 10 R0.L = 0xdead; 11 R0.H = 0x1234; 12 R1.L = 0x0810; // pos=8 len=16 13 R7 = EXTRACT( R0, R1.L ) (Z); 14 DBGA ( R7.L , 0x34de ); 15 DBGA ( R7.H , 0 ); 16 17 R0.L = 0xdead; 18 R0.H = 0x1234; 19 R1.L = 0x0814; // pos=8 len=20 20 R7 = EXTRACT( R0, R1.L ) (Z); 21 DBGA ( R7.L , 0x34de ); 22 DBGA ( R7.H , 0x0002 ); 23 24 R0.L = 0xdead; 25 R0.H = 0x1234; 26 R1.L = 0x0800; // pos=8 len=0 27 R7 = EXTRACT( R0, R1.L ) (Z); 28 DBGA ( R7.L , 0 ); 29 DBGA ( R7.H , 0 ); 30 31 R0.L = 0xfff1; 32 R0.H = 0xffff; 33 R1.L = 0x0001; // pos=0 len=1 34 R7 = EXTRACT( R0, R1.L ) (Z); 35 DBGA ( R7.L , 0x1 ); 36 DBGA ( R7.H , 0 ); 37 38 R0.L = 0xfff1; 39 R0.H = 0xffff; 40 R1.L = 0x0101; // pos=1 len=1 41 R7 = EXTRACT( R0, R1.L ) (Z); 42 DBGA ( R7.L , 0 ); 43 DBGA ( R7.H , 0 ); 44 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 45 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 46 47 R0.L = 0xfff1; 48 R0.H = 0xffff; 49 R1.L = 0x1810; // pos=24 len=16 50 R7 = EXTRACT( R0, R1.L ) (Z); 51 DBGA ( R7.L , 0x00ff ); 52 DBGA ( R7.H , 0 ); 53 54 R0.L = 0xfff1; 55 R0.H = 0xffff; 56 R1.L = 0x0020; // pos=0 len=32 is like pos=0 len=0 57 R7 = EXTRACT( R0, R1.L ) (Z); 58 DBGA ( R7.L , 0x0 ); 59 DBGA ( R7.H , 0x0 ); 60 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 61 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 62 63 R0.L = 0xfff1; 64 R0.H = 0xffff; 65 R1.L = 0x2020; // pos=32 len=32 is like pos=0 len=0 66 R7 = EXTRACT( R0, R1.L ) (Z); 67 DBGA ( R7.L , 0 ); 68 DBGA ( R7.H , 0 ); 69 70 R0.L = 0xfff1; 71 R0.H = 0xffff; 72 R1.L = 0x1f01; // pos=31 len=1 73 R7 = EXTRACT( R0, R1.L ) (Z); 74 DBGA ( R7.L , 0x1 ); 75 DBGA ( R7.H , 0 ); 76 77 R0.L = 0xfff1; 78 R0.H = 0xffff; 79 R1.L = 0x1000; // pos=16 len=0 80 R7 = EXTRACT( R0, R1.L ) (Z); 81 DBGA ( R7.L , 0 ); 82 DBGA ( R7.H , 0 ); 83 84// Test FEXT with sign extension 85 86 R0.L = 0xdead; 87 R0.H = 0x12f4; 88 R1.L = 0x0810; // pos=8 len=16 89 R7 = EXTRACT( R0, R1.L ) (X); 90 DBGA ( R7.L , 0xf4de ); 91 DBGA ( R7.H , 0xffff ); 92 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 93 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 94 95 R0.L = 0xdead; 96 R0.H = 0x1234; 97 R1.L = 0x0810; // pos=8 len=16 98 R7 = EXTRACT( R0, R1.L ) (X); 99 DBGA ( R7.L , 0x34de ); 100 DBGA ( R7.H , 0x0000 ); 101 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 102 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 103 104 R0.L = 0xdead; 105 R0.H = 0xf234; 106 R1.L = 0x1f01; // pos=31 len=1 107 R7 = EXTRACT( R0, R1.L ) (X); 108 DBGA ( R7.L , 0xffff ); 109 DBGA ( R7.H , 0xffff ); 110 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 111 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 112 113 R0.L = 0xdead; 114 R0.H = 0xf234; 115 R1.L = 0x1f02; // pos=31 len=2 116 R7 = EXTRACT( R0, R1.L ) (X); 117 DBGA ( R7.L , 0x0001 ); 118 DBGA ( R7.H , 0x0000 ); 119 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 120 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 121 122 R0.L = 0xffff; 123 R0.H = 0xffff; 124 R1.L = 0x101f; // pos=16 len=31 125 R7 = EXTRACT( R0, R1.L ) (X); 126 DBGA ( R7.L , 0xffff ); 127 DBGA ( R7.H , 0x0000 ); 128 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 129 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 130 131 R0.L = 0xffff; 132 R0.H = 0xffff; 133 R1.L = 0x1001; // pos=16 len=1 134 R7 = EXTRACT( R0, R1.L ) (X); 135 DBGA ( R7.L , 0xffff ); 136 DBGA ( R7.H , 0xffff ); 137 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 138 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 139 140 R0.L = 0xffff; 141 R0.H = 0xffff; 142 R1.L = 0x1000; // pos=16 len=0 143 R7 = EXTRACT( R0, R1.L ) (X); 144 DBGA ( R7.L , 0 ); 145 DBGA ( R7.H , 0 ); 146 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 147 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 148 149 pass 150