[llvm] r338273 - Recommit r338204 "[X86] Correct the immediate cost for 'add/sub i64 %x, 0x80000000'."
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 30 10:29:57 PDT 2018
Author: ctopper
Date: Mon Jul 30 10:29:57 2018
New Revision: 338273
URL: http://llvm.org/viewvc/llvm-project?rev=338273&view=rev
Log:
Recommit r338204 "[X86] Correct the immediate cost for 'add/sub i64 %x, 0x80000000'."
This checks in a more direct way without triggering a UBSAN error.
Modified:
llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp
Modified: llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp?rev=338273&r1=338272&r2=338273&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp Mon Jul 30 10:29:57 2018
@@ -2332,9 +2332,15 @@ int X86TTIImpl::getIntImmCost(unsigned O
// immediates here as the normal path expects bit 31 to be sign extended.
if (Idx == 1 && Imm.getBitWidth() == 64 && isUInt<32>(Imm.getZExtValue()))
return TTI::TCC_Free;
- LLVM_FALLTHROUGH;
+ ImmIdx = 1;
+ break;
case Instruction::Add:
case Instruction::Sub:
+ // For add/sub, we can use the opposite instruction for INT32_MIN.
+ if (Idx == 1 && Imm.getBitWidth() == 64 && Imm.getZExtValue() == 0x80000000)
+ return TTI::TCC_Free;
+ ImmIdx = 1;
+ break;
case Instruction::Mul:
case Instruction::UDiv:
case Instruction::SDiv:
More information about the llvm-commits
mailing list