Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/include/llvm/Support/MachineValueType.h
Show First 20 Lines • Show All 106 Lines • ▼ Show 20 Lines | enum SimpleValueType : uint8_t { | ||||
v2i64 = 57, // 2 x i64 | v2i64 = 57, // 2 x i64 | ||||
v4i64 = 58, // 4 x i64 | v4i64 = 58, // 4 x i64 | ||||
v8i64 = 59, // 8 x i64 | v8i64 = 59, // 8 x i64 | ||||
v16i64 = 60, // 16 x i64 | v16i64 = 60, // 16 x i64 | ||||
v32i64 = 61, // 32 x i64 | v32i64 = 61, // 32 x i64 | ||||
v1i128 = 62, // 1 x i128 | v1i128 = 62, // 1 x i128 | ||||
// Scalable integer types | FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE = v1i1, | ||||
nxv1i1 = 63, // n x 1 x i1 | LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE = v1i128, | ||||
nxv2i1 = 64, // n x 2 x i1 | |||||
nxv4i1 = 65, // n x 4 x i1 | v2f16 = 63, // 2 x f16 | ||||
nxv8i1 = 66, // n x 8 x i1 | v3f16 = 64, // 3 x f16 | ||||
nxv16i1 = 67, // n x 16 x i1 | v4f16 = 65, // 4 x f16 | ||||
nxv32i1 = 68, // n x 32 x i1 | v8f16 = 66, // 8 x f16 | ||||
v16f16 = 67, // 16 x f16 | |||||
nxv1i8 = 69, // n x 1 x i8 | v32f16 = 68, // 32 x f16 | ||||
nxv2i8 = 70, // n x 2 x i8 | v1f32 = 69, // 1 x f32 | ||||
nxv4i8 = 71, // n x 4 x i8 | v2f32 = 70, // 2 x f32 | ||||
nxv8i8 = 72, // n x 8 x i8 | v3f32 = 71, // 3 x f32 | ||||
nxv16i8 = 73, // n x 16 x i8 | v4f32 = 72, // 4 x f32 | ||||
nxv32i8 = 74, // n x 32 x i8 | v5f32 = 73, // 5 x f32 | ||||
v8f32 = 74, // 8 x f32 | |||||
nxv1i16 = 75, // n x 1 x i16 | v16f32 = 75, // 16 x f32 | ||||
nxv2i16 = 76, // n x 2 x i16 | v32f32 = 76, // 32 x f32 | ||||
nxv4i16 = 77, // n x 4 x i16 | v64f32 = 77, // 64 x f32 | ||||
nxv8i16 = 78, // n x 8 x i16 | v128f32 = 78, // 128 x f32 | ||||
nxv16i16 = 79, // n x 16 x i16 | v256f32 = 79, // 256 x f32 | ||||
nxv32i16 = 80, // n x 32 x i16 | v512f32 = 80, // 512 x f32 | ||||
v1024f32 = 81, // 1024 x f32 | |||||
nxv1i32 = 81, // n x 1 x i32 | v2048f32 = 82, // 2048 x f32 | ||||
nxv2i32 = 82, // n x 2 x i32 | v1f64 = 83, // 1 x f64 | ||||
nxv4i32 = 83, // n x 4 x i32 | v2f64 = 84, // 2 x f64 | ||||
nxv8i32 = 84, // n x 8 x i32 | v4f64 = 85, // 4 x f64 | ||||
nxv16i32 = 85, // n x 16 x i32 | v8f64 = 86, // 8 x f64 | ||||
nxv32i32 = 86, // n x 32 x i32 | |||||
FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE = v2f16, | |||||
nxv1i64 = 87, // n x 1 x i64 | LAST_FP_FIXEDLEN_VECTOR_VALUETYPE = v8f64, | ||||
nxv2i64 = 88, // n x 2 x i64 | |||||
nxv4i64 = 89, // n x 4 x i64 | FIRST_FIXEDLEN_VECTOR_VALUETYPE = v1i1, | ||||
nxv8i64 = 90, // n x 8 x i64 | LAST_FIXEDLEN_VECTOR_VALUETYPE = v8f64, | ||||
nxv16i64 = 91, // n x 16 x i64 | |||||
nxv32i64 = 92, // n x 32 x i64 | nxv1i1 = 87, // n x 1 x i1 | ||||
nxv2i1 = 88, // n x 2 x i1 | |||||
FIRST_INTEGER_VECTOR_VALUETYPE = v1i1, | nxv4i1 = 89, // n x 4 x i1 | ||||
LAST_INTEGER_VECTOR_VALUETYPE = nxv32i64, | nxv8i1 = 90, // n x 8 x i1 | ||||
nxv16i1 = 91, // n x 16 x i1 | |||||
FIRST_INTEGER_SCALABLE_VALUETYPE = nxv1i1, | nxv32i1 = 92, // n x 32 x i1 | ||||
LAST_INTEGER_SCALABLE_VALUETYPE = nxv32i64, | |||||
nxv1i8 = 93, // n x 1 x i8 | |||||
v2f16 = 93, // 2 x f16 | nxv2i8 = 94, // n x 2 x i8 | ||||
v3f16 = 94, // 3 x f16 | nxv4i8 = 95, // n x 4 x i8 | ||||
v4f16 = 95, // 4 x f16 | nxv8i8 = 96, // n x 8 x i8 | ||||
v8f16 = 96, // 8 x f16 | nxv16i8 = 97, // n x 16 x i8 | ||||
v16f16 = 97, // 16 x f16 | nxv32i8 = 98, // n x 32 x i8 | ||||
v32f16 = 98, // 32 x f16 | |||||
v1f32 = 99, // 1 x f32 | nxv1i16 = 99, // n x 1 x i16 | ||||
v2f32 = 100, // 2 x f32 | nxv2i16 = 100, // n x 2 x i16 | ||||
v3f32 = 101, // 3 x f32 | nxv4i16 = 101, // n x 4 x i16 | ||||
v4f32 = 102, // 4 x f32 | nxv8i16 = 102, // n x 8 x i16 | ||||
v5f32 = 103, // 5 x f32 | nxv16i16 = 103, // n x 16 x i16 | ||||
v8f32 = 104, // 8 x f32 | nxv32i16 = 104, // n x 32 x i16 | ||||
v16f32 = 105, // 16 x f32 | |||||
v32f32 = 106, // 32 x f32 | nxv1i32 = 105, // n x 1 x i32 | ||||
v64f32 = 107, // 64 x f32 | nxv2i32 = 106, // n x 2 x i32 | ||||
v128f32 = 108, // 128 x f32 | nxv4i32 = 107, // n x 4 x i32 | ||||
v256f32 = 109, // 256 x f32 | nxv8i32 = 108, // n x 8 x i32 | ||||
v512f32 = 110, // 512 x f32 | nxv16i32 = 109, // n x 16 x i32 | ||||
v1024f32 = 111, // 1024 x f32 | nxv32i32 = 110, // n x 32 x i32 | ||||
v2048f32 = 112, // 2048 x f32 | |||||
v1f64 = 113, // 1 x f64 | nxv1i64 = 111, // n x 1 x i64 | ||||
v2f64 = 114, // 2 x f64 | nxv2i64 = 112, // n x 2 x i64 | ||||
v4f64 = 115, // 4 x f64 | nxv4i64 = 113, // n x 4 x i64 | ||||
v8f64 = 116, // 8 x f64 | nxv8i64 = 114, // n x 8 x i64 | ||||
nxv16i64 = 115, // n x 16 x i64 | |||||
nxv32i64 = 116, // n x 32 x i64 | |||||
FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE = nxv1i1, | |||||
LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE = nxv32i64, | |||||
nxv2f16 = 117, // n x 2 x f16 | nxv2f16 = 117, // n x 2 x f16 | ||||
nxv4f16 = 118, // n x 4 x f16 | nxv4f16 = 118, // n x 4 x f16 | ||||
nxv8f16 = 119, // n x 8 x f16 | nxv8f16 = 119, // n x 8 x f16 | ||||
nxv1f32 = 120, // n x 1 x f32 | nxv1f32 = 120, // n x 1 x f32 | ||||
nxv2f32 = 121, // n x 2 x f32 | nxv2f32 = 121, // n x 2 x f32 | ||||
nxv4f32 = 122, // n x 4 x f32 | nxv4f32 = 122, // n x 4 x f32 | ||||
nxv8f32 = 123, // n x 8 x f32 | nxv8f32 = 123, // n x 8 x f32 | ||||
nxv16f32 = 124, // n x 16 x f32 | nxv16f32 = 124, // n x 16 x f32 | ||||
nxv1f64 = 125, // n x 1 x f64 | nxv1f64 = 125, // n x 1 x f64 | ||||
nxv2f64 = 126, // n x 2 x f64 | nxv2f64 = 126, // n x 2 x f64 | ||||
nxv4f64 = 127, // n x 4 x f64 | nxv4f64 = 127, // n x 4 x f64 | ||||
nxv8f64 = 128, // n x 8 x f64 | nxv8f64 = 128, // n x 8 x f64 | ||||
FIRST_FP_VECTOR_VALUETYPE = v2f16, | FIRST_FP_SCALABLE_VECTOR_VALUETYPE = nxv2f16, | ||||
LAST_FP_VECTOR_VALUETYPE = nxv8f64, | LAST_FP_SCALABLE_VECTOR_VALUETYPE = nxv8f64, | ||||
FIRST_FP_SCALABLE_VALUETYPE = nxv2f16, | FIRST_SCALABLE_VECTOR_VALUETYPE = nxv1i1, | ||||
LAST_FP_SCALABLE_VALUETYPE = nxv8f64, | LAST_SCALABLE_VECTOR_VALUETYPE = nxv8f64, | ||||
FIRST_VECTOR_VALUETYPE = v1i1, | FIRST_VECTOR_VALUETYPE = v1i1, | ||||
LAST_VECTOR_VALUETYPE = nxv8f64, | LAST_VECTOR_VALUETYPE = nxv8f64, | ||||
x86mmx = 129, // This is an X86 MMX value | x86mmx = 129, // This is an X86 MMX value | ||||
Glue = 130, // This glues nodes together during pre-RA sched | Glue = 130, // This glues nodes together during pre-RA sched | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | bool isValid() const { | ||||
return (SimpleTy >= MVT::FIRST_VALUETYPE && | return (SimpleTy >= MVT::FIRST_VALUETYPE && | ||||
SimpleTy < MVT::LAST_VALUETYPE); | SimpleTy < MVT::LAST_VALUETYPE); | ||||
} | } | ||||
/// Return true if this is a FP or a vector FP type. | /// Return true if this is a FP or a vector FP type. | ||||
bool isFloatingPoint() const { | bool isFloatingPoint() const { | ||||
return ((SimpleTy >= MVT::FIRST_FP_VALUETYPE && | return ((SimpleTy >= MVT::FIRST_FP_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_FP_VALUETYPE) || | SimpleTy <= MVT::LAST_FP_VALUETYPE) || | ||||
(SimpleTy >= MVT::FIRST_FP_VECTOR_VALUETYPE && | (SimpleTy >= MVT::FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_FP_VECTOR_VALUETYPE)); | SimpleTy <= MVT::LAST_FP_FIXEDLEN_VECTOR_VALUETYPE) || | ||||
(SimpleTy >= MVT::FIRST_FP_SCALABLE_VECTOR_VALUETYPE && | |||||
SimpleTy <= MVT::LAST_FP_SCALABLE_VECTOR_VALUETYPE)); | |||||
} | } | ||||
/// Return true if this is an integer or a vector integer type. | /// Return true if this is an integer or a vector integer type. | ||||
bool isInteger() const { | bool isInteger() const { | ||||
return ((SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE && | return ((SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_INTEGER_VALUETYPE) || | SimpleTy <= MVT::LAST_INTEGER_VALUETYPE) || | ||||
(SimpleTy >= MVT::FIRST_INTEGER_VECTOR_VALUETYPE && | (SimpleTy >= MVT::FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_INTEGER_VECTOR_VALUETYPE)); | SimpleTy <= MVT::LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE) || | ||||
(SimpleTy >= MVT::FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE && | |||||
SimpleTy <= MVT::LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE)); | |||||
} | } | ||||
/// Return true if this is an integer, not including vectors. | /// Return true if this is an integer, not including vectors. | ||||
bool isScalarInteger() const { | bool isScalarInteger() const { | ||||
return (SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE && | return (SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_INTEGER_VALUETYPE); | SimpleTy <= MVT::LAST_INTEGER_VALUETYPE); | ||||
} | } | ||||
/// Return true if this is a vector value type. | /// Return true if this is a vector value type. | ||||
bool isVector() const { | bool isVector() const { | ||||
return (SimpleTy >= MVT::FIRST_VECTOR_VALUETYPE && | return (SimpleTy >= MVT::FIRST_VECTOR_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_VECTOR_VALUETYPE); | SimpleTy <= MVT::LAST_VECTOR_VALUETYPE); | ||||
} | } | ||||
/// Return true if this is a vector value type where the | /// Return true if this is a vector value type where the | ||||
/// runtime length is machine dependent | /// runtime length is machine dependent | ||||
bool isScalableVector() const { | bool isScalableVector() const { | ||||
return ((SimpleTy >= MVT::FIRST_INTEGER_SCALABLE_VALUETYPE && | return (SimpleTy >= MVT::FIRST_SCALABLE_VECTOR_VALUETYPE && | ||||
SimpleTy <= MVT::LAST_INTEGER_SCALABLE_VALUETYPE) || | SimpleTy <= MVT::LAST_SCALABLE_VECTOR_VALUETYPE); | ||||
(SimpleTy >= MVT::FIRST_FP_SCALABLE_VALUETYPE && | } | ||||
SimpleTy <= MVT::LAST_FP_SCALABLE_VALUETYPE)); | |||||
bool isFixedLengthVector() const { | |||||
return (SimpleTy >= MVT::FIRST_FIXEDLEN_VECTOR_VALUETYPE && | |||||
SimpleTy <= MVT::LAST_FIXEDLEN_VECTOR_VALUETYPE); | |||||
} | } | ||||
/// Return true if this is a 16-bit vector type. | /// Return true if this is a 16-bit vector type. | ||||
bool is16BitVector() const { | bool is16BitVector() const { | ||||
return (SimpleTy == MVT::v2i8 || SimpleTy == MVT::v1i16 || | return (SimpleTy == MVT::v2i8 || SimpleTy == MVT::v1i16 || | ||||
SimpleTy == MVT::v16i1); | SimpleTy == MVT::v16i1); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 779 Lines • ▼ Show 20 Lines | static mvt_range fp_valuetypes() { | ||||
(MVT::SimpleValueType)(MVT::LAST_FP_VALUETYPE + 1)); | (MVT::SimpleValueType)(MVT::LAST_FP_VALUETYPE + 1)); | ||||
} | } | ||||
static mvt_range vector_valuetypes() { | static mvt_range vector_valuetypes() { | ||||
return mvt_range(MVT::FIRST_VECTOR_VALUETYPE, | return mvt_range(MVT::FIRST_VECTOR_VALUETYPE, | ||||
(MVT::SimpleValueType)(MVT::LAST_VECTOR_VALUETYPE + 1)); | (MVT::SimpleValueType)(MVT::LAST_VECTOR_VALUETYPE + 1)); | ||||
} | } | ||||
static mvt_range integer_vector_valuetypes() { | static mvt_range fixedlen_vector_valuetypes() { | ||||
return mvt_range( | |||||
MVT::FIRST_FIXEDLEN_VECTOR_VALUETYPE, | |||||
(MVT::SimpleValueType)(MVT::LAST_FIXEDLEN_VECTOR_VALUETYPE + 1)); | |||||
} | |||||
static mvt_range scalable_vector_valuetypes() { | |||||
return mvt_range( | |||||
MVT::FIRST_SCALABLE_VECTOR_VALUETYPE, | |||||
(MVT::SimpleValueType)(MVT::LAST_SCALABLE_VECTOR_VALUETYPE + 1)); | |||||
} | |||||
static mvt_range integer_fixedlen_vector_valuetypes() { | |||||
return mvt_range( | return mvt_range( | ||||
MVT::FIRST_INTEGER_VECTOR_VALUETYPE, | MVT::FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE, | ||||
(MVT::SimpleValueType)(MVT::LAST_INTEGER_VECTOR_VALUETYPE + 1)); | (MVT::SimpleValueType)(MVT::LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE + 1)); | ||||
} | } | ||||
static mvt_range fp_vector_valuetypes() { | static mvt_range fp_fixedlen_vector_valuetypes() { | ||||
return mvt_range( | return mvt_range( | ||||
MVT::FIRST_FP_VECTOR_VALUETYPE, | MVT::FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE, | ||||
(MVT::SimpleValueType)(MVT::LAST_FP_VECTOR_VALUETYPE + 1)); | (MVT::SimpleValueType)(MVT::LAST_FP_FIXEDLEN_VECTOR_VALUETYPE + 1)); | ||||
} | } | ||||
static mvt_range integer_scalable_vector_valuetypes() { | static mvt_range integer_scalable_vector_valuetypes() { | ||||
return mvt_range(MVT::FIRST_INTEGER_SCALABLE_VALUETYPE, | return mvt_range( | ||||
(MVT::SimpleValueType)(MVT::LAST_INTEGER_SCALABLE_VALUETYPE + 1)); | MVT::FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE, | ||||
(MVT::SimpleValueType)(MVT::LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE + 1)); | |||||
} | } | ||||
static mvt_range fp_scalable_vector_valuetypes() { | static mvt_range fp_scalable_vector_valuetypes() { | ||||
return mvt_range(MVT::FIRST_FP_SCALABLE_VALUETYPE, | return mvt_range( | ||||
(MVT::SimpleValueType)(MVT::LAST_FP_SCALABLE_VALUETYPE + 1)); | MVT::FIRST_FP_SCALABLE_VECTOR_VALUETYPE, | ||||
(MVT::SimpleValueType)(MVT::LAST_FP_SCALABLE_VECTOR_VALUETYPE + 1)); | |||||
} | } | ||||
/// @} | /// @} | ||||
}; | }; | ||||
} // end namespace llvm | } // end namespace llvm | ||||
#endif // LLVM_CODEGEN_MACHINEVALUETYPE_H | #endif // LLVM_CODEGEN_MACHINEVALUETYPE_H |