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