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

H.J. Lu hjl.tools@gmail.com
Tue Aug 12 14:38:00 GMT 2008


On Mon, Aug 11, 2008 at 11:37 PM, Ye, Joey <joey.ye@intel.com> wrote:
> Joey Wrote:
>> 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.
> Em, it won't violate the rules as long as EMMS is executed before
> function entry and exit, right?
>

Can you give it a try?


-- 
H.J.



More information about the Gcc-patches mailing list