17 #ifndef LLVM_IR_CONSTANTFOLDER_H 18 #define LLVM_IR_CONSTANTFOLDER_H 37 bool HasNUW =
false,
bool HasNSW =
false)
const {
46 bool HasNUW =
false,
bool HasNSW =
false)
const {
55 bool HasNUW =
false,
bool HasNSW =
false)
const {
64 bool isExact =
false)
const {
69 bool isExact =
false)
const {
90 bool HasNUW =
false,
bool HasNSW =
false)
const {
95 bool isExact =
false)
const {
100 bool isExact =
false)
const {
126 bool HasNUW =
false,
bool HasNSW =
false)
const {
182 Type *DestTy)
const {
191 Type *DestTy)
const {
196 bool isSigned)
const {
205 return CreateCast(Instruction::BitCast, C, DestTy);
209 return CreateCast(Instruction::IntToPtr, C, DestTy);
213 return CreateCast(Instruction::PtrToInt, C, DestTy);
277 #endif // LLVM_IR_CONSTANTFOLDER_H
Constant * CreateSDiv(Constant *LHS, Constant *RHS, bool isExact=false) const
static Constant * getFAdd(Constant *C1, Constant *C2)
Constant * CreateFNeg(Constant *C) const
static Constant * getPointerBitCastOrAddrSpaceCast(Constant *C, Type *Ty)
Create a BitCast or AddrSpaceCast for a pointer type depending on the address space.
This class represents lattice values for constants.
static Constant * getGetElementPtr(Type *Ty, Constant *C, ArrayRef< Constant *> IdxList, bool InBounds=false, Optional< unsigned > InRangeIndex=None, Type *OnlyIfReducedTy=nullptr)
Getelementptr form.
Constant * CreateLShr(Constant *LHS, Constant *RHS, bool isExact=false) const
Constant * CreateBitCast(Constant *C, Type *DestTy) const
Constant * CreateFCmp(CmpInst::Predicate P, Constant *LHS, Constant *RHS) const
Constant * CreateIntCast(Constant *C, Type *DestTy, bool isSigned) const
Constant * CreateShl(Constant *LHS, Constant *RHS, bool HasNUW=false, bool HasNSW=false) const
static Constant * getExtractElement(Constant *Vec, Constant *Idx, Type *OnlyIfReducedTy=nullptr)
Constant * CreateNot(Constant *C) const
Constant * CreateInBoundsGetElementPtr(Type *Ty, Constant *C, Constant *Idx) const
Constant * CreateICmp(CmpInst::Predicate P, Constant *LHS, Constant *RHS) const
Constant * CreatePtrToInt(Constant *C, Type *DestTy) const
static Constant * getCompare(unsigned short pred, Constant *C1, Constant *C2, bool OnlyIfReduced=false)
Return an ICmp or FCmp comparison operator constant expression.
static Constant * getSub(Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false)
Constant * CreateIntToPtr(Constant *C, Type *DestTy) const
Constant * CreateFRem(Constant *LHS, Constant *RHS) const
Constant * CreateSelect(Constant *C, Constant *True, Constant *False) const
static Constant * getInsertElement(Constant *Vec, Constant *Elt, Constant *Idx, Type *OnlyIfReducedTy=nullptr)
static Constant * getAdd(Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false)
static Constant * getFMul(Constant *C1, Constant *C2)
static Constant * getIntegerCast(Constant *C, Type *Ty, bool isSigned)
Create a ZExt, Bitcast or Trunc for integer -> integer casts.
Constant * CreateCast(Instruction::CastOps Op, Constant *C, Type *DestTy) const
Constant * CreateInBoundsGetElementPtr(Type *Ty, Constant *C, ArrayRef< Value *> IdxList) const
static Constant * getLShr(Constant *C1, Constant *C2, bool isExact=false)
Constant * CreatePointerBitCastOrAddrSpaceCast(Constant *C, Type *DestTy) const
static Constant * getFPCast(Constant *C, Type *Ty)
Create a FPExt, Bitcast or FPTrunc for fp -> fp casts.
static Constant * getAShr(Constant *C1, Constant *C2, bool isExact=false)
Constant * CreateSExtOrBitCast(Constant *C, Type *DestTy) const
static Constant * getSelect(Constant *C, Constant *V1, Constant *V2, Type *OnlyIfReducedTy=nullptr)
Select constant expr.
Constant * CreateExtractElement(Constant *Vec, Constant *Idx) const
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
ConstantFolder - Create constants with minimum, target independent, folding.
Constant * CreateGetElementPtr(Type *Ty, Constant *C, Constant *Idx) const
static Constant * getUDiv(Constant *C1, Constant *C2, bool isExact=false)
Constant * CreateFDiv(Constant *LHS, Constant *RHS) const
static Constant * getFDiv(Constant *C1, Constant *C2)
Constant * CreateFAdd(Constant *LHS, Constant *RHS) const
Constant * CreateInsertValue(Constant *Agg, Constant *Val, ArrayRef< unsigned > IdxList) const
static Constant * getInsertValue(Constant *Agg, Constant *Val, ArrayRef< unsigned > Idxs, Type *OnlyIfReducedTy=nullptr)
Constant * CreateSub(Constant *LHS, Constant *RHS, bool HasNUW=false, bool HasNSW=false) const
static Constant * getFNeg(Constant *C)
static Constant * getFRem(Constant *C1, Constant *C2)
The instances of the Type class are immutable: once they are created, they are never changed...
This is an important base class in LLVM.
This file contains the declarations for the subclasses of Constant, which represent the different fla...
static Constant * getAnd(Constant *C1, Constant *C2)
static Constant * getSExtOrBitCast(Constant *C, Type *Ty)
static Constant * getShuffleVector(Constant *V1, Constant *V2, Constant *Mask, Type *OnlyIfReducedTy=nullptr)
Constant * CreateZExtOrBitCast(Constant *C, Type *DestTy) const
Predicate
This enumeration lists the possible predicates for CmpInst subclasses.
static Constant * getNot(Constant *C)
Constant * CreateTruncOrBitCast(Constant *C, Type *DestTy) const
Constant * CreateFSub(Constant *LHS, Constant *RHS) const
Constant * CreateExtractValue(Constant *Agg, ArrayRef< unsigned > IdxList) const
static Constant * getPointerCast(Constant *C, Type *Ty)
Create a BitCast, AddrSpaceCast, or a PtrToInt cast constant expression.
Constant * CreateGetElementPtr(Type *Ty, Constant *C, ArrayRef< Constant *> IdxList) const
Constant * CreateOr(Constant *LHS, Constant *RHS) const
static Constant * getSDiv(Constant *C1, Constant *C2, bool isExact=false)
Constant * CreateBinOp(Instruction::BinaryOps Opc, Constant *LHS, Constant *RHS) const
Constant * CreateFPCast(Constant *C, Type *DestTy) const
Constant * CreateFMul(Constant *LHS, Constant *RHS) const
Constant * CreateAnd(Constant *LHS, Constant *RHS) const
Constant * CreateNeg(Constant *C, bool HasNUW=false, bool HasNSW=false) const
static Constant * getCast(unsigned ops, Constant *C, Type *Ty, bool OnlyIfReduced=false)
Convenience function for getting a Cast operation.
static Constant * getZExtOrBitCast(Constant *C, Type *Ty)
Constant * CreateSRem(Constant *LHS, Constant *RHS) const
static Constant * getFSub(Constant *C1, Constant *C2)
static Constant * getTruncOrBitCast(Constant *C, Type *Ty)
static Constant * getNeg(Constant *C, bool HasNUW=false, bool HasNSW=false)
Constant * CreateInsertElement(Constant *Vec, Constant *NewElt, Constant *Idx) const
Constant * CreatePointerCast(Constant *C, Type *DestTy) const
Constant * CreateGetElementPtr(Type *Ty, Constant *C, ArrayRef< Value *> IdxList) const
Constant * CreateAShr(Constant *LHS, Constant *RHS, bool isExact=false) const
static Constant * getInBoundsGetElementPtr(Type *Ty, Constant *C, ArrayRef< Constant *> IdxList)
Create an "inbounds" getelementptr.
static Constant * getOr(Constant *C1, Constant *C2)
Constant * CreateInBoundsGetElementPtr(Type *Ty, Constant *C, ArrayRef< Constant *> IdxList) const
static Constant * getShl(Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false)
Constant * CreateMul(Constant *LHS, Constant *RHS, bool HasNUW=false, bool HasNSW=false) const
Constant * CreateAdd(Constant *LHS, Constant *RHS, bool HasNUW=false, bool HasNSW=false) const
static Constant * getSRem(Constant *C1, Constant *C2)
Constant * CreateURem(Constant *LHS, Constant *RHS) const
static Constant * getURem(Constant *C1, Constant *C2)
std::underlying_type< E >::type Mask()
Get a bitmask with 1s in all places up to the high-order bit of E's largest value.
Constant * CreateUDiv(Constant *LHS, Constant *RHS, bool isExact=false) const
static Constant * getExtractValue(Constant *Agg, ArrayRef< unsigned > Idxs, Type *OnlyIfReducedTy=nullptr)
Constant * CreateXor(Constant *LHS, Constant *RHS) const
static Constant * getMul(Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false)
Constant * CreateShuffleVector(Constant *V1, Constant *V2, Constant *Mask) const
static Constant * getXor(Constant *C1, Constant *C2)
static Constant * get(unsigned Opcode, Constant *C1, unsigned Flags=0, Type *OnlyIfReducedTy=nullptr)
get - Return a unary operator constant expression, folding if possible.