This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: PATCH: testsuite/37074: gcc.dg/torture/stackalign/builtin-apply-4.c failed with SSE2
- From: "Ye, Joey" <joey dot ye at intel dot com>
- To: "Uros Bizjak" <ubizjak at gmail dot com>
- Cc: "Andrew Pinski" <pinskia at gmail dot com>, "H.J. Lu" <hjl dot tools at gmail dot com>, <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 12 Aug 2008 14:15:54 +0800
- Subject: 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