This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/21833] New: simd tests fail
- From: "tg42 at gmx dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 May 2005 22:31:36 -0000
- Subject: [Bug c/21833] New: simd tests fail
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Note: AFAIKS this is NOT a problem reated to stack alignment (as in
10395) but to missing instructions. This one IS similar to 11802 (if
not a duplicate), but if it is, that one was erroneously marked as
duplicate of 10395.
Compiling simd-1.c with -O0 -march=pentium3 and running the resulting
executable yields abort() being called and a core being thrown.
Analysing the core, the following suggests the assignment to res in
L35 being incomplete (what causes the subsequent verify() to fail):
(gdb) p k
$2 = {160, 113, 170, 230}
(gdb) p res
$3 = {v = {160, 113, 0, 0}, i = {160, 113, 0, 0}}
(gdb) x/20d &i
0x8049ae0 <i>: 150 100 150 200
0x8049af0 <j>: 10 13 20 30
0x8049b00 <completed.1>: 0 0 0 0
0x8049b10 <k>: 160 113 170 230
0x8049b20 <res>: 160 113 0 0
The following assembler code is generated:
.loc 1 34 0
movq i, %mm0
paddd j, %mm0
movq %mm0, k
movq i+8, %mm0
paddd j+8, %mm0
movq %mm0, k+8
.loc 1 35 0
movdqa k, %xmm0
movdqa %xmm0, res
.loc 1 37 0
gcc 3.3.6 generates the following code (which works):
.loc 1 34 0
movq i, %mm0
paddd j, %mm0
movq %mm0, k
movq i+8, %mm0
paddd j+8, %mm0
movq %mm0, k+8
.loc 1 35 0
movaps k, %xmm0
movaps %xmm0, res
I do not know the difference between these two instructions (movdqa
vs. movaps), but to me it seems, gcc 3.4.4 selects the wrong one.
--
Summary: simd tests fail
Product: gcc
Version: 3.4.4
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tg42 at gmx dot de
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21833