This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
loading of zeros into {x,y,z}mm registers
- From: "Jan Beulich" <JBeulich at suse dot com>
- To: "Kirill Yukhin" <kirill dot yukhin at gmail dot com>
- Cc: <gcc at gcc dot gnu dot org>
- Date: Wed, 29 Nov 2017 08:59:53 -0700
- Subject: loading of zeros into {x,y,z}mm registers
- Authentication-results: sourceware.org; auth=none
Kirill,
in an unrelated context I've stumbled across a change of yours
from Aug 2014 (revision 213847) where you "extend" the ways
of loading zeros into registers. I don't understand why this was
done, and the patch submission mail also doesn't give any reason.
My point is that simple VEX-encoded vxorps/vxorpd/vpxor with
128-bit register operands ought to be sufficient to zero any width
registers, due to the zeroing of the high parts the instructions do.
Hence by using EVEX encoded insns it looks like all you do is grow
the instruction length by one or two bytes (besides making the
source somewhat more complicated to follow). At the very least
the shorter variants should be used for -Os imo.
Thanks for any insight,
Jan