//Original:/testcases/core/c_dsp32shiftim_ahalf_lp_s/c_dsp32shiftim_ahalf_lp_s.dsp // Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5) saturated # mach: bfin .include "testutils.inc" start imm32 r0, 0x00100a00; imm32 r1, 0x00100a01; imm32 r2, 0x00100a02; imm32 r3, 0x00100a03; imm32 r4, 0x00100a04; imm32 r5, 0x00100a05; imm32 r6, 0x00100a06; imm32 r7, 0x00100a07; R7.L = R0.L << 0 (S); R0.L = R1.L << 1 (S); R1.L = R2.L << 2 (S); R2.L = R3.L << 3 (S); R3.L = R4.L << 4 (S); R4.L = R5.L << 5 (S); R5.L = R6.L << 6 (S); R6.L = R7.L << 7 (S); CHECKREG r1, 0x00102808; CHECKREG r0, 0x00101402; CHECKREG r2, 0x00105018; CHECKREG r3, 0x00107FFF; CHECKREG r4, 0x00107FFF; CHECKREG r5, 0x00107FFF; CHECKREG r6, 0x00107FFF; CHECKREG r7, 0x00100A00; imm32 r0, 0x00200018; imm32 r1, 0x00200019; imm32 r2, 0x0020001a; imm32 r3, 0x0020001b; imm32 r4, 0x0020001c; imm32 r5, 0x0020001d; imm32 r6, 0x0020001e; imm32 r7, 0x0020001f; R2.L = R0.L << 8 (S); R3.L = R1.L << 9 (S); R4.L = R2.L << 10 (S); R5.L = R3.L << 11 (S); R6.L = R4.L << 12 (S); R7.L = R5.L << 13 (S); R0.L = R6.L << 14 (S); R1.L = R7.L << 15 (S); CHECKREG r0, 0x00207FFF; CHECKREG r1, 0x00207FFF; CHECKREG r2, 0x00201800; CHECKREG r3, 0x00203200; CHECKREG r4, 0x00207FFF; CHECKREG r5, 0x00207FFF; CHECKREG r6, 0x00207FFF; CHECKREG r7, 0x00207FFF; imm32 r0, 0x05002001; imm32 r1, 0x05002001; imm32 r2, 0x0500000f; imm32 r3, 0x05002003; imm32 r4, 0x05002004; imm32 r5, 0x05002005; imm32 r6, 0x05002006; imm32 r7, 0x05002007; R3.L = R0.L << 0 (S); R4.L = R1.L << 1 (S); R5.L = R2.L << 2 (S); R6.L = R3.L << 3 (S); R7.L = R4.L << 4 (S); R0.L = R5.L << 5 (S); R1.L = R6.L << 6 (S); R2.L = R7.L << 7 (S); CHECKREG r0, 0x05000780; CHECKREG r1, 0x05007FFF; CHECKREG r2, 0x05007FFF; CHECKREG r3, 0x05002001; CHECKREG r4, 0x05004002; CHECKREG r5, 0x0500003C; CHECKREG r6, 0x05007FFF; CHECKREG r7, 0x05007FFF; imm32 r0, 0x03000031; imm32 r1, 0x03000031; imm32 r2, 0x03000032; imm32 r3, 0x03000030; imm32 r4, 0x03000034; imm32 r5, 0x03000035; imm32 r6, 0x03000036; imm32 r7, 0x03000037; R4.L = R0.L << 8 (S); R5.L = R1.L << 9 (S); R6.L = R2.L << 10 (S); R7.L = R3.L << 11 (S); R0.L = R4.L << 12 (S); R1.L = R5.L << 13 (S); R2.L = R6.L << 14 (S); R3.L = R7.L << 15 (S); CHECKREG r0, 0x03007FFF; CHECKREG r1, 0x03007FFF; CHECKREG r2, 0x03007FFF; CHECKREG r3, 0x03007FFF; CHECKREG r4, 0x03003100; CHECKREG r5, 0x03006200; CHECKREG r6, 0x03007FFF; CHECKREG r7, 0x03007FFF; // RHx by RLx imm32 r0, 0x03000000; imm32 r1, 0x03000000; imm32 r2, 0x03000000; imm32 r3, 0x03000000; imm32 r4, 0x03003100; imm32 r5, 0x03006200; imm32 r6, 0x0300C800; imm32 r7, 0x03008000; R5.L = R0.H << 0 (S); R6.L = R1.H << 1 (S); R7.L = R2.H << 2 (S); R0.L = R3.H << 3 (S); R1.L = R4.H << 4 (S); R2.L = R5.H << 5 (S); R3.L = R6.H << 6 (S); R4.L = R7.H << 7 (S); CHECKREG r0, 0x03001800; CHECKREG r1, 0x03003000; CHECKREG r2, 0x03006000; CHECKREG r3, 0x03007FFF; CHECKREG r4, 0x03007FFF; CHECKREG r5, 0x03000300; CHECKREG r6, 0x03000600; CHECKREG r7, 0x03000C00; imm32 r0, 0x05018000; imm32 r1, 0x05018001; imm32 r2, 0x05028000; imm32 r3, 0x05038000; imm32 r4, 0x05048000; imm32 r5, 0x05058000; imm32 r6, 0x05068000; imm32 r7, 0x05078000; R6.L = R0.H << 8 (S); R7.L = R1.H << 9 (S); R0.L = R2.H << 10 (S); R1.L = R3.H << 11 (S); R2.L = R4.H << 12 (S); R3.L = R5.H << 13 (S); R4.L = R6.H << 14 (S); R5.L = R7.H << 15 (S); CHECKREG r0, 0x05017FFF; CHECKREG r1, 0x05017FFF; CHECKREG r2, 0x05027FFF; CHECKREG r3, 0x05037FFF; CHECKREG r4, 0x05047FFF; CHECKREG r5, 0x05057FFF; CHECKREG r6, 0x05067FFF; CHECKREG r7, 0x05077FFF; imm32 r0, 0x60019000; imm32 r1, 0x60019000; imm32 r2, 0x6002900f; imm32 r3, 0x60039000; imm32 r4, 0x60049000; imm32 r5, 0x60059000; imm32 r6, 0x60069000; imm32 r7, 0x60079000; R7.L = R0.H << 0 (S); R0.L = R1.H << 1 (S); R1.L = R2.H << 2 (S); R2.L = R3.H << 3 (S); R3.L = R4.H << 4 (S); R4.L = R5.H << 5 (S); R5.L = R6.H << 6 (S); R6.L = R7.H << 7 (S); CHECKREG r0, 0x60017FFF; CHECKREG r1, 0x60017FFF; CHECKREG r2, 0x60027FFF; CHECKREG r3, 0x60037FFF; CHECKREG r4, 0x60047FFF; CHECKREG r5, 0x60057FFF; CHECKREG r6, 0x60067FFF; CHECKREG r7, 0x60076001; imm32 r0, 0x70010001; imm32 r1, 0x70010001; imm32 r2, 0x70020002; imm32 r3, 0x77030010; imm32 r4, 0x70040004; imm32 r5, 0x70050005; imm32 r6, 0x70060006; imm32 r7, 0x70070007; R0.L = R0.H << 8 (S); R1.L = R1.H << 9 (S); R2.L = R2.H << 10 (S); R3.L = R3.H << 11 (S); R4.L = R4.H << 12 (S); R5.L = R5.H << 13 (S); R6.L = R6.H << 14 (S); R7.L = R7.H << 15 (S); CHECKREG r0, 0x70017FFF; CHECKREG r1, 0x70017FFF; CHECKREG r2, 0x70027FFF; CHECKREG r3, 0x77037FFF; CHECKREG r4, 0x70047FFF; CHECKREG r5, 0x70057FFF; CHECKREG r6, 0x70067FFF; CHECKREG r7, 0x70077FFF; // d_hi = lshft (d_lo BY d_lo) // RLx by RLx imm32 r0, 0xa8000000; imm32 r1, 0xa8000001; imm32 r2, 0xa8000002; imm32 r3, 0xa8000003; imm32 r4, 0xa8000004; imm32 r5, 0xa8000005; imm32 r6, 0xa8000006; imm32 r7, 0xa8000007; R0.H = R0.L << 0 (S); R1.H = R1.L << 1 (S); R2.H = R2.L << 2 (S); R3.H = R3.L << 3 (S); R4.H = R4.L << 4 (S); R5.H = R5.L << 5 (S); R6.H = R6.L << 6 (S); R7.H = R7.L << 7 (S); CHECKREG r0, 0x00000000; CHECKREG r1, 0x00020001; CHECKREG r2, 0x00080002; CHECKREG r3, 0x00180003; CHECKREG r4, 0x00400004; CHECKREG r5, 0x00A00005; CHECKREG r6, 0x01800006; CHECKREG r7, 0x03800007; imm32 r0, 0xf0090001; imm32 r1, 0xf0090001; imm32 r2, 0xf0090002; imm32 r3, 0xf0090003; imm32 r4, 0xf0090004; imm32 r5, 0xf0090005; imm32 r6, 0xf0000006; imm32 r7, 0xf0000007; R1.H = R0.L << 8 (S); R2.H = R1.L << 9 (S); R3.H = R2.L << 10 (S); R4.H = R3.L << 11 (S); R5.H = R4.L << 12 (S); R6.H = R5.L << 13 (S); R7.H = R6.L << 14 (S); R0.H = R7.L << 15 (S); CHECKREG r1, 0x01000001; CHECKREG r2, 0x02000002; CHECKREG r3, 0x08000003; CHECKREG r4, 0x18000004; CHECKREG r5, 0x40000005; CHECKREG r6, 0x7FFF0006; CHECKREG r7, 0x7FFF0007; CHECKREG r0, 0x7FFF0001; imm32 r0, 0x07000001; imm32 r1, 0x07000001; imm32 r2, 0x0700000f; imm32 r3, 0x07000003; imm32 r4, 0x07000004; imm32 r5, 0x07000005; imm32 r6, 0x07000006; imm32 r7, 0x07000007; R3.H = R0.L << 0 (S); R4.H = R1.L << 1 (S); R5.H = R2.L << 2 (S); R6.H = R3.L << 3 (S); R7.H = R4.L << 4 (S); R0.H = R5.L << 5 (S); R1.H = R6.L << 6 (S); R2.H = R7.L << 7 (S); CHECKREG r0, 0x00A00001; CHECKREG r1, 0x01800001; CHECKREG r2, 0x0380000F; CHECKREG r3, 0x00010003; CHECKREG r4, 0x00020004; CHECKREG r5, 0x003C0005; CHECKREG r6, 0x00180006; CHECKREG r7, 0x00400007; imm32 r0, 0x00000501; imm32 r1, 0x00000501; imm32 r2, 0x00000502; imm32 r3, 0x00000510; imm32 r4, 0x00000504; imm32 r5, 0x00000505; imm32 r6, 0x00000506; imm32 r7, 0x00000507; R4.H = R0.L << 8 (S); R5.H = R1.L << 9 (S); R6.H = R2.L << 10 (S); R7.H = R3.L << 11 (S); R0.H = R4.L << 12 (S); R1.H = R5.L << 13 (S); R2.H = R6.L << 14 (S); R3.H = R7.L << 15 (S); CHECKREG r0, 0x7FFF0501; CHECKREG r1, 0x7FFF0501; CHECKREG r2, 0x7FFF0502; CHECKREG r3, 0x7FFF0510; CHECKREG r4, 0x7FFF0504; CHECKREG r5, 0x7FFF0505; CHECKREG r6, 0x7FFF0506; CHECKREG r7, 0x7FFF0507; imm32 r0, 0x00a00800; imm32 r1, 0x00a10800; imm32 r2, 0x00a20800; imm32 r3, 0x00a30800; imm32 r4, 0x00a40800; imm32 r5, 0x00a50800; imm32 r6, 0x00a60800; imm32 r7, 0x00a70800; R5.H = R0.H << 0 (S); R6.H = R1.H << 1 (S); R7.H = R2.H << 2 (S); R0.H = R3.H << 3 (S); R1.H = R4.H << 4 (S); R2.H = R5.H << 5 (S); R3.H = R6.H << 6 (S); R4.H = R7.H << 7 (S); CHECKREG r0, 0x05180800; CHECKREG r1, 0x0A400800; CHECKREG r2, 0x14000800; CHECKREG r3, 0x50800800; CHECKREG r4, 0x7FFF0800; CHECKREG r5, 0x00A00800; CHECKREG r6, 0x01420800; CHECKREG r7, 0x02880800; imm32 r0, 0x0c010000; imm32 r1, 0x0c010001; imm32 r2, 0x0c020000; imm32 r3, 0x0c030000; imm32 r4, 0x0c040000; imm32 r5, 0x0c050000; imm32 r6, 0x0c060000; imm32 r7, 0x0c070000; R6.H = R0.H << 8 (S); R7.H = R1.H << 9 (S); R0.H = R2.H << 10 (S); R1.H = R3.H << 11 (S); R2.H = R4.H << 12 (S); R3.H = R5.H << 13 (S); R4.H = R6.H << 14 (S); R5.H = R7.H << 15 (S); CHECKREG r0, 0x7FFF0000; CHECKREG r1, 0x7FFF0001; CHECKREG r2, 0x7FFF0000; CHECKREG r3, 0x7FFF0000; CHECKREG r4, 0x7FFF0000; CHECKREG r5, 0x7FFF0000; CHECKREG r6, 0x7FFF0000; CHECKREG r7, 0x7FFF0000; imm32 r0, 0x00b10000; imm32 r1, 0x00b10000; imm32 r2, 0x00b2000f; imm32 r3, 0x00b30000; imm32 r4, 0x00b40000; imm32 r5, 0x00b50000; imm32 r6, 0x00b60000; imm32 r7, 0x00b70000; R7.L = R0.H << 0 (S); R0.L = R1.H << 1 (S); R1.L = R2.H << 2 (S); R2.L = R3.H << 3 (S); R3.L = R4.H << 4 (S); R4.L = R5.H << 5 (S); R5.L = R6.H << 6 (S); R6.L = R7.H << 7 (S); CHECKREG r0, 0x00B10162; CHECKREG r1, 0x00B102C8; CHECKREG r2, 0x00B20598; CHECKREG r3, 0x00B30B40; CHECKREG r4, 0x00B416A0; CHECKREG r5, 0x00B52D80; CHECKREG r6, 0x00B65B80; CHECKREG r7, 0x00B700B1; imm32 r0, 0x0a010700; imm32 r1, 0x0a010700; imm32 r2, 0x0a020700; imm32 r3, 0x0a030710; imm32 r4, 0x0a040700; imm32 r5, 0x0a050700; imm32 r6, 0x0a060700; imm32 r7, 0x0a070700; R0.H = R0.H << 8 (S); R1.H = R1.H << 9 (S); R2.H = R2.H << 10 (S); R3.H = R3.H << 11 (S); R4.H = R4.H << 12 (S); R5.H = R5.H << 13 (S); R6.H = R6.H << 14 (S); R7.H = R7.H << 15 (S); CHECKREG r0, 0x7FFF0700; CHECKREG r1, 0x7FFF0700; CHECKREG r2, 0x7FFF0700; CHECKREG r3, 0x7FFF0710; CHECKREG r4, 0x7FFF0700; CHECKREG r5, 0x7FFF0700; CHECKREG r6, 0x7FFF0700; CHECKREG r7, 0x7FFF0700; pass