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/13423] New: sh-elf: V4SFmode passed in integer registers


When this sample is compiled with -O2 -m4 -S:

typedef int v4sf __attribute__ ((mode(V4SF)));
v4sf test2 (v4sf a)

{
        return a;
}

GCC assumes the floating-point vectors arrive in integer registers, which is
very silly. It should pass/expect them in floating-point registers.

test2:
        mov.l   r8,@-r15
        mov     r4,r0
        mov.l   r9,@-r15
        mov     r5,r1
        mov.l   r10,@-r15
        mov     r6,r2
        mov.l   r14,@-r15
        sts.l   pr,@-r15
        add     #-16,r15
        mov     r15,r14
        mov.l   r7,@(12,r14)
        mov.l   @(12,r14),r10
        mov.l   r4,@r14
        mov.l   r5,@(4,r14)
        mov     r10,r3
        mov.l   r6,@(8,r14)
        add     #16,r14
        mov     r14,r15
        lds.l   @r15+,pr
        mov.l   @r15+,r14
        mov.l   @r15+,r10
        mov.l   @r15+,r9
        rts
        mov.l   @r15+,r8

-- 
           Summary: sh-elf: V4SFmode passed in integer registers
           Product: gcc
           Version: 3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tm at kloo dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i386-linux
  GCC host triplet: i386-linux
GCC target triplet: sh-elf


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13423


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