Lines Matching defs:MVT

26   /// MVT - Machine Value Type. Every type that is supported natively by some
28 /// type can be represented by an MVT.
29 class MVT {
140 // MVT::MAX_ALLOWED_VALUETYPE is used for asserts and to size bit vectors
181 LLVM_CONSTEXPR MVT() : SimpleTy(INVALID_SIMPLE_VALUE_TYPE) {}
182 LLVM_CONSTEXPR MVT(SimpleValueType SVT) : SimpleTy(SVT) { }
184 bool operator>(const MVT& S) const { return SimpleTy > S.SimpleTy; }
185 bool operator<(const MVT& S) const { return SimpleTy < S.SimpleTy; }
186 bool operator==(const MVT& S) const { return SimpleTy == S.SimpleTy; }
187 bool operator!=(const MVT& S) const { return SimpleTy != S.SimpleTy; }
188 bool operator>=(const MVT& S) const { return SimpleTy >= S.SimpleTy; }
189 bool operator<=(const MVT& S) const { return SimpleTy <= S.SimpleTy; }
193 return (SimpleTy >= MVT::FIRST_VALUETYPE &&
194 SimpleTy < MVT::LAST_VALUETYPE);
199 return ((SimpleTy >= MVT::FIRST_FP_VALUETYPE &&
200 SimpleTy <= MVT::LAST_FP_VALUETYPE) ||
201 (SimpleTy >= MVT::FIRST_FP_VECTOR_VALUETYPE &&
202 SimpleTy <= MVT::LAST_FP_VECTOR_VALUETYPE));
207 return ((SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE &&
208 SimpleTy <= MVT::LAST_INTEGER_VALUETYPE) ||
209 (SimpleTy >= MVT::FIRST_INTEGER_VECTOR_VALUETYPE &&
210 SimpleTy <= MVT::LAST_INTEGER_VECTOR_VALUETYPE));
216 return (SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE &&
217 SimpleTy <= MVT::LAST_INTEGER_VALUETYPE);
222 return (SimpleTy >= MVT::FIRST_VECTOR_VALUETYPE &&
223 SimpleTy <= MVT::LAST_VECTOR_VALUETYPE);
228 return (SimpleTy == MVT::v2i8 || SimpleTy == MVT::v1i16 ||
229 SimpleTy == MVT::v16i1);
234 return (SimpleTy == MVT::v4i8 || SimpleTy == MVT::v2i16 ||
235 SimpleTy == MVT::v1i32 || SimpleTy == MVT::v2f16 ||
236 SimpleTy == MVT::v1f32);
241 return (SimpleTy == MVT::v8i8 || SimpleTy == MVT::v4i16 ||
242 SimpleTy == MVT::v2i32 || SimpleTy == MVT::v1i64 ||
243 SimpleTy == MVT::v4f16 || SimpleTy == MVT::v2f32 ||
244 SimpleTy == MVT::v1f64);
249 return (SimpleTy == MVT::v16i8 || SimpleTy == MVT::v8i16 ||
250 SimpleTy == MVT::v4i32 || SimpleTy == MVT::v2i64 ||
251 SimpleTy == MVT::v1i128 || SimpleTy == MVT::v8f16 ||
252 SimpleTy == MVT::v4f32 || SimpleTy == MVT::v2f64);
257 return (SimpleTy == MVT::v8f32 || SimpleTy == MVT::v4f64 ||
258 SimpleTy == MVT::v32i8 || SimpleTy == MVT::v16i16 ||
259 SimpleTy == MVT::v8i32 || SimpleTy == MVT::v4i64);
264 return (SimpleTy == MVT::v16f32 || SimpleTy == MVT::v8f64 ||
265 SimpleTy == MVT::v512i1 || SimpleTy == MVT::v64i8 ||
266 SimpleTy == MVT::v32i16 || SimpleTy == MVT::v16i32 ||
267 SimpleTy == MVT::v8i64);
272 return (SimpleTy == MVT::v1024i1 || SimpleTy == MVT::v128i8 ||
273 SimpleTy == MVT::v64i16 || SimpleTy == MVT::v32i32 ||
274 SimpleTy == MVT::v16i64);
279 return (SimpleTy == MVT::v256i8 || SimpleTy == MVT::v128i16 ||
280 SimpleTy == MVT::v64i32 || SimpleTy == MVT::v32i64);
285 return (SimpleTy==MVT::Any ||
286 SimpleTy==MVT::iAny || SimpleTy==MVT::fAny ||
287 SimpleTy==MVT::vAny || SimpleTy==MVT::iPTRAny);
296 /// getPow2VectorType - Widens the length of the given vector MVT up to
298 MVT getPow2VectorType() const {
304 return MVT::getVectorVT(getVectorElementType(), Pow2NElts);
309 MVT getScalarType() const {
313 MVT getVectorElementType() const {
316 llvm_unreachable("Not a vector MVT!");
374 llvm_unreachable("Not a vector MVT!");
432 llvm_unreachable("getSizeInBits called on extended MVT.");
532 bool bitsGT(MVT VT) const {
537 bool bitsGE(MVT VT) const {
542 bool bitsLT(MVT VT) const {
547 bool bitsLE(MVT VT) const {
552 static MVT getFloatingPointVT(unsigned BitWidth) {
557 return MVT::f16;
559 return MVT::f32;
561 return MVT::f64;
563 return MVT::f80;
565 return MVT::f128;
569 static MVT getIntegerVT(unsigned BitWidth) {
572 return (MVT::SimpleValueType)(MVT::INVALID_SIMPLE_VALUE_TYPE);
574 return MVT::i1;
576 return MVT::i8;
578 return MVT::i16;
580 return MVT::i32;
582 return MVT::i64;
584 return MVT::i128;
588 static MVT getVectorVT(MVT VT, unsigned NumElements) {
592 case MVT::i1:
593 if (NumElements == 2) return MVT::v2i1;
594 if (NumElements == 4) return MVT::v4i1;
595 if (NumElements == 8) return MVT::v8i1;
596 if (NumElements == 16) return MVT::v16i1;
597 if (NumElements == 32) return MVT::v32i1;
598 if (NumElements == 64) return MVT::v64i1;
599 if (NumElements == 512) return MVT::v512i1;
600 if (NumElements == 1024) return MVT::v1024i1;
602 case MVT::i8:
603 if (NumElements == 1) return MVT::v1i8;
604 if (NumElements == 2) return MVT::v2i8;
605 if (NumElements == 4) return MVT::v4i8;
606 if (NumElements == 8) return MVT::v8i8;
607 if (NumElements == 16) return MVT::v16i8;
608 if (NumElements == 32) return MVT::v32i8;
609 if (NumElements == 64) return MVT::v64i8;
610 if (NumElements == 128) return MVT::v128i8;
611 if (NumElements == 256) return MVT::v256i8;
613 case MVT::i16:
614 if (NumElements == 1) return MVT::v1i16;
615 if (NumElements == 2) return MVT::v2i16;
616 if (NumElements == 4) return MVT::v4i16;
617 if (NumElements == 8) return MVT::v8i16;
618 if (NumElements == 16) return MVT::v16i16;
619 if (NumElements == 32) return MVT::v32i16;
620 if (NumElements == 64) return MVT::v64i16;
621 if (NumElements == 128) return MVT::v128i16;
623 case MVT::i32:
624 if (NumElements == 1) return MVT::v1i32;
625 if (NumElements == 2) return MVT::v2i32;
626 if (NumElements == 4) return MVT::v4i32;
627 if (NumElements == 8) return MVT::v8i32;
628 if (NumElements == 16) return MVT::v16i32;
629 if (NumElements == 32) return MVT::v32i32;
630 if (NumElements == 64) return MVT::v64i32;
632 case MVT::i64:
633 if (NumElements == 1) return MVT::v1i64;
634 if (NumElements == 2) return MVT::v2i64;
635 if (NumElements == 4) return MVT::v4i64;
636 if (NumElements == 8) return MVT::v8i64;
637 if (NumElements == 16) return MVT::v16i64;
638 if (NumElements == 32) return MVT::v32i64;
640 case MVT::i128:
641 if (NumElements == 1) return MVT::v1i128;
643 case MVT::f16:
644 if (NumElements == 2) return MVT::v2f16;
645 if (NumElements == 4) return MVT::v4f16;
646 if (NumElements == 8) return MVT::v8f16;
648 case MVT::f32:
649 if (NumElements == 1) return MVT::v1f32;
650 if (NumElements == 2) return MVT::v2f32;
651 if (NumElements == 4) return MVT::v4f32;
652 if (NumElements == 8) return MVT::v8f32;
653 if (NumElements == 16) return MVT::v16f32;
655 case MVT::f64:
656 if (NumElements == 1) return MVT::v1f64;
657 if (NumElements == 2) return MVT::v2f64;
658 if (NumElements == 4) return MVT::v4f64;
659 if (NumElements == 8) return MVT::v8f64;
662 return (MVT::SimpleValueType)(MVT::INVALID_SIMPLE_VALUE_TYPE);
668 static MVT getVT(Type *Ty, bool HandleUnknown = false);
671 /// A simple iterator over the MVT::SimpleValueType enum.
675 MVT operator*() const { return VT; }
678 VT = (MVT::SimpleValueType)((int)VT + 1);
679 assert((int)VT <= MVT::MAX_ALLOWED_VALUETYPE &&
680 "MVT iterator overflowed.");
684 /// A range of the MVT::SimpleValueType enum.
691 return mvt_range(MVT::FIRST_VALUETYPE, MVT::LAST_VALUETYPE);
694 return mvt_range(MVT::FIRST_INTEGER_VALUETYPE,
695 (MVT::SimpleValueType)(MVT::LAST_INTEGER_VALUETYPE + 1));
698 return mvt_range(MVT::FIRST_FP_VALUETYPE,
699 (MVT::SimpleValueType)(MVT::LAST_FP_VALUETYPE + 1));
702 return mvt_range(MVT::FIRST_VECTOR_VALUETYPE,
703 (MVT::SimpleValueType)(MVT::LAST_VECTOR_VALUETYPE + 1));
707 MVT::FIRST_INTEGER_VECTOR_VALUETYPE,
708 (MVT::SimpleValueType)(MVT::LAST_INTEGER_VECTOR_VALUETYPE + 1));
712 MVT::FIRST_FP_VECTOR_VALUETYPE,
713 (MVT::SimpleValueType)(MVT::LAST_FP_VECTOR_VALUETYPE + 1));