mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-12 12:16:04 +08:00
412 lines
9.3 KiB
ArmAsm
412 lines
9.3 KiB
ArmAsm
|
//Original:/testcases/core/c_dsp32shift_pack/c_dsp32shift_pack.dsp
|
||
|
// Spec Reference: dsp32shift pack
|
||
|
# mach: bfin
|
||
|
|
||
|
.include "testutils.inc"
|
||
|
start
|
||
|
|
||
|
|
||
|
|
||
|
imm32 r0, 0x01230000;
|
||
|
imm32 r1, 0x02345678;
|
||
|
imm32 r2, 0x03456789;
|
||
|
imm32 r3, 0x0456789a;
|
||
|
imm32 r4, 0x056789ab;
|
||
|
imm32 r5, 0x06789abc;
|
||
|
imm32 r6, 0x0789abcd;
|
||
|
imm32 r7, 0x089abcde;
|
||
|
R1 = PACK( R0.L , R0.L );
|
||
|
R2 = PACK( R1.L , R0.H );
|
||
|
R3 = PACK( R2.H , R0.L );
|
||
|
R4 = PACK( R3.H , R0.H );
|
||
|
R5 = PACK( R4.L , R0.L );
|
||
|
R6 = PACK( R5.L , R0.H );
|
||
|
R7 = PACK( R6.H , R0.L );
|
||
|
R0 = PACK( R7.H , R0.H );
|
||
|
CHECKREG r1, 0x00000000;
|
||
|
CHECKREG r0, 0x00000123;
|
||
|
CHECKREG r2, 0x00000123;
|
||
|
CHECKREG r3, 0x00000000;
|
||
|
CHECKREG r4, 0x00000123;
|
||
|
CHECKREG r5, 0x01230000;
|
||
|
CHECKREG r6, 0x00000123;
|
||
|
CHECKREG r7, 0x00000000;
|
||
|
|
||
|
imm32 r0, 0x11230001;
|
||
|
imm32 r1, 0x12345678;
|
||
|
imm32 r2, 0x1bcdef12;
|
||
|
imm32 r3, 0x1456789a;
|
||
|
imm32 r4, 0x1cdef012;
|
||
|
imm32 r5, 0x1456789a;
|
||
|
imm32 r6, 0x1789abcd;
|
||
|
imm32 r7, 0x189abcde;
|
||
|
R2 = PACK( R0.L , R1.L );
|
||
|
R3 = PACK( R1.L , R1.H );
|
||
|
R4 = PACK( R2.H , R1.L );
|
||
|
R5 = PACK( R3.H , R1.H );
|
||
|
R6 = PACK( R4.L , R1.L );
|
||
|
R7 = PACK( R5.L , R1.H );
|
||
|
R0 = PACK( R6.H , R1.L );
|
||
|
R1 = PACK( R7.H , R1.H );
|
||
|
CHECKREG r0, 0x56785678;
|
||
|
CHECKREG r1, 0x12341234;
|
||
|
CHECKREG r2, 0x00015678;
|
||
|
CHECKREG r3, 0x56781234;
|
||
|
CHECKREG r4, 0x00015678;
|
||
|
CHECKREG r5, 0x56781234;
|
||
|
CHECKREG r6, 0x56785678;
|
||
|
CHECKREG r7, 0x12341234;
|
||
|
|
||
|
imm32 r0, 0x20230002;
|
||
|
imm32 r1, 0x21345678;
|
||
|
imm32 r2, 0x22456789;
|
||
|
imm32 r3, 0x2356789a;
|
||
|
imm32 r4, 0x246789ab;
|
||
|
imm32 r5, 0x25789abc;
|
||
|
imm32 r6, 0x2689abcd;
|
||
|
imm32 r7, 0x279abcde;
|
||
|
R3 = PACK( R0.L , R2.L );
|
||
|
R4 = PACK( R1.L , R2.H );
|
||
|
R5 = PACK( R2.H , R2.L );
|
||
|
R6 = PACK( R3.H , R2.H );
|
||
|
R7 = PACK( R4.L , R2.L );
|
||
|
R0 = PACK( R5.L , R2.H );
|
||
|
R1 = PACK( R6.H , R2.L );
|
||
|
R2 = PACK( R7.H , R2.H );
|
||
|
CHECKREG r0, 0x67892245;
|
||
|
CHECKREG r1, 0x00026789;
|
||
|
CHECKREG r2, 0x22452245;
|
||
|
CHECKREG r3, 0x00026789;
|
||
|
CHECKREG r4, 0x56782245;
|
||
|
CHECKREG r5, 0x22456789;
|
||
|
CHECKREG r6, 0x00022245;
|
||
|
CHECKREG r7, 0x22456789;
|
||
|
|
||
|
imm32 r0, 0x31230003;
|
||
|
imm32 r1, 0x31345678;
|
||
|
imm32 r2, 0x31456789;
|
||
|
imm32 r3, 0x3156789a;
|
||
|
imm32 r4, 0x316789ab;
|
||
|
imm32 r5, 0x31789abc;
|
||
|
imm32 r6, 0x3189abcd;
|
||
|
imm32 r7, 0x311abcde;
|
||
|
R4 = PACK( R0.L , R3.L );
|
||
|
R5 = PACK( R1.L , R3.H );
|
||
|
R6 = PACK( R2.H , R3.L );
|
||
|
R7 = PACK( R3.H , R3.H );
|
||
|
R0 = PACK( R4.L , R3.L );
|
||
|
R1 = PACK( R5.L , R3.H );
|
||
|
R2 = PACK( R6.H , R3.L );
|
||
|
R3 = PACK( R7.H , R3.H );
|
||
|
CHECKREG r0, 0x789A789A;
|
||
|
CHECKREG r1, 0x31563156;
|
||
|
CHECKREG r2, 0x3145789A;
|
||
|
CHECKREG r3, 0x31563156;
|
||
|
CHECKREG r4, 0x0003789A;
|
||
|
CHECKREG r5, 0x56783156;
|
||
|
CHECKREG r6, 0x3145789A;
|
||
|
CHECKREG r7, 0x31563156;
|
||
|
|
||
|
imm32 r0, 0x41230004;
|
||
|
imm32 r1, 0x42345678;
|
||
|
imm32 r2, 0x43456789;
|
||
|
imm32 r3, 0x4456789a;
|
||
|
imm32 r4, 0x456789ab;
|
||
|
imm32 r5, 0x46789abc;
|
||
|
imm32 r6, 0x4789abcd;
|
||
|
imm32 r7, 0x489abcde;
|
||
|
R0 = PACK( R0.L , R4.L );
|
||
|
R1 = PACK( R1.L , R4.H );
|
||
|
R2 = PACK( R2.H , R4.L );
|
||
|
R3 = PACK( R3.H , R4.H );
|
||
|
R4 = PACK( R4.L , R4.L );
|
||
|
R5 = PACK( R5.L , R4.H );
|
||
|
R6 = PACK( R6.H , R4.L );
|
||
|
R7 = PACK( R7.H , R4.H );
|
||
|
CHECKREG r0, 0x000489AB;
|
||
|
CHECKREG r1, 0x56784567;
|
||
|
CHECKREG r2, 0x434589AB;
|
||
|
CHECKREG r3, 0x44564567;
|
||
|
CHECKREG r4, 0x89AB89AB;
|
||
|
CHECKREG r5, 0x9ABC89AB;
|
||
|
CHECKREG r6, 0x478989AB;
|
||
|
CHECKREG r7, 0x489A89AB;
|
||
|
|
||
|
imm32 r0, 0x51230005;
|
||
|
imm32 r1, 0x52345678;
|
||
|
imm32 r2, 0x53456789;
|
||
|
imm32 r3, 0x5456789a;
|
||
|
imm32 r4, 0x556789ab;
|
||
|
imm32 r5, 0x56789abc;
|
||
|
imm32 r6, 0x5789abcd;
|
||
|
imm32 r7, 0x589abcde;
|
||
|
R6 = PACK( R0.L , R5.L );
|
||
|
R7 = PACK( R1.L , R5.H );
|
||
|
R0 = PACK( R2.H , R5.L );
|
||
|
R1 = PACK( R3.H , R5.H );
|
||
|
R2 = PACK( R4.L , R5.L );
|
||
|
R3 = PACK( R5.L , R5.H );
|
||
|
R4 = PACK( R6.H , R5.L );
|
||
|
R5 = PACK( R7.H , R5.H );
|
||
|
CHECKREG r0, 0x53459ABC;
|
||
|
CHECKREG r1, 0x54565678;
|
||
|
CHECKREG r2, 0x89AB9ABC;
|
||
|
CHECKREG r3, 0x9ABC5678;
|
||
|
CHECKREG r4, 0x00059ABC;
|
||
|
CHECKREG r5, 0x56785678;
|
||
|
CHECKREG r6, 0x00059ABC;
|
||
|
CHECKREG r7, 0x56785678;
|
||
|
|
||
|
imm32 r0, 0x61230006;
|
||
|
imm32 r1, 0x62345678;
|
||
|
imm32 r2, 0x63456789;
|
||
|
imm32 r3, 0x6456789a;
|
||
|
imm32 r4, 0x656789ab;
|
||
|
imm32 r5, 0x66789abc;
|
||
|
imm32 r6, 0x6789abcd;
|
||
|
imm32 r7, 0x689abcde;
|
||
|
R7 = PACK( R0.L , R6.L );
|
||
|
R0 = PACK( R1.L , R6.H );
|
||
|
R1 = PACK( R2.H , R6.L );
|
||
|
R2 = PACK( R3.H , R6.H );
|
||
|
R3 = PACK( R4.L , R6.L );
|
||
|
R4 = PACK( R5.L , R6.H );
|
||
|
R5 = PACK( R6.H , R6.L );
|
||
|
R6 = PACK( R7.H , R6.H );
|
||
|
CHECKREG r0, 0x56786789;
|
||
|
CHECKREG r1, 0x6345ABCD;
|
||
|
CHECKREG r2, 0x64566789;
|
||
|
CHECKREG r3, 0x89ABABCD;
|
||
|
CHECKREG r4, 0x9ABC6789;
|
||
|
CHECKREG r5, 0x6789ABCD;
|
||
|
CHECKREG r6, 0x00066789;
|
||
|
CHECKREG r7, 0x0006ABCD;
|
||
|
|
||
|
imm32 r0, 0x71230007;
|
||
|
imm32 r1, 0x72345678;
|
||
|
imm32 r2, 0x73456789;
|
||
|
imm32 r3, 0x7456789a;
|
||
|
imm32 r4, 0x756789ab;
|
||
|
imm32 r5, 0x76789abc;
|
||
|
imm32 r6, 0x7789abcd;
|
||
|
imm32 r7, 0x789abcde;
|
||
|
R0 = PACK( R0.L , R7.L );
|
||
|
R1 = PACK( R1.L , R7.H );
|
||
|
R2 = PACK( R2.H , R7.L );
|
||
|
R3 = PACK( R3.H , R7.H );
|
||
|
R4 = PACK( R4.L , R7.L );
|
||
|
R5 = PACK( R5.L , R7.H );
|
||
|
R6 = PACK( R6.H , R7.L );
|
||
|
R7 = PACK( R7.H , R7.H );
|
||
|
CHECKREG r0, 0x0007BCDE;
|
||
|
CHECKREG r1, 0x5678789A;
|
||
|
CHECKREG r2, 0x7345BCDE;
|
||
|
CHECKREG r3, 0x7456789A;
|
||
|
CHECKREG r4, 0x89ABBCDE;
|
||
|
CHECKREG r5, 0x9ABC789A;
|
||
|
CHECKREG r6, 0x7789BCDE;
|
||
|
CHECKREG r7, 0x789A789A;
|
||
|
|
||
|
imm32 r0, 0x81230008;
|
||
|
imm32 r1, 0x82345678;
|
||
|
imm32 r2, 0x83456789;
|
||
|
imm32 r3, 0x8456789a;
|
||
|
imm32 r4, 0x856789ab;
|
||
|
imm32 r5, 0x86789abc;
|
||
|
imm32 r6, 0x8789abcd;
|
||
|
imm32 r7, 0x889abcde;
|
||
|
R0 = PACK( R0.L , R0.L );
|
||
|
R1 = PACK( R1.L , R0.H );
|
||
|
R2 = PACK( R2.H , R0.L );
|
||
|
R3 = PACK( R3.H , R0.H );
|
||
|
R4 = PACK( R4.L , R0.L );
|
||
|
R5 = PACK( R5.L , R0.H );
|
||
|
R6 = PACK( R6.H , R0.L );
|
||
|
R7 = PACK( R7.H , R0.H );
|
||
|
CHECKREG r0, 0x00080008;
|
||
|
CHECKREG r1, 0x56780008;
|
||
|
CHECKREG r2, 0x83450008;
|
||
|
CHECKREG r3, 0x84560008;
|
||
|
CHECKREG r4, 0x89AB0008;
|
||
|
CHECKREG r5, 0x9ABC0008;
|
||
|
CHECKREG r6, 0x87890008;
|
||
|
CHECKREG r7, 0x889A0008;
|
||
|
|
||
|
imm32 r0, 0x91230009;
|
||
|
imm32 r1, 0x92345678;
|
||
|
imm32 r2, 0x93456789;
|
||
|
imm32 r3, 0x9456789a;
|
||
|
imm32 r4, 0x956789ab;
|
||
|
imm32 r5, 0x96789abc;
|
||
|
imm32 r6, 0x9789abcd;
|
||
|
imm32 r7, 0x989abcde;
|
||
|
R0 = PACK( R0.L , R1.L );
|
||
|
R1 = PACK( R1.L , R1.H );
|
||
|
R2 = PACK( R2.H , R1.L );
|
||
|
R3 = PACK( R3.H , R1.H );
|
||
|
R4 = PACK( R4.L , R1.L );
|
||
|
R5 = PACK( R5.L , R1.H );
|
||
|
R6 = PACK( R6.H , R1.L );
|
||
|
R7 = PACK( R7.H , R1.H );
|
||
|
CHECKREG r0, 0x00095678;
|
||
|
CHECKREG r1, 0x56789234;
|
||
|
CHECKREG r2, 0x93459234;
|
||
|
CHECKREG r3, 0x94565678;
|
||
|
CHECKREG r4, 0x89AB9234;
|
||
|
CHECKREG r5, 0x9ABC5678;
|
||
|
CHECKREG r6, 0x97899234;
|
||
|
CHECKREG r7, 0x989A5678;
|
||
|
|
||
|
|
||
|
imm32 r0, 0xa123000a;
|
||
|
imm32 r1, 0xa2345678;
|
||
|
imm32 r2, 0xa3456789;
|
||
|
imm32 r3, 0xa456789a;
|
||
|
imm32 r4, 0xa56789ab;
|
||
|
imm32 r5, 0xa6789abc;
|
||
|
imm32 r6, 0xa789abcd;
|
||
|
imm32 r7, 0xa89abcde;
|
||
|
R0 = PACK( R0.L , R2.L );
|
||
|
R1 = PACK( R1.L , R2.H );
|
||
|
R2 = PACK( R2.H , R2.L );
|
||
|
R3 = PACK( R3.H , R2.H );
|
||
|
R4 = PACK( R4.L , R2.L );
|
||
|
R5 = PACK( R5.L , R2.H );
|
||
|
R6 = PACK( R6.H , R2.L );
|
||
|
R7 = PACK( R7.H , R2.H );
|
||
|
CHECKREG r0, 0x000A6789;
|
||
|
CHECKREG r1, 0x5678A345;
|
||
|
CHECKREG r2, 0xA3456789;
|
||
|
CHECKREG r3, 0xA456A345;
|
||
|
CHECKREG r4, 0x89AB6789;
|
||
|
CHECKREG r5, 0x9ABCA345;
|
||
|
CHECKREG r6, 0xA7896789;
|
||
|
CHECKREG r7, 0xA89AA345;
|
||
|
|
||
|
imm32 r0, 0xb123000b;
|
||
|
imm32 r1, 0xb2345678;
|
||
|
imm32 r2, 0xb3456789;
|
||
|
imm32 r3, 0xb456789a;
|
||
|
imm32 r4, 0xb56789ab;
|
||
|
imm32 r5, 0xb6789abc;
|
||
|
imm32 r6, 0xb789abcd;
|
||
|
imm32 r7, 0xb89abcde;
|
||
|
R0 = PACK( R0.L , R3.L );
|
||
|
R1 = PACK( R1.L , R3.H );
|
||
|
R2 = PACK( R2.H , R3.L );
|
||
|
R3 = PACK( R3.H , R3.H );
|
||
|
R4 = PACK( R4.L , R3.L );
|
||
|
R5 = PACK( R5.L , R3.H );
|
||
|
R6 = PACK( R6.H , R3.L );
|
||
|
R7 = PACK( R7.H , R3.H );
|
||
|
CHECKREG r0, 0x000B789A;
|
||
|
CHECKREG r1, 0x5678B456;
|
||
|
CHECKREG r2, 0xB345789A;
|
||
|
CHECKREG r3, 0xB456B456;
|
||
|
CHECKREG r4, 0x89ABB456;
|
||
|
CHECKREG r5, 0x9ABCB456;
|
||
|
CHECKREG r6, 0xB789B456;
|
||
|
CHECKREG r7, 0xB89AB456;
|
||
|
|
||
|
imm32 r0, 0xc123000c;
|
||
|
imm32 r1, 0xc2345678;
|
||
|
imm32 r2, 0xc3456789;
|
||
|
imm32 r3, 0xc456789a;
|
||
|
imm32 r4, 0xc56789ab;
|
||
|
imm32 r5, 0xc6789abc;
|
||
|
imm32 r6, 0xc789abcd;
|
||
|
imm32 r7, 0xc89abcde;
|
||
|
R0 = PACK( R0.L , R4.L );
|
||
|
R1 = PACK( R1.L , R4.H );
|
||
|
R2 = PACK( R2.H , R4.L );
|
||
|
R3 = PACK( R3.H , R4.H );
|
||
|
R4 = PACK( R4.L , R4.L );
|
||
|
R5 = PACK( R5.L , R4.H );
|
||
|
R6 = PACK( R6.H , R4.L );
|
||
|
R7 = PACK( R7.H , R4.H );
|
||
|
CHECKREG r0, 0x000C89AB;
|
||
|
CHECKREG r1, 0x5678C567;
|
||
|
CHECKREG r2, 0xC34589AB;
|
||
|
CHECKREG r3, 0xC456C567;
|
||
|
CHECKREG r4, 0x89AB89AB;
|
||
|
CHECKREG r5, 0x9ABC89AB;
|
||
|
CHECKREG r6, 0xC78989AB;
|
||
|
CHECKREG r7, 0xC89A89AB;
|
||
|
|
||
|
imm32 r0, 0xd123000d;
|
||
|
imm32 r1, 0xd2345678;
|
||
|
imm32 r2, 0xd3456789;
|
||
|
imm32 r3, 0xd456789a;
|
||
|
imm32 r4, 0xd56789ab;
|
||
|
imm32 r5, 0xd6789abc;
|
||
|
imm32 r6, 0xd789abcd;
|
||
|
imm32 r7, 0xd89abcde;
|
||
|
R0 = PACK( R0.L , R5.L );
|
||
|
R1 = PACK( R1.L , R5.H );
|
||
|
R2 = PACK( R2.H , R5.L );
|
||
|
R3 = PACK( R3.H , R5.H );
|
||
|
R4 = PACK( R4.L , R5.L );
|
||
|
R5 = PACK( R5.L , R5.H );
|
||
|
R6 = PACK( R6.H , R5.L );
|
||
|
R7 = PACK( R7.H , R5.H );
|
||
|
CHECKREG r0, 0x000D9ABC;
|
||
|
CHECKREG r1, 0x5678D678;
|
||
|
CHECKREG r2, 0xD3459ABC;
|
||
|
CHECKREG r3, 0xD456D678;
|
||
|
CHECKREG r4, 0x89AB9ABC;
|
||
|
CHECKREG r5, 0x9ABCD678;
|
||
|
CHECKREG r6, 0xD789D678;
|
||
|
CHECKREG r7, 0xD89A9ABC;
|
||
|
|
||
|
|
||
|
imm32 r0, 0xe123000e;
|
||
|
imm32 r1, 0xe2345678;
|
||
|
imm32 r2, 0xe3456789;
|
||
|
imm32 r3, 0xe456789a;
|
||
|
imm32 r4, 0xe56789ab;
|
||
|
imm32 r5, 0xe6789abc;
|
||
|
imm32 r6, 0xe789abcd;
|
||
|
imm32 r7, 0xe89abcde;
|
||
|
R0 = PACK( R0.L , R6.L );
|
||
|
R1 = PACK( R1.L , R6.H );
|
||
|
R2 = PACK( R2.H , R6.L );
|
||
|
R3 = PACK( R3.H , R6.H );
|
||
|
R4 = PACK( R4.L , R6.L );
|
||
|
R5 = PACK( R5.L , R6.H );
|
||
|
R6 = PACK( R6.H , R6.L );
|
||
|
R7 = PACK( R7.H , R6.H );
|
||
|
CHECKREG r0, 0x000EABCD;
|
||
|
CHECKREG r1, 0x5678E789;
|
||
|
CHECKREG r2, 0xE345ABCD;
|
||
|
CHECKREG r3, 0xE456E789;
|
||
|
CHECKREG r4, 0x89ABABCD;
|
||
|
CHECKREG r5, 0x9ABCE789;
|
||
|
CHECKREG r6, 0xE789ABCD;
|
||
|
CHECKREG r7, 0xE89AE789;
|
||
|
|
||
|
imm32 r0, 0xf123000f;
|
||
|
imm32 r1, 0xf2345678;
|
||
|
imm32 r2, 0xf3456789;
|
||
|
imm32 r3, 0xf456789a;
|
||
|
imm32 r4, 0xf56789ab;
|
||
|
imm32 r5, 0xf6789abc;
|
||
|
imm32 r6, 0xf789abcd;
|
||
|
imm32 r7, 0xf89abcde;
|
||
|
R0 = PACK( R0.L , R7.L );
|
||
|
R1 = PACK( R1.L , R7.H );
|
||
|
R2 = PACK( R2.H , R7.L );
|
||
|
R3 = PACK( R3.H , R7.H );
|
||
|
R4 = PACK( R4.L , R7.L );
|
||
|
R5 = PACK( R5.L , R7.H );
|
||
|
R6 = PACK( R6.H , R7.L );
|
||
|
R7 = PACK( R7.H , R7.H );
|
||
|
CHECKREG r0, 0x000FBCDE;
|
||
|
CHECKREG r1, 0x5678F89A;
|
||
|
CHECKREG r2, 0xF345BCDE;
|
||
|
CHECKREG r3, 0xF456F89A;
|
||
|
CHECKREG r4, 0x89ABBCDE;
|
||
|
CHECKREG r5, 0x9ABCF89A;
|
||
|
CHECKREG r6, 0xF789BCDE;
|
||
|
CHECKREG r7, 0xF89AF89A;
|
||
|
pass
|