1//Original:/testcases/core/c_dsp32shiftim_ahalf_rp_s/c_dsp32shiftim_ahalf_rp_s.dsp 2// Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5) saturated 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9 10// Ashift : positive data, count (+)=right (half reg) 11// d_lo = ashft (d_lo BY d_lo) 12// RLx by RLx 13imm32 r0, 0x00000000; 14R0.L = -1; 15imm32 r1, 0x00010001; 16imm32 r2, 0x00010002; 17imm32 r3, 0x00010003; 18imm32 r4, 0x00010004; 19imm32 r5, 0x00010005; 20imm32 r6, 0x00010006; 21imm32 r7, 0x00010007; 22R0.L = R0.L >>> 1; 23R1.L = R1.L >>> 1; 24R2.L = R2.L >>> 1; 25R3.L = R3.L >>> 1; 26R4.L = R4.L >>> 1; 27R5.L = R5.L >>> 1; 28R6.L = R6.L >>> 1; 29R7.L = R7.L >>> 1; 30CHECKREG r0, 0x0000FFFF; 31CHECKREG r1, 0x00010000; 32CHECKREG r2, 0x00010001; 33CHECKREG r3, 0x00010001; 34CHECKREG r4, 0x00010002; 35CHECKREG r5, 0x00010002; 36CHECKREG r6, 0x00010003; 37CHECKREG r7, 0x00010003; 38 39imm32 r0, 0x00201001; 40R1.L = -1; 41imm32 r2, 0x00202002; 42imm32 r3, 0x00203003; 43imm32 r4, 0x00204004; 44imm32 r5, 0x00205005; 45imm32 r6, 0x00206006; 46imm32 r7, 0x00207007; 47R7.L = R0.L >>> 5; 48R0.L = R1.L >>> 5; 49R1.L = R2.L >>> 5; 50R2.L = R3.L >>> 5; 51R3.L = R4.L >>> 5; 52R4.L = R5.L >>> 5; 53R5.L = R6.L >>> 5; 54R6.L = R7.L >>> 5; 55CHECKREG r0, 0x0020FFFF; 56CHECKREG r1, 0x00010100; 57CHECKREG r2, 0x00200180; 58CHECKREG r3, 0x00200200; 59CHECKREG r4, 0x00200280; 60CHECKREG r5, 0x00200300; 61CHECKREG r6, 0x00200004; 62CHECKREG r7, 0x00200080; 63 64 65imm32 r0, 0x03001001; 66imm32 r1, 0x03001001; 67R2.L = -15; 68imm32 r3, 0x03003003; 69imm32 r4, 0x03004004; 70imm32 r5, 0x03005005; 71imm32 r6, 0x03006006; 72imm32 r7, 0x03007007; 73R6.L = R0.L >>> 2; 74R7.L = R1.L >>> 2; 75R0.L = R2.L >>> 2; 76R1.L = R3.L >>> 2; 77R2.L = R4.L >>> 2; 78R3.L = R5.L >>> 2; 79R4.L = R6.L >>> 2; 80R5.L = R7.L >>> 2; 81CHECKREG r0, 0x0300FFFC; 82CHECKREG r1, 0x03000C00; 83CHECKREG r2, 0x00201001; 84CHECKREG r3, 0x03001401; 85CHECKREG r4, 0x03000100; 86CHECKREG r5, 0x03000100; 87CHECKREG r6, 0x03000400; 88CHECKREG r7, 0x03000400; 89 90imm32 r0, 0x40001001; 91imm32 r1, 0x40001001; 92imm32 r2, 0x40002002; 93R3.L = -16; 94imm32 r4, 0x40004004; 95imm32 r5, 0x40005005; 96imm32 r6, 0x40006006; 97imm32 r7, 0x40007007; 98R5.L = R0.L >>> 13; 99R6.L = R1.L >>> 13; 100R7.L = R2.L >>> 13; 101R0.L = R3.L >>> 13; 102R1.L = R4.L >>> 13; 103R2.L = R5.L >>> 13; 104R3.L = R6.L >>> 13; 105R4.L = R7.L >>> 13; 106CHECKREG r0, 0x4000FFFF; 107CHECKREG r1, 0x40000002; 108CHECKREG r2, 0x40000000; 109CHECKREG r3, 0x03000000; 110CHECKREG r4, 0x40000000; 111CHECKREG r5, 0x40000000; 112CHECKREG r6, 0x40000000; 113CHECKREG r7, 0x40000001; 114 115// d_lo = ashift (d_hi BY d_lo) 116// RHx by RLx 117imm32 r0, 0x50000000; 118imm32 r1, 0x50010000; 119imm32 r2, 0x50020000; 120imm32 r3, 0x50030000; 121imm32 r4, 0x50040000; 122imm32 r5, 0x50050000; 123imm32 r6, 0x50060000; 124imm32 r7, 0x50070000; 125R3.L = R0.H >>> 10; 126R4.L = R1.H >>> 10; 127R5.L = R2.H >>> 10; 128R6.L = R3.H >>> 10; 129R7.L = R4.H >>> 10; 130R0.L = R5.H >>> 10; 131R1.L = R6.H >>> 10; 132R2.L = R7.H >>> 10; 133CHECKREG r0, 0x50000014; 134CHECKREG r1, 0x50010014; 135CHECKREG r2, 0x50020014; 136CHECKREG r3, 0x50030014; 137CHECKREG r4, 0x50040014; 138CHECKREG r5, 0x50050014; 139CHECKREG r6, 0x50060014; 140CHECKREG r7, 0x50070014; 141 142imm32 r0, 0x10016000; 143R1.L = -1; 144imm32 r2, 0x20026000; 145imm32 r3, 0x30036000; 146imm32 r4, 0x40046000; 147imm32 r5, 0x50056000; 148imm32 r6, 0x60060000; 149imm32 r7, 0x70076000; 150R0.L = R0.H >>> 11; 151R1.L = R1.H >>> 11; 152R2.L = R2.H >>> 11; 153R3.L = R3.H >>> 11; 154R4.L = R4.H >>> 11; 155R5.L = R5.H >>> 11; 156R6.L = R6.H >>> 11; 157R7.L = R7.H >>> 11; 158CHECKREG r0, 0x10010002; 159CHECKREG r1, 0x5001000A; 160CHECKREG r2, 0x20020004; 161CHECKREG r3, 0x30030006; 162CHECKREG r4, 0x40040008; 163CHECKREG r5, 0x5005000A; 164CHECKREG r6, 0x6006000C; 165CHECKREG r7, 0x7007000E; 166 167 168imm32 r0, 0x10010700; 169imm32 r1, 0x10010700; 170R2.L = -15; 171imm32 r3, 0x30030700; 172imm32 r4, 0x40040000; 173imm32 r5, 0x50050700; 174imm32 r6, 0x60060000; 175imm32 r7, 0x70070700; 176R0.L = R0.H >>> 15; 177R1.L = R1.H >>> 15; 178R2.L = R2.H >>> 15; 179R3.L = R3.H >>> 15; 180R4.L = R4.H >>> 15; 181R5.L = R5.H >>> 15; 182R6.L = R6.H >>> 15; 183R7.L = R7.H >>> 15; 184CHECKREG r0, 0x10010000; 185CHECKREG r1, 0x10010000; 186CHECKREG r2, 0x20020000; 187CHECKREG r3, 0x30030000; 188CHECKREG r4, 0x40040000; 189CHECKREG r5, 0x50050000; 190CHECKREG r6, 0x60060000; 191CHECKREG r7, 0x70070000; 192 193imm32 r0, 0x18010001; 194imm32 r1, 0x18010001; 195imm32 r2, 0x28020002; 196R3.L = -16; 197imm32 r4, 0x48040004; 198imm32 r5, 0x58050005; 199imm32 r6, 0x68060006; 200imm32 r7, 0x78070007; 201R0.L = R0.H >>> 13; 202R1.L = R1.H >>> 13; 203R2.L = R2.H >>> 13; 204R3.L = R3.H >>> 13; 205R4.L = R4.H >>> 13; 206R5.L = R5.H >>> 13; 207R6.L = R6.H >>> 13; 208R7.L = R7.H >>> 13; 209CHECKREG r0, 0x18010000; 210CHECKREG r1, 0x18010000; 211CHECKREG r2, 0x28020001; 212CHECKREG r3, 0x30030001; 213CHECKREG r4, 0x48040002; 214CHECKREG r5, 0x58050002; 215CHECKREG r6, 0x68060003; 216CHECKREG r7, 0x78070003; 217 218// d_hi = ashft (d_lo BY d_lo) 219// RLx by RLx 220imm32 r0, 0x09000091; 221imm32 r1, 0x09000091; 222imm32 r2, 0x09000092; 223imm32 r3, 0x09000093; 224imm32 r4, 0x09000090; 225imm32 r5, 0x09000095; 226imm32 r6, 0x09000096; 227imm32 r7, 0x09000097; 228R0.H = R0.L >>> 14; 229R1.H = R1.L >>> 14; 230R2.H = R2.L >>> 14; 231R3.H = R3.L >>> 14; 232R4.H = R4.L >>> 14; 233R5.H = R5.L >>> 14; 234R6.H = R6.L >>> 14; 235R7.H = R7.L >>> 14; 236CHECKREG r0, 0x00000091; 237CHECKREG r1, 0x00000091; 238CHECKREG r2, 0x00000092; 239CHECKREG r3, 0x00000093; 240CHECKREG r4, 0x00000090; 241CHECKREG r5, 0x00000095; 242CHECKREG r6, 0x00000096; 243CHECKREG r7, 0x00000097; 244 245imm32 r0, 0xa0000001; 246imm32 r1, 0xa0000001; 247imm32 r2, 0xa0000002; 248imm32 r3, 0xa0000003; 249imm32 r4, 0xa0000004; 250R5.L = -1; 251imm32 r6, 0xa0000006; 252imm32 r7, 0xa0000007; 253R0.H = R0.L >>> 15; 254R1.H = R1.L >>> 15; 255R2.H = R2.L >>> 15; 256R3.H = R3.L >>> 15; 257R4.H = R4.L >>> 15; 258R5.H = R5.L >>> 15; 259R6.H = R6.L >>> 15; 260R7.H = R7.L >>> 15; 261CHECKREG r0, 0x00000001; 262CHECKREG r1, 0x00000001; 263CHECKREG r2, 0x00000002; 264CHECKREG r3, 0x00000003; 265CHECKREG r4, 0x00000004; 266CHECKREG r5, 0xFFFFFFFF; 267CHECKREG r6, 0x00000006; 268CHECKREG r7, 0x00000007; 269 270 271imm32 r0, 0xb0001001; 272imm32 r1, 0xb0001001; 273imm32 r1, 0xb0002002; 274imm32 r3, 0xb0003003; 275imm32 r4, 0xb0004004; 276imm32 r5, 0xb0005005; 277R6.L = -15; 278imm32 r7, 0xb0007007; 279R0.H = R0.L >>> 6; 280R1.H = R1.L >>> 6; 281R2.H = R2.L >>> 6; 282R3.H = R3.L >>> 6; 283R4.H = R4.L >>> 6; 284R5.H = R5.L >>> 6; 285R6.H = R6.L >>> 6; 286R7.H = R7.L >>> 6; 287CHECKREG r0, 0x00401001; 288CHECKREG r1, 0x00802002; 289CHECKREG r2, 0x00000002; 290CHECKREG r3, 0x00C03003; 291CHECKREG r4, 0x01004004; 292CHECKREG r5, 0x01405005; 293CHECKREG r6, 0xFFFFFFF1; 294CHECKREG r7, 0x01C07007; 295 296imm32 r0, 0x0c001c01; 297imm32 r1, 0x0c002c01; 298imm32 r2, 0x0c002c02; 299imm32 r3, 0x0c003c03; 300imm32 r4, 0x0c004c04; 301imm32 r5, 0x0c005c05; 302imm32 r6, 0x0c006c06; 303R7.L = -16; 304R0.H = R0.L >>> 7; 305R1.H = R1.L >>> 7; 306R2.H = R2.L >>> 7; 307R3.H = R3.L >>> 7; 308R4.H = R4.L >>> 7; 309R5.H = R5.L >>> 7; 310R6.H = R6.L >>> 7; 311R7.H = R7.L >>> 7; 312CHECKREG r0, 0x00381C01; 313CHECKREG r1, 0x00582C01; 314CHECKREG r2, 0x00582C02; 315CHECKREG r3, 0x00783C03; 316CHECKREG r4, 0x00984C04; 317CHECKREG r5, 0x00B85C05; 318CHECKREG r6, 0x00D86C06; 319CHECKREG r7, 0xFFFFFFF0; 320 321// d_lo = ashft (d_hi BY d_lo) 322// RHx by RLx 323imm32 r0, 0x0d01d000; 324imm32 r1, 0x0d01d000; 325imm32 r2, 0x0d02d000; 326imm32 r3, 0x0d03d000; 327R4.L = -1; 328imm32 r5, 0x0d05d000; 329imm32 r6, 0x0d06d000; 330imm32 r7, 0x0d07d000; 331R0.H = R0.H >>> 4; 332R1.H = R1.H >>> 4; 333R2.H = R2.H >>> 4; 334R3.H = R3.H >>> 4; 335R4.H = R4.H >>> 4; 336R5.H = R5.H >>> 4; 337R6.H = R6.H >>> 4; 338R7.H = R6.H >>> 4; 339CHECKREG r0, 0x00D0D000; 340CHECKREG r1, 0x00D0D000; 341CHECKREG r2, 0x00D0D000; 342CHECKREG r3, 0x00D0D000; 343CHECKREG r4, 0x0009FFFF; 344CHECKREG r5, 0x00D0D000; 345CHECKREG r6, 0x00D0D000; 346CHECKREG r7, 0x000DD000; 347 348imm32 r0, 0x1e010000; 349imm32 r1, 0x1e010000; 350imm32 r2, 0x2e020000; 351imm32 r3, 0x3e030000; 352imm32 r4, 0x4e040000; 353R5.L = -1; 354imm32 r6, 0x6e060000; 355imm32 r7, 0x7e070000; 356R7.H = R0.H >>> 15; 357R6.H = R1.H >>> 15; 358R0.H = R2.H >>> 15; 359R1.H = R3.H >>> 15; 360R2.H = R4.H >>> 15; 361R3.H = R5.H >>> 15; 362R4.H = R6.H >>> 15; 363R5.H = R7.H >>> 15; 364CHECKREG r0, 0x00000000; 365CHECKREG r1, 0x00000000; 366CHECKREG r2, 0x00000000; 367CHECKREG r3, 0x00000000; 368CHECKREG r4, 0x00000000; 369CHECKREG r5, 0x0000FFFF; 370CHECKREG r6, 0x00000000; 371CHECKREG r7, 0x00000000; 372 373imm32 r0, 0x1f010000; 374imm32 r1, 0x1f010000; 375imm32 r2, 0x2f020000; 376imm32 r3, 0x3f030000; 377imm32 r4, 0x4f040000; 378imm32 r5, 0x5f050000; 379R6.L = -15; 380imm32 r7, 0x70070000; 381R6.H = R0.H >>> 6; 382R7.H = R1.H >>> 6; 383R5.H = R2.H >>> 6; 384R0.H = R3.H >>> 6; 385R1.H = R4.H >>> 6; 386R2.H = R5.H >>> 6; 387R3.H = R6.H >>> 6; 388R4.H = R7.H >>> 6; 389CHECKREG r0, 0x00FC0000; 390CHECKREG r1, 0x013C0000; 391CHECKREG r2, 0x00020000; 392CHECKREG r3, 0x00010000; 393CHECKREG r4, 0x00010000; 394CHECKREG r5, 0x00BC0000; 395CHECKREG r6, 0x007CFFF1; 396CHECKREG r7, 0x007C0000; 397 398imm32 r0, 0x11010a00; 399imm32 r1, 0x11010b00; 400imm32 r2, 0x21020d00; 401imm32 r2, 0x31030c00; 402imm32 r4, 0x41040d00; 403imm32 r5, 0x51050e00; 404imm32 r6, 0x610600f0; 405R7.L = -16; 406R5.H = R0.H >>> 7; 407R6.H = R1.H >>> 7; 408R7.H = R2.H >>> 7; 409R2.H = R3.H >>> 7; 410R3.H = R4.H >>> 7; 411R4.H = R5.H >>> 7; 412R0.H = R6.H >>> 7; 413R1.H = R7.H >>> 7; 414CHECKREG r0, 0x00000A00; 415CHECKREG r1, 0x00000B00; 416CHECKREG r2, 0x00000C00; 417CHECKREG r3, 0x00820000; 418CHECKREG r4, 0x00000D00; 419CHECKREG r5, 0x00220E00; 420CHECKREG r6, 0x002200F0; 421CHECKREG r7, 0x0062FFF0; 422pass 423