1// ALU test program. 2// Test dual 16 bit MAX, MIN, ABS instructions 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 R0 = 0; 9 ASTAT = R0; 10// MAX 11// first operand is larger, so AN=0 12 R0.L = 0x0001; 13 R0.H = 0x0002; 14 R1.L = 0x0000; 15 R1.H = 0x0000; 16 R7 = MAX ( R0 , R1 ) (V); 17 DBGA ( R7.L , 0x0001 ); 18 DBGA ( R7.H , 0x0002 ); 19 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 20 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 21 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 22 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 23 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 24 25// second operand is larger 26 R0.L = 0x0000; 27 R0.H = 0x0000; 28 R1.L = 0x0001; 29 R1.H = 0x0022; 30 R7 = MAX ( R0 , R1 ) (V); 31 DBGA ( R7.L , 0x0001 ); 32 DBGA ( R7.H , 0x0022 ); 33 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 34 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 35 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 36 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 37 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 38 39// one operand larger, one smaller. 40 R0.L = 0x000a; 41 R0.H = 0x0000; 42 R1.L = 0x0001; 43 R1.H = 0x0022; 44 R7 = MAX ( R0 , R1 ) (V); 45 DBGA ( R7.L , 0x000a ); 46 DBGA ( R7.H , 0x0022 ); 47 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 48 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 49 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 50 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 51 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 52 53 R0.L = 0x8001; 54 R0.H = 0xffff; 55 R1.L = 0x8000; 56 R1.H = 0x0022; 57 R7 = MAX ( R0 , R1 ) (V); 58 DBGA ( R7.L , 0x8001 ); 59 DBGA ( R7.H , 0x0022 ); 60 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 61 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 62 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 63 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 64 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 65 66 R0.L = 0x8000; 67 R0.H = 0xffff; 68 R1.L = 0x8000; 69 R1.H = 0x0022; 70 R7 = MAX ( R0 , R1 ) (V); 71 DBGA ( R7.L , 0x8000 ); 72 DBGA ( R7.H , 0x0022 ); 73 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 74 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 75 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 76 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 77 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 78 79// MIN 80// second operand is smaller 81 R0.L = 0x0001; 82 R0.H = 0x0004; 83 R1.L = 0x0000; 84 R1.H = 0x0000; 85 R7 = MIN ( R0 , R1 ) (V); 86 DBGA ( R7.L , 0x0000 ); 87 DBGA ( R7.H , 0x0000 ); 88 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 89 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 90 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 91 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 92 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 93 94// first operand is smaller 95 R0.L = 0xffff; 96 R0.H = 0x8001; 97 R1.L = 0x0000; 98 R1.H = 0x0000; 99 R7 = MIN ( R0 , R1 ) (V); 100 DBGA ( R7.L , 0xffff ); 101 DBGA ( R7.H , 0x8001 ); 102 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 103 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 104 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 105 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 106 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 107 108// one of each 109 R0.L = 0xffff; 110 R0.H = 0x0034; 111 R1.L = 0x0999; 112 R1.H = 0x0010; 113 R7 = MIN ( R0 , R1 ) (V); 114 DBGA ( R7.L , 0xffff ); 115 DBGA ( R7.H , 0x0010 ); 116 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 117 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 118 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 119 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 120 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 121 122 R0.L = 0xffff; 123 R0.H = 0x0010; 124 R1.L = 0x0999; 125 R1.H = 0x0010; 126 R7 = MIN ( R0 , R1 ) (V); 127 DBGA ( R7.L , 0xffff ); 128 DBGA ( R7.H , 0x0010 ); 129 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 130 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 131 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 132 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 133 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 134 135// ABS 136 R0.L = 0x0001; 137 R0.H = 0x8001; 138 R7 = ABS R0 (V); 139 DBGA ( R7.L , 0x0001 ); 140 DBGA ( R7.H , 0x7fff ); 141 _DBG ASTAT; 142 R6 = ASTAT; 143 _DBG R6; 144 145 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 146 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 147 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 148 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 149 CC = VS; R7 = CC; DBGA ( R7.L , 0x0 ); 150 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 151 152 R0.L = 0x0001; 153 R0.H = 0x8000; 154 R7 = ABS R0 (V); 155 DBGA ( R7.L , 0x0001 ); 156 DBGA ( R7.H , 0x7fff ); 157 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 158 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 159 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 160 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 161 CC = VS; R7 = CC; DBGA ( R7.L , 0x1 ); 162 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 163 164 R0.L = 0x0000; 165 R0.H = 0xffff; 166 R7 = ABS R0 (V); 167 _DBG R7; 168 _DBG ASTAT; 169 R6 = ASTAT; 170 _DBG R6; 171 DBGA ( R7.L , 0x0000 ); 172 DBGA ( R7.H , 0x0001 ); 173 CC = VS; R6 = CC; DBGA ( R6.L, 0x1 ); 174 CC = AZ; R6 = CC; DBGA ( R6.L, 0x1 ); 175 176 pass 177