This is the mail archive of the gcc-patches@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]

RE: PATCH: testsuite/37074: gcc.dg/torture/stackalign/builtin-apply-4.c failed with SSE2


Uros wrote:
> These are MMX vector arguments, V8QImode, V4HImode, V2SImode, V1DImode
> and V2SFmode. Please note, that we also have MMX function return
> register, MMX vector values are returned in %mm0 register.
From i386 sysv ABI:
---
%st(0) Floating-point return values appear on the top of the
floating-point
register stack; there is no difference in the representation
of single- or double-precision values in floating-point registers.
If the function does not return a floating-point value, then this
register ***must be empty***. This register ***must be empty*** before G
entry to a function.
%st(1) through %st(7)
Floating-point scratch registers have no specified role in the stan-dard
calling sequence. These registers ***must be empty*** before
entry and upon exit from a function.
---

MMX will mess up FPU tag word. I feel that valid value in mm registers
at entry and exit is violating above rules.

Thanks - Joey


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