[llvm] Clean vector clamps in X86 GlobalISel. (PR #182664)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 21 12:37:14 PST 2026


https://github.com/RKSimon updated https://github.com/llvm/llvm-project/pull/182664

>From f804f141f6a206621575a6bf298f538542d2808c Mon Sep 17 00:00:00 2001
From: Yohay Ailon Tevet <yohay.ailon.tevet at gmail.com>
Date: Sat, 21 Feb 2026 02:23:08 +0200
Subject: [PATCH] Clean vector clamps in X86 GISEL.

---
 .../lib/Target/X86/GISel/X86LegalizerInfo.cpp | 24 +++++++------------
 1 file changed, 8 insertions(+), 16 deletions(-)

diff --git a/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp
index fff9edb63b8ae..41496937f61b1 100644
--- a/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp
+++ b/llvm/lib/Target/X86/GISel/X86LegalizerInfo.cpp
@@ -100,14 +100,10 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
       .widenScalarOrEltToNextPow2(0, /*Min=*/8)
       .clampScalarOrElt(0, s8, sMaxScalar)
       .moreElementsToNextPow2(0)
-      .clampMinNumElements(0, s8, 16)
-      .clampMinNumElements(0, s16, 8)
-      .clampMinNumElements(0, s32, 4)
-      .clampMinNumElements(0, s64, 2)
-      .clampMaxNumElements(0, s8, HasAVX512 ? 64 : (HasAVX ? 32 : 16))
-      .clampMaxNumElements(0, s16, HasAVX512 ? 32 : (HasAVX ? 16 : 8))
-      .clampMaxNumElements(0, s32, HasAVX512 ? 16 : (HasAVX ? 8 : 4))
-      .clampMaxNumElements(0, s64, HasAVX512 ? 8 : (HasAVX ? 4 : 2))
+      .clampNumElements(0, v16s8, s8MaxVector)
+      .clampNumElements(0, v8s16, s16MaxVector)
+      .clampNumElements(0, v4s32, s32MaxVector)
+      .clampNumElements(0, v2s64, s64MaxVector)
       .clampMaxNumElements(0, p0,
                            Is64Bit ? s64MaxVector.getNumElements()
                                    : s32MaxVector.getNumElements())
@@ -256,14 +252,10 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
       .legalFor(HasSSE2, {v16s8, v8s16, v4s32, v2s64})
       .legalFor(HasAVX, {v32s8, v16s16, v8s32, v4s64})
       .legalFor(HasAVX512, {v64s8, v32s16, v16s32, v8s64})
-      .clampMinNumElements(0, s8, 16)
-      .clampMinNumElements(0, s16, 8)
-      .clampMinNumElements(0, s32, 4)
-      .clampMinNumElements(0, s64, 2)
-      .clampMaxNumElements(0, s8, HasAVX512 ? 64 : (HasAVX ? 32 : 16))
-      .clampMaxNumElements(0, s16, HasAVX512 ? 32 : (HasAVX ? 16 : 8))
-      .clampMaxNumElements(0, s32, HasAVX512 ? 16 : (HasAVX ? 8 : 4))
-      .clampMaxNumElements(0, s64, HasAVX512 ? 8 : (HasAVX ? 4 : 2))
+      .clampNumElements(0, v16s8, s8MaxVector)
+      .clampNumElements(0, v8s16, s16MaxVector)
+      .clampNumElements(0, v4s32, s32MaxVector)
+      .clampNumElements(0, v2s64, s64MaxVector)
       .widenScalarToNextPow2(0, /*Min=*/32)
       .clampScalar(0, s8, sMaxScalar)
       .scalarize(0);



More information about the llvm-commits mailing list