[llvm] [AMDGPU] Add folding ISD::SELECT from vXiY into vZi32 with X * Y = Z * 32 (PR #173328)

Juan Manuel Martinez CaamaƱo via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 9 03:23:38 PDT 2026


================
@@ -59,6 +59,28 @@ EVT EVT::getExtendedVectorVT(LLVMContext &Context, EVT VT, ElementCount EC) {
   return ResultVT;
 }
 
+EVT EVT::getIntegerVectorWithElementWidth(LLVMContext &Context,
+                                          unsigned NewEltWidth) const {
+  if (!isVector() || !isInteger())
+    return EVT();
+
+  unsigned TotalBits = getVectorMinNumElements() * getScalarSizeInBits();
+  if (TotalBits % NewEltWidth != 0 || NewEltWidth > TotalBits)
+    return EVT();
+
+  unsigned NewNumElements = TotalBits / NewEltWidth;
+  EVT NewEltVT = EVT::getIntegerVT(Context, NewEltWidth);
+
+  if (NewNumElements == 1)
----------------
jmmartinez wrote:

What if it is scalable? This only applies for non scalable vectors.

https://github.com/llvm/llvm-project/pull/173328


More information about the llvm-commits mailing list