diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2019-03-28 14:16:13 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2019-03-28 14:16:13 +0000 |
| commit | 5bbf6f0bd8966c32a62527d32501d984df1b800e (patch) | |
| tree | d159b9c6a4f0a52a878872205dd9262c62f1680a /llvm/lib/CodeGen/MachineVerifier.cpp | |
| parent | 699dc025a62589cfd8f2c9d2c64b4297f2dedb88 (diff) | |
| download | bcm5719-llvm-5bbf6f0bd8966c32a62527d32501d984df1b800e.tar.gz bcm5719-llvm-5bbf6f0bd8966c32a62527d32501d984df1b800e.zip | |
[x86] avoid cmov in movmsk reduction
This is probably the least important of our movmsk problems, but I'm starting
at the bottom to reduce distractions.
We were creating a select_cc which bypasses the select and bitmask codegen
optimizations that we have now. If we produce a compare+negate instead, we
allow things like neg/sbb carry bit hacks, and in all cases we avoid a cmov.
There's no partial register update danger in these sequences because we always
produce the zero-register xor ahead of the 'set' if needed.
There seems to be a missing fold for sext of a bool bit here:
negl %ecx
movslq %ecx, %rax
...but that's an independent transform.
Differential Revision: https://reviews.llvm.org/D59818
llvm-svn: 357172
Diffstat (limited to 'llvm/lib/CodeGen/MachineVerifier.cpp')
0 files changed, 0 insertions, 0 deletions

