This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
x86 optimization notes
- From: "Jan Beulich" <JBeulich at suse dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: <binutils at sourceware dot org>
- Date: Thu, 08 Mar 2018 01:23:54 -0700
- Subject: x86 optimization notes
- Authentication-results: sourceware.org; auth=none
H.J.,
having taken another look at the optimizations you've added
recently, I have a couple of remarks to make:
1) I don't think optimizations should raise the ISA requirements.
The conversions you do from AVX512F to AVX512VL insns are in
direct contradiction to the Disp32 -> Disp8 conversion I had
suggested a couple of weeks ago, and that you objected to even if
done very carefully (I still intend to produce a patch to that effect,
to see whether you would want to reconsider). Since changing the
vector length doesn't alter the encoding length, and doesn't - afaict -
provide any other benefits, I don't think those conversions are
useful at all. All that is useful imo are conversions from EVEX to VEX.
2) Considering what the ORM states, I wonder whether it wouldn't
be beneficial to uniformly convert all zeroing insns to VXORP*/VPXOR*.
3) While merge masking indeed precludes the optimization, zeroing
masking doesn't - after all it doesn't matter for what reason the
respective part of the destination gets zeroed.
4) I don't think {evex} prefixes should be ignored, i.e. I think the
conversion to VEX encoding should be suppressed if that prefix
was given.
5) Along with "XOR %r64,%r64", shouldn't "CLR %r64" be
converted to its 32-bit form as well?
Jan