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

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #1)
> 16-bit and 32-bit vector pass and return are not specified in i386 psABI.
> 64-bit vector is specified, not really usable.  Any suggestions?

With -mno-sse, clang creates:

foo:
        movzwl  16(%esp), %edx
        movzwl  12(%esp), %eax
        addw    4(%esp), %ax
        addw    8(%esp), %dx
        retl

So, it is incompatible with itself for -msse/-mno-sse differences. The ABI
should be ISA agnostic, so using integer ABI as implemented by gcc is IMO the
way to go.

Reply via email to