1//Original:/testcases/core/c_dsp32shiftim_ahalf_lp/c_dsp32shiftim_ahalf_lp.dsp 2// Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5) 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8// Ashift : positive data, count (+)=left (half reg) 9// d_lo = ashift (d_lo BY d_lo) 10// RLx by RLx 11imm32 r0, 0x01010100; 12imm32 r1, 0x01020101; 13imm32 r2, 0x01030102; 14imm32 r3, 0x01040103; 15imm32 r4, 0x01050104; 16imm32 r5, 0x01060105; 17imm32 r6, 0x01070106; 18imm32 r7, 0x01080107; 19R0.L = R0.L << 0; 20R1.L = R1.L << 1; 21R2.L = R2.L << 2; 22R3.L = R3.L << 3; 23R4.L = R4.L << 4; 24R5.L = R5.L << 5; 25R6.L = R6.L << 6; 26R7.L = R7.L << 7; 27CHECKREG r0, 0x01010100; 28CHECKREG r1, 0x01020202; 29CHECKREG r2, 0x01030408; 30CHECKREG r3, 0x01040818; 31CHECKREG r4, 0x01051040; 32CHECKREG r5, 0x010620A0; 33CHECKREG r6, 0x01074180; 34CHECKREG r7, 0x01088380; 35 36imm32 r0, 0x00090201; 37imm32 r1, 0x00100201; 38imm32 r2, 0x00110202; 39imm32 r3, 0x00120203; 40imm32 r4, 0x00130204; 41imm32 r5, 0x00140205; 42imm32 r6, 0x00150206; 43imm32 r7, 0x00160207; 44R7.L = R0.L << 8; 45R6.L = R1.L << 9; 46R5.L = R2.L << 10; 47R4.L = R3.L << 11; 48R3.L = R4.L << 12; 49R2.L = R5.L << 13; 50R1.L = R6.L << 14; 51R0.L = R7.L << 15; 52CHECKREG r1, 0x00100000; 53CHECKREG r0, 0x00090000; 54CHECKREG r2, 0x00110000; 55CHECKREG r3, 0x00120000; 56CHECKREG r4, 0x00131800; 57CHECKREG r5, 0x00140800; 58CHECKREG r6, 0x00150200; 59CHECKREG r7, 0x00160100; 60 61 62imm32 r0, 0x00170401; 63imm32 r1, 0x00180401; 64imm32 r2, 0x0019040f; 65imm32 r3, 0x00200403; 66imm32 r4, 0x00210404; 67imm32 r5, 0x00220405; 68imm32 r6, 0x00230406; 69imm32 r7, 0x00244407; 70R6.L = R0.L << 15; 71R5.L = R1.L << 15; 72R4.L = R2.L << 15; 73R3.L = R3.L << 15; 74R2.L = R4.L << 15; 75R1.L = R5.L << 15; 76R0.L = R6.L << 15; 77R7.L = R7.L << 15; 78CHECKREG r0, 0x00170000; 79CHECKREG r1, 0x00180000; 80CHECKREG r2, 0x00190000; 81CHECKREG r3, 0x00208000; 82CHECKREG r4, 0x00218000; 83CHECKREG r5, 0x00228000; 84CHECKREG r6, 0x00238000; 85CHECKREG r7, 0x00248000; 86 87imm32 r0, 0x00005001; 88imm32 r1, 0x00005001; 89imm32 r2, 0x00005002; 90imm32 r3, 0x00005010; 91imm32 r4, 0x00005004; 92imm32 r5, 0x00005005; 93imm32 r6, 0x00000506; 94imm32 r7, 0x00000507; 95R5.L = R0.L << 13; 96R6.L = R1.L << 13; 97R7.L = R2.L << 13; 98R0.L = R3.L << 13; 99R1.L = R4.L << 13; 100R2.L = R5.L << 13; 101R3.L = R6.L << 13; 102R4.L = R7.L << 13; 103CHECKREG r0, 0x00000000; 104CHECKREG r1, 0x00008000; 105CHECKREG r2, 0x00000000; 106CHECKREG r3, 0x00000000; 107CHECKREG r4, 0x00000000; 108CHECKREG r5, 0x00002000; 109CHECKREG r6, 0x00002000; 110CHECKREG r7, 0x00004000; 111 112// RHx by RLx 113imm32 r0, 0x00006010; 114imm32 r1, 0x00016020; 115imm32 r2, 0x00026030; 116imm32 r3, 0x00036040; 117imm32 r4, 0x00046050; 118imm32 r5, 0x00056060; 119imm32 r6, 0x00066070; 120imm32 r7, 0x00076080; 121R0.L = R0.H << 10; 122R1.L = R1.H << 10; 123R2.L = R2.H << 10; 124R3.L = R3.H << 10; 125R4.L = R4.H << 10; 126R5.L = R5.H << 10; 127R6.L = R6.H << 10; 128R7.L = R7.H << 10; 129CHECKREG r0, 0x00000000; 130CHECKREG r1, 0x00010400; 131CHECKREG r2, 0x00020800; 132CHECKREG r3, 0x00030C00; 133CHECKREG r4, 0x00041000; 134CHECKREG r5, 0x00051400; 135CHECKREG r6, 0x00061800; 136CHECKREG r7, 0x00071C00; 137 138imm32 r0, 0x00010090; 139imm32 r1, 0x00010111; 140imm32 r2, 0x00020120; 141imm32 r3, 0x00030130; 142imm32 r4, 0x00040140; 143imm32 r5, 0x00050150; 144imm32 r6, 0x00060160; 145imm32 r7, 0x00070170; 146R1.L = R0.H << 1; 147R2.L = R1.H << 1; 148R3.L = R2.H << 1; 149R4.L = R3.H << 1; 150R5.L = R4.H << 1; 151R6.L = R5.H << 1; 152R7.L = R6.H << 1; 153R0.L = R7.H << 1; 154CHECKREG r1, 0x00010002; 155CHECKREG r2, 0x00020002; 156CHECKREG r3, 0x00030004; 157CHECKREG r4, 0x00040006; 158CHECKREG r5, 0x00050008; 159CHECKREG r6, 0x0006000A; 160CHECKREG r7, 0x0007000C; 161CHECKREG r0, 0x0001000E; 162 163 164imm32 r0, 0x0a010000; 165imm32 r1, 0x0b010000; 166imm32 r2, 0x0c02000f; 167imm32 r3, 0x0d030000; 168imm32 r4, 0x0e040000; 169imm32 r5, 0x0f050000; 170imm32 r6, 0x01060000; 171imm32 r7, 0x02070000; 172R2.L = R0.H << 12; 173R3.L = R1.H << 12; 174R4.L = R2.H << 12; 175R5.L = R3.H << 12; 176R6.L = R4.H << 12; 177R7.L = R5.H << 12; 178R0.L = R6.H << 12; 179R1.L = R7.H << 12; 180CHECKREG r0, 0x0A016000; 181CHECKREG r1, 0x0B017000; 182CHECKREG r2, 0x0C021000; 183CHECKREG r3, 0x0D031000; 184CHECKREG r4, 0x0E042000; 185CHECKREG r5, 0x0F053000; 186CHECKREG r6, 0x01064000; 187CHECKREG r7, 0x02075000; 188 189imm32 r0, 0x01010001; 190imm32 r1, 0x02010001; 191imm32 r2, 0x03020002; 192imm32 r3, 0x04030010; 193imm32 r4, 0x05040004; 194imm32 r5, 0x06050005; 195imm32 r6, 0x07060006; 196imm32 r7, 0x08070007; 197R3.L = R0.H << 13; 198R4.L = R1.H << 13; 199R5.L = R2.H << 13; 200R6.L = R3.H << 13; 201R7.L = R4.H << 13; 202R0.L = R5.H << 13; 203R1.L = R6.H << 13; 204R2.L = R7.H << 13; 205CHECKREG r0, 0x0101A000; 206CHECKREG r1, 0x0201C000; 207CHECKREG r2, 0x0302E000; 208CHECKREG r3, 0x04032000; 209CHECKREG r4, 0x05042000; 210CHECKREG r5, 0x06054000; 211CHECKREG r6, 0x07066000; 212CHECKREG r7, 0x08078000; 213 214// RLx by RLx 215imm32 r0, 0xa0000400; 216imm32 r1, 0xbb000401; 217imm32 r2, 0xc0000402; 218imm32 r3, 0xd0000403; 219imm32 r4, 0xe0000404; 220imm32 r5, 0xf0000405; 221imm32 r6, 0x10000406; 222imm32 r7, 0x20000407; 223R0.H = R0.L << 14; 224R1.H = R1.L << 14; 225R2.H = R2.L << 14; 226R3.H = R3.L << 14; 227R4.H = R4.L << 14; 228R5.H = R5.L << 14; 229R6.H = R6.L << 14; 230R7.H = R7.L << 14; 231CHECKREG r0, 0x00000400; 232CHECKREG r1, 0x40000401; 233CHECKREG r2, 0x80000402; 234CHECKREG r3, 0xC0000403; 235CHECKREG r4, 0x00000404; 236CHECKREG r5, 0x40000405; 237CHECKREG r6, 0x80000406; 238CHECKREG r7, 0xC0000407; 239 240imm32 r0, 0x0a000001; 241imm32 r1, 0x0b000001; 242imm32 r2, 0x0cd00002; 243imm32 r3, 0x0d000003; 244imm32 r4, 0x0e000004; 245imm32 r5, 0x0f000005; 246imm32 r6, 0x03000006; 247imm32 r7, 0x04000007; 248R1.H = R0.L << 15; 249R2.H = R1.L << 15; 250R3.H = R2.L << 15; 251R4.H = R3.L << 15; 252R5.H = R4.L << 15; 253R6.H = R5.L << 15; 254R7.H = R6.L << 15; 255R0.H = R7.L << 15; 256CHECKREG r1, 0x80000001; 257CHECKREG r2, 0x80000002; 258CHECKREG r3, 0x00000003; 259CHECKREG r4, 0x80000004; 260CHECKREG r5, 0x00000005; 261CHECKREG r6, 0x80000006; 262CHECKREG r7, 0x00000007; 263CHECKREG r0, 0x80000001; 264 265 266imm32 r0, 0x10000001; 267imm32 r1, 0x02000001; 268imm32 r2, 0x0300000f; 269imm32 r3, 0x04000003; 270imm32 r4, 0x05000004; 271imm32 r5, 0x06000005; 272imm32 r6, 0x07000006; 273imm32 r7, 0x00800007; 274R2.H = R0.L << 2; 275R3.H = R1.L << 2; 276R4.H = R2.L << 2; 277R5.H = R3.L << 2; 278R6.H = R4.L << 2; 279R7.H = R5.L << 2; 280R0.H = R6.L << 2; 281R1.H = R7.L << 2; 282CHECKREG r0, 0x00180001; 283CHECKREG r1, 0x001C0001; 284CHECKREG r2, 0x0004000F; 285CHECKREG r3, 0x00040003; 286CHECKREG r4, 0x003C0004; 287CHECKREG r5, 0x000C0005; 288CHECKREG r6, 0x00100006; 289CHECKREG r7, 0x00140007; 290 291imm32 r0, 0x00000801; 292imm32 r1, 0x00000801; 293imm32 r2, 0x00000802; 294imm32 r3, 0x00000810; 295imm32 r4, 0x00000804; 296imm32 r5, 0x00000805; 297imm32 r6, 0x00000806; 298imm32 r7, 0x00000807; 299R3.H = R0.L << 3; 300R4.H = R1.L << 3; 301R5.H = R2.L << 3; 302R6.H = R3.L << 3; 303R7.H = R4.L << 3; 304R0.H = R5.L << 3; 305R1.H = R6.L << 3; 306R2.H = R7.L << 3; 307CHECKREG r0, 0x40280801; 308CHECKREG r1, 0x40300801; 309CHECKREG r2, 0x40380802; 310CHECKREG r3, 0x40080810; 311CHECKREG r4, 0x40080804; 312CHECKREG r5, 0x40100805; 313CHECKREG r6, 0x40800806; 314CHECKREG r7, 0x40200807; 315 316// RHx by RLx 317imm32 r0, 0x00000400; 318imm32 r1, 0x00010500; 319imm32 r2, 0x00020060; 320imm32 r3, 0x00030070; 321imm32 r4, 0x00040800; 322imm32 r5, 0x00050090; 323imm32 r6, 0x00060d00; 324imm32 r7, 0x00070a00; 325R7.H = R0.H << 10; 326R6.H = R1.H << 10; 327R5.H = R2.H << 10; 328R4.H = R3.H << 10; 329R3.H = R4.H << 10; 330R2.H = R5.H << 10; 331R1.H = R6.H << 10; 332R0.H = R7.H << 10; 333CHECKREG r1, 0x00000500; 334CHECKREG r2, 0x00000060; 335CHECKREG r3, 0x00000070; 336CHECKREG r4, 0x0C000800; 337CHECKREG r5, 0x08000090; 338CHECKREG r6, 0x04000D00; 339CHECKREG r7, 0x00000A00; 340CHECKREG r0, 0x00000400; 341 342imm32 r0, 0x00010000; 343imm32 r1, 0x00010001; 344imm32 r2, 0x00020001; 345imm32 r3, 0x00030002; 346imm32 r4, 0x00040003; 347imm32 r5, 0x00050004; 348imm32 r6, 0x00060005; 349imm32 r7, 0x00070006; 350R6.H = R0.H << 11; 351R5.H = R1.H << 11; 352R4.H = R2.H << 11; 353R3.H = R3.H << 11; 354R2.H = R4.H << 11; 355R1.H = R5.H << 11; 356R7.H = R6.H << 11; 357R0.H = R7.H << 11; 358CHECKREG r1, 0x00000001; 359CHECKREG r2, 0x00000001; 360CHECKREG r3, 0x18000002; 361CHECKREG r4, 0x10000003; 362CHECKREG r5, 0x08000004; 363CHECKREG r6, 0x08000005; 364CHECKREG r7, 0x00000006; 365CHECKREG r0, 0x00000000; 366 367 368imm32 r0, 0x00010060; 369imm32 r1, 0x00010060; 370imm32 r2, 0x0002006f; 371imm32 r3, 0x00030060; 372imm32 r4, 0x00040060; 373imm32 r5, 0x00050060; 374imm32 r6, 0x00060060; 375imm32 r7, 0x00070060; 376R4.H = R0.H << 12; 377R5.H = R1.H << 12; 378R6.H = R2.H << 12; 379R7.H = R3.H << 12; 380R0.H = R4.H << 12; 381R1.H = R5.H << 12; 382R2.H = R6.H << 12; 383R3.H = R7.H << 12; 384CHECKREG r0, 0x00000060; 385CHECKREG r1, 0x00000060; 386CHECKREG r2, 0x0000006F; 387CHECKREG r3, 0x00000060; 388CHECKREG r4, 0x10000060; 389CHECKREG r5, 0x10000060; 390CHECKREG r6, 0x20000060; 391CHECKREG r7, 0x30000060; 392 393imm32 r0, 0x12010070; 394imm32 r1, 0x23010070; 395imm32 r2, 0x34020070; 396imm32 r3, 0x45030070; 397imm32 r4, 0x56040070; 398imm32 r5, 0x67050070; 399imm32 r6, 0x78060070; 400imm32 r7, 0x09070070; 401R4.H = R0.H << 3; 402R5.H = R1.H << 3; 403R6.H = R2.H << 3; 404R7.H = R3.H << 3; 405R0.H = R4.H << 3; 406R1.H = R5.H << 3; 407R2.H = R6.H << 3; 408R3.H = R7.H << 3; 409CHECKREG r0, 0x80400070; 410CHECKREG r1, 0xC0400070; 411CHECKREG r2, 0x00800070; 412CHECKREG r3, 0x40C00070; 413CHECKREG r4, 0x90080070; 414CHECKREG r5, 0x18080070; 415CHECKREG r6, 0xA0100070; 416CHECKREG r7, 0x28180070; 417 418pass 419