> On Sep 23, 2020, at 9:22 AM, Richard Sandiford <richard.sandif...@arm.com>
> wrote:
>
> Qing Zhao <qing.z...@oracle.com <mailto:qing.z...@oracle.com>> writes:
>>> On Sep 23, 2020, at 5:43 AM, Richard Sandiford <richard.sandif...@arm.com>
>>> wrote:
>>>
>>> Qing Zhao <qing.z...@oracle.com> writes:
>>>>> On Sep 22, 2020, at 1:35 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>>>> On Tue, Sep 22, 2020 at 11:25 AM Qing Zhao <qing.z...@oracle.com
>>>>> <mailto:qing.z...@oracle.com>> wrote:
>>>>>>> On Sep 22, 2020, at 11:31 AM, Richard Sandiford
>>>>>>> <richard.sandif...@arm.com> wrote:
>>>>>>> Taking each in turn: what is the reason for not clearing mask registers?
>>>>>>> And what is the reason for not clearing mm0-7? In each case, is it a
>>>>>>> performance or a correctness issue?
>>>>>>
>>>>>> Could you please provide more information on the above questions? (Why
>>>>>> we exclude mask registers and mm0-7 registers from ALL on x86?)
>>>>>>
>>>>>
>>>>> No particular reason. You can add them.
>>>>
>>>> Okay, thanks.
>>>>
>>>> Then I guess that the reason we didn’t zero mask registers and mm0-7
>>>> registers on x86 is mainly for the performance consideration.
>>>> There might not be too much benefit for mitigating ROP attack if we zero
>>>> these additional registers, but we will got much more performance overhead.
>>>>
>>>> What’s you opinion, Richard?
>>>
>>> Dropping them is fine with me FWIW. That seems like a natural use
>>> for the new hook: drop zeroing that isn't actively wrong, but isn't
>>> likely to be useful either.
>>
>> Okay, I will add a new hook for this purpose.
>
> It doesn't need to be a new hook. The one I mentioned before
> would enough:
>
>> The kind of target hook interface I was thinking of was:
>>
>> HARD_REG_SET TARGET_EMIT_MOVE_ZEROS (const HARD_REG_SET ®s)
>>
>> which:
>>
>> - emits zeroing instructions for some target-specific subset of REGS
>>
>> - returns the set of registers that were actually cleared
>
> Not clearing mm0-7 and k0-7 would come under the first bullet point.
This makes sense.
However, how about the second bullet point:
- returns the set of registers that were actually cleared
Should we delete mm0-7 and k0-7 from the return set even though they are not
zeroed by the target?
Qing
>
> Thanks,
> Richard