| //Original:/proj/frio/dv/testcases/core/c_dsp32shift_af_s/c_dsp32shift_af_s.dsp |
| // Spec Reference: dsp32shift ashift s |
| # mach: bfin |
| |
| .include "testutils.inc" |
| start |
| |
| // ashift : mix data, count (+)= (half reg) |
| // d_reg = ashift (d BY d_lo) |
| // Rx by RLx |
| imm32 r0, 0x01230001; |
| imm32 r1, 0x12345678; |
| imm32 r2, 0x23456789; |
| imm32 r3, 0x3456789a; |
| imm32 r4, 0x856789ab; |
| imm32 r5, 0x96789abc; |
| imm32 r6, 0xa789abcd; |
| imm32 r7, 0xb89abcde; |
| R4 = ASHIFT R0 BY R0.L (S); |
| R5 = ASHIFT R1 BY R0.L (S); |
| R6 = ASHIFT R2 BY R0.L (S); |
| R7 = ASHIFT R3 BY R0.L (S); |
| CHECKREG r4, 0x02460002; |
| CHECKREG r5, 0x2468ACF0; |
| CHECKREG r6, 0x468ACF12; |
| CHECKREG r7, 0x68ACF134; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x12345678; |
| imm32 r2, 0x23456789; |
| imm32 r3, 0x3456789a; |
| imm32 r4, 0x956789ab; |
| imm32 r5, 0xa6789abc; |
| imm32 r6, 0xb789abcd; |
| imm32 r7, 0xc89abcde; |
| R1.L = 5; |
| R5 = ASHIFT R0 BY R1.L (S); |
| R6 = ASHIFT R1 BY R1.L (S); |
| R7 = ASHIFT R2 BY R1.L (S); |
| R4 = ASHIFT R3 BY R1.L (S); |
| CHECKREG r4, 0x7FFFFFFF; |
| CHECKREG r5, 0x24600040; |
| CHECKREG r6, 0x7FFFFFFF; |
| CHECKREG r7, 0x7FFFFFFF; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x12345678; |
| imm32 r2, 0x23456789; |
| imm32 r3, 0x3456789a; |
| imm32 r4, 0x456789ab; |
| imm32 r5, 0x56789abc; |
| imm32 r6, 0x6789abcd; |
| imm32 r7, 0x789abcde; |
| R2 = 14; |
| R6 = ASHIFT R0 BY R2.L (S); |
| R7 = ASHIFT R1 BY R2.L (S); |
| R4 = ASHIFT R2 BY R2.L (S); |
| R5 = ASHIFT R3 BY R2.L (S); |
| CHECKREG r4, 0x00038000; |
| CHECKREG r5, 0x7FFFFFFF; |
| CHECKREG r6, 0x7FFFFFFF; |
| CHECKREG r7, 0x7FFFFFFF; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x12345678; |
| imm32 r2, 0x23456789; |
| imm32 r3, 0x3456789a; |
| imm32 r4, 0xa56789ab; |
| imm32 r5, 0xb6789abc; |
| imm32 r6, 0xc789abcd; |
| imm32 r7, 0xd89abcde; |
| R3.L = 15; |
| R7 = ASHIFT R0 BY R3.L (S); |
| R6 = ASHIFT R1 BY R3.L (S); |
| R5 = ASHIFT R2 BY R3.L (S); |
| R4 = ASHIFT R3 BY R3.L (S); |
| CHECKREG r4, 0x7FFFFFFF; |
| CHECKREG r5, 0x7FFFFFFF; |
| CHECKREG r6, 0x7FFFFFFF; |
| CHECKREG r7, 0x7FFFFFFF; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x12345678; |
| imm32 r2, 0x23456789; |
| imm32 r3, 0x3456789a; |
| imm32 r4, 0x456789ab; |
| imm32 r5, 0x56789abc; |
| imm32 r6, 0x6789abcd; |
| imm32 r7, 0x789abcde; |
| R4.L = -1; |
| R7 = ASHIFT R0 BY R4.L; |
| R0 = ASHIFT R1 BY R4.L; |
| R1 = ASHIFT R2 BY R4.L; |
| R2 = ASHIFT R3 BY R4.L; |
| R3 = ASHIFT R4 BY R4.L; |
| R4 = ASHIFT R5 BY R4.L; |
| R5 = ASHIFT R6 BY R4.L; |
| R6 = ASHIFT R7 BY R4.L; |
| CHECKREG r0, 0x091A2B3C; |
| CHECKREG r1, 0x11A2B3C4; |
| CHECKREG r2, 0x1A2B3C4D; |
| CHECKREG r3, 0x22B3FFFF; |
| CHECKREG r4, 0x2B3C4D5E; |
| CHECKREG r5, 0x40000000; |
| CHECKREG r6, 0x40000000; |
| CHECKREG r7, 0x00918001; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x82345678; |
| imm32 r2, 0x93456789; |
| imm32 r3, 0xa456789a; |
| imm32 r4, 0xb56789ab; |
| imm32 r5, 0xc6789abc; |
| imm32 r6, 0xd789abcd; |
| imm32 r7, 0xe89abcde; |
| R5.L = -6; |
| R6 = ASHIFT R0 BY R5.L (S); |
| R7 = ASHIFT R1 BY R5.L (S); |
| R0 = ASHIFT R2 BY R5.L (S); |
| R1 = ASHIFT R3 BY R5.L (S); |
| R2 = ASHIFT R4 BY R5.L (S); |
| R3 = ASHIFT R5 BY R5.L (S); |
| R4 = ASHIFT R6 BY R5.L (S); |
| R5 = ASHIFT R7 BY R5.L (S); |
| CHECKREG r0, 0xFE4D159E; |
| CHECKREG r1, 0xFE9159E2; |
| CHECKREG r2, 0xFED59E26; |
| CHECKREG r3, 0xFF19E3FF; |
| CHECKREG r4, 0x00001230; |
| CHECKREG r5, 0xFFF82345; |
| CHECKREG r6, 0x00048C00; |
| CHECKREG r7, 0xFE08D159; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x12345678; |
| imm32 r2, 0x23456789; |
| imm32 r3, 0x3456789a; |
| imm32 r4, 0x456789ab; |
| imm32 r5, 0x56789abc; |
| imm32 r6, 0x6789abcd; |
| imm32 r7, 0x789abcde; |
| R6.L = -15; |
| R5 = ASHIFT R0 BY R6.L (S); |
| R0 = ASHIFT R1 BY R6.L (S); |
| R7 = ASHIFT R2 BY R6.L (S); |
| R0 = ASHIFT R3 BY R6.L (S); |
| R1 = ASHIFT R4 BY R6.L (S); |
| R2 = ASHIFT R5 BY R6.L (S); |
| R3 = ASHIFT R6 BY R6.L (S); |
| R6 = ASHIFT R7 BY R6.L (S); |
| CHECKREG r0, 0x000068AC; |
| CHECKREG r1, 0x00008ACF; |
| CHECKREG r2, 0x00000000; |
| CHECKREG r3, 0x0000CF13; |
| CHECKREG r4, 0x456789AB; |
| CHECKREG r5, 0x00000246; |
| CHECKREG r6, 0x00000000; |
| CHECKREG r7, 0x0000468A; |
| |
| imm32 r0, 0x01230002; |
| imm32 r1, 0x82345678; |
| imm32 r2, 0x93456789; |
| imm32 r3, 0xa456789a; |
| imm32 r4, 0xb56789ab; |
| imm32 r5, 0xc6789abc; |
| imm32 r6, 0xd789abcd; |
| imm32 r7, 0xe89abcde; |
| R7.L = -14; |
| R0 = ASHIFT R0 BY R7.L (S); |
| R1 = ASHIFT R1 BY R7.L (S); |
| R2 = ASHIFT R2 BY R7.L (S); |
| R3 = ASHIFT R3 BY R7.L (S); |
| R4 = ASHIFT R4 BY R7.L (S); |
| R5 = ASHIFT R5 BY R7.L (S); |
| R6 = ASHIFT R6 BY R7.L (S); |
| R7 = ASHIFT R7 BY R7.L (S); |
| CHECKREG r0, 0x0000048C; |
| CHECKREG r1, 0xFFFE08D1; |
| CHECKREG r2, 0xFFFE4D15; |
| CHECKREG r3, 0xFFFE9159; |
| CHECKREG r4, 0xFFFED59E; |
| CHECKREG r5, 0xFFFF19E2; |
| CHECKREG r6, 0xFFFF5E26; |
| CHECKREG r7, 0xFFFFA26B; |
| |
| pass |