diff options
author | Craig Topper <craig.topper@intel.com> | 2018-10-25 07:00:09 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-10-25 07:00:09 +0000 |
commit | 7ae43cad6525cb3f2be2046cfd780ae65cb9a09a (patch) | |
tree | 88b0205f66ab97e6f72e804b5ae848a7aa4d9ad9 | |
parent | 9ecdb5a711bda1f59080d331c158328031f87220 (diff) | |
download | bcm5719-llvm-7ae43cad6525cb3f2be2046cfd780ae65cb9a09a.tar.gz bcm5719-llvm-7ae43cad6525cb3f2be2046cfd780ae65cb9a09a.zip |
[X86] Don't use the OriginalDemandedBits to calculate the DemandedMask for PMULUDQ/PMULDQ inputs.
Multiply a is complex operation so just because some bit of the output isn't used doesn't mean that bit of the input isn't used.
We might able to bound it, but it will require some more thought.
llvm-svn: 345241
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index d86f9d5a220..f9f8fb4a419 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -31881,7 +31881,8 @@ bool X86TargetLowering::SimplifyDemandedBitsForTargetNode( KnownBits KnownOp; SDValue LHS = Op.getOperand(0); SDValue RHS = Op.getOperand(1); - APInt DemandedMask = OriginalDemandedBits & APInt::getLowBitsSet(64, 32); + // FIXME: Can we bound this better? + APInt DemandedMask = APInt::getLowBitsSet(64, 32); if (SimplifyDemandedBits(LHS, DemandedMask, KnownOp, TLO, Depth + 1)) return true; if (SimplifyDemandedBits(RHS, DemandedMask, KnownOp, TLO, Depth + 1)) |