[llvm] [DAG] Adding MVT::widenIntegerElementType to widen both Scalar and Vectors of integer type. (PR #207148)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 8 01:42:49 PDT 2026
https://github.com/RKSimon updated https://github.com/llvm/llvm-project/pull/207148
>From a92b420751290955e330fee9a7fa7162a6df2951 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 1 Jul 2026 02:54:10 +0530
Subject: [PATCH 01/12] [DAG] Add MVT::widenIntegerElementType and
MVT::widenIntegerVectorElementType
---
.../llvm/CodeGenTypes/MachineValueType.h | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index 92f3b79588996..d7f1457eeb032 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -265,6 +265,34 @@ namespace llvm {
return MVT::getVectorVT(EltVT, EltCnt * 2);
}
+ // Return a VT for an Integer type doubled in size
+ MVT widenIntegerElementType() const {
+ assert(isScalarInteger() && "Not an integer MVT!");
+ assert((SimpleTy != MVT::LAST_INTEGER_VALUETYPE) &&
+ "Widening of this Integer type not supported !");
+
+ // i1 is a special case � doubling gives i2 which is not a valid MVT,
+ // so promote directly to i8 instead.
+ if (SimpleTy == MVT::i1)
+ return MVT::i8;
+
+ unsigned NextSizeInBits = getScalarSizeInBits() * 2;
+ return getIntegerVT(NextSizeInBits);
+ }
+
+ // Return a VT for an integer vector type with the size of the
+ // elements doubled.
+ MVT widenIntegerVectorElementType() const {
+ assert(isVector() && "Not a vector MVT!");
+
+ MVT WideEltTy = getVectorElementType().widenIntegerElementType();
+ MVT VecTy = MVT::getVectorVT(WideEltTy, getVectorElementCount());
+ assert(VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
+ "Simple vector VT not representable by simple integer vector VT!");
+ return VecTy;
+
+ }
+
/// Returns true if the given vector is a power of 2.
bool isPow2VectorType() const {
unsigned NElts = getVectorMinNumElements();
>From b49ab1c7a1576dfe33fd224fd5929c9aefd69af3 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 1 Jul 2026 03:33:34 +0530
Subject: [PATCH 02/12] Assert message correction
---
.gitignore | 2 ++
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 3 +--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index a4382c9ea7390..70b4e5dcddb8b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -90,3 +90,5 @@ pythonenv*
/clang/utils/analyzer/projects/*/RefScanBuildResults
# automodapi puts generated documentation files here.
/lldb/docs/python_api/
+/CppProperties.json
+/CppProperties.json
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index d7f1457eeb032..5f08ba8cb6488 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -288,9 +288,8 @@ namespace llvm {
MVT WideEltTy = getVectorElementType().widenIntegerElementType();
MVT VecTy = MVT::getVectorVT(WideEltTy, getVectorElementCount());
assert(VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
- "Simple vector VT not representable by simple integer vector VT!");
+ "Integer Vector widening not possible !");
return VecTy;
-
}
/// Returns true if the given vector is a power of 2.
>From cbf3d13aba31bcc6307595462fc6716dab78e6d4 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 1 Jul 2026 03:35:55 +0530
Subject: [PATCH 03/12] Revert "Assert message correction"
This reverts commit b49ab1c7a1576dfe33fd224fd5929c9aefd69af3.
---
.gitignore | 2 --
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 3 ++-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 70b4e5dcddb8b..a4382c9ea7390 100644
--- a/.gitignore
+++ b/.gitignore
@@ -90,5 +90,3 @@ pythonenv*
/clang/utils/analyzer/projects/*/RefScanBuildResults
# automodapi puts generated documentation files here.
/lldb/docs/python_api/
-/CppProperties.json
-/CppProperties.json
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index 5f08ba8cb6488..d7f1457eeb032 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -288,8 +288,9 @@ namespace llvm {
MVT WideEltTy = getVectorElementType().widenIntegerElementType();
MVT VecTy = MVT::getVectorVT(WideEltTy, getVectorElementCount());
assert(VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
- "Integer Vector widening not possible !");
+ "Simple vector VT not representable by simple integer vector VT!");
return VecTy;
+
}
/// Returns true if the given vector is a power of 2.
>From a9997305ff3f13aece33d90641dae7db72260f44 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 1 Jul 2026 03:53:10 +0530
Subject: [PATCH 04/12] Assert message correction
---
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index d7f1457eeb032..3254b2877fccf 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -288,7 +288,7 @@ namespace llvm {
MVT WideEltTy = getVectorElementType().widenIntegerElementType();
MVT VecTy = MVT::getVectorVT(WideEltTy, getVectorElementCount());
assert(VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
- "Simple vector VT not representable by simple integer vector VT!");
+ "Widening of this Vector Integer type not supported !");
return VecTy;
}
>From 451bd6a87703fee76ae5f38d3561c170eadfbbfb Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 1 Jul 2026 04:00:50 +0530
Subject: [PATCH 05/12] utf-8 error correction
---
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index 3254b2877fccf..92d9f8ab20213 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -271,7 +271,7 @@ namespace llvm {
assert((SimpleTy != MVT::LAST_INTEGER_VALUETYPE) &&
"Widening of this Integer type not supported !");
- // i1 is a special case � doubling gives i2 which is not a valid MVT,
+ // i1 is a special case doubling gives i2 which is not a valid MVT
// so promote directly to i8 instead.
if (SimpleTy == MVT::i1)
return MVT::i8;
>From 53fc4366330e706d031b039b624024dc952304c8 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 1 Jul 2026 15:36:58 +0530
Subject: [PATCH 06/12] [DAG] Add MVT::widenIntegerElementType and
MVT::widenIntegerVectorElementType
---
.../llvm/CodeGenTypes/MachineValueType.h | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index 92f3b79588996..d9cfa86d34401 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -265,6 +265,33 @@ namespace llvm {
return MVT::getVectorVT(EltVT, EltCnt * 2);
}
+ // Return a VT for an Integer type doubled in size
+ MVT widenIntegerElementType() const {
+ assert(isScalarInteger() && "Not an integer MVT!");
+ assert((SimpleTy != MVT::LAST_INTEGER_VALUETYPE) &&
+ "Widening of this Integer type not supported !");
+
+ // i1 is a special case doubling gives i2 which is not a valid MVT
+ // so promote directly to i8 instead.
+ if (SimpleTy == MVT::i1)
+ return MVT::i8;
+
+ unsigned NextSizeInBits = getScalarSizeInBits() * 2;
+ return getIntegerVT(NextSizeInBits);
+ }
+
+ // Return a VT for an integer vector type with the size of the
+ // elements doubled.
+ MVT widenIntegerVectorElementType() const {
+ assert(isVector() && "Not a vector MVT!");
+
+ MVT WideEltTy = getVectorElementType().widenIntegerElementType();
+ MVT VecTy = MVT::getVectorVT(WideEltTy, getVectorElementCount());
+ assert(VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
+ "Widening of this Vector Integer type not supported !");
+ return VecTy;
+ }
+
/// Returns true if the given vector is a power of 2.
bool isPow2VectorType() const {
unsigned NElts = getVectorMinNumElements();
>From 21bf9c6d7fbbb4c8ce1ddc56e47c29fe60951656 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Thu, 2 Jul 2026 01:41:12 +0530
Subject: [PATCH 07/12] Adding testcases.
---
.../llvm/CodeGenTypes/MachineValueType.h | 29 ++++++++-------
.../CodeGen/ScalableVectorMVTsTest.cpp | 36 +++++++++++++++++++
2 files changed, 50 insertions(+), 15 deletions(-)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index 7ed315b5f75c6..a7518910eeab5 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -265,26 +265,25 @@ namespace llvm {
return MVT::getVectorVT(EltVT, EltCnt * 2);
}
+ MVT placeholder_206783(MVT EltVT) const {
+ EltVT = EltVT.getScalarType();
+ return isVector() ? changeVectorElementType(EltVT) : EltVT;
+ }
+
// Return a VT for an Integer type doubled in size
MVT widenIntegerElementType() const {
- assert(isScalarInteger() && "Not an integer MVT!");
- assert((SimpleTy != MVT::LAST_INTEGER_VALUETYPE) &&
+ const MVT BaseTy = getScalarType();
+ assert(BaseTy.isInteger() &&
+ "Not an integer or vector of integer MVT!");
+ assert((BaseTy != MVT::LAST_INTEGER_VALUETYPE) &&
"Widening of this Integer type not supported !");
- unsigned NextSizeInBits = getScalarSizeInBits() * 2;
- return getIntegerVT(NextSizeInBits);
- }
+ MVT ResTy =
+ placeholder_206783(getIntegerVT(BaseTy.getScalarSizeInBits() * 2));
+ assert(ResTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
+ "Failed to widened to a valid MVT!");
- // Return a VT for an integer vector type with the size of the
- // elements doubled.
- MVT widenIntegerVectorElementType() const {
- assert(isVector() && "Not a vector MVT!");
-
- MVT WideEltTy = getVectorElementType().widenIntegerElementType();
- MVT VecTy = MVT::getVectorVT(WideEltTy, getVectorElementCount());
- assert(VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
- "Widening of this Vector Integer type not supported !");
- return VecTy;
+ return ResTy;
}
/// Returns true if the given vector is a power of 2.
diff --git a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
index c343465ae4c72..ea1c97cb639c4 100644
--- a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
+++ b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
@@ -194,4 +194,40 @@ TEST(ScalableVectorMVTsTest, SizeQueries) {
nxv2i32.getSizeInBits());
}
+TEST(ScalableVectorMVTsTest, WideningIntegerMVTs) {
+ MVT i1Ty = MVT::i1;
+ MVT i2Ty = MVT::i2;
+ MVT i4Ty = MVT::i4;
+ MVT i8Ty = MVT::i8;
+ MVT i16Ty = MVT::i16;
+ MVT i32Ty = MVT::i32;
+ MVT i64Ty = MVT::i64;
+ MVT i128Ty = MVT::i128;
+ MVT i256Ty = MVT::i256;
+ MVT i512Ty = MVT::i512;
+
+ EXPECT_EQ(i1Ty.widenIntegerElementType(), i2Ty);
+ EXPECT_EQ(i2Ty.widenIntegerElementType(), i4Ty);
+ EXPECT_EQ(i4Ty.widenIntegerElementType(), i8Ty);
+ EXPECT_EQ(i8Ty.widenIntegerElementType(), i16Ty);
+ EXPECT_EQ(i16Ty.widenIntegerElementType(), i32Ty);
+ EXPECT_EQ(i32Ty.widenIntegerElementType(), i64Ty);
+ EXPECT_EQ(i64Ty.widenIntegerElementType(), i128Ty);
+ EXPECT_EQ(i128Ty.widenIntegerElementType(), i256Ty);
+ EXPECT_EQ(i256Ty.widenIntegerElementType(), i512Ty);
+
+#if !defined(NDEBUG) && GTEST_HAS_DEATH_TEST
+ EXPECT_DEATH(i512Ty.widenIntegerElementType(),
+ "Widening of this Integer type not supported !");
+#endif
+
+ MVT v128i1Ty = MVT::v128i1;
+ MVT v128i2Ty = MVT::v128i2;
+ MVT v8i32Ty = MVT::v8i32;
+ MVT v8i64Ty = MVT::v8i64;
+
+ EXPECT_EQ(v128i1Ty.widenIntegerElementType(), v128i2Ty);
+ EXPECT_EQ(v8i32Ty.widenIntegerElementType(), v8i64Ty);
+}
+
} // end anonymous namespace
>From 6525374fa3d2a8edbd656e312278ef32d5fabc88 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Thu, 2 Jul 2026 01:56:52 +0530
Subject: [PATCH 08/12] Removed erronous testcase.
---
llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp | 6 ------
1 file changed, 6 deletions(-)
diff --git a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
index ea1c97cb639c4..032a9c74ba17a 100644
--- a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
+++ b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
@@ -216,11 +216,6 @@ TEST(ScalableVectorMVTsTest, WideningIntegerMVTs) {
EXPECT_EQ(i128Ty.widenIntegerElementType(), i256Ty);
EXPECT_EQ(i256Ty.widenIntegerElementType(), i512Ty);
-#if !defined(NDEBUG) && GTEST_HAS_DEATH_TEST
- EXPECT_DEATH(i512Ty.widenIntegerElementType(),
- "Widening of this Integer type not supported !");
-#endif
-
MVT v128i1Ty = MVT::v128i1;
MVT v128i2Ty = MVT::v128i2;
MVT v8i32Ty = MVT::v8i32;
@@ -229,5 +224,4 @@ TEST(ScalableVectorMVTsTest, WideningIntegerMVTs) {
EXPECT_EQ(v128i1Ty.widenIntegerElementType(), v128i2Ty);
EXPECT_EQ(v8i32Ty.widenIntegerElementType(), v8i64Ty);
}
-
} // end anonymous namespace
>From 83033b265fda0b36d4f47bd5427bddc69e3682b0 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Thu, 2 Jul 2026 14:55:02 +0530
Subject: [PATCH 09/12] [DAG] Adding MVT::widenIntegerElementType to widen both
Scalar and Vectors of integer type. e.g. i16 -> i32, v8i32->v8i64.
---
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index 5d5123195d730..a0dc40b520c0b 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -272,24 +272,17 @@ namespace llvm {
return MVT::getVectorVT(EltVT, EltCnt * 2);
}
- MVT placeholder_206783(MVT EltVT) const {
- EltVT = EltVT.getScalarType();
- return isVector() ? changeVectorElementType(EltVT) : EltVT;
- }
-
- // Return a VT for an Integer type doubled in size
+ // Return a VT for an Integer or vetor of integer type doubled in size
MVT widenIntegerElementType() const {
const MVT BaseTy = getScalarType();
- assert(BaseTy.isInteger() &&
- "Not an integer or vector of integer MVT!");
+ assert(BaseTy.isInteger() && "Not an integer or vector of integer MVT!");
assert((BaseTy != MVT::LAST_INTEGER_VALUETYPE) &&
"Widening of this Integer type not supported !");
MVT ResTy =
- placeholder_206783(getIntegerVT(BaseTy.getScalarSizeInBits() * 2));
+ changeElementType(getIntegerVT(BaseTy.getScalarSizeInBits() * 2));
assert(ResTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
"Failed to widened to a valid MVT!");
-
return ResTy;
}
>From 8537fdb5b363704f08ba41074e780a8e919bb028 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Sat, 4 Jul 2026 15:04:53 +0530
Subject: [PATCH 10/12] Replaces uses with widenIntegerElementType and making
requested changes.
---
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 2 +-
llvm/lib/Target/Hexagon/HexagonISelLowering.cpp | 11 ++++-------
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index a0dc40b520c0b..d24208d7c0432 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -274,7 +274,7 @@ namespace llvm {
// Return a VT for an Integer or vetor of integer type doubled in size
MVT widenIntegerElementType() const {
- const MVT BaseTy = getScalarType();
+ MVT BaseTy = getScalarType();
assert(BaseTy.isInteger() && "Not an integer or vector of integer MVT!");
assert((BaseTy != MVT::LAST_INTEGER_VALUETYPE) &&
"Widening of this Integer type not supported !");
diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
index 6b5e5ef1a3c81..dede9622fafe4 100644
--- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
@@ -1067,8 +1067,7 @@ SDValue HexagonTargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) const {
if (OpTy == MVT::v2i16 || OpTy == MVT::v4i8) {
MVT ElemTy = OpTy.getVectorElementType();
assert(ElemTy.isScalarInteger());
- MVT WideTy = MVT::getVectorVT(MVT::getIntegerVT(2*ElemTy.getSizeInBits()),
- OpTy.getVectorNumElements());
+ MVT WideTy = OpTy.widenIntegerElementType();
return DAG.getSetCC(dl, ResTy,
DAG.getSExtOrTrunc(LHS, SDLoc(LHS), WideTy),
DAG.getSExtOrTrunc(RHS, SDLoc(RHS), WideTy), CC);
@@ -1125,8 +1124,7 @@ HexagonTargetLowering::LowerVSELECT(SDValue Op, SelectionDAG &DAG) const {
if (OpTy == MVT::v2i16 || OpTy == MVT::v4i8) {
MVT ElemTy = OpTy.getVectorElementType();
assert(ElemTy.isScalarInteger());
- MVT WideTy = MVT::getVectorVT(MVT::getIntegerVT(2*ElemTy.getSizeInBits()),
- OpTy.getVectorNumElements());
+ MVT WideTy = OpTy.widenIntegerElementType();
// Generate (trunc (select (_, sext, sext))).
return DAG.getSExtOrTrunc(
DAG.getSelect(dl, WideTy, PredOp,
@@ -2856,16 +2854,15 @@ HexagonTargetLowering::getCombine(SDValue Hi, SDValue Lo, const SDLoc &dl,
if (!ElemTy.isVector()) {
assert(ElemTy.isScalarInteger());
- MVT PairTy = MVT::getIntegerVT(2 * ElemTy.getSizeInBits());
+ MVT PairTy = ElemTy.widenIntegerElementType();
SDValue Pair = DAG.getNode(ISD::BUILD_PAIR, dl, PairTy, Lo, Hi);
return DAG.getBitcast(ResTy, Pair);
}
unsigned Width = ElemTy.getSizeInBits();
MVT IntTy = MVT::getIntegerVT(Width);
- MVT PairTy = MVT::getIntegerVT(2 * Width);
SDValue Pair =
- DAG.getNode(ISD::BUILD_PAIR, dl, PairTy,
+ DAG.getNode(ISD::BUILD_PAIR, dl, IntTy.widenIntegerElementType(),
{DAG.getBitcast(IntTy, Lo), DAG.getBitcast(IntTy, Hi)});
return DAG.getBitcast(ResTy, Pair);
}
>From 550611413444aaf541f85198d46580c1102c142a Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Tue, 7 Jul 2026 15:15:57 +0530
Subject: [PATCH 11/12] code refactoring. adding one more assert.
---
llvm/include/llvm/CodeGenTypes/MachineValueType.h | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/llvm/include/llvm/CodeGenTypes/MachineValueType.h b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
index d24208d7c0432..7be67958cfdf9 100644
--- a/llvm/include/llvm/CodeGenTypes/MachineValueType.h
+++ b/llvm/include/llvm/CodeGenTypes/MachineValueType.h
@@ -278,11 +278,12 @@ namespace llvm {
assert(BaseTy.isInteger() && "Not an integer or vector of integer MVT!");
assert((BaseTy != MVT::LAST_INTEGER_VALUETYPE) &&
"Widening of this Integer type not supported !");
-
- MVT ResTy =
- changeElementType(getIntegerVT(BaseTy.getScalarSizeInBits() * 2));
- assert(ResTy != MVT::INVALID_SIMPLE_VALUE_TYPE &&
- "Failed to widened to a valid MVT!");
+ MVT SclTy = getIntegerVT(BaseTy.getScalarSizeInBits() * 2);
+ assert((SclTy != MVT::INVALID_SIMPLE_VALUE_TYPE) &&
+ "Failed to widen to a valid scalar MVT!");
+ MVT ResTy = changeElementType(SclTy);
+ assert((ResTy != MVT::INVALID_SIMPLE_VALUE_TYPE) &&
+ "Failed to widen to a valid vector MVT!");
return ResTy;
}
>From 2fe0844b3ad82e2067082635b20b09fce58e5a29 Mon Sep 17 00:00:00 2001
From: chirag <chirag198838 at gmail.com>
Date: Wed, 8 Jul 2026 02:12:42 +0530
Subject: [PATCH 12/12] removing unittest testcase.
---
.../CodeGen/ScalableVectorMVTsTest.cpp | 30 -------------------
1 file changed, 30 deletions(-)
diff --git a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
index 032a9c74ba17a..c343465ae4c72 100644
--- a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
+++ b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
@@ -194,34 +194,4 @@ TEST(ScalableVectorMVTsTest, SizeQueries) {
nxv2i32.getSizeInBits());
}
-TEST(ScalableVectorMVTsTest, WideningIntegerMVTs) {
- MVT i1Ty = MVT::i1;
- MVT i2Ty = MVT::i2;
- MVT i4Ty = MVT::i4;
- MVT i8Ty = MVT::i8;
- MVT i16Ty = MVT::i16;
- MVT i32Ty = MVT::i32;
- MVT i64Ty = MVT::i64;
- MVT i128Ty = MVT::i128;
- MVT i256Ty = MVT::i256;
- MVT i512Ty = MVT::i512;
-
- EXPECT_EQ(i1Ty.widenIntegerElementType(), i2Ty);
- EXPECT_EQ(i2Ty.widenIntegerElementType(), i4Ty);
- EXPECT_EQ(i4Ty.widenIntegerElementType(), i8Ty);
- EXPECT_EQ(i8Ty.widenIntegerElementType(), i16Ty);
- EXPECT_EQ(i16Ty.widenIntegerElementType(), i32Ty);
- EXPECT_EQ(i32Ty.widenIntegerElementType(), i64Ty);
- EXPECT_EQ(i64Ty.widenIntegerElementType(), i128Ty);
- EXPECT_EQ(i128Ty.widenIntegerElementType(), i256Ty);
- EXPECT_EQ(i256Ty.widenIntegerElementType(), i512Ty);
-
- MVT v128i1Ty = MVT::v128i1;
- MVT v128i2Ty = MVT::v128i2;
- MVT v8i32Ty = MVT::v8i32;
- MVT v8i64Ty = MVT::v8i64;
-
- EXPECT_EQ(v128i1Ty.widenIntegerElementType(), v128i2Ty);
- EXPECT_EQ(v8i32Ty.widenIntegerElementType(), v8i64Ty);
-}
} // end anonymous namespace
More information about the llvm-commits
mailing list