26 #define DEBUG_TYPE "systemztti"
82 case Instruction::GetElementPtr:
99 case Instruction::ICmp:
110 case Instruction::Sub:
120 case Instruction::Mul:
156 case Instruction::Shl:
157 case Instruction::LShr:
158 case Instruction::AShr:
163 case Instruction::UDiv:
164 case Instruction::SDiv:
165 case Instruction::URem:
166 case Instruction::SRem:
167 case Instruction::Trunc:
168 case Instruction::ZExt:
169 case Instruction::SExt:
170 case Instruction::IntToPtr:
171 case Instruction::PtrToInt:
172 case Instruction::BitCast:
173 case Instruction::PHI:
200 case Intrinsic::sadd_with_overflow:
201 case Intrinsic::uadd_with_overflow:
202 case Intrinsic::ssub_with_overflow:
203 case Intrinsic::usub_with_overflow:
212 case Intrinsic::smul_with_overflow:
213 case Intrinsic::umul_with_overflow:
220 case Intrinsic::experimental_stackmap:
224 case Intrinsic::experimental_patchpoint_void:
225 case Intrinsic::experimental_patchpoint_i64:
245 bool HasCall =
false;
246 unsigned NumStores = 0;
247 for (
auto &BB : L->
blocks())
248 for (
auto &
I : *BB) {
249 if (isa<CallInst>(&
I) || isa<InvokeInst>(&
I)) {
254 if (
F->getIntrinsicID() == Intrinsic::memcpy ||
255 F->getIntrinsicID() == Intrinsic::memset)
261 if (isa<StoreInst>(&
I)) {
263 Type *MemAccessTy =
I.getOperand(0)->getType();
273 unsigned const Max = (NumStores ? (12 / NumStores) : UINT_MAX);
constexpr bool isUInt< 32 >(uint64_t x)
uint64_t getZExtValue() const
Get zero extended value.
Cost tables and simple lookup functions.
constexpr bool isInt< 16 >(int64_t x)
const HexagonInstrInfo * TII
TTI::PopcntSupportKind getPopcntSupport(unsigned TyWidth)
unsigned getNumberOfRegisters(bool Vector)
bool isFloatingPointTy() const
Return true if this is one of the six floating-point types.
void getUnrollingPreferences(Loop *L, TTI::UnrollingPreferences &UP)
iterator_range< block_iterator > blocks() const
constexpr bool isPowerOf2_32(uint32_t Value)
isPowerOf2_32 - This function returns true if the argument is a power of two > 0. ...
The instances of the Type class are immutable: once they are created, they are never changed...
int64_t getSExtValue() const
Get sign extended value.
APInt Or(const APInt &LHS, const APInt &RHS)
Bitwise OR function for APInt.
APInt Xor(const APInt &LHS, const APInt &RHS)
Bitwise XOR function for APInt.
unsigned getBitWidth() const
Return the number of bits in the APInt.
static const unsigned End
This file provides a helper that implements much of the TTI interface in terms of the target-independ...
bool isRxSBGMask(uint64_t Mask, unsigned BitSize, unsigned &Start, unsigned &End) const
const SystemZInstrInfo * getInstrInfo() const override
bool hasPopulationCount() const
constexpr bool isInt< 32 >(int64_t x)
unsigned getRegisterBitWidth(bool Vector)
int getIntImmCost(const APInt &Imm, Type *Ty)
Class for arbitrary precision integers.
bool isIntegerTy() const
True if this is an instance of IntegerType.
APInt And(const APInt &LHS, const APInt &RHS)
Bitwise AND function for APInt.
Represents a single loop in the control flow graph.
ImmutableCallSite - establish a view to a call site for examination.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
FunTy * getCalledFunction() const
getCalledFunction - Return the function being called if this is a direct call, otherwise return null ...
unsigned getPrimitiveSizeInBits() const LLVM_READONLY
Return the basic size of this type if it is a primitive type.
uint64_t getTypeSizeInBits(Type *Ty) const
Size examples:
This file describes how to lower LLVM code to machine code.