Struct cranelift_codegen::ir::types::Type[][src]

pub struct Type(_);

The type of an SSA value.

The VOID type is only used for instructions that produce no value. It can't be part of a SIMD vector.

Basic integer types: I8, I16, I32, and I64. These types are sign-agnostic.

Basic floating point types: F32 and F64. IEEE single and double precision.

Boolean types: B1, B8, B16, B32, and B64. These all encode 'true' or 'false'. The larger types use redundant bits.

SIMD vector types have power-of-two lanes, up to 256. Lanes can be any int/float/bool type.

Methods

impl Type
[src]

Get the lane type of this SIMD vector type.

A lane type is the same as a SIMD vector type with one lane, so it returns itself.

Get log_2 of the number of bits in a lane.

Get the number of bits in a lane.

Get an integer type with the requested number of bits.

Get a type with the same number of lanes as this type, but with the lanes replaced by booleans of the same size.

Scalar types are treated as vectors with one lane, so they are converted to the multi-bit boolean types.

Get a type with the same number of lanes as this type, but with the lanes replaced by booleans of the same size.

Scalar types are all converted to b1 which is usually what you want.

Get a type with the same number of lanes as this type, but with lanes that are half the number of bits.

Get a type with the same number of lanes as this type, but with lanes that are twice the number of bits.

Is this the VOID type?

Is this a special type?

Is this a lane type?

This is a scalar type that can also appear as the lane type of a SIMD vector.

Is this a SIMD vector type?

A vector type has 2 or more lanes.

Is this a scalar boolean type?

Is this a scalar integer type?

Is this a scalar floating point type?

Is this a CPU flags type?

Get log_2 of the number of lanes in this SIMD vector type.

All SIMD types have a lane count that is a power of two and no larger than 256, so this will be a number in the range 0-8.

A scalar type is the same as a SIMD vector type with one lane, so it returns 0.

Get the number of lanes in this SIMD vector type.

A scalar type is the same as a SIMD vector type with one lane, so it returns 1.

Get the total number of bits used to represent this type.

Get the number of bytes used to store this type in memory.

Get a SIMD vector type with n times more lanes than this one.

If this is a scalar type, this produces a SIMD type with this as a lane type and n lanes.

If this is already a SIMD vector type, this produces a SIMD vector type with n * self.lane_count() lanes.

Get a SIMD vector with half the number of lanes.

There is no double_vector() method. Use t.by(2) instead.

Index of this type, for use with hash tables etc.

True iff:

  1. self.lane_count() == other.lane_count() and
  2. self.lane_bits() >= other.lane_bits()

Trait Implementations

impl Copy for Type
[src]

impl Clone for Type
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl PartialEq for Type
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for Type
[src]

impl Hash for Type
[src]

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl Display for Type
[src]

Formats the value using the given formatter. Read more

impl Debug for Type
[src]

Formats the value using the given formatter. Read more

impl Default for Type
[src]

Returns the "default value" for a type. Read more

Auto Trait Implementations

impl Send for Type

impl Sync for Type