423 lines
9.1 KiB
ArmAsm
423 lines
9.1 KiB
ArmAsm
//Original:/testcases/core/c_dsp32shift_lf/c_dsp32shift_lf.dsp
|
|
// Spec Reference: dsp32shift lshift
|
|
# mach: bfin
|
|
|
|
.include "testutils.inc"
|
|
start
|
|
|
|
|
|
|
|
// lshift : mix data, count (+)= (half reg)
|
|
// d_reg = lshift (d BY d_lo)
|
|
// Rx by RLx
|
|
imm32 r0, 0x01210001;
|
|
imm32 r1, 0x12315678;
|
|
imm32 r2, 0x23416789;
|
|
imm32 r3, 0x3451789a;
|
|
imm32 r4, 0x856189ab;
|
|
imm32 r5, 0x96719abc;
|
|
imm32 r6, 0xa781abcd;
|
|
imm32 r7, 0xb891bcde;
|
|
R7 = LSHIFT R0 BY R0.L;
|
|
R6 = LSHIFT R1 BY R0.L;
|
|
R0 = LSHIFT R2 BY R0.L;
|
|
R1 = LSHIFT R3 BY R0.L;
|
|
R2 = LSHIFT R4 BY R0.L;
|
|
R3 = LSHIFT R5 BY R0.L;
|
|
R4 = LSHIFT R6 BY R0.L;
|
|
R5 = LSHIFT R7 BY R0.L;
|
|
CHECKREG r0, 0x4682CF12;
|
|
CHECKREG r1, 0xE2680000;
|
|
CHECKREG r2, 0x26AC0000;
|
|
CHECKREG r3, 0x6AF00000;
|
|
CHECKREG r4, 0xB3C00000;
|
|
CHECKREG r5, 0x00080000;
|
|
CHECKREG r6, 0x2462ACF0;
|
|
CHECKREG r7, 0x02420002;
|
|
|
|
imm32 r0, 0x01220002;
|
|
imm32 r1, 0x12325678;
|
|
imm32 r2, 0x23426789;
|
|
imm32 r3, 0x3452789a;
|
|
imm32 r4, 0x956289ab;
|
|
imm32 r5, 0xa6729abc;
|
|
imm32 r6, 0xb782abcd;
|
|
imm32 r7, 0xc892bcde;
|
|
R1.L = 2;
|
|
R3 = LSHIFT R0 BY R1.L;
|
|
R4 = LSHIFT R1 BY R1.L;
|
|
R5 = LSHIFT R2 BY R1.L;
|
|
R6 = LSHIFT R3 BY R1.L;
|
|
R7 = LSHIFT R4 BY R1.L;
|
|
R0 = LSHIFT R5 BY R1.L;
|
|
R1 = LSHIFT R6 BY R1.L;
|
|
R2 = LSHIFT R7 BY R1.L;
|
|
CHECKREG r0, 0x34267890;
|
|
CHECKREG r1, 0x48800080;
|
|
CHECKREG r2, 0x23200020;
|
|
CHECKREG r3, 0x04880008;
|
|
CHECKREG r4, 0x48C80008;
|
|
CHECKREG r5, 0x8D099E24;
|
|
CHECKREG r6, 0x12200020;
|
|
CHECKREG r7, 0x23200020;
|
|
|
|
imm32 r0, 0x01230002;
|
|
imm32 r1, 0x12335678;
|
|
imm32 r2, 0x23436789;
|
|
imm32 r3, 0x3453789a;
|
|
imm32 r4, 0x456389ab;
|
|
imm32 r5, 0x56739abc;
|
|
imm32 r6, 0x6783abcd;
|
|
imm32 r7, 0x789abcde;
|
|
R2 = 14;
|
|
R0 = LSHIFT R4 BY R2.L;
|
|
R1 = LSHIFT R5 BY R2.L;
|
|
R2 = LSHIFT R6 BY R2.L;
|
|
R3 = LSHIFT R7 BY R2.L;
|
|
CHECKREG r0, 0xE26AC000;
|
|
CHECKREG r1, 0xE6AF0000;
|
|
CHECKREG r2, 0xEAF34000;
|
|
CHECKREG r3, 0x789ABCDE;
|
|
|
|
imm32 r0, 0x01240002;
|
|
imm32 r1, 0x12345678;
|
|
imm32 r2, 0x23446789;
|
|
imm32 r3, 0x3454789a;
|
|
imm32 r4, 0xa56489ab;
|
|
imm32 r5, 0xb6749abc;
|
|
imm32 r6, 0xc784abcd;
|
|
imm32 r7, 0xd894bcde;
|
|
R3.L = 15;
|
|
R4 = LSHIFT R0 BY R3.L;
|
|
R5 = LSHIFT R1 BY R3.L;
|
|
R6 = LSHIFT R2 BY R3.L;
|
|
R7 = LSHIFT R3 BY R3.L;
|
|
R0 = LSHIFT R4 BY R3.L;
|
|
R1 = LSHIFT R5 BY R3.L;
|
|
R2 = LSHIFT R6 BY R3.L;
|
|
R3 = LSHIFT R7 BY R3.L;
|
|
CHECKREG r0, 0x80000000;
|
|
CHECKREG r1, 0x00000000;
|
|
CHECKREG r2, 0x40000000;
|
|
CHECKREG r3, 0xC0000000;
|
|
CHECKREG r4, 0x00010000;
|
|
CHECKREG r5, 0x2B3C0000;
|
|
CHECKREG r6, 0x33C48000;
|
|
CHECKREG r7, 0x00078000;
|
|
|
|
imm32 r0, 0x01250002;
|
|
imm32 r1, 0x12355678;
|
|
imm32 r2, 0x23456789;
|
|
imm32 r3, 0x3455789a;
|
|
imm32 r4, 0x456589ab;
|
|
imm32 r5, 0x56759abc;
|
|
imm32 r6, 0x6785abcd;
|
|
imm32 r7, 0x7895bcde;
|
|
R4.L = -1;
|
|
R7 = LSHIFT R0 BY R4.L;
|
|
R6 = LSHIFT R1 BY R4.L;
|
|
R5 = LSHIFT R2 BY R4.L;
|
|
R3 = LSHIFT R4 BY R4.L;
|
|
R2 = LSHIFT R5 BY R4.L;
|
|
R1 = LSHIFT R6 BY R4.L;
|
|
R0 = LSHIFT R7 BY R4.L;
|
|
R4 = LSHIFT R3 BY R4.L;
|
|
CHECKREG r0, 0x00494000;
|
|
CHECKREG r1, 0x048D559E;
|
|
CHECKREG r2, 0x08D159E2;
|
|
CHECKREG r3, 0x22B2FFFF;
|
|
CHECKREG r4, 0x11597FFF;
|
|
CHECKREG r5, 0x11A2B3C4;
|
|
CHECKREG r6, 0x091AAB3C;
|
|
CHECKREG r7, 0x00928001;
|
|
|
|
imm32 r0, 0x01260002;
|
|
imm32 r1, 0x82365678;
|
|
imm32 r2, 0x93466789;
|
|
imm32 r3, 0xa456789a;
|
|
imm32 r4, 0xb56689ab;
|
|
imm32 r5, 0xc6769abc;
|
|
imm32 r6, 0xd786abcd;
|
|
imm32 r7, 0xe896bcde;
|
|
R5.L = -8;
|
|
R6 = LSHIFT R0 BY R5.L;
|
|
R7 = LSHIFT R1 BY R5.L;
|
|
R0 = LSHIFT R2 BY R5.L;
|
|
R1 = LSHIFT R3 BY R5.L;
|
|
R2 = LSHIFT R4 BY R5.L;
|
|
R3 = LSHIFT R5 BY R5.L;
|
|
R4 = LSHIFT R6 BY R5.L;
|
|
R5 = LSHIFT R7 BY R5.L;
|
|
CHECKREG r0, 0x00934667;
|
|
CHECKREG r1, 0x00A45678;
|
|
CHECKREG r2, 0x00B56689;
|
|
CHECKREG r3, 0x00C676FF;
|
|
CHECKREG r4, 0x00000126;
|
|
CHECKREG r5, 0x00008236;
|
|
CHECKREG r6, 0x00012600;
|
|
CHECKREG r7, 0x00823656;
|
|
|
|
imm32 r0, 0x01270002;
|
|
imm32 r1, 0x12375678;
|
|
imm32 r2, 0x23476789;
|
|
imm32 r3, 0x3457789a;
|
|
imm32 r4, 0x456789ab;
|
|
imm32 r5, 0x56779abc;
|
|
imm32 r6, 0x6787abcd;
|
|
imm32 r7, 0x7897bcde;
|
|
R6.L = -15;
|
|
R7 = LSHIFT R0 BY R6.L;
|
|
R0 = LSHIFT R1 BY R6.L;
|
|
R1 = LSHIFT R2 BY R6.L;
|
|
R2 = LSHIFT R3 BY R6.L;
|
|
R3 = LSHIFT R4 BY R6.L;
|
|
R4 = LSHIFT R5 BY R6.L;
|
|
R5 = LSHIFT R6 BY R6.L;
|
|
R6 = LSHIFT R7 BY R6.L;
|
|
CHECKREG r0, 0x0000246E;
|
|
CHECKREG r1, 0x0000468E;
|
|
CHECKREG r2, 0x000068AE;
|
|
CHECKREG r3, 0x00008ACF;
|
|
CHECKREG r4, 0x0000ACEF;
|
|
CHECKREG r5, 0x0000CF0F;
|
|
CHECKREG r6, 0x00000000;
|
|
CHECKREG r7, 0x0000024E;
|
|
|
|
imm32 r0, 0x01280002;
|
|
imm32 r1, 0x82385678;
|
|
imm32 r2, 0x93486789;
|
|
imm32 r3, 0xa458789a;
|
|
imm32 r4, 0xb56889ab;
|
|
imm32 r5, 0xc6789abc;
|
|
imm32 r6, 0xd788abcd;
|
|
imm32 r7, 0xe898bcde;
|
|
R7.L = -16;
|
|
R0 = LSHIFT R0 BY R7.L;
|
|
R1 = LSHIFT R1 BY R7.L;
|
|
R2 = LSHIFT R2 BY R7.L;
|
|
R3 = LSHIFT R3 BY R7.L;
|
|
R4 = LSHIFT R4 BY R7.L;
|
|
R5 = LSHIFT R5 BY R7.L;
|
|
R6 = LSHIFT R6 BY R7.L;
|
|
R7 = LSHIFT R7 BY R7.L;
|
|
CHECKREG r0, 0x00000128;
|
|
CHECKREG r1, 0x00008238;
|
|
CHECKREG r2, 0x00009348;
|
|
CHECKREG r3, 0x0000A458;
|
|
CHECKREG r4, 0x0000B568;
|
|
CHECKREG r5, 0x0000C678;
|
|
CHECKREG r6, 0x0000D788;
|
|
CHECKREG r7, 0x0000E898;
|
|
|
|
imm32 r0, 0x81290002;
|
|
imm32 r1, 0x92395678;
|
|
imm32 r2, 0xa3496789;
|
|
imm32 r3, 0xb459789a;
|
|
imm32 r4, 0xc56989ab;
|
|
imm32 r5, 0xd6799abc;
|
|
imm32 r6, 0xe789abcd;
|
|
imm32 r7, 0xf899bcde;
|
|
R0.L = 4;
|
|
//r0 = lshift (r0 by rl0);
|
|
R1 = LSHIFT R1 BY R0.L;
|
|
R2 = LSHIFT R2 BY R0.L;
|
|
R3 = LSHIFT R3 BY R0.L;
|
|
R4 = LSHIFT R4 BY R0.L;
|
|
R5 = LSHIFT R5 BY R0.L;
|
|
R6 = LSHIFT R6 BY R0.L;
|
|
R7 = LSHIFT R7 BY R0.L;
|
|
CHECKREG r1, 0x23956780;
|
|
CHECKREG r2, 0x34967890;
|
|
CHECKREG r3, 0x459789A0;
|
|
CHECKREG r4, 0x56989AB0;
|
|
CHECKREG r5, 0x6799ABC0;
|
|
CHECKREG r6, 0x789ABCD0;
|
|
CHECKREG r7, 0x899BCDE0;
|
|
|
|
imm32 r0, 0x012a0002;
|
|
imm32 r1, 0x123a5678;
|
|
imm32 r2, 0x234a6789;
|
|
imm32 r3, 0x345a789a;
|
|
imm32 r4, 0x456a89ab;
|
|
imm32 r5, 0x567a9abc;
|
|
imm32 r6, 0x678aabcd;
|
|
imm32 r7, 0xf89abcde;
|
|
R1.L = 2;
|
|
R7 = LSHIFT R0 BY R1.L;
|
|
R6 = LSHIFT R1 BY R1.L;
|
|
R5 = LSHIFT R2 BY R1.L;
|
|
R4 = LSHIFT R3 BY R1.L;
|
|
R3 = LSHIFT R4 BY R1.L;
|
|
R2 = LSHIFT R5 BY R1.L;
|
|
R0 = LSHIFT R6 BY R1.L;
|
|
R1 = LSHIFT R7 BY R1.L;
|
|
CHECKREG r0, 0x23A00020;
|
|
CHECKREG r1, 0x12A00020;
|
|
CHECKREG r2, 0x34A67890;
|
|
CHECKREG r3, 0x45A789A0;
|
|
CHECKREG r4, 0xD169E268;
|
|
CHECKREG r5, 0x8D299E24;
|
|
CHECKREG r6, 0x48E80008;
|
|
CHECKREG r7, 0x04A80008;
|
|
|
|
|
|
imm32 r0, 0x012b0002;
|
|
imm32 r1, 0x123b5678;
|
|
imm32 r2, 0x234b6789;
|
|
imm32 r3, 0x345b789a;
|
|
imm32 r4, 0x456b89ab;
|
|
imm32 r5, 0x567b9abc;
|
|
imm32 r6, 0x678babcd;
|
|
imm32 r7, 0x789bbcde;
|
|
R2.L = 15;
|
|
R0 = LSHIFT R0 BY R2.L;
|
|
R1 = LSHIFT R1 BY R2.L;
|
|
R3 = LSHIFT R3 BY R2.L;
|
|
R4 = LSHIFT R4 BY R2.L;
|
|
R5 = LSHIFT R5 BY R2.L;
|
|
R6 = LSHIFT R6 BY R2.L;
|
|
R7 = LSHIFT R7 BY R2.L;
|
|
R2 = LSHIFT R2 BY R2.L;
|
|
CHECKREG r0, 0x80010000;
|
|
CHECKREG r1, 0xAB3C0000;
|
|
CHECKREG r2, 0x80078000;
|
|
CHECKREG r3, 0xBC4D0000;
|
|
CHECKREG r4, 0xC4D58000;
|
|
CHECKREG r5, 0xCD5E0000;
|
|
CHECKREG r6, 0xD5E68000;
|
|
CHECKREG r7, 0xDE6F0000;
|
|
|
|
imm32 r0, 0x012c0002;
|
|
imm32 r1, 0x123c5678;
|
|
imm32 r2, 0x234c6789;
|
|
imm32 r3, 0x345c789a;
|
|
imm32 r4, 0x456c89ab;
|
|
imm32 r5, 0x567c9abc;
|
|
imm32 r6, 0x678cabcd;
|
|
imm32 r7, 0x789cbcde;
|
|
R3.L = 16;
|
|
R0 = LSHIFT R0 BY R3.L;
|
|
R1 = LSHIFT R1 BY R3.L;
|
|
R2 = LSHIFT R2 BY R3.L;
|
|
R4 = LSHIFT R4 BY R3.L;
|
|
R5 = LSHIFT R5 BY R3.L;
|
|
R6 = LSHIFT R6 BY R3.L;
|
|
R7 = LSHIFT R7 BY R3.L;
|
|
R3 = LSHIFT R3 BY R3.L;
|
|
CHECKREG r0, 0x00020000;
|
|
CHECKREG r1, 0x56780000;
|
|
CHECKREG r2, 0x67890000;
|
|
CHECKREG r3, 0x00100000;
|
|
CHECKREG r4, 0x89AB0000;
|
|
CHECKREG r5, 0x9ABC0000;
|
|
CHECKREG r6, 0xABCD0000;
|
|
CHECKREG r7, 0xBCDE0000;
|
|
|
|
imm32 r0, 0x012d0002;
|
|
imm32 r1, 0x123d5678;
|
|
imm32 r2, 0x234d6789;
|
|
imm32 r3, 0x345d789a;
|
|
imm32 r4, 0x456d89ab;
|
|
imm32 r5, 0x567d9abc;
|
|
imm32 r6, 0x678dabcd;
|
|
imm32 r7, 0x789dbcde;
|
|
R4.L = -9;
|
|
R7 = LSHIFT R0 BY R4.L;
|
|
R0 = LSHIFT R1 BY R4.L;
|
|
R1 = LSHIFT R2 BY R4.L;
|
|
R2 = LSHIFT R3 BY R4.L;
|
|
//r4 = lshift (r4 by rl4);
|
|
R3 = LSHIFT R5 BY R4.L;
|
|
R5 = LSHIFT R6 BY R4.L;
|
|
R6 = LSHIFT R7 BY R4.L;
|
|
CHECKREG r0, 0x00091EAB;
|
|
CHECKREG r1, 0x0011A6B3;
|
|
CHECKREG r2, 0x001A2EBC;
|
|
CHECKREG r3, 0x002B3ECD;
|
|
CHECKREG r4, 0x456DFFF7;
|
|
CHECKREG r5, 0x0033C6D5;
|
|
CHECKREG r6, 0x0000004B;
|
|
CHECKREG r7, 0x00009680;
|
|
|
|
imm32 r0, 0x012e0002;
|
|
imm32 r1, 0x123e5678;
|
|
imm32 r2, 0x234e6789;
|
|
imm32 r3, 0x345e789a;
|
|
imm32 r4, 0x456e89ab;
|
|
imm32 r5, 0x567e9abc;
|
|
imm32 r6, 0x678eabcd;
|
|
imm32 r7, 0x789ebcde;
|
|
R5.L = -14;
|
|
R0 = LSHIFT R0 BY R5.L;
|
|
R1 = LSHIFT R1 BY R5.L;
|
|
R2 = LSHIFT R2 BY R5.L;
|
|
R3 = LSHIFT R3 BY R5.L;
|
|
R4 = LSHIFT R4 BY R5.L;
|
|
//r5 = lshift (r5 by rl5);
|
|
R6 = LSHIFT R6 BY R5.L;
|
|
R7 = LSHIFT R7 BY R5.L;
|
|
CHECKREG r0, 0x000004B8;
|
|
CHECKREG r1, 0x000048F9;
|
|
CHECKREG r2, 0x00008D39;
|
|
CHECKREG r3, 0x0000D179;
|
|
CHECKREG r4, 0x000115BA;
|
|
CHECKREG r5, 0x567EFFF2;
|
|
CHECKREG r6, 0x00019E3A;
|
|
CHECKREG r7, 0x0001E27A;
|
|
|
|
|
|
imm32 r0, 0x012f0002;
|
|
imm32 r1, 0x623f5678;
|
|
imm32 r2, 0x734f6789;
|
|
imm32 r3, 0x845f789a;
|
|
imm32 r4, 0x956f89ab;
|
|
imm32 r5, 0xa67f9abc;
|
|
imm32 r6, 0xc78fabcd;
|
|
imm32 r7, 0xd89fbcde;
|
|
R6.L = -15;
|
|
R0 = LSHIFT R0 BY R6.L;
|
|
R1 = LSHIFT R1 BY R6.L;
|
|
R2 = LSHIFT R2 BY R6.L;
|
|
R3 = LSHIFT R3 BY R6.L;
|
|
R4 = LSHIFT R4 BY R6.L;
|
|
R5 = LSHIFT R5 BY R6.L;
|
|
//r6 = lshift (r6 by rl6);
|
|
R7 = LSHIFT R7 BY R6.L;
|
|
CHECKREG r0, 0x0000025E;
|
|
CHECKREG r1, 0x0000C47E;
|
|
CHECKREG r2, 0x0000E69E;
|
|
CHECKREG r3, 0x000108BE;
|
|
CHECKREG r4, 0x00012ADF;
|
|
CHECKREG r5, 0x00014CFF;
|
|
CHECKREG r6, 0xC78FFFF1;
|
|
CHECKREG r7, 0x0001B13F;
|
|
|
|
imm32 r0, 0x71230072;
|
|
imm32 r1, 0x82345678;
|
|
imm32 r2, 0x93456779;
|
|
imm32 r3, 0xa456787a;
|
|
imm32 r4, 0xb567897b;
|
|
imm32 r5, 0xc6789a7c;
|
|
imm32 r6, 0x6789ab7d;
|
|
imm32 r7, 0x789abc7e;
|
|
R7.L = -16;
|
|
R0 = LSHIFT R0 BY R7.L;
|
|
R1 = LSHIFT R1 BY R7.L;
|
|
R2 = LSHIFT R2 BY R7.L;
|
|
R3 = LSHIFT R3 BY R7.L;
|
|
R4 = LSHIFT R4 BY R7.L;
|
|
R5 = LSHIFT R5 BY R7.L;
|
|
R6 = LSHIFT R6 BY R7.L;
|
|
R7 = LSHIFT R7 BY R7.L;
|
|
CHECKREG r0, 0x00007123;
|
|
CHECKREG r1, 0x00008234;
|
|
CHECKREG r2, 0x00009345;
|
|
CHECKREG r3, 0x0000A456;
|
|
CHECKREG r4, 0x0000B567;
|
|
CHECKREG r5, 0x0000C678;
|
|
CHECKREG r6, 0x00006789;
|
|
CHECKREG r7, 0x0000789A;
|
|
|
|
|
|
pass
|