1//Original:/testcases/core/c_dsp32shiftim_ahalf_ln/c_dsp32shiftim_ahalf_ln.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 : neg data, count (+)=left (half reg) 9// d_lo = ashft (d_lo BY d_lo) 10// RLx by RLx 11imm32 r0, 0x1000c000; 12imm32 r1, 0x1000c001; 13imm32 r2, 0x1000c002; 14imm32 r3, 0x1000c003; 15imm32 r4, 0x1000c004; 16imm32 r5, 0x1000c005; 17imm32 r6, 0x1000c006; 18imm32 r7, 0x1000c007; 19R0.L = R0.L << 1; 20R1.L = R1.L << 1; 21R2.L = R2.L << 1; 22R3.L = R3.L << 1; 23R4.L = R4.L << 1; 24R5.L = R5.L << 1; 25R6.L = R6.L << 1; 26R7.L = R7.L << 1; 27CHECKREG r0, 0x10008000; 28CHECKREG r1, 0x10008002; 29CHECKREG r2, 0x10008004; 30CHECKREG r3, 0x10008006; 31CHECKREG r4, 0x10008008; 32CHECKREG r5, 0x1000800A; 33CHECKREG r6, 0x1000800C; 34CHECKREG r7, 0x1000800E; 35 36imm32 r0, 0x20008001; 37imm32 r1, 0x20000001; 38imm32 r2, 0x2000d002; 39imm32 r3, 0x2000e003; 40imm32 r4, 0x2000f004; 41imm32 r5, 0x2000c005; 42imm32 r6, 0x2000d006; 43imm32 r7, 0x2000e007; 44R7.L = R0.L << 1; 45R6.L = R1.L << 1; 46R5.L = R2.L << 1; 47R4.L = R3.L << 1; 48R3.L = R4.L << 1; 49R2.L = R5.L << 1; 50R1.L = R6.L << 1; 51R0.L = R7.L << 1; 52 53imm32 r0, 0x3000c001; 54imm32 r1, 0x3000d001; 55imm32 r2, 0x3000000f; 56imm32 r3, 0x3000e003; 57imm32 r4, 0x3000f004; 58imm32 r5, 0x3000f005; 59imm32 r6, 0x3000f006; 60imm32 r7, 0x3000f007; 61R6.L = R0.L << 12; 62R7.L = R1.L << 12; 63R5.L = R2.L << 12; 64R4.L = R3.L << 12; 65R3.L = R4.L << 12; 66R2.L = R5.L << 12; 67R1.L = R6.L << 12; 68R0.L = R7.L << 12; 69CHECKREG r1, 0x30000000; 70CHECKREG r0, 0x30000000; 71CHECKREG r2, 0x30000000; 72CHECKREG r3, 0x30000000; 73CHECKREG r4, 0x30003000; 74CHECKREG r5, 0x3000F000; 75CHECKREG r6, 0x30001000; 76CHECKREG r7, 0x30001000; 77 78imm32 r0, 0x40009001; 79imm32 r1, 0x4000a001; 80imm32 r2, 0x4000b002; 81imm32 r3, 0x40000010; 82imm32 r4, 0x4000c004; 83imm32 r5, 0x4000d005; 84imm32 r6, 0x4000e006; 85imm32 r7, 0x4000f007; 86R5.L = R0.L << 13; 87R6.L = R1.L << 13; 88R7.L = R2.L << 13; 89R0.L = R3.L << 13; 90R1.L = R4.L << 13; 91R2.L = R5.L << 13; 92R3.L = R6.L << 13; 93R4.L = R7.L << 13; 94CHECKREG r0, 0x40000000; 95CHECKREG r1, 0x40008000; 96CHECKREG r2, 0x40000000; 97CHECKREG r3, 0x40000000; 98CHECKREG r4, 0x40000000; 99CHECKREG r5, 0x40002000; 100CHECKREG r6, 0x40002000; 101CHECKREG r7, 0x40004000; 102 103imm32 r0, 0x00005000; 104imm32 r1, 0x00015000; 105imm32 r2, 0x00025000; 106imm32 r3, 0x00035000; 107imm32 r4, 0x00045000; 108imm32 r5, 0x00055000; 109imm32 r6, 0x00065000; 110imm32 r7, 0x00075500; 111R0.L = R0.H << 10; 112R1.L = R1.H << 10; 113R2.L = R2.H << 10; 114R3.L = R3.H << 10; 115R4.L = R4.H << 10; 116R5.L = R5.H << 10; 117R6.L = R6.H << 10; 118R7.L = R7.H << 10; 119CHECKREG r0, 0x00000000; 120CHECKREG r1, 0x00010400; 121CHECKREG r2, 0x00020800; 122CHECKREG r3, 0x00030C00; 123CHECKREG r4, 0x00041000; 124CHECKREG r5, 0x00051400; 125CHECKREG r6, 0x00061800; 126CHECKREG r7, 0x00071C00; 127 128imm32 r0, 0x90010000; 129imm32 r1, 0x90010001; 130imm32 r2, 0x90020000; 131imm32 r3, 0x90030000; 132imm32 r4, 0x90040000; 133imm32 r5, 0x90050000; 134imm32 r6, 0x90060000; 135imm32 r7, 0x90070000; 136R2.L = R0.H << 11; 137R3.L = R1.H << 11; 138R4.L = R2.H << 11; 139R5.L = R3.H << 11; 140R6.L = R4.H << 11; 141R7.L = R5.H << 11; 142R0.L = R6.H << 11; 143R1.L = R7.H << 11; 144CHECKREG r0, 0x90013000; 145CHECKREG r1, 0x90013800; 146CHECKREG r2, 0x90020800; 147CHECKREG r3, 0x90030800; 148CHECKREG r4, 0x90041000; 149CHECKREG r5, 0x90051800; 150CHECKREG r6, 0x90062000; 151CHECKREG r7, 0x90072800; 152 153 154imm32 r0, 0xa0010600; 155imm32 r1, 0xa0010600; 156imm32 r2, 0xa002060f; 157imm32 r3, 0xa0030600; 158imm32 r4, 0xa0040600; 159imm32 r5, 0xa0050600; 160imm32 r6, 0xa0060600; 161imm32 r7, 0xa0070600; 162R0.L = R0.H << 12; 163R1.L = R1.H << 12; 164R2.L = R2.H << 12; 165R3.L = R3.H << 12; 166R4.L = R4.H << 12; 167R5.L = R5.H << 12; 168R6.L = R6.H << 12; 169R7.L = R7.H << 12; 170CHECKREG r0, 0xA0011000; 171CHECKREG r1, 0xA0011000; 172CHECKREG r2, 0xA0022000; 173CHECKREG r3, 0xA0033000; 174CHECKREG r4, 0xA0044000; 175CHECKREG r5, 0xA0055000; 176CHECKREG r6, 0xA0066000; 177CHECKREG r7, 0xA0077000; 178 179imm32 r0, 0xc0010701; 180imm32 r1, 0xc0010701; 181imm32 r2, 0xc0020702; 182imm32 r3, 0xc0030710; 183imm32 r4, 0xc0040704; 184imm32 r5, 0xc0050705; 185imm32 r6, 0xc0060706; 186imm32 r7, 0xc0070707; 187R0.L = R0.H << 13; 188R1.L = R1.H << 13; 189R2.L = R2.H << 13; 190R3.L = R3.H << 13; 191R4.L = R4.H << 13; 192R5.L = R5.H << 13; 193R6.L = R6.H << 13; 194R7.L = R7.H << 13; 195CHECKREG r0, 0xC0012000; 196CHECKREG r1, 0xC0012000; 197CHECKREG r2, 0xC0024000; 198CHECKREG r3, 0xC0036000; 199CHECKREG r4, 0xC0048000; 200CHECKREG r5, 0xC005A000; 201CHECKREG r6, 0xC006C000; 202CHECKREG r7, 0xC007E000; 203 204imm32 r0, 0x00008000; 205imm32 r1, 0x00008001; 206imm32 r2, 0x00008002; 207imm32 r3, 0x00008003; 208imm32 r4, 0x00008004; 209imm32 r5, 0x00008005; 210imm32 r6, 0x00008006; 211imm32 r7, 0x00008007; 212R0.H = R0.L << 0; 213R1.H = R1.L << 1; 214R2.H = R2.L << 2; 215R3.H = R3.L << 3; 216R4.H = R4.L << 4; 217R5.H = R5.L << 5; 218R6.H = R6.L << 6; 219R7.H = R7.L << 7; 220CHECKREG r0, 0x80008000; 221CHECKREG r1, 0x00028001; 222CHECKREG r2, 0x00088002; 223CHECKREG r3, 0x00188003; 224CHECKREG r4, 0x00408004; 225CHECKREG r5, 0x00A08005; 226CHECKREG r6, 0x01808006; 227CHECKREG r7, 0x03808007; 228 229imm32 r0, 0x0000d001; 230imm32 r1, 0x00000001; 231imm32 r2, 0x0000d002; 232imm32 r3, 0x0000d003; 233imm32 r4, 0x0000d004; 234imm32 r5, 0x0000d005; 235imm32 r6, 0x0000d006; 236imm32 r7, 0x0000d007; 237R2.H = R0.L << 8; 238R3.H = R1.L << 9; 239R4.H = R2.L << 10; 240R5.H = R3.L << 11; 241R6.H = R4.L << 12; 242R7.H = R5.L << 13; 243R0.H = R6.L << 14; 244R1.H = R7.L << 15; 245CHECKREG r0, 0x8000D001; 246CHECKREG r1, 0x80000001; 247CHECKREG r2, 0x0100D002; 248CHECKREG r3, 0x0200D003; 249CHECKREG r4, 0x0800D004; 250CHECKREG r5, 0x1800D005; 251CHECKREG r6, 0x4000D006; 252CHECKREG r7, 0xA000D007; 253 254imm32 r0, 0x0000e001; 255imm32 r1, 0x0000e001; 256imm32 r2, 0x0000000f; 257imm32 r3, 0x0000e003; 258imm32 r4, 0x0000e004; 259imm32 r5, 0x0000e005; 260imm32 r6, 0x0000e006; 261imm32 r7, 0x0000e007; 262R0.H = R0.L << 12; 263R1.H = R1.L << 12; 264R2.H = R2.L << 12; 265R3.H = R3.L << 12; 266R4.H = R4.L << 12; 267R5.H = R5.L << 12; 268R6.H = R6.L << 12; 269R7.H = R7.L << 12; 270CHECKREG r0, 0x1000E001; 271CHECKREG r1, 0x1000E001; 272CHECKREG r2, 0xF000000F; 273CHECKREG r3, 0x3000E003; 274CHECKREG r4, 0x4000E004; 275CHECKREG r5, 0x5000E005; 276CHECKREG r6, 0x6000E006; 277CHECKREG r7, 0x7000E007; 278 279imm32 r0, 0x0000f001; 280imm32 r1, 0x0000f001; 281imm32 r2, 0x0000f002; 282imm32 r3, 0x00000010; 283imm32 r4, 0x0000f004; 284imm32 r5, 0x0000f005; 285imm32 r6, 0x0000f006; 286imm32 r7, 0x0000f007; 287R5.H = R0.L << 13; 288R6.H = R1.L << 13; 289R7.H = R2.L << 13; 290R0.H = R3.L << 13; 291R1.H = R4.L << 13; 292R2.H = R5.L << 13; 293R3.H = R6.L << 13; 294R4.H = R7.L << 13; 295CHECKREG r0, 0x0000F001; 296CHECKREG r1, 0x8000F001; 297CHECKREG r2, 0xA000F002; 298CHECKREG r3, 0xC0000010; 299CHECKREG r4, 0xE000F004; 300CHECKREG r5, 0x2000F005; 301CHECKREG r6, 0x2000F006; 302CHECKREG r7, 0x4000F007; 303 304// d_lo = ashift (d_hi BY d_lo) 305// RHx by RLx 306imm32 r0, 0x90000000; 307imm32 r1, 0x90010000; 308imm32 r2, 0x90020000; 309imm32 r3, 0x90030000; 310imm32 r4, 0x90040000; 311imm32 r5, 0x90050000; 312imm32 r6, 0x90060000; 313imm32 r7, 0x90070000; 314R4.H = R0.H << 10; 315R5.H = R1.H << 10; 316R6.H = R2.H << 10; 317R7.H = R3.H << 10; 318R0.H = R4.H << 10; 319R1.H = R5.H << 10; 320R2.H = R6.H << 10; 321R3.H = R7.H << 10; 322CHECKREG r0, 0x00000000; 323CHECKREG r1, 0x00000000; 324CHECKREG r2, 0x00000000; 325CHECKREG r3, 0x00000000; 326CHECKREG r4, 0x00000000; 327CHECKREG r5, 0x04000000; 328CHECKREG r6, 0x08000000; 329CHECKREG r7, 0x0C000000; 330 331imm32 r0, 0xa0010000; 332imm32 r1, 0x00010001; 333imm32 r2, 0xa0020000; 334imm32 r3, 0xa0030000; 335imm32 r4, 0xa0040000; 336imm32 r5, 0xa0050000; 337imm32 r6, 0xa0060000; 338imm32 r7, 0xa0070000; 339R7.H = R0.H << 11; 340R0.H = R1.H << 11; 341R1.H = R2.H << 11; 342R2.H = R3.H << 11; 343R3.H = R4.H << 11; 344R4.H = R5.H << 11; 345R5.H = R6.H << 11; 346R6.H = R7.H << 11; 347CHECKREG r0, 0x08000000; 348CHECKREG r1, 0x10000001; 349CHECKREG r2, 0x18000000; 350CHECKREG r3, 0x20000000; 351CHECKREG r4, 0x28000000; 352CHECKREG r5, 0x30000000; 353CHECKREG r6, 0x00000000; 354CHECKREG r7, 0x08000000; 355 356 357imm32 r0, 0xb0010000; 358imm32 r1, 0xb0010000; 359imm32 r2, 0xb002000f; 360imm32 r3, 0xb0030000; 361imm32 r4, 0xb0040000; 362imm32 r5, 0xb0050000; 363imm32 r6, 0xb0060000; 364imm32 r7, 0xb0070000; 365R6.H = R0.H << 12; 366R7.H = R1.H << 12; 367R0.H = R2.H << 12; 368R1.H = R3.H << 12; 369R2.H = R4.H << 12; 370R3.H = R5.H << 12; 371R4.H = R6.H << 12; 372R5.H = R7.H << 12; 373CHECKREG r0, 0x20000000; 374CHECKREG r1, 0x30000000; 375CHECKREG r2, 0x4000000F; 376CHECKREG r3, 0x50000000; 377CHECKREG r4, 0x00000000; 378CHECKREG r5, 0x00000000; 379CHECKREG r6, 0x10000000; 380CHECKREG r7, 0x10000000; 381 382imm32 r0, 0xd0010000; 383imm32 r1, 0xd0010000; 384imm32 r2, 0xd0020000; 385imm32 r3, 0xd0030010; 386imm32 r4, 0xd0040000; 387imm32 r5, 0xd0050000; 388imm32 r6, 0xd0060000; 389imm32 r7, 0xd0070000; 390R5.H = R0.H << 3; 391R6.H = R1.H << 3; 392R7.H = R2.H << 3; 393R0.H = R3.H << 3; 394R1.H = R4.H << 3; 395R2.H = R5.H << 3; 396R3.H = R6.H << 3; 397R4.H = R7.H << 3; 398CHECKREG r0, 0x80180000; 399CHECKREG r1, 0x80200000; 400CHECKREG r2, 0x00400000; 401CHECKREG r3, 0x00400010; 402CHECKREG r4, 0x00800000; 403CHECKREG r5, 0x80080000; 404CHECKREG r6, 0x80080000; 405CHECKREG r7, 0x80100000; 406pass 407