This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/21833] New: simd tests fail


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]