https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88955

--- Comment #3 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
Note, without the attribute gcc passes the union on an SSE register, so it
doesn't look like TImode on the union matters (otherwise it would be passed via
rdx:rax register pair):

typedef unsigned long u64x2 __attribute__ ((vector_size (16)));

typedef union
{
        u64x2   u64;
} v128;

v128 bar(v128 x);
v128 foo(v128 x)
{
    x.u64 *= -1;
    return bar(x);
}

foo:
        vpxor   %xmm1, %xmm1, %xmm1
        vpsubq  %xmm0, %xmm1, %xmm0
        jmp     bar

Reply via email to