Enum llvm_support::ty::Type [−][src]
pub enum Type {
Show 21 variants
Half,
BFloat,
Float,
Double,
Metadata,
X86Fp80,
Fp128,
PpcFp128,
Void,
Label,
X86Mmx,
X86Amx,
Token,
Integer(IntegerType),
Function(FunctionType),
Pointer(PointerType),
OpaquePointer(AddressSpace),
Struct(StructType),
Array(ArrayType),
FixedVector(VectorType),
ScalableVector(VectorType),
}Expand description
A representation of LLVM’s types.
See TypeId for documentation of each variant.
Variants
Integer(IntegerType)Tuple Fields of Integer
0: IntegerTypeFunction(FunctionType)Tuple Fields of Function
0: FunctionTypePointer(PointerType)Tuple Fields of Pointer
0: PointerTypeOpaquePointer(AddressSpace)Tuple Fields of OpaquePointer
0: AddressSpaceStruct(StructType)Tuple Fields of Struct
0: StructTypeArray(ArrayType)Tuple Fields of Array
0: ArrayTypeFixedVector(VectorType)Tuple Fields of FixedVector
0: VectorTypeScalableVector(VectorType)Tuple Fields of ScalableVector
0: VectorTypeImplementations
Returns whether this type is one of the floating point types.
use llvm_support::Type;
assert!(Type::BFloat.is_floating());
assert!(Type::Float.is_floating());
assert!(Type::Double.is_floating());
assert!(Type::X86Fp80.is_floating());
assert!(Type::Fp128.is_floating());
assert!(Type::PpcFp128.is_floating());
assert!(!Type::Metadata.is_floating());Returns whether this type is a valid “pointee” type, i.e. suitable as the inner type for a pointer type.
Returns whether this type is a valid array element type, i.e. is suitable as the inner type for an array type.
Returns whether this type is a valid structure element type, i.e. is suitable as a field type within a structure type.
Returns whether this type is a valid vector element type, i.e. is suitable as the inner type for a vector type.
use llvm_support::{AddressSpace, Type};
assert!(Type::Float.is_vector_element());
assert!(Type::new_integer(32).unwrap().is_vector_element());
assert!(
Type::new_pointer(Type::new_integer(8).unwrap(), AddressSpace::default())
.unwrap()
.is_vector_element()
);
assert!(!Type::Metadata.is_vector_element());Returns whether this type is a valid argument type, i.e. is suitable as an argument within a function type.
use llvm_support::Type;
assert!(Type::Float.is_argument());
assert!(!Type::Void.is_argument());Returns whether this type is a valid return type, i.e. is suitable as the return type within a function type.
pub fn new_struct(
name: Option<String>,
fields: Vec<Type>,
is_packed: bool
) -> Result<Self, StructTypeError>
pub fn new_struct(
name: Option<String>,
fields: Vec<Type>,
is_packed: bool
) -> Result<Self, StructTypeError>
Create a new struct type with the given fields.
Create a new integral type from the given bit width.
pub fn new_pointer(
pointee: Type,
address_space: AddressSpace
) -> Result<Self, PointerTypeError>
pub fn new_pointer(
pointee: Type,
address_space: AddressSpace
) -> Result<Self, PointerTypeError>
Create a new pointer type from the given pointee type and address space.
Create a new array type of the given size and element type.
pub fn new_scalable_vector(
num_elements: u64,
element_type: Type
) -> Result<Self, VectorTypeError>
pub fn new_scalable_vector(
num_elements: u64,
element_type: Type
) -> Result<Self, VectorTypeError>
Create a new scalable vector type of the given size and element type.
Create a new (fixed) vector type of the given size and element type.
pub fn new_function(
return_type: Type,
param_types: Vec<Type>,
is_vararg: bool
) -> Result<Self, FunctionTypeError>
pub fn new_function(
return_type: Type,
param_types: Vec<Type>,
is_vararg: bool
) -> Result<Self, FunctionTypeError>
Create a new function type of the given return type, parameter types, and variadic disposition.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Type
impl UnwindSafe for Type
Blanket Implementations
Mutably borrows from an owned value. Read more