This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: PATCH: Update classification of aggregates with __m256 ([AVX]: Update x86-64 psABI for aggregates with __m256)
- From: "Jagasia, Harsha" <harsha dot jagasia at amd dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: <gcc-patches at gcc dot gnu dot org>, "Kreitzer, David L" <david dot l dot kreitzer at intel dot com>, "Girkar, Milind" <milind dot girkar at intel dot com>
- Date: Wed, 11 Feb 2009 15:21:38 -0600
- Subject: RE: PATCH: Update classification of aggregates with __m256 ([AVX]: Update x86-64 psABI for aggregates with __m256)
>>>Let me get this clear. The only change you want is to state
>>>
>>>---
>>>\item Then a post merger cleanup is done:
>>> \begin{enumerate}
>>> \item If one of the classes is MEMORY, the whole argument is passed
>> in memory.
>>> \item If the size of the aggregate exceeds two \eightbytes and the
>> first
>>> \eightbyte isn't SSE or any other \eightbyte isn't SSEUP, the
whole
>>> argument is passed in memory.
>>> \item If SSEUP is not preceded by SSE or SSEUP and the size of the
>> aggregate
>>> does not exceed four \eightbytes, it is converted to SSE.
>>> \end{enumerate}
>>>---
>>>
>>>instead of
>>>
>>>---
>>>\item Then a post merger cleanup is done:
>>> \begin{enumerate}
>>> \item If one of the classes is MEMORY, the whole argument is passed
>> in memory.
>>> \item If the size of the aggregate exceeds two \eightbytes and the
>> first
>>> \eightbyte isn't SSE or any other \eightbyte isn't SSEUP, the
whole
>>> argument is passed in memory.
>>> \item If SSEUP is not preceded by SSE or SSEUP, it is converted to
>> SSE.
>>> \end{enumerate}
>>>---
>>>
>>>I think the size limitation here is redundant. If it isn't clear to
>> everyone, we
>>>can add a footnote here.
>>
>>
>> No. I am suggesting the below:
>>
>> "If the size of an object is larger than four eightbytes, or it
contains
>> unaligned fields, it has class MEMORY. The post merger clean up
>> described later ensures that, for the processors that do not support
the
>> __m256 type, if the size of an object is larger than two eightbytes
and
>> the first eightbyte is not SSE or any other eightbyte is not SSEUP,
it
>> still has class MEMORY. This in turn ensures that for processors that
do
>> support the __m256 type, if the size of an object is four eightbytes
and
>> the first eightbyte is SSE and all other eightbytes are SSEUP, it can
be
>> passed in a register."
>>
>> instead of
>>
>> "If the size of an object is larger than four \eightbytes, or it
>> contains unaligned fields, it has class MEMORY"
>>
>
>Here is the updated psABI change. I used a footnote to explain this.
This is fine.
Thanks,
Harsha