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