diff options
Diffstat (limited to 'lib/Target/SystemZ/SystemZTargetTransformInfo.cpp')
| -rw-r--r-- | lib/Target/SystemZ/SystemZTargetTransformInfo.cpp | 22 | 
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp b/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp index 506dc7427993..37c55c4e3889 100644 --- a/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp +++ b/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp @@ -17,10 +17,10 @@  #include "SystemZTargetTransformInfo.h"  #include "llvm/Analysis/TargetTransformInfo.h"  #include "llvm/CodeGen/BasicTTIImpl.h" +#include "llvm/CodeGen/CostTable.h" +#include "llvm/CodeGen/TargetLowering.h"  #include "llvm/IR/IntrinsicInst.h"  #include "llvm/Support/Debug.h" -#include "llvm/Target/CostTable.h" -#include "llvm/Target/TargetLowering.h"  using namespace llvm;  #define DEBUG_TYPE "systemztti" @@ -292,6 +292,19 @@ void SystemZTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,    UP.Force = true;  } + +bool SystemZTTIImpl::isLSRCostLess(TargetTransformInfo::LSRCost &C1, +                                   TargetTransformInfo::LSRCost &C2) { +  // SystemZ specific: check instruction count (first), and don't care about +  // ImmCost, since offsets are checked explicitly. +  return std::tie(C1.Insns, C1.NumRegs, C1.AddRecCost, +                  C1.NumIVMuls, C1.NumBaseAdds, +                  C1.ScaleCost, C1.SetupCost) < +    std::tie(C2.Insns, C2.NumRegs, C2.AddRecCost, +             C2.NumIVMuls, C2.NumBaseAdds, +             C2.ScaleCost, C2.SetupCost); +} +  unsigned SystemZTTIImpl::getNumberOfRegisters(bool Vector) {    if (!Vector)      // Discount the stack pointer.  Also leave out %r0, since it can't @@ -310,6 +323,11 @@ unsigned SystemZTTIImpl::getRegisterBitWidth(bool Vector) const {    return 0;  } +bool SystemZTTIImpl::hasDivRemOp(Type *DataType, bool IsSigned) { +  EVT VT = TLI->getValueType(DL, DataType); +  return (VT.isScalarInteger() && TLI->isTypeLegal(VT)); +} +  int SystemZTTIImpl::getArithmeticInstrCost(      unsigned Opcode, Type *Ty,        TTI::OperandValueKind Op1Info, TTI::OperandValueKind Op2Info,  | 
