1//Original:/testcases/core/c_dsp32shiftim_lhalf_rp/c_dsp32shiftim_lhalf_rp.dsp 2// Spec Reference: dspshiftimm dreg_lo(hi) = lshift (dreg_lo(hi) by imm5) 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9 10// lshift : positive data, count (+)=left (half reg) 11// d_lo = lshift (d_lo BY d_lo) 12// RLx by RLx 13imm32 r0, 0x00000000; 14R0.L = -1; 15imm32 r1, 0x90000001; 16imm32 r2, 0x90000002; 17imm32 r3, 0x90000003; 18imm32 r4, 0x90000004; 19imm32 r5, 0x90000005; 20imm32 r6, 0x90000006; 21imm32 r7, 0x90000007; 22R0.L = R0.L << 0; 23R1.L = R1.L >> 1; 24R2.L = R2.L >> 2; 25R3.L = R3.L >> 3; 26R4.L = R4.L >> 4; 27R5.L = R5.L >> 5; 28R6.L = R6.L >> 6; 29R7.L = R7.L >> 7; 30CHECKREG r0, 0x0000FFFF; 31CHECKREG r1, 0x90000000; 32CHECKREG r2, 0x90000000; 33CHECKREG r3, 0x90000000; 34CHECKREG r4, 0x90000000; 35CHECKREG r5, 0x90000000; 36CHECKREG r6, 0x90000000; 37CHECKREG r7, 0x90000000; 38 39imm32 r0, 0x00001001; 40R1.L = -1; 41imm32 r2, 0xa0002002; 42imm32 r3, 0xa0003003; 43imm32 r4, 0xa0004004; 44imm32 r5, 0xa0005005; 45imm32 r6, 0xa0006006; 46imm32 r7, 0xa0007007; 47R0.L = R0.L >> 1; 48R1.L = R1.L >> 1; 49R2.L = R2.L >> 1; 50R3.L = R3.L >> 1; 51R4.L = R4.L >> 1; 52R5.L = R5.L >> 1; 53R6.L = R6.L >> 1; 54R7.L = R7.L >> 1; 55CHECKREG r0, 0x00000800; 56CHECKREG r1, 0x90007FFF; 57CHECKREG r2, 0xA0001001; 58CHECKREG r3, 0xA0001801; 59CHECKREG r4, 0xA0002002; 60CHECKREG r5, 0xA0002802; 61CHECKREG r6, 0xA0003003; 62CHECKREG r7, 0xA0003803; 63 64 65imm32 r0, 0xb0001001; 66imm32 r1, 0xb0001001; 67R2.L = -15; 68imm32 r3, 0xb0003003; 69imm32 r4, 0xb0004004; 70imm32 r5, 0xb0005005; 71imm32 r6, 0xb0006006; 72imm32 r7, 0xb0007007; 73R0.L = R0.L >> 15; 74R1.L = R1.L >> 15; 75R2.L = LSHIFT R2.L BY R2.L; 76R3.L = R3.L >> 15; 77R4.L = R4.L >> 15; 78R5.L = R5.L >> 15; 79R6.L = R6.L >> 15; 80R7.L = R7.L >> 15; 81CHECKREG r0, 0xb0000000; 82CHECKREG r1, 0xb0000000; 83CHECKREG r2, 0xA0000001; 84CHECKREG r3, 0xB0000000; 85CHECKREG r4, 0xb0000000; 86CHECKREG r5, 0xb0000000; 87CHECKREG r6, 0xb0000000; 88CHECKREG r7, 0xB0000000; 89 90imm32 r0, 0xc0001001; 91imm32 r1, 0xc0001001; 92imm32 r2, 0xc0002002; 93R3.L = -16; 94imm32 r4, 0xc0004004; 95imm32 r5, 0xc0005005; 96imm32 r6, 0xc0006006; 97imm32 r7, 0xc0007007; 98R0.L = R0.L >> 13; 99R1.L = R1.L >> 13; 100R2.L = R2.L >> 13; 101R3.L = R3.L >> 13; 102R4.L = R4.L >> 13; 103R5.L = R5.L >> 13; 104R6.L = R6.L >> 13; 105R7.L = R7.L >> 13; 106CHECKREG r0, 0xc0000000; 107CHECKREG r1, 0xc0000000; 108CHECKREG r2, 0xC0000001; 109CHECKREG r3, 0xB0000007; 110CHECKREG r4, 0xC0000002; 111CHECKREG r5, 0xC0000002; 112CHECKREG r6, 0xC0000003; 113CHECKREG r7, 0xC0000003; 114 115// RHx by RLx 116imm32 r0, 0x0000c000; 117imm32 r1, 0x0001c000; 118imm32 r2, 0x0002c000; 119imm32 r3, 0x0003c000; 120imm32 r4, 0x0004c000; 121imm32 r5, 0x0005c000; 122imm32 r6, 0x0006c000; 123imm32 r7, 0x0007c000; 124R0.L = R0.H << 0; 125R1.L = R1.H << 0; 126R2.L = R2.H << 0; 127R3.L = R3.H << 0; 128R4.L = R4.H << 0; 129R5.L = R5.H << 0; 130R6.L = R6.H << 0; 131R7.L = R7.H << 0; 132CHECKREG r0, 0x00000000; 133CHECKREG r1, 0x00010001; 134CHECKREG r2, 0x00020002; 135CHECKREG r3, 0x00030003; 136CHECKREG r4, 0x00040004; 137CHECKREG r5, 0x00050005; 138CHECKREG r6, 0x00060006; 139CHECKREG r7, 0x00070007; 140 141imm32 r0, 0x10010000; 142R1.L = -1; 143imm32 r2, 0x20020000; 144imm32 r3, 0x30030000; 145imm32 r4, 0x40040000; 146imm32 r5, 0x50050000; 147imm32 r6, 0x60060000; 148imm32 r7, 0x70070000; 149R0.L = R0.H >> 1; 150R1.L = R1.H >> 1; 151R2.L = R2.H >> 1; 152R3.L = R3.H >> 1; 153R4.L = R4.H >> 1; 154R5.L = R5.H >> 1; 155R6.L = R6.H >> 1; 156R7.L = R7.H >> 1; 157CHECKREG r0, 0x10010800; 158CHECKREG r1, 0x00010000; 159CHECKREG r2, 0x20021001; 160CHECKREG r3, 0x30031801; 161CHECKREG r4, 0x40042002; 162CHECKREG r5, 0x50052802; 163CHECKREG r6, 0x60063003; 164CHECKREG r7, 0x70073803; 165 166 167imm32 r0, 0x1001e000; 168imm32 r1, 0x1001e000; 169R2.L = -15; 170imm32 r3, 0x3003e000; 171imm32 r4, 0x4004e000; 172imm32 r5, 0x5005e000; 173imm32 r6, 0x6006e000; 174imm32 r7, 0x7007e000; 175R0.L = R0.H >> 15; 176R1.L = R1.H >> 15; 177R2.L = R2.H >> 15; 178R3.L = R3.H >> 15; 179R4.L = R4.H >> 15; 180R5.L = R5.H >> 15; 181R6.L = R6.H >> 15; 182R7.L = R7.H >> 15; 183CHECKREG r0, 0x10010000; 184CHECKREG r1, 0x10010000; 185CHECKREG r2, 0x20020000; 186CHECKREG r3, 0x30030000; 187CHECKREG r4, 0x40040000; 188CHECKREG r5, 0x50050000; 189CHECKREG r6, 0x60060000; 190CHECKREG r7, 0x70070000; 191 192imm32 r0, 0x1001f001; 193imm32 r1, 0x1001f001; 194imm32 r2, 0x2002f002; 195R3.L = -16; 196imm32 r4, 0x4004f004; 197imm32 r5, 0x5005f005; 198imm32 r6, 0x6006f006; 199imm32 r7, 0x7007f007; 200R0.L = R0.H >> 13; 201R1.L = R1.H >> 13; 202R2.L = R2.H >> 13; 203R3.L = R3.H >> 13; 204R4.L = R4.H >> 13; 205R5.L = R5.H >> 13; 206R6.L = R6.H >> 13; 207R7.L = R7.H >> 13; 208CHECKREG r0, 0x10010000; 209CHECKREG r1, 0x10010000; 210CHECKREG r2, 0x20020001; 211CHECKREG r3, 0x30030001; 212CHECKREG r4, 0x40040002; 213CHECKREG r5, 0x50050002; 214CHECKREG r6, 0x60060003; 215CHECKREG r7, 0x70070003; 216 217// RLx by RLx 218imm32 r0, 0x00001001; 219imm32 r1, 0x00001001; 220imm32 r2, 0x00001002; 221imm32 r3, 0x00001003; 222imm32 r4, 0x00001000; 223imm32 r5, 0x00001005; 224imm32 r6, 0x00001006; 225imm32 r7, 0x00001007; 226R0.H = R0.L >> 14; 227R1.H = R1.L >> 14; 228R2.H = R2.L >> 14; 229R3.H = R3.L >> 14; 230R4.H = R4.L >> 14; 231R5.H = R5.L >> 14; 232R6.H = R6.L >> 14; 233R7.H = R7.L >> 14; 234CHECKREG r0, 0x00001001; 235CHECKREG r1, 0x00001001; 236CHECKREG r2, 0x00001002; 237CHECKREG r3, 0x00001003; 238CHECKREG r4, 0x00001000; 239CHECKREG r5, 0x00001005; 240CHECKREG r6, 0x00001006; 241CHECKREG r7, 0x00001007; 242 243imm32 r0, 0x00002001; 244imm32 r1, 0x00002001; 245imm32 r2, 0x00002002; 246imm32 r3, 0x00002003; 247imm32 r4, 0x00002004; 248R5.L = -1; 249imm32 r6, 0x00000006; 250imm32 r7, 0x00000007; 251R0.H = R0.L >> 5; 252R1.H = R1.L >> 5; 253R2.H = R2.L >> 5; 254R3.H = R3.L >> 5; 255R4.H = R4.L >> 5; 256R5.H = R5.L >> 5; 257R6.H = R6.L >> 5; 258R7.H = R7.L >> 5; 259CHECKREG r0, 0x01002001; 260CHECKREG r1, 0x01002001; 261CHECKREG r2, 0x01002002; 262CHECKREG r3, 0x01002003; 263CHECKREG r4, 0x01002004; 264CHECKREG r5, 0x07FFFFFF; 265CHECKREG r6, 0x00000006; 266CHECKREG r7, 0x00000007; 267 268 269imm32 r0, 0x30001001; 270imm32 r1, 0x30001001; 271imm32 r1, 0x30002002; 272imm32 r3, 0x30003003; 273imm32 r4, 0x30004004; 274imm32 r5, 0x30005005; 275R6.L = -15; 276imm32 r7, 0x00007007; 277R0.H = R0.L >> 15; 278R1.H = R1.L >> 15; 279R2.H = R2.L >> 15; 280R3.H = R3.L >> 15; 281R4.H = R4.L >> 15; 282R5.H = R5.L >> 15; 283R6.H = R6.L >> 15; 284R7.H = R7.L >> 15; 285CHECKREG r0, 0x00001001; 286CHECKREG r1, 0x00002002; 287CHECKREG r2, 0x00002002; 288CHECKREG r3, 0x00003003; 289CHECKREG r4, 0x00004004; 290CHECKREG r5, 0x00005005; 291CHECKREG r6, 0x0001FFF1; 292CHECKREG r7, 0x00007007; 293 294imm32 r0, 0x40001001; 295imm32 r1, 0x40002001; 296imm32 r2, 0x40002002; 297imm32 r3, 0x40003003; 298imm32 r4, 0x40004004; 299imm32 r5, 0x40005005; 300imm32 r6, 0x40006006; 301R7.L = -16; 302R0.H = R0.L >> 7; 303R1.H = R1.L >> 7; 304R2.H = R2.L >> 7; 305R3.H = R3.L >> 7; 306R4.H = R4.L >> 7; 307R5.H = R5.L >> 7; 308R6.H = R6.L >> 7; 309R7.H = R7.L >> 7; 310CHECKREG r0, 0x00201001; 311CHECKREG r1, 0x00402001; 312CHECKREG r2, 0x00402002; 313CHECKREG r3, 0x00603003; 314CHECKREG r4, 0x00804004; 315CHECKREG r5, 0x00A05005; 316CHECKREG r6, 0x00C06006; 317CHECKREG r7, 0x01FFFFF0; 318 319// RHx by RLx 320imm32 r0, 0x50010000; 321imm32 r1, 0x50010000; 322imm32 r2, 0x50020000; 323imm32 r3, 0x50030000; 324R4.L = -1; 325imm32 r5, 0x50050000; 326imm32 r6, 0x50060000; 327imm32 r7, 0x50070000; 328R0.H = R0.H >> 1; 329R1.H = R1.H >> 1; 330R2.H = R2.H >> 1; 331R3.H = R3.H >> 1; 332R4.H = R4.H >> 1; 333R5.H = R5.H >> 1; 334R6.H = R6.H >> 1; 335R7.H = R7.H >> 1; 336CHECKREG r0, 0x28000000; 337CHECKREG r1, 0x28000000; 338CHECKREG r2, 0x28010000; 339CHECKREG r3, 0x28010000; 340CHECKREG r4, 0x0040FFFF; 341CHECKREG r5, 0x28020000; 342CHECKREG r6, 0x28030000; 343CHECKREG r7, 0x28030000; 344 345imm32 r0, 0x10010000; 346imm32 r1, 0x10010000; 347imm32 r2, 0x20020000; 348imm32 r3, 0x30030000; 349imm32 r4, 0x40040000; 350R5.L = -1; 351imm32 r6, 0x60060000; 352imm32 r7, 0x70070000; 353R0.H = R0.H >> 5; 354R1.H = R1.H >> 5; 355R2.H = R2.H >> 5; 356R3.H = R3.H >> 5; 357R4.H = R4.H >> 5; 358R5.H = R5.H >> 5; 359R6.H = R6.H >> 5; 360R7.H = R7.H >> 5; 361CHECKREG r0, 0x00800000; 362CHECKREG r1, 0x00800000; 363CHECKREG r2, 0x01000000; 364CHECKREG r3, 0x01800000; 365CHECKREG r4, 0x02000000; 366CHECKREG r5, 0x0140FFFF; 367CHECKREG r6, 0x03000000; 368CHECKREG r7, 0x03800000; 369 370 371imm32 r0, 0x10010000; 372imm32 r1, 0x10010000; 373imm32 r2, 0x20020000; 374imm32 r3, 0x30030000; 375imm32 r4, 0x40040000; 376imm32 r5, 0x50050000; 377R6.L = -15; 378imm32 r7, 0x70070000; 379R0.L = R0.H >> 6; 380R1.L = R1.H >> 6; 381R2.L = R2.H >> 6; 382R3.L = R3.H >> 6; 383R4.L = R4.H >> 6; 384R5.L = R5.H >> 6; 385R6.L = R6.H >> 6; 386R7.L = R7.H >> 6; 387CHECKREG r0, 0x10010040; 388CHECKREG r1, 0x10010040; 389CHECKREG r2, 0x20020080; 390CHECKREG r3, 0x300300C0; 391CHECKREG r4, 0x40040100; 392CHECKREG r5, 0x50050140; 393CHECKREG r6, 0x0300000C; 394CHECKREG r7, 0x700701C0; 395 396imm32 r0, 0x10010000; 397imm32 r1, 0x10010000; 398imm32 r2, 0x20020000; 399imm32 r2, 0x30030000; 400imm32 r4, 0x40040000; 401imm32 r5, 0x50050000; 402imm32 r6, 0x60060000; 403R7.L = -16; 404R0.H = R0.H >> 15; 405R1.H = R1.H >> 15; 406R2.H = R2.H >> 15; 407R3.H = R3.H >> 15; 408R4.H = R4.H >> 15; 409R5.H = R5.H >> 15; 410R6.H = R6.H >> 15; 411R7.H = R7.H >> 15; 412CHECKREG r0, 0x00000000; 413CHECKREG r1, 0x00000000; 414CHECKREG r2, 0x00000000; 415CHECKREG r3, 0x000000C0; 416CHECKREG r4, 0x00000000; 417CHECKREG r5, 0x00000000; 418CHECKREG r6, 0x00000000; 419CHECKREG r7, 0x0000FFF0; 420 421pass 422