1//Original:/testcases/core/c_dsp32shiftim_lhalf_lp/c_dsp32shiftim_lhalf_lp.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 imm5) 12// RLx by imm5 13imm32 r0, 0x00100a00; 14imm32 r1, 0x00100a01; 15imm32 r2, 0x00100a02; 16imm32 r3, 0x00100a03; 17imm32 r4, 0x00100a04; 18imm32 r5, 0x00100a05; 19imm32 r6, 0x00100a06; 20imm32 r7, 0x00100a07; 21R7.L = R0.L << 0; 22R0.L = R1.L << 1; 23R1.L = R2.L << 2; 24R2.L = R3.L << 3; 25R3.L = R4.L << 4; 26R4.L = R5.L << 5; 27R5.L = R6.L << 6; 28R6.L = R7.L << 7; 29CHECKREG r1, 0x00102808; 30CHECKREG r0, 0x00101402; 31CHECKREG r2, 0x00105018; 32CHECKREG r3, 0x0010A040; 33CHECKREG r4, 0x001040A0; 34CHECKREG r5, 0x00108180; 35CHECKREG r6, 0x00100000; 36CHECKREG r7, 0x00100A00; 37 38imm32 r0, 0x00200018; 39imm32 r1, 0x00200019; 40imm32 r2, 0x0020001a; 41imm32 r3, 0x0020001b; 42imm32 r4, 0x0020001c; 43imm32 r5, 0x0020001d; 44imm32 r6, 0x0020001e; 45imm32 r7, 0x0020001f; 46R2.L = R0.L << 8; 47R3.L = R1.L << 9; 48R4.L = R2.L << 10; 49R5.L = R3.L << 11; 50R6.L = R4.L << 12; 51R7.L = R5.L << 13; 52R0.L = R6.L << 14; 53R1.L = R7.L << 15; 54CHECKREG r0, 0x00200000; 55CHECKREG r1, 0x00200000; 56CHECKREG r2, 0x00201800; 57CHECKREG r3, 0x00203200; 58CHECKREG r4, 0x00200000; 59CHECKREG r5, 0x00200000; 60CHECKREG r6, 0x00200000; 61CHECKREG r7, 0x00200000; 62 63imm32 r0, 0x05002001; 64imm32 r1, 0x05002001; 65imm32 r2, 0x0500000f; 66imm32 r3, 0x05002003; 67imm32 r4, 0x05002004; 68imm32 r5, 0x05002005; 69imm32 r6, 0x05002006; 70imm32 r7, 0x05002007; 71R3.L = R0.L << 0; 72R4.L = R1.L << 1; 73R5.L = R2.L << 2; 74R6.L = R3.L << 3; 75R7.L = R4.L << 4; 76R0.L = R5.L << 5; 77R1.L = R6.L << 6; 78R2.L = R7.L << 7; 79CHECKREG r0, 0x05000780; 80CHECKREG r1, 0x05000200; 81CHECKREG r2, 0x05001000; 82CHECKREG r3, 0x05002001; 83CHECKREG r4, 0x05004002; 84CHECKREG r5, 0x0500003C; 85CHECKREG r6, 0x05000008; 86CHECKREG r7, 0x05000020; 87 88imm32 r0, 0x03000031; 89imm32 r1, 0x03000031; 90imm32 r2, 0x03000032; 91imm32 r3, 0x03000030; 92imm32 r4, 0x03000034; 93imm32 r5, 0x03000035; 94imm32 r6, 0x03000036; 95imm32 r7, 0x03000037; 96R4.L = R0.L << 8; 97R5.L = R1.L << 9; 98R6.L = R2.L << 10; 99R7.L = R3.L << 11; 100R0.L = R4.L << 12; 101R1.L = R5.L << 13; 102R2.L = R6.L << 14; 103R3.L = R7.L << 15; 104CHECKREG r0, 0x03000000; 105CHECKREG r1, 0x03000000; 106CHECKREG r2, 0x03000000; 107CHECKREG r3, 0x03000000; 108CHECKREG r4, 0x03003100; 109CHECKREG r5, 0x03006200; 110CHECKREG r6, 0x0300C800; 111CHECKREG r7, 0x03008000; 112// RHx by RLx 113imm32 r0, 0x03000000; 114imm32 r1, 0x03000000; 115imm32 r2, 0x03000000; 116imm32 r3, 0x03000000; 117imm32 r4, 0x03003100; 118imm32 r5, 0x03006200; 119imm32 r6, 0x0300C800; 120imm32 r7, 0x03008000; 121R5.L = R0.H << 0; 122R6.L = R1.H << 1; 123R7.L = R2.H << 2; 124R0.L = R3.H << 3; 125R1.L = R4.H << 4; 126R2.L = R5.H << 5; 127R3.L = R6.H << 6; 128R4.L = R7.H << 7; 129CHECKREG r0, 0x03001800; 130CHECKREG r1, 0x03003000; 131CHECKREG r2, 0x03006000; 132CHECKREG r3, 0x0300C000; 133CHECKREG r4, 0x03008000; 134CHECKREG r5, 0x03000300; 135CHECKREG r6, 0x03000600; 136CHECKREG r7, 0x03000C00; 137 138imm32 r0, 0x05018000; 139imm32 r1, 0x05018001; 140imm32 r2, 0x05028000; 141imm32 r3, 0x05038000; 142imm32 r4, 0x05048000; 143imm32 r5, 0x05058000; 144imm32 r6, 0x05068000; 145imm32 r7, 0x05078000; 146R6.L = R0.H << 8; 147R7.L = R1.H << 9; 148R0.L = R2.H << 10; 149R1.L = R3.H << 11; 150R2.L = R4.H << 12; 151R3.L = R5.H << 13; 152R4.L = R6.H << 14; 153R5.L = R7.H << 15; 154CHECKREG r0, 0x05010800; 155CHECKREG r1, 0x05011800; 156CHECKREG r2, 0x05024000; 157CHECKREG r3, 0x0503A000; 158CHECKREG r4, 0x05048000; 159CHECKREG r5, 0x05058000; 160CHECKREG r6, 0x05060100; 161CHECKREG r7, 0x05070200; 162 163 164imm32 r0, 0x60019000; 165imm32 r1, 0x60019000; 166imm32 r2, 0x6002900f; 167imm32 r3, 0x60039000; 168imm32 r4, 0x60049000; 169imm32 r5, 0x60059000; 170imm32 r6, 0x60069000; 171imm32 r7, 0x60079000; 172R7.L = R0.H << 0; 173R0.L = R1.H << 1; 174R1.L = R2.H << 2; 175R2.L = R3.H << 3; 176R3.L = R4.H << 4; 177R4.L = R5.H << 5; 178R5.L = R6.H << 6; 179R6.L = R7.H << 7; 180CHECKREG r0, 0x6001C002; 181CHECKREG r1, 0x60018008; 182CHECKREG r2, 0x60020018; 183CHECKREG r3, 0x60030040; 184CHECKREG r4, 0x600400A0; 185CHECKREG r5, 0x60050180; 186CHECKREG r6, 0x60060380; 187CHECKREG r7, 0x60076001; 188 189imm32 r0, 0x70010001; 190imm32 r1, 0x70010001; 191imm32 r2, 0x70020002; 192imm32 r3, 0x77030010; 193imm32 r4, 0x70040004; 194imm32 r5, 0x70050005; 195imm32 r6, 0x70060006; 196imm32 r7, 0x70070007; 197R0.L = R0.H << 8; 198R1.L = R1.H << 9; 199R2.L = R2.H << 10; 200R3.L = R3.H << 11; 201R4.L = R4.H << 12; 202R5.L = R5.H << 13; 203R6.L = R6.H << 14; 204R7.L = R7.H << 15; 205CHECKREG r0, 0x70010100; 206CHECKREG r1, 0x70010200; 207CHECKREG r2, 0x70020800; 208CHECKREG r3, 0x77031800; 209CHECKREG r4, 0x70044000; 210CHECKREG r5, 0x7005A000; 211CHECKREG r6, 0x70068000; 212CHECKREG r7, 0x70078000; 213 214// d_hi = lshft (d_lo BY d_lo) 215// RLx by RLx 216imm32 r0, 0xa8000000; 217imm32 r1, 0xa8000001; 218imm32 r2, 0xa8000002; 219imm32 r3, 0xa8000003; 220imm32 r4, 0xa8000004; 221imm32 r5, 0xa8000005; 222imm32 r6, 0xa8000006; 223imm32 r7, 0xa8000007; 224R0.H = R0.L << 0; 225R1.H = R1.L << 1; 226R2.H = R2.L << 2; 227R3.H = R3.L << 3; 228R4.H = R4.L << 4; 229R5.H = R5.L << 5; 230R6.H = R6.L << 6; 231R7.H = R7.L << 7; 232CHECKREG r0, 0x00000000; 233CHECKREG r1, 0x00020001; 234CHECKREG r2, 0x00080002; 235CHECKREG r3, 0x00180003; 236CHECKREG r4, 0x00400004; 237CHECKREG r5, 0x00A00005; 238CHECKREG r6, 0x01800006; 239CHECKREG r7, 0x03800007; 240 241imm32 r0, 0xf0090001; 242imm32 r1, 0xf0090001; 243imm32 r2, 0xf0090002; 244imm32 r3, 0xf0090003; 245imm32 r4, 0xf0090004; 246imm32 r5, 0xf0090005; 247imm32 r6, 0xf0000006; 248imm32 r7, 0xf0000007; 249R1.H = R0.L << 8; 250R2.H = R1.L << 9; 251R3.H = R2.L << 10; 252R4.H = R3.L << 11; 253R5.H = R4.L << 12; 254R6.H = R5.L << 13; 255R7.H = R6.L << 14; 256R0.H = R7.L << 15; 257CHECKREG r1, 0x01000001; 258CHECKREG r2, 0x02000002; 259CHECKREG r3, 0x08000003; 260CHECKREG r4, 0x18000004; 261CHECKREG r5, 0x40000005; 262CHECKREG r6, 0xA0000006; 263CHECKREG r7, 0x80000007; 264CHECKREG r0, 0x80000001; 265 266 267imm32 r0, 0x07000001; 268imm32 r1, 0x07000001; 269imm32 r2, 0x0700000f; 270imm32 r3, 0x07000003; 271imm32 r4, 0x07000004; 272imm32 r5, 0x07000005; 273imm32 r6, 0x07000006; 274imm32 r7, 0x07000007; 275R3.H = R0.L << 0; 276R4.H = R1.L << 1; 277R5.H = R2.L << 2; 278R6.H = R3.L << 3; 279R7.H = R4.L << 4; 280R0.H = R5.L << 5; 281R1.H = R6.L << 6; 282R2.H = R7.L << 7; 283CHECKREG r0, 0x00A00001; 284CHECKREG r1, 0x01800001; 285CHECKREG r2, 0x0380000F; 286CHECKREG r3, 0x00010003; 287CHECKREG r4, 0x00020004; 288CHECKREG r5, 0x003C0005; 289CHECKREG r6, 0x00180006; 290CHECKREG r7, 0x00400007; 291 292imm32 r0, 0x00000501; 293imm32 r1, 0x00000501; 294imm32 r2, 0x00000502; 295imm32 r3, 0x00000510; 296imm32 r4, 0x00000504; 297imm32 r5, 0x00000505; 298imm32 r6, 0x00000506; 299imm32 r7, 0x00000507; 300R4.H = R0.L << 8; 301R5.H = R1.L << 9; 302R6.H = R2.L << 10; 303R7.H = R3.L << 11; 304R0.H = R4.L << 12; 305R1.H = R5.L << 13; 306R2.H = R6.L << 14; 307R3.H = R7.L << 15; 308CHECKREG r0, 0x40000501; 309CHECKREG r1, 0xA0000501; 310CHECKREG r2, 0x80000502; 311CHECKREG r3, 0x80000510; 312CHECKREG r4, 0x01000504; 313CHECKREG r5, 0x02000505; 314CHECKREG r6, 0x08000506; 315CHECKREG r7, 0x80000507; 316 317imm32 r0, 0x00a00800; 318imm32 r1, 0x00a10800; 319imm32 r2, 0x00a20800; 320imm32 r3, 0x00a30800; 321imm32 r4, 0x00a40800; 322imm32 r5, 0x00a50800; 323imm32 r6, 0x00a60800; 324imm32 r7, 0x00a70800; 325R5.H = R0.H << 0; 326R6.H = R1.H << 1; 327R7.H = R2.H << 2; 328R0.H = R3.H << 3; 329R1.H = R4.H << 4; 330R2.H = R5.H << 5; 331R3.H = R6.H << 6; 332R4.H = R7.H << 7; 333CHECKREG r0, 0x05180800; 334CHECKREG r1, 0x0A400800; 335CHECKREG r2, 0x14000800; 336CHECKREG r3, 0x50800800; 337CHECKREG r4, 0x44000800; 338CHECKREG r5, 0x00A00800; 339CHECKREG r6, 0x01420800; 340CHECKREG r7, 0x02880800; 341 342imm32 r0, 0x0c010000; 343imm32 r1, 0x0c010001; 344imm32 r2, 0x0c020000; 345imm32 r3, 0x0c030000; 346imm32 r4, 0x0c040000; 347imm32 r5, 0x0c050000; 348imm32 r6, 0x0c060000; 349imm32 r7, 0x0c070000; 350R6.H = R0.H << 8; 351R7.H = R1.H << 9; 352R0.H = R2.H << 10; 353R1.H = R3.H << 11; 354R2.H = R4.H << 12; 355R3.H = R5.H << 13; 356R4.H = R6.H << 14; 357R5.H = R7.H << 15; 358CHECKREG r0, 0x08000000; 359CHECKREG r1, 0x18000001; 360CHECKREG r2, 0x40000000; 361CHECKREG r3, 0xA0000000; 362CHECKREG r4, 0x00000000; 363CHECKREG r5, 0x00000000; 364CHECKREG r6, 0x01000000; 365CHECKREG r7, 0x02000000; 366 367 368imm32 r0, 0x00b10000; 369imm32 r1, 0x00b10000; 370imm32 r2, 0x00b2000f; 371imm32 r3, 0x00b30000; 372imm32 r4, 0x00b40000; 373imm32 r5, 0x00b50000; 374imm32 r6, 0x00b60000; 375imm32 r7, 0x00b70000; 376R7.L = R0.H << 0; 377R0.L = R1.H << 1; 378R1.L = R2.H << 2; 379R2.L = R3.H << 3; 380R3.L = R4.H << 4; 381R4.L = R5.H << 5; 382R5.L = R6.H << 6; 383R6.L = R7.H << 7; 384CHECKREG r0, 0x00B10162; 385CHECKREG r1, 0x00B102C8; 386CHECKREG r2, 0x00B20598; 387CHECKREG r3, 0x00B30B40; 388CHECKREG r4, 0x00B416A0; 389CHECKREG r5, 0x00B52D80; 390CHECKREG r6, 0x00B65B80; 391CHECKREG r7, 0x00B700B1; 392 393imm32 r0, 0x0a010700; 394imm32 r1, 0x0a010700; 395imm32 r2, 0x0a020700; 396imm32 r3, 0x0a030710; 397imm32 r4, 0x0a040700; 398imm32 r5, 0x0a050700; 399imm32 r6, 0x0a060700; 400imm32 r7, 0x0a070700; 401R0.H = R0.H << 8; 402R1.H = R1.H << 9; 403R2.H = R2.H << 10; 404R3.H = R3.H << 11; 405R4.H = R4.H << 12; 406R5.H = R5.H << 13; 407R6.H = R6.H << 14; 408R7.H = R7.H << 15; 409CHECKREG r0, 0x01000700; 410CHECKREG r1, 0x02000700; 411CHECKREG r2, 0x08000700; 412CHECKREG r3, 0x18000710; 413CHECKREG r4, 0x40000700; 414CHECKREG r5, 0xA0000700; 415CHECKREG r6, 0x80000700; 416CHECKREG r7, 0x80000700; 417 418pass 419