gas: blackfin: add tests for recent loop label fixes
Signed-off-by: David Gibson <david.gibson@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
e7b77cfe1e
commit
636b4f1142
8 changed files with 376 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-10-15 David Gibson <david.gibson@analog.com>
|
||||
|
||||
* gas/bfin/loop_label.s, gas/bfin/loop_label.d,
|
||||
gas/bfin/loop_label2.s, gas/bfin/loop_label2.d,
|
||||
gas/bfin/loop_temps.s, gas/bfin/loop_temps.d: New tests.
|
||||
* gas/bfin/bfin.exp: Add loop_label, loop_label2, and loop_temps.
|
||||
|
||||
2010-10-15 Robin Getz <robin.getz@analog.com>
|
||||
|
||||
* gas/bfin/16bit_illegals.s, gas/bfin/16bit_illegals.d,
|
||||
|
|
|
@ -25,6 +25,9 @@ if [istarget bfin*-*-*] {
|
|||
run_dump_test "loop"
|
||||
run_dump_test "loop2"
|
||||
run_dump_test "loop3"
|
||||
run_dump_test "loop_label"
|
||||
run_dump_test "loop_label2"
|
||||
run_dump_test "loop_temps"
|
||||
run_dump_test "misc"
|
||||
run_dump_test "move"
|
||||
run_dump_test "move2"
|
||||
|
|
14
gas/testsuite/gas/bfin/loop_label.d
Normal file
14
gas/testsuite/gas/bfin/loop_label.d
Normal file
|
@ -0,0 +1,14 @@
|
|||
#objdump: -d
|
||||
#name: loop_label
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
00000000 <.text>:
|
||||
0: 08 4f R0 <<= 0x1;
|
||||
2: 78 68 P0 = 0xf \(X\);.*
|
||||
4: 48 42 DIVS \(R0, R1\);
|
||||
6: a2 e0 02 00 LSETUP\(0x0xa, 0x0xa\) LC0 = P0;
|
||||
a: 08 42 DIVQ \(R0, R1\);
|
||||
c: 80 42 R0 = R0.L \(X\);
|
||||
...
|
8
gas/testsuite/gas/bfin/loop_label.s
Normal file
8
gas/testsuite/gas/bfin/loop_label.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
r0 <<= 1;
|
||||
p0 = 15;
|
||||
divs (r0, r1);
|
||||
loop 1f lc0=p0;
|
||||
loop_begin 1;
|
||||
divq (r0, r1);
|
||||
loop_end 1;
|
||||
r0 = r0.l (x);
|
14
gas/testsuite/gas/bfin/loop_label2.d
Normal file
14
gas/testsuite/gas/bfin/loop_label2.d
Normal file
|
@ -0,0 +1,14 @@
|
|||
#objdump: -d
|
||||
#name: loop_label2
|
||||
.*: +file format .*
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
00000000 <.text>:
|
||||
0: 08 4f R0 <<= 0x1;
|
||||
2: 78 68 P0 = 0xf \(X\);.*
|
||||
4: 48 42 DIVS \(R0, R1\);
|
||||
6: a2 e0 02 00 LSETUP\(0x0xa, 0x0xa\) LC0 = P0;
|
||||
a: 08 42 DIVQ \(R0, R1\);
|
||||
c: 80 42 R0 = R0.L \(X\);
|
||||
...
|
8
gas/testsuite/gas/bfin/loop_label2.s
Normal file
8
gas/testsuite/gas/bfin/loop_label2.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
r0 <<= 1;
|
||||
p0 = 15;
|
||||
divs (r0, r1);
|
||||
loop .Lfoo lc0=p0;
|
||||
loop_begin .Lfoo;
|
||||
divq (r0, r1);
|
||||
loop_end .Lfoo;
|
||||
r0 = r0.l (x);
|
10
gas/testsuite/gas/bfin/loop_temps.d
Normal file
10
gas/testsuite/gas/bfin/loop_temps.d
Normal file
|
@ -0,0 +1,10 @@
|
|||
#readelf:-s
|
||||
#name: loop_temps
|
||||
|
||||
Symbol table '.symtab' contains 5 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00000000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00000000 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00000000 0 SECTION LOCAL DEFAULT 3
|
||||
4: 00000000 726 FUNC GLOBAL DEFAULT 1 _filter_mem16
|
312
gas/testsuite/gas/bfin/loop_temps.s
Normal file
312
gas/testsuite/gas/bfin/loop_temps.s
Normal file
|
@ -0,0 +1,312 @@
|
|||
.align 4
|
||||
.global _filter_mem16;
|
||||
.type _filter_mem16, STT_FUNC;
|
||||
_filter_mem16:
|
||||
[--sp] = ( r7:7 );
|
||||
|
||||
[--SP] = R4;
|
||||
[--SP] = R5;
|
||||
[--SP] = P3;
|
||||
[--SP] = P4;
|
||||
LINK 68;
|
||||
[FP+28] = R0;
|
||||
[FP+32] = R1;
|
||||
[FP+36] = R2;
|
||||
[FP+-68] = SP;
|
||||
R0 = SP;
|
||||
[FP+-24] = R0;
|
||||
R0 = [FP+44];
|
||||
R3 = R0;
|
||||
R3 += 1;
|
||||
R2 = R3;
|
||||
R0 = R2;
|
||||
R1 = 0 (X);
|
||||
R2 = -1 (X);
|
||||
R0 = R0 & R2;
|
||||
R2 = 15 (X);
|
||||
R1 = R1 & R2;
|
||||
R2 = R0 >> 27;
|
||||
R7 = R1 << 5;
|
||||
[FP+-60] = R7;
|
||||
R7 = [FP+-60];
|
||||
R7 = R2 | R7;
|
||||
[FP+-60] = R7;
|
||||
R2 = R0 << 5;
|
||||
[FP+-64] = R2;
|
||||
R0 = [FP+-64];
|
||||
R1 = [FP+-60];
|
||||
[FP+-64] = R0;
|
||||
[FP+-60] = R1;
|
||||
R0 = -1 (X);
|
||||
R1 = [FP+-64];
|
||||
R1 = R1 & R0;
|
||||
[FP+-64] = R1;
|
||||
R0 = 15 (X);
|
||||
R2 = [FP+-60];
|
||||
R2 = R2 & R0;
|
||||
R2 = R3;
|
||||
R0 = R2;
|
||||
R1 = 0 (X);
|
||||
R2 = -1 (X);
|
||||
R0 = R0 & R2;
|
||||
R2 = 15 (X);
|
||||
R1 = R1 & R2;
|
||||
R2 = R0 >> 27;
|
||||
R7 = R1 << 5;
|
||||
[FP+-52] = R7;
|
||||
R7 = [FP+-52];
|
||||
R7 = R2 | R7;
|
||||
[FP+-52] = R7;
|
||||
R2 = R0 << 5;
|
||||
[FP+-56] = R2;
|
||||
R0 = [FP+-56];
|
||||
R1 = [FP+-52];
|
||||
[FP+-56] = R0;
|
||||
[FP+-52] = R1;
|
||||
R0 = -1 (X);
|
||||
R1 = [FP+-56];
|
||||
R1 = R1 & R0;
|
||||
[FP+-56] = R1;
|
||||
R0 = 15 (X);
|
||||
R2 = [FP+-52];
|
||||
R2 = R2 & R0;
|
||||
R0 = R3;
|
||||
R0 <<= 2;
|
||||
R0 += 3;
|
||||
R0 += 3;
|
||||
R0 >>= 2;
|
||||
P1 = R0;
|
||||
P2 = P1 << 2;
|
||||
SP -= P2;
|
||||
[FP+-48] = SP;
|
||||
R0 = [FP+-48];
|
||||
R0 += 3;
|
||||
R0 >>= 2;
|
||||
R0 <<= 2;
|
||||
[FP+-48] = R0;
|
||||
R0 = [FP+-48];
|
||||
[FP+-12] = R0;
|
||||
R0 = [FP+48];
|
||||
R0 += 1;
|
||||
R3 = R0 << 1;
|
||||
R2 = R3;
|
||||
R0 = R2;
|
||||
R1 = 0 (X);
|
||||
R2 = -1 (X);
|
||||
R0 = R0 & R2;
|
||||
R2 = 15 (X);
|
||||
R1 = R1 & R2;
|
||||
R2 = R0 >> 27;
|
||||
R7 = R1 << 5;
|
||||
[FP+-40] = R7;
|
||||
R7 = [FP+-40];
|
||||
R7 = R2 | R7;
|
||||
[FP+-40] = R7;
|
||||
R2 = R0 << 5;
|
||||
[FP+-44] = R2;
|
||||
R0 = [FP+-44];
|
||||
R1 = [FP+-40];
|
||||
[FP+-44] = R0;
|
||||
[FP+-40] = R1;
|
||||
R0 = -1 (X);
|
||||
R1 = [FP+-44];
|
||||
R1 = R1 & R0;
|
||||
[FP+-44] = R1;
|
||||
R0 = 15 (X);
|
||||
R2 = [FP+-40];
|
||||
R2 = R2 & R0;
|
||||
R2 = R3;
|
||||
R0 = R2;
|
||||
R1 = 0 (X);
|
||||
R2 = -1 (X);
|
||||
R0 = R0 & R2;
|
||||
R2 = 15 (X);
|
||||
R1 = R1 & R2;
|
||||
R2 = R0 >> 27;
|
||||
R7 = R1 << 5;
|
||||
[FP+-32] = R7;
|
||||
R7 = [FP+-32];
|
||||
R7 = R2 | R7;
|
||||
[FP+-32] = R7;
|
||||
R2 = R0 << 5;
|
||||
[FP+-36] = R2;
|
||||
R0 = [FP+-36];
|
||||
R1 = [FP+-32];
|
||||
[FP+-36] = R0;
|
||||
[FP+-32] = R1;
|
||||
R0 = -1 (X);
|
||||
R1 = [FP+-36];
|
||||
R1 = R1 & R0;
|
||||
[FP+-36] = R1;
|
||||
R0 = 15 (X);
|
||||
R2 = [FP+-32];
|
||||
R2 = R2 & R0;
|
||||
R0 = R3;
|
||||
R0 <<= 2;
|
||||
R0 += 3;
|
||||
R0 += 3;
|
||||
R0 >>= 2;
|
||||
P1 = R0;
|
||||
P2 = P1 << 2;
|
||||
SP -= P2;
|
||||
[FP+-28] = SP;
|
||||
R0 = [FP+-28];
|
||||
R0 += 3;
|
||||
R0 >>= 2;
|
||||
R0 <<= 2;
|
||||
[FP+-28] = R0;
|
||||
R0 = [FP+-28];
|
||||
[FP+-8] = R0;
|
||||
R0 = [FP+-12];
|
||||
R0 += 4;
|
||||
[FP+-16] = R0;
|
||||
R0 = [FP+-8];
|
||||
[FP+-20] = R0;
|
||||
R0 = 0 (X);
|
||||
[FP+-4] = R0;
|
||||
jump.s .L6;
|
||||
.L7:
|
||||
R1 = [FP+-20];
|
||||
R0 = [FP+-4];
|
||||
R0 <<= 2;
|
||||
R1 = R1 + R0;
|
||||
P1 = R1;
|
||||
R0 = [FP+-4];
|
||||
R1 = R0 << 1;
|
||||
R0 = [FP+32];
|
||||
R0 = R0 + R1;
|
||||
P2 = R0;
|
||||
R0 = W [P2] (Z);
|
||||
W [P1] = R0;
|
||||
R1 = [FP+-20];
|
||||
R0 = [FP+-4];
|
||||
R0 <<= 1;
|
||||
R0 += 1;
|
||||
R0 <<= 1;
|
||||
R1 = R1 + R0;
|
||||
P1 = R1;
|
||||
R0 = [FP+-4];
|
||||
R1 = R0 << 1;
|
||||
R0 = [FP+36];
|
||||
R0 = R0 + R1;
|
||||
P2 = R0;
|
||||
R0 = W [P2] (Z);
|
||||
W [P1] = R0;
|
||||
R0 = [FP+-4];
|
||||
R0 += 1;
|
||||
[FP+-4] = R0;
|
||||
.L6:
|
||||
R1 = [FP+48];
|
||||
R0 = [FP+-4];
|
||||
cc =R0<R1;
|
||||
if cc jump .L7;
|
||||
R0 = [FP+48];
|
||||
P0 = [FP+-20];
|
||||
I0 = P0;
|
||||
B0 = P0;
|
||||
L0 = 0;
|
||||
P2 = [FP+-16];
|
||||
I2 = P2;
|
||||
L2 = 0;
|
||||
P4 = [FP+52];
|
||||
P0 = [FP+28];
|
||||
P1 = [FP+40];
|
||||
R1 = [P4++];
|
||||
R1 <<= 3;
|
||||
R1.L = R1 (RND);
|
||||
R2 = W[P0++];
|
||||
R1.L = R1.L + R2.L;
|
||||
W[P1++] = R1;
|
||||
R2 = PACK(R1.L, R2.L);
|
||||
[P2] = R2;
|
||||
R0 += -1;
|
||||
R3 = 0;
|
||||
LC0 = R0;
|
||||
LOOP filter_start256 LC0;
|
||||
LOOP_BEGIN filter_start256;
|
||||
R3 += 1;
|
||||
LC1 = R3;
|
||||
R1 = [P4++];
|
||||
A1 = R1;
|
||||
A0 = 0;
|
||||
I0 = B0;
|
||||
I2 = P2;
|
||||
P2 += 4;
|
||||
R4 = [I0++] || R5 = [I2--];
|
||||
LOOP filter_start_inner256 LC1;
|
||||
LOOP_BEGIN filter_start_inner256;
|
||||
A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];
|
||||
LOOP_END filter_start_inner256;
|
||||
A0 += A1;
|
||||
R4 = A0;
|
||||
R4 <<= 3;
|
||||
R4.L = R4 (RND);
|
||||
R2 = W[P0++];
|
||||
R4.L = R4.L + R2.L;
|
||||
W[P1++] = R4;
|
||||
R2 = PACK(R4.L, R2.L);
|
||||
[P2] = R2;
|
||||
LOOP_END filter_start256;
|
||||
R0 = [FP+48];
|
||||
R0 <<= 1;
|
||||
I0 = B0;
|
||||
R0 <<= 1;
|
||||
L0 = R0;
|
||||
R0 = [FP+48];
|
||||
R2 = [FP+44];
|
||||
R2 = R2 - R0;
|
||||
R4 = [I0++];
|
||||
LC0 = R2;
|
||||
P3 = R0;
|
||||
R0 <<= 2;
|
||||
R0 += 8;
|
||||
I2 = P2;
|
||||
M0 = R0;
|
||||
A1 = A0 = 0;
|
||||
R5 = [I2--];
|
||||
LOOP filter_mid256 LC0;
|
||||
LOOP_BEGIN filter_mid256;
|
||||
LOOP filter_mid_inner256 LC1=P3;
|
||||
LOOP_BEGIN filter_mid_inner256;
|
||||
A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];
|
||||
LOOP_END filter_mid_inner256;
|
||||
R0 = (A0 += A1) || I2 += M0;
|
||||
R0 = R0 << 3 || R5 = W[P0++];
|
||||
R0.L = R0 (RND);
|
||||
R0.L = R0.L + R5.L;
|
||||
R5 = PACK(R0.L, R5.L) || W[P1++] = R0;
|
||||
A1 = A0 = 0 || [I2--] = R5
|
||||
LOOP_END filter_mid256;
|
||||
I2 += 4;
|
||||
P2 = I2;
|
||||
P4 = [FP+52];
|
||||
R0 = [FP+48];
|
||||
LC0 = R0;
|
||||
P0 = B0;
|
||||
A1 = A0 = 0;
|
||||
LOOP mem_update256 LC0;
|
||||
LOOP_BEGIN mem_update256;
|
||||
I2 = P2;
|
||||
I0 = P0;
|
||||
P0 += 4;
|
||||
R0 = LC0;
|
||||
LC1 = R0;
|
||||
R5 = [I2--] || R4 = [I0++];
|
||||
LOOP mem_accum256 LC1;
|
||||
LOOP_BEGIN mem_accum256;
|
||||
A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];
|
||||
LOOP_END mem_accum256;
|
||||
R0 = (A0 += A1);
|
||||
A1 = A0 = 0 || [P4++] = R0;
|
||||
LOOP_END mem_update256;
|
||||
L0 = 0;
|
||||
SP = [FP+-24];
|
||||
SP = [FP+-68];
|
||||
UNLINK;
|
||||
P4 = [SP++];
|
||||
P3 = [SP++];
|
||||
R5 = [SP++];
|
||||
R4 = [SP++];
|
||||
( r7:7 ) = [sp++];
|
||||
rts;
|
||||
.size _filter_mem16, .-_filter_mem16
|
Loading…
Reference in a new issue