diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-07-12 17:52:17 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-07-12 17:52:17 +0000 |
| commit | 98f931639bfcde822d6b680a77c91baebe3cfcf4 (patch) | |
| tree | a820017c9fda0b2e00bd937fba9e9f3bc5417f87 | |
| parent | ce8c35a33dfbfddba8af78b778c6edd39cdb1031 (diff) | |
| download | bcm5719-llvm-98f931639bfcde822d6b680a77c91baebe3cfcf4.tar.gz bcm5719-llvm-98f931639bfcde822d6b680a77c91baebe3cfcf4.zip | |
[X86] Add NEG to isUseDefConvertible.
We can use the C flag from NEG to detect that the input was zero.
Really we could probably use the Z flag too. But C matches what
we'd do for usubo 0, X.
Haven't found a test case for this due to the usubo formation
in CGP. But I verified if I comment out the CGP code this
transformation catches some of the same cases.
llvm-svn: 365929
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index 1df41b9e48b..62ed00b1235 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -3374,6 +3374,11 @@ inline static bool isDefConvertible(const MachineInstr &MI, bool &NoSignFlag) { static X86::CondCode isUseDefConvertible(const MachineInstr &MI) { switch (MI.getOpcode()) { default: return X86::COND_INVALID; + case X86::NEG8r: + case X86::NEG16r: + case X86::NEG32r: + case X86::NEG64r: + return X86::COND_AE; case X86::LZCNT16rr: case X86::LZCNT32rr: case X86::LZCNT64rr: |

