1 # Blackfin testcase for ashift 2 # mach: bfin 3 4 .include "testutils.inc" 5 6 .macro ashift_test in:req, shift:req, out:req, opt 7 r0 = \in (Z); 8 r2.L = \shift; 9 r2.h = ASHIFT R0.L BY R2.L \opt; 10 DBGA (r2.h, \out); 11 .endm 12 13 start 14 15 /* 16 * 16-bit ashift and lshift uses a 6-bit signed magnitude, which 17 * gives a range from -32 to 31. In the case where the magnitude 18 * is -32, make sure the answer is correct. 19 */ 20 21 ashift_test 0x8001, 33, 0xffff; 22 ashift_test 0x8001, 32, 0xffff; 23 ashift_test 0x8001, 31, 0x0000; 24 ashift_test 0x8001, 30, 0x0000; 25 ashift_test 0x8001, 29, 0x0000; 26 ashift_test 0x8001, 28, 0x0000; 27 ashift_test 0x8001, 27, 0x0000; 28 ashift_test 0x8001, 26, 0x0000; 29 ashift_test 0x8001, 25, 0x0000; 30 ashift_test 0x8001, 24, 0x0000; 31 ashift_test 0x8001, 23, 0x0000; 32 ashift_test 0x8001, 22, 0x0000; 33 ashift_test 0x8001, 21, 0x0000; 34 ashift_test 0x8001, 20, 0x0000; 35 ashift_test 0x8001, 19, 0x0000; 36 ashift_test 0x8001, 18, 0x0000; 37 ashift_test 0x8001, 17, 0x0000; 38 ashift_test 0x8001, 16, 0x0000; 39 ashift_test 0x8001, 15, 0x8000; 40 ashift_test 0x8001, 14, 0x4000; 41 ashift_test 0x8001, 13, 0x2000; 42 ashift_test 0x8001, 12, 0x1000; 43 ashift_test 0x8001, 11, 0x0800; 44 ashift_test 0x8001, 10, 0x0400; 45 ashift_test 0x8001, 9, 0x0200; 46 ashift_test 0x8001, 8, 0x0100; 47 ashift_test 0x8001, 7, 0x0080; 48 ashift_test 0x8001, 6, 0x0040; 49 ashift_test 0x8001, 5, 0x0020; 50 ashift_test 0x8001, 4, 0x0010; 51 ashift_test 0x8001, 3, 0x0008; 52 ashift_test 0x8001, 2, 0x0004; 53 ashift_test 0x8001, 1, 0x0002; 54 ashift_test 0x8001, 0, 0x8001; 55 ashift_test 0x8001, -1, 0xc000; 56 ashift_test 0x8001, -2, 0xe000; 57 ashift_test 0x8001, -3, 0xf000; 58 ashift_test 0x8001, -4, 0xf800; 59 ashift_test 0x8001, -5, 0xfc00; 60 ashift_test 0x8001, -6, 0xfe00; 61 ashift_test 0x8001, -7, 0xff00; 62 ashift_test 0x8001, -8, 0xff80; 63 ashift_test 0x8001, -9, 0xffc0; 64 ashift_test 0x8001, -10, 0xffe0; 65 ashift_test 0x8001, -11, 0xfff0; 66 ashift_test 0x8001, -12, 0xfff8; 67 ashift_test 0x8001, -13, 0xfffc; 68 ashift_test 0x8001, -14, 0xfffe; 69 ashift_test 0x8001, -15, 0xffff; 70 ashift_test 0x8001, -16, 0xffff; 71 ashift_test 0x8001, -17, 0xffff; 72 ashift_test 0x8001, -18, 0xffff; 73 ashift_test 0x8001, -19, 0xffff; 74 ashift_test 0x8001, -20, 0xffff; 75 ashift_test 0x8001, -21, 0xffff; 76 ashift_test 0x8001, -22, 0xffff; 77 ashift_test 0x8001, -23, 0xffff; 78 ashift_test 0x8001, -24, 0xffff; 79 ashift_test 0x8001, -25, 0xffff; 80 ashift_test 0x8001, -26, 0xffff; 81 ashift_test 0x8001, -27, 0xffff; 82 ashift_test 0x8001, -28, 0xffff; 83 ashift_test 0x8001, -29, 0xffff; 84 ashift_test 0x8001, -30, 0xffff; 85 ashift_test 0x8001, -31, 0xffff; 86 ashift_test 0x8001, -32, 0xffff; 87 ashift_test 0x8001, -33, 0x0; 88 ashift_test 0x8001, -34, 0x0; 89 90 ashift_test 0x8001, 33, 0xffff, (S); 91 ashift_test 0x8001, 32, 0xffff, (S); 92 ashift_test 0x8001, 31, 0x8000, (S); 93 ashift_test 0x8001, 30, 0x8000, (S); 94 ashift_test 0x8001, 29, 0x8000, (S); 95 ashift_test 0x8001, 28, 0x8000, (S); 96 ashift_test 0x8001, 27, 0x8000, (S); 97 ashift_test 0x8001, 26, 0x8000, (S); 98 ashift_test 0x8001, 25, 0x8000, (S); 99 ashift_test 0x8001, 24, 0x8000, (S); 100 ashift_test 0x8001, 23, 0x8000, (S); 101 ashift_test 0x8001, 22, 0x8000, (S); 102 ashift_test 0x8001, 21, 0x8000, (S); 103 ashift_test 0x8001, 20, 0x8000, (S); 104 ashift_test 0x8001, 19, 0x8000, (S); 105 ashift_test 0x8001, 18, 0x8000, (S); 106 ashift_test 0x8001, 17, 0x8000, (S); 107 ashift_test 0x8001, 16, 0x8000, (S); 108 ashift_test 0x8001, 15, 0x8000, (S); 109 ashift_test 0x8001, 14, 0x8000, (S); 110 ashift_test 0x8001, 13, 0x8000, (S); 111 ashift_test 0x8001, 12, 0x8000, (S); 112 ashift_test 0x8001, 11, 0x8000, (S); 113 ashift_test 0x8001, 10, 0x8000, (S); 114 ashift_test 0x8001, 9, 0x8000, (S); 115 ashift_test 0x8001, 8, 0x8000, (S); 116 ashift_test 0x8001, 7, 0x8000, (S); 117 ashift_test 0x8001, 6, 0x8000, (S); 118 ashift_test 0x8001, 5, 0x8000, (S); 119 ashift_test 0x8001, 4, 0x8000, (S); 120 ashift_test 0x8001, 3, 0x8000, (S); 121 ashift_test 0x8001, 2, 0x8000, (S); 122 ashift_test 0x8001, 1, 0x8000, (S); 123 ashift_test 0x8001, 0, 0x8001, (S); 124 ashift_test 0x8001, -1, 0xc000, (S); 125 ashift_test 0x8001, -2, 0xe000, (S); 126 ashift_test 0x8001, -3, 0xf000, (S); 127 ashift_test 0x8001, -4, 0xf800, (S); 128 ashift_test 0x8001, -5, 0xfc00, (S); 129 ashift_test 0x8001, -6, 0xfe00, (S); 130 ashift_test 0x8001, -7, 0xff00, (S); 131 ashift_test 0x8001, -8, 0xff80, (S); 132 ashift_test 0x8001, -9, 0xffc0, (S); 133 ashift_test 0x8001, -10, 0xffe0, (S); 134 ashift_test 0x8001, -11, 0xfff0, (S); 135 ashift_test 0x8001, -12, 0xfff8, (S); 136 ashift_test 0x8001, -13, 0xfffc, (S); 137 ashift_test 0x8001, -14, 0xfffe, (S); 138 ashift_test 0x8001, -15, 0xffff, (S); 139 ashift_test 0x8001, -16, 0xffff, (S); 140 ashift_test 0x8001, -17, 0xffff, (S); 141 ashift_test 0x8001, -18, 0xffff, (S); 142 ashift_test 0x8001, -19, 0xffff, (S); 143 ashift_test 0x8001, -20, 0xffff, (S); 144 ashift_test 0x8001, -21, 0xffff, (S); 145 ashift_test 0x8001, -22, 0xffff, (S); 146 ashift_test 0x8001, -23, 0xffff, (S); 147 ashift_test 0x8001, -24, 0xffff, (S); 148 ashift_test 0x8001, -25, 0xffff, (S); 149 ashift_test 0x8001, -26, 0xffff, (S); 150 ashift_test 0x8001, -27, 0xffff, (S); 151 ashift_test 0x8001, -28, 0xffff, (S); 152 ashift_test 0x8001, -29, 0xffff, (S); 153 ashift_test 0x8001, -30, 0xffff, (S); 154 ashift_test 0x8001, -31, 0xffff, (S); 155 ashift_test 0x8001, -32, 0xffff, (S); 156 ashift_test 0x8001, -33, 0x8000, (S); 157 ashift_test 0x8001, -34, 0x8000, (S); 158 159 160 ashift_test 0x4002, 33, 0x0; 161 ashift_test 0x4002, 32, 0x0; 162 ashift_test 0x4002, 31, 0x0; 163 ashift_test 0x4002, 30, 0x0; 164 ashift_test 0x4002, 20, 0x0; 165 ashift_test 0x4002, 19, 0x0; 166 ashift_test 0x4002, 18, 0x0; 167 ashift_test 0x4002, 17, 0x0; 168 ashift_test 0x4002, 16, 0x0; 169 ashift_test 0x4002, 15, 0x0; 170 ashift_test 0x4002, 14, 0x8000; 171 ashift_test 0x4002, 13, 0x4000; 172 ashift_test 0x4002, 12, 0x2000; 173 ashift_test 0x4002, 11, 0x1000; 174 ashift_test 0x4002, 10, 0x0800; 175 ashift_test 0x4002, 9, 0x0400; 176 ashift_test 0x4002, 8, 0x0200; 177 ashift_test 0x4002, 7, 0x0100; 178 ashift_test 0x4002, 6, 0x0080; 179 ashift_test 0x4002, 5, 0x0040; 180 ashift_test 0x4002, 4, 0x0020; 181 ashift_test 0x4002, 3, 0x0010; 182 ashift_test 0x4002, 2, 0x0008; 183 ashift_test 0x4002, 1, 0x8004; 184 ashift_test 0x4002, 0, 0x4002; 185 ashift_test 0x4002, -1, 0x2001; 186 ashift_test 0x4002, -2, 0x1000; 187 ashift_test 0x4002, -3, 0x0800; 188 ashift_test 0x4002, -4, 0x0400; 189 ashift_test 0x4002, -5, 0x0200; 190 ashift_test 0x4002, -6, 0x0100; 191 ashift_test 0x4002, -7, 0x0080; 192 ashift_test 0x4002, -8, 0x0040; 193 ashift_test 0x4002, -9, 0x0020; 194 ashift_test 0x4002, -10, 0x0010; 195 ashift_test 0x4002, -11, 0x0008; 196 ashift_test 0x4002, -12, 0x0004; 197 ashift_test 0x4002, -13, 0x0002; 198 ashift_test 0x4002, -14, 0x0001; 199 ashift_test 0x4002, -15, 0x0; 200 ashift_test 0x4002, -16, 0x0; 201 ashift_test 0x4002, -17, 0x0; 202 ashift_test 0x4002, -31, 0x0; 203 ashift_test 0x4002, -32, 0x0; 204 ashift_test 0x4002, -33, 0x0; 205 ashift_test 0x4002, -34, 0x0; 206 207 ashift_test 0x4002, 33, 0x0, (S); 208 ashift_test 0x4002, 32, 0x0, (S); 209 ashift_test 0x4002, 31, 0x7fff, (S); 210 ashift_test 0x4002, 30, 0x7fff, (S); 211 ashift_test 0x4002, 20, 0x7fff, (S); 212 ashift_test 0x4002, 19, 0x7fff, (S); 213 ashift_test 0x4002, 18, 0x7fff, (S); 214 ashift_test 0x4002, 17, 0x7fff, (S); 215 ashift_test 0x4002, 16, 0x7fff, (S); 216 ashift_test 0x4002, 15, 0x7fff, (S); 217 ashift_test 0x4002, 14, 0x7fff, (S); 218 ashift_test 0x4002, 13, 0x7fff, (S); 219 ashift_test 0x4002, 12, 0x7fff, (S); 220 ashift_test 0x4002, 11, 0x7fff, (S); 221 ashift_test 0x4002, 10, 0x7fff, (S); 222 ashift_test 0x4002, 9, 0x7fff, (S); 223 ashift_test 0x4002, 8, 0x7fff, (S); 224 ashift_test 0x4002, 7, 0x7fff, (S); 225 ashift_test 0x4002, 6, 0x7fff, (S); 226 ashift_test 0x4002, 5, 0x7fff, (S); 227 ashift_test 0x4002, 4, 0x7fff, (S); 228 ashift_test 0x4002, 3, 0x7fff, (S); 229 ashift_test 0x4002, 2, 0x7fff, (S); 230 ashift_test 0x4002, 1, 0x7fff, (S); 231 ashift_test 0x4002, 0, 0x4002, (S); 232 ashift_test 0x4002, -1, 0x2001, (S); 233 ashift_test 0x4002, -2, 0x1000, (S); 234 ashift_test 0x4002, -3, 0x0800, (S); 235 ashift_test 0x4002, -4, 0x0400, (S); 236 ashift_test 0x4002, -5, 0x0200, (S); 237 ashift_test 0x4002, -6, 0x0100, (S); 238 ashift_test 0x4002, -7, 0x0080, (S); 239 ashift_test 0x4002, -8, 0x0040, (S); 240 ashift_test 0x4002, -9, 0x0020, (S); 241 ashift_test 0x4002, -10, 0x0010, (S); 242 ashift_test 0x4002, -11, 0x0008, (S); 243 ashift_test 0x4002, -12, 0x0004, (S); 244 ashift_test 0x4002, -13, 0x0002, (S); 245 ashift_test 0x4002, -14, 0x0001, (S); 246 ashift_test 0x4002, -15, 0x0000, (S); 247 ashift_test 0x4002, -16, 0x0000, (S); 248 ashift_test 0x4002, -17, 0x0000, (S); 249 ashift_test 0x4002, -31, 0x0000, (S); 250 ashift_test 0x4002, -32, 0x0000, (S); 251 ashift_test 0x4002, -33, 0x7fff, (S); 252 ashift_test 0x4002, -34, 0x7fff, (S); 253 254 ashift_test 0x0001, 33, 0x0000, (S); 255 ashift_test 0x0001, 32, 0x0000, (S); 256 ashift_test 0x0001, 31, 0x7fff, (S); 257 ashift_test 0x0001, 30, 0x7fff, (S); 258 ashift_test 0x0001, 29, 0x7fff, (S); 259 ashift_test 0x0001, 28, 0x7fff, (S); 260 ashift_test 0x0001, 27, 0x7fff, (S); 261 ashift_test 0x0001, 26, 0x7fff, (S); 262 ashift_test 0x0001, 25, 0x7fff, (S); 263 ashift_test 0x0001, 24, 0x7fff, (S); 264 ashift_test 0x0001, 23, 0x7fff, (S); 265 ashift_test 0x0001, 22, 0x7fff, (S); 266 ashift_test 0x0001, 21, 0x7fff, (S); 267 ashift_test 0x0001, 20, 0x7fff, (S); 268 ashift_test 0x0001, 19, 0x7fff, (S); 269 ashift_test 0x0001, 18, 0x7fff, (S); 270 ashift_test 0x0001, 17, 0x7fff, (S); 271 ashift_test 0x0001, 16, 0x7fff, (S); 272 ashift_test 0x0001, 15, 0x7fff, (S); 273 ashift_test 0x0001, 14, 0x4000, (S); 274 ashift_test 0x0001, 13, 0x2000, (S); 275 ashift_test 0x0001, 12, 0x1000, (S); 276 ashift_test 0x0001, 11, 0x0800, (S); 277 ashift_test 0x0001, 10, 0x0400, (S); 278 ashift_test 0x0001, 9, 0x0200, (S); 279 ashift_test 0x0001, 8, 0x0100, (S); 280 ashift_test 0x0001, 7, 0x0080, (S); 281 ashift_test 0x0001, 6, 0x0040, (S); 282 ashift_test 0x0001, 5, 0x0020, (S); 283 ashift_test 0x0001, 4, 0x0010, (S); 284 ashift_test 0x0001, 3, 0x0008, (S); 285 ashift_test 0x0001, 2, 0x0004, (S); 286 ashift_test 0x0001, 1, 0x0002, (S); 287 ashift_test 0x0001, 0, 0x0001, (S); 288 ashift_test 0x0001, -1, 0x0000, (S); 289 ashift_test 0x0001, -2, 0x0000, (S); 290 ashift_test 0x0001, -3, 0x0000, (S); 291 ashift_test 0x0001, -4, 0x0000, (S); 292 ashift_test 0x0001, -5, 0x0000, (S); 293 ashift_test 0x0001, -6, 0x0000, (S); 294 ashift_test 0x0001, -7, 0x0000, (S); 295 ashift_test 0x0001, -8, 0x0000, (S); 296 ashift_test 0x0001, -9, 0x0000, (S); 297 ashift_test 0x0001, -10, 0x0000, (S); 298 ashift_test 0x0001, -11, 0x0000, (S); 299 ashift_test 0x0001, -12, 0x0000, (S); 300 ashift_test 0x0001, -13, 0x0000, (S); 301 ashift_test 0x0001, -14, 0x0, (S); 302 ashift_test 0x0001, -15, 0x0, (S); 303 ashift_test 0x0001, -16, 0x0, (S); 304 ashift_test 0x0001, -17, 0x0, (S); 305 ashift_test 0x0001, -18, 0x0, (S); 306 ashift_test 0x0001, -19, 0x0, (S); 307 ashift_test 0x0001, -20, 0x0, (S); 308 ashift_test 0x0001, -21, 0x0, (S); 309 ashift_test 0x0001, -22, 0x0, (S); 310 ashift_test 0x0001, -23, 0x0, (S); 311 ashift_test 0x0001, -24, 0x0, (S); 312 ashift_test 0x0001, -25, 0x0, (S); 313 ashift_test 0x0001, -26, 0x0, (S); 314 ashift_test 0x0001, -27, 0x0, (S); 315 ashift_test 0x0001, -28, 0x0, (S); 316 ashift_test 0x0001, -29, 0x0, (S); 317 ashift_test 0x0001, -30, 0x0, (S); 318 ashift_test 0x0001, -31, 0x0, (S); 319 ashift_test 0x0001, -32, 0x0, (S); 320 ashift_test 0x0001, -33, 0x7fff, (S); 321 ashift_test 0x0001, -34, 0x7fff, (S); 322 323 pass 324