Enum llvm_ir::constant::Constant [−][src]
pub enum Constant {
Show 51 variants
Int {
bits: u32,
value: u64,
},
Float(Float),
Null(TypeRef),
AggregateZero(TypeRef),
Struct {
name: Option<String>,
values: Vec<ConstantRef>,
is_packed: bool,
},
Array {
element_type: TypeRef,
elements: Vec<ConstantRef>,
},
Vector(Vec<ConstantRef>),
Undef(TypeRef),
BlockAddress,
GlobalReference {
name: Name,
ty: TypeRef,
},
TokenNone,
Add(Add),
Sub(Sub),
Mul(Mul),
UDiv(UDiv),
SDiv(SDiv),
URem(URem),
SRem(SRem),
And(And),
Or(Or),
Xor(Xor),
Shl(Shl),
LShr(LShr),
AShr(AShr),
FAdd(FAdd),
FSub(FSub),
FMul(FMul),
FDiv(FDiv),
FRem(FRem),
ExtractElement(ExtractElement),
InsertElement(InsertElement),
ShuffleVector(ShuffleVector),
ExtractValue(ExtractValue),
InsertValue(InsertValue),
GetElementPtr(GetElementPtr),
Trunc(Trunc),
ZExt(ZExt),
SExt(SExt),
FPTrunc(FPTrunc),
FPExt(FPExt),
FPToUI(FPToUI),
FPToSI(FPToSI),
UIToFP(UIToFP),
SIToFP(SIToFP),
PtrToInt(PtrToInt),
IntToPtr(IntToPtr),
BitCast(BitCast),
AddrSpaceCast(AddrSpaceCast),
ICmp(ICmp),
FCmp(FCmp),
Select(Select),
}Expand description
See LLVM 12 docs on Constants. Constants can be either values, or expressions involving other constants (see LLVM 12 docs on Constant Expressions).
Variants
Fields of Int
bits: u32Number of bits in the constant integer
value: u64The constant value itself.
If bits == 64, this is the value.
If bits < 64, the constant value is zero-extended to fit in this
field.
If bits > 64, the constant value is truncated to fit in this field;
but if this truncation would change the value (i.e., if the value is
>= 2^64 when interpreted as unsigned) then Module::from_bc_path()
will fail. See #5.
Float(Float)Tuple Fields of Float
0: FloatNull(TypeRef)The TypeRef here must be to a PointerType. See LLVM 12 docs on Simple Constants
Tuple Fields of Null
0: TypeRefAggregateZero(TypeRef)A zero-initialized array or struct (or scalar).
Tuple Fields of AggregateZero
0: TypeRefFields of Struct
Fields of Array
element_type: TypeRefelements: Vec<ConstantRef>Vector(Vec<ConstantRef>)Tuple Fields of Vector
0: Vec<ConstantRef>Undef(TypeRef)Undef can be used anywhere a constant is expected. See LLVM 12 docs on Undefined Values
Tuple Fields of Undef
0: TypeRefThe address of the given (non-entry) BasicBlock. See LLVM 12 docs on Addresses of Basic Blocks.
BlockAddress needs more fields, but the necessary getter functions are apparently not exposed in the LLVM C API (only the C++ API)
Add(Add)Tuple Fields of Add
0: AddSub(Sub)Tuple Fields of Sub
0: SubMul(Mul)Tuple Fields of Mul
0: MulUDiv(UDiv)Tuple Fields of UDiv
0: UDivSDiv(SDiv)Tuple Fields of SDiv
0: SDivURem(URem)Tuple Fields of URem
0: URemSRem(SRem)Tuple Fields of SRem
0: SRemAnd(And)Tuple Fields of And
0: AndOr(Or)Tuple Fields of Or
0: OrXor(Xor)Tuple Fields of Xor
0: XorShl(Shl)Tuple Fields of Shl
0: ShlLShr(LShr)Tuple Fields of LShr
0: LShrAShr(AShr)Tuple Fields of AShr
0: AShrFAdd(FAdd)Tuple Fields of FAdd
0: FAddFSub(FSub)Tuple Fields of FSub
0: FSubFMul(FMul)Tuple Fields of FMul
0: FMulFDiv(FDiv)Tuple Fields of FDiv
0: FDivFRem(FRem)Tuple Fields of FRem
0: FRemExtractElement(ExtractElement)Tuple Fields of ExtractElement
InsertElement(InsertElement)Tuple Fields of InsertElement
ShuffleVector(ShuffleVector)Tuple Fields of ShuffleVector
ExtractValue(ExtractValue)Tuple Fields of ExtractValue
0: ExtractValueInsertValue(InsertValue)Tuple Fields of InsertValue
0: InsertValueGetElementPtr(GetElementPtr)Tuple Fields of GetElementPtr
Trunc(Trunc)Tuple Fields of Trunc
0: TruncZExt(ZExt)Tuple Fields of ZExt
0: ZExtSExt(SExt)Tuple Fields of SExt
0: SExtFPTrunc(FPTrunc)Tuple Fields of FPTrunc
0: FPTruncFPExt(FPExt)Tuple Fields of FPExt
0: FPExtFPToUI(FPToUI)Tuple Fields of FPToUI
0: FPToUIFPToSI(FPToSI)Tuple Fields of FPToSI
0: FPToSIUIToFP(UIToFP)Tuple Fields of UIToFP
0: UIToFPSIToFP(SIToFP)Tuple Fields of SIToFP
0: SIToFPPtrToInt(PtrToInt)Tuple Fields of PtrToInt
0: PtrToIntIntToPtr(IntToPtr)Tuple Fields of IntToPtr
0: IntToPtrBitCast(BitCast)Tuple Fields of BitCast
0: BitCastAddrSpaceCast(AddrSpaceCast)Tuple Fields of AddrSpaceCast
ICmp(ICmp)Tuple Fields of ICmp
0: ICmpFCmp(FCmp)Tuple Fields of FCmp
0: FCmpSelect(Select)Tuple Fields of Select
0: SelectTrait Implementations
Performs the conversion.
Performs the conversion.
Performs the conversion.
Performs the conversion.
Performs the conversion.
Performs the conversion.
Performs the conversion.
Auto Trait Implementations
impl RefUnwindSafe for Constant
impl UnwindSafe for Constant
Blanket Implementations
Mutably borrows from an owned value. Read more