1//Original:/testcases/core/c_dsp32shift_ahh/c_dsp32shift_ahh.dsp 2// Spec Reference: dsp32shift ashift/ashift 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9 10// ashift/ashift : positive data, count (+)=left (half reg) 11// d_reg = ashift/ashift (d BY d_lo) 12// Rx by RLx 13imm32 r0, 0x01230000; 14imm32 r1, 0x12345678; 15imm32 r2, 0x23456789; 16imm32 r3, 0x3456789a; 17imm32 r4, 0x456789ab; 18imm32 r5, 0x56789abc; 19imm32 r6, 0x6789abcd; 20imm32 r7, 0x789abcde; 21R5 = ASHIFT R0 BY R0.L (V); 22R0 = ASHIFT R1 BY R0.L (V); 23R1 = ASHIFT R2 BY R0.L (V); 24R2 = ASHIFT R3 BY R0.L (V); 25R3 = ASHIFT R4 BY R0.L (V); 26R4 = ASHIFT R5 BY R0.L (V); 27R7 = ASHIFT R6 BY R0.L (V); 28R6 = ASHIFT R7 BY R0.L (V); 29CHECKREG r0, 0x12345678; 30CHECKREG r1, 0x00230067; 31CHECKREG r2, 0x00340078; 32CHECKREG r3, 0x0045FF89; 33CHECKREG r4, 0x00010000; 34CHECKREG r5, 0x01230000; 35CHECKREG r6, 0x0000FFFF; 36CHECKREG r7, 0x0067FFAB; 37 38imm32 r0, 0x01230002; 39imm32 r1, 0x12345678; 40imm32 r2, 0x23456789; 41imm32 r3, 0x3456789a; 42imm32 r4, 0x456789ab; 43imm32 r5, 0x56789abc; 44imm32 r6, 0x6789abcd; 45imm32 r7, 0x789abcde; 46R1.L = 5; 47R2 = ASHIFT R0 BY R1.L (V); 48R3 = ASHIFT R1 BY R1.L (V); 49R4 = ASHIFT R2 BY R1.L (V); 50R5 = ASHIFT R3 BY R1.L (V); 51R6 = ASHIFT R4 BY R1.L (V); 52R7 = ASHIFT R5 BY R1.L (V); 53R0 = ASHIFT R6 BY R1.L (V); 54R1 = ASHIFT R7 BY R1.L (V); 55CHECKREG r0, 0x00000000; 56CHECKREG r1, 0x00000000; 57CHECKREG r2, 0x24600040; 58CHECKREG r3, 0x468000A0; 59CHECKREG r4, 0x8C000800; 60CHECKREG r5, 0xD0001400; 61CHECKREG r6, 0x80000000; 62CHECKREG r7, 0x00008000; 63 64imm32 r0, 0x01230002; 65imm32 r1, 0x12345678; 66imm32 r2, 0x23456789; 67imm32 r3, 0x3456789a; 68imm32 r4, 0x456789ab; 69imm32 r5, 0x56789abc; 70imm32 r6, 0x6789abcd; 71imm32 r7, 0x789abcde; 72R2 = 15; 73R3 = ASHIFT R0 BY R2.L (V); 74R4 = ASHIFT R1 BY R2.L (V); 75R5 = ASHIFT R2 BY R2.L (V); 76R6 = ASHIFT R3 BY R2.L (V); 77R7 = ASHIFT R4 BY R2.L (V); 78R0 = ASHIFT R5 BY R2.L (V); 79R1 = ASHIFT R6 BY R2.L (V); 80R2 = ASHIFT R7 BY R2.L (V); 81CHECKREG r0, 0x00000000; 82CHECKREG r1, 0x00000000; 83CHECKREG r2, 0x00000000; 84CHECKREG r3, 0x80000000; 85CHECKREG r4, 0x00000000; 86CHECKREG r5, 0x00008000; 87CHECKREG r6, 0x00000000; 88CHECKREG r7, 0x00000000; 89 90imm32 r0, 0x01230002; 91imm32 r1, 0x12345678; 92imm32 r2, 0x23456789; 93imm32 r3, 0x3456789a; 94imm32 r4, 0x456789ab; 95imm32 r5, 0x56789abc; 96imm32 r6, 0x6789abcd; 97imm32 r7, 0x789abcde; 98R3.L = 16; 99R4 = ASHIFT R0 BY R3.L (V); 100R5 = ASHIFT R1 BY R3.L (V); 101R6 = ASHIFT R2 BY R3.L (V); 102R7 = ASHIFT R3 BY R3.L (V); 103R0 = ASHIFT R4 BY R3.L (V); 104R1 = ASHIFT R5 BY R3.L (V); 105R2 = ASHIFT R6 BY R3.L (V); 106R3 = ASHIFT R7 BY R3.L (V); 107CHECKREG r0, 0x00000000; 108CHECKREG r1, 0x00000000; 109CHECKREG r2, 0x00000000; 110CHECKREG r3, 0x00000000; 111CHECKREG r4, 0x00000000; 112CHECKREG r5, 0x00000000; 113CHECKREG r6, 0x00000000; 114CHECKREG r7, 0x00000000; 115 116imm32 r0, 0x01230002; 117imm32 r1, 0x12345678; 118imm32 r2, 0x23456789; 119imm32 r3, 0x3456789a; 120imm32 r4, 0x456789ab; 121imm32 r5, 0x56789abc; 122imm32 r6, 0x6789abcd; 123imm32 r7, 0x789abcde; 124R4.L = -1; 125R0 = ASHIFT R0 BY R4.L (V); 126R1 = ASHIFT R1 BY R4.L (V); 127R2 = ASHIFT R2 BY R4.L (V); 128R3 = ASHIFT R3 BY R4.L (V); 129R4 = ASHIFT R4 BY R4.L (V); 130R5 = ASHIFT R5 BY R4.L (V); 131R6 = ASHIFT R6 BY R4.L (V); 132R7 = ASHIFT R7 BY R4.L (V); 133CHECKREG r0, 0x00910001; 134CHECKREG r1, 0x091A2B3C; 135CHECKREG r2, 0x11A233C4; 136CHECKREG r3, 0x1A2B3C4D; 137CHECKREG r4, 0x22B3FFFF; 138CHECKREG r5, 0x2B3CCD5E; 139CHECKREG r6, 0x33C4D5E6; 140CHECKREG r7, 0x3C4DDE6F; 141 142imm32 r0, 0x01230002; 143imm32 r1, 0x12345678; 144imm32 r2, 0x23456789; 145imm32 r3, 0x3456789a; 146imm32 r4, 0x456789ab; 147imm32 r5, 0x56789abc; 148imm32 r6, 0x6789abcd; 149imm32 r7, 0x789abcde; 150R5.L = -6; 151R6 = ASHIFT R0 BY R5.L (V); 152R7 = ASHIFT R1 BY R5.L (V); 153R0 = ASHIFT R2 BY R5.L (V); 154R1 = ASHIFT R3 BY R5.L (V); 155R2 = ASHIFT R4 BY R5.L (V); 156R3 = ASHIFT R5 BY R5.L (V); 157R4 = ASHIFT R6 BY R5.L (V); 158R5 = ASHIFT R7 BY R5.L (V); 159CHECKREG r0, 0x008D019E; 160CHECKREG r1, 0x00D101E2; 161CHECKREG r2, 0x0115FE26; 162CHECKREG r3, 0x0159FFFF; 163CHECKREG r4, 0x00000000; 164CHECKREG r5, 0x00010005; 165CHECKREG r6, 0x00040000; 166CHECKREG r7, 0x00480159; 167 168imm32 r0, 0x01230002; 169imm32 r1, 0x12345678; 170imm32 r2, 0x23456789; 171imm32 r3, 0x3456789a; 172imm32 r4, 0x456789ab; 173imm32 r5, 0x56789abc; 174imm32 r6, 0x6789abcd; 175imm32 r7, 0x789abcde; 176R6.L = -15; 177R7 = ASHIFT R0 BY R6.L (V); 178R0 = ASHIFT R1 BY R6.L (V); 179R1 = ASHIFT R2 BY R6.L (V); 180R2 = ASHIFT R3 BY R6.L (V); 181R3 = ASHIFT R4 BY R6.L (V); 182R4 = ASHIFT R5 BY R6.L (V); 183R5 = ASHIFT R6 BY R6.L (V); 184R6 = ASHIFT R7 BY R6.L (V); 185CHECKREG r0, 0x00000000; 186CHECKREG r1, 0x00000000; 187CHECKREG r2, 0x00000000; 188CHECKREG r3, 0x0000FFFF; 189CHECKREG r4, 0x0000FFFF; 190CHECKREG r5, 0x0000FFFF; 191CHECKREG r6, 0x00000000; 192CHECKREG r7, 0x00000000; 193 194imm32 r0, 0x01230002; 195imm32 r1, 0x12345678; 196imm32 r2, 0x23456789; 197imm32 r3, 0x3456789a; 198imm32 r4, 0x456789ab; 199imm32 r5, 0x56789abc; 200imm32 r6, 0x6789abcd; 201imm32 r7, 0x789abcde; 202R7.L = -16; 203R0 = ASHIFT R0 BY R7.L (V); 204R1 = ASHIFT R1 BY R7.L (V); 205R2 = ASHIFT R2 BY R7.L (V); 206R3 = ASHIFT R3 BY R7.L (V); 207R4 = ASHIFT R4 BY R7.L (V); 208R5 = ASHIFT R5 BY R7.L (V); 209R6 = ASHIFT R6 BY R7.L (V); 210R7 = ASHIFT R7 BY R7.L (V); 211CHECKREG r0, 0x00000000; 212CHECKREG r1, 0x00000000; 213CHECKREG r2, 0x00000000; 214CHECKREG r3, 0x00000000; 215CHECKREG r4, 0x0000FFFF; 216CHECKREG r5, 0x0000FFFF; 217CHECKREG r6, 0x0000FFFF; 218CHECKREG r7, 0x0000FFFF; 219 220imm32 r0, 0x01230002; 221imm32 r1, 0x12345678; 222imm32 r2, 0x23456789; 223imm32 r3, 0x3456789a; 224imm32 r4, 0x456789ab; 225imm32 r5, 0x56789abc; 226imm32 r6, 0x6789abcd; 227imm32 r7, 0x789abcde; 228R0.L = 4; 229//r0 = ashift/ashift (r0 by rl0); 230R1 = ASHIFT R1 BY R0.L (V); 231R2 = ASHIFT R2 BY R0.L (V); 232R3 = ASHIFT R3 BY R0.L (V); 233R4 = ASHIFT R4 BY R0.L (V); 234R5 = ASHIFT R5 BY R0.L (V); 235R6 = ASHIFT R6 BY R0.L (V); 236R7 = ASHIFT R7 BY R0.L (V); 237CHECKREG r0, 0x01230004; 238CHECKREG r1, 0x23406780; 239CHECKREG r2, 0x34507890; 240CHECKREG r3, 0x456089A0; 241CHECKREG r4, 0x56709AB0; 242CHECKREG r5, 0x6780ABC0; 243CHECKREG r6, 0x7890BCD0; 244CHECKREG r7, 0x89A0CDE0; 245 246imm32 r0, 0x01230002; 247imm32 r1, 0x12345678; 248imm32 r2, 0x23456789; 249imm32 r3, 0x3456789a; 250imm32 r4, 0x456789ab; 251imm32 r5, 0x56789abc; 252imm32 r6, 0x6789abcd; 253imm32 r7, 0x789abcde; 254R1.L = 6; 255R0 = ASHIFT R0 BY R1.L (V); 256//r1 = ashift/ashift (r1 by rl1); 257R2 = ASHIFT R2 BY R1.L (V); 258R3 = ASHIFT R3 BY R1.L (V); 259R4 = ASHIFT R4 BY R1.L (V); 260R5 = ASHIFT R5 BY R1.L (V); 261R6 = ASHIFT R6 BY R1.L (V); 262R7 = ASHIFT R7 BY R1.L (V); 263CHECKREG r0, 0x48C00080; 264CHECKREG r1, 0x12340006; 265CHECKREG r2, 0xD140E240; 266CHECKREG r3, 0x15802680; 267CHECKREG r4, 0x59C06AC0; 268CHECKREG r5, 0x9E00AF00; 269CHECKREG r6, 0xE240F340; 270CHECKREG r7, 0x26803780; 271 272 273imm32 r0, 0x01230002; 274imm32 r1, 0x12345678; 275imm32 r2, 0x23456789; 276imm32 r3, 0x3456789a; 277imm32 r4, 0x456789ab; 278imm32 r5, 0x56789abc; 279imm32 r6, 0x6789abcd; 280imm32 r7, 0x789abcde; 281R2.L = 15; 282R0 = ASHIFT R0 BY R2.L (V); 283R1 = ASHIFT R1 BY R2.L (V); 284//r2 = ashift/ashift (r2 by rl2); 285R3 = ASHIFT R3 BY R2.L (V); 286R4 = ASHIFT R4 BY R2.L (V); 287R5 = ASHIFT R5 BY R2.L (V); 288R6 = ASHIFT R6 BY R2.L (V); 289R7 = ASHIFT R7 BY R2.L (V); 290CHECKREG r0, 0x80000000; 291CHECKREG r1, 0x00000000; 292CHECKREG r2, 0x2345000F; 293CHECKREG r3, 0x00000000; 294CHECKREG r4, 0x80008000; 295CHECKREG r5, 0x00000000; 296CHECKREG r6, 0x80008000; 297CHECKREG r7, 0x00000000; 298 299imm32 r0, 0x01230002; 300imm32 r1, 0x12345678; 301imm32 r2, 0x23456789; 302imm32 r3, 0x3456789a; 303imm32 r4, 0x456789ab; 304imm32 r5, 0x56789abc; 305imm32 r6, 0x6789abcd; 306imm32 r7, 0x789abcde; 307R3.L = 16; 308R0 = ASHIFT R0 BY R3.L (V); 309R1 = ASHIFT R1 BY R3.L (V); 310R2 = ASHIFT R2 BY R3.L (V); 311//r3 = ashift/ashift (r3 by rl3); 312R4 = ASHIFT R4 BY R3.L (V); 313R5 = ASHIFT R5 BY R3.L (V); 314R6 = ASHIFT R6 BY R3.L (V); 315R7 = ASHIFT R7 BY R3.L (V); 316CHECKREG r0, 0x00000000; 317CHECKREG r1, 0x00000000; 318CHECKREG r2, 0x00000000; 319CHECKREG r3, 0x34560010; 320CHECKREG r4, 0x00000000; 321CHECKREG r5, 0x00000000; 322CHECKREG r6, 0x00000000; 323CHECKREG r7, 0x00000000; 324 325imm32 r0, 0x01230002; 326imm32 r1, 0x12345678; 327imm32 r2, 0x23456789; 328imm32 r3, 0x3456789a; 329imm32 r4, 0x456789ab; 330imm32 r5, 0x56789abc; 331imm32 r6, 0x6789abcd; 332imm32 r7, 0x789abcde; 333R4.L = -9; 334R0 = ASHIFT R0 BY R4.L (V); 335R1 = ASHIFT R1 BY R4.L (V); 336R2 = ASHIFT R2 BY R4.L (V); 337R3 = ASHIFT R3 BY R4.L (V); 338//r4 = ashift/ashift (r4 by rl4); 339R5 = ASHIFT R5 BY R4.L (V); 340R6 = ASHIFT R6 BY R4.L (V); 341R7 = ASHIFT R7 BY R4.L (V); 342CHECKREG r0, 0x00000000; 343CHECKREG r1, 0x0009002B; 344CHECKREG r2, 0x00110033; 345CHECKREG r3, 0x001A003C; 346CHECKREG r4, 0x4567FFF7; 347CHECKREG r5, 0x002BFFCD; 348CHECKREG r6, 0x0033FFD5; 349CHECKREG r7, 0x003CFFDE; 350 351imm32 r0, 0x01230002; 352imm32 r1, 0x12345678; 353imm32 r2, 0x23456789; 354imm32 r3, 0x3456789a; 355imm32 r4, 0x456789ab; 356imm32 r5, 0x56789abc; 357imm32 r6, 0x6789abcd; 358imm32 r7, 0x789abcde; 359R5.L = -14; 360R0 = ASHIFT R0 BY R5.L (V); 361R1 = ASHIFT R1 BY R5.L (V); 362R2 = ASHIFT R2 BY R5.L (V); 363R3 = ASHIFT R3 BY R5.L (V); 364R4 = ASHIFT R4 BY R5.L (V); 365//r5 = ashift/ashift (r5 by rl5); 366R6 = ASHIFT R6 BY R5.L (V); 367R7 = ASHIFT R7 BY R5.L (V); 368CHECKREG r0, 0x00000000; 369CHECKREG r1, 0x00000001; 370CHECKREG r2, 0x00000001; 371CHECKREG r3, 0x00000001; 372CHECKREG r4, 0x0001FFFE; 373CHECKREG r5, 0x5678FFF2; 374CHECKREG r6, 0x0001FFFE; 375CHECKREG r7, 0x0001FFFE; 376 377 378imm32 r0, 0x01230002; 379imm32 r1, 0x12345678; 380imm32 r2, 0x23456789; 381imm32 r3, 0x3456789a; 382imm32 r4, 0x456789ab; 383imm32 r5, 0x56789abc; 384imm32 r6, 0x6789abcd; 385imm32 r7, 0x789abcde; 386R6.L = -15; 387R0 = ASHIFT R0 BY R6.L (V); 388R1 = ASHIFT R1 BY R6.L (V); 389R2 = ASHIFT R2 BY R6.L (V); 390R3 = ASHIFT R3 BY R6.L (V); 391R4 = ASHIFT R4 BY R6.L (V); 392R5 = ASHIFT R5 BY R6.L (V); 393//r6 = ashift/ashift (r6 by rl6); 394R7 = ASHIFT R7 BY R6.L (V); 395CHECKREG r0, 0x00000000; 396CHECKREG r1, 0x00000000; 397CHECKREG r2, 0x00000000; 398CHECKREG r3, 0x00000000; 399CHECKREG r4, 0x0000FFFF; 400CHECKREG r5, 0x0000FFFF; 401CHECKREG r6, 0x6789FFF1; 402CHECKREG r7, 0x0000FFFF; 403 404imm32 r0, 0x01230002; 405imm32 r1, 0x12345678; 406imm32 r2, 0x23456789; 407imm32 r3, 0x3456789a; 408imm32 r4, 0x456789ab; 409imm32 r5, 0x56789abc; 410imm32 r6, 0x6789abcd; 411imm32 r7, 0x789abcde; 412R7.L = -16; 413R0 = ASHIFT R0 BY R7.L (V); 414R1 = ASHIFT R1 BY R7.L (V); 415R2 = ASHIFT R2 BY R7.L (V); 416R3 = ASHIFT R3 BY R7.L (V); 417R4 = ASHIFT R4 BY R7.L (V); 418R5 = ASHIFT R5 BY R7.L (V); 419R6 = ASHIFT R6 BY R7.L (V); 420R7 = ASHIFT R7 BY R7.L (V); 421CHECKREG r0, 0x00000000; 422CHECKREG r1, 0x00000000; 423CHECKREG r2, 0x00000000; 424CHECKREG r3, 0x00000000; 425CHECKREG r4, 0x0000ffff; 426CHECKREG r5, 0x0000ffff; 427CHECKREG r6, 0x0000ffff; 428CHECKREG r7, 0x0000ffff; 429 430pass 431