Qing Zhao <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. Thanks, Richard