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: 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


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