https://github.com/RKSimon created 
https://github.com/llvm/llvm-project/pull/205112

After some bikeshedding in #200570 - we decided on the terms pdep/pext

>From 365cb2a30672ee126706e3f659804038d0962ea7 Mon Sep 17 00:00:00 2001
From: Simon Pilgrim <[email protected]>
Date: Mon, 22 Jun 2026 15:08:17 +0100
Subject: [PATCH] [APInt] Consistently use the terms pdep/pext instead of
 expandBits/compressBits

After some bikeshedding in #200570 - we decide on the terms pdep/pext
---
 clang/lib/AST/ByteCode/InterpBuiltin.cpp      |  4 +-
 clang/lib/AST/ExprConstant.cpp                |  8 +--
 llvm/include/llvm/ADT/APInt.h                 | 12 ++--
 llvm/lib/Analysis/ConstantFolding.cpp         |  4 +-
 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |  4 +-
 .../lib/CodeGen/SelectionDAG/SelectionDAG.cpp |  4 +-
 llvm/lib/Support/APInt.cpp                    |  4 +-
 llvm/unittests/ADT/APIntTest.cpp              | 61 +++++++------------
 llvm/unittests/Support/KnownBitsTest.cpp      |  4 +-
 9 files changed, 45 insertions(+), 60 deletions(-)

diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp 
b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
index ab94bb96829ac..470ad9c338fb9 100644
--- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp
+++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
@@ -5178,13 +5178,13 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, 
const CallExpr *Call,
   case clang::X86::BI__builtin_ia32_pdep_di:
   case Builtin::BI__builtin_elementwise_pdep:
     return interp__builtin_elementwise_int_binop(S, OpPC, Call,
-                                                 llvm::APIntOps::expandBits);
+                                                 llvm::APIntOps::pdep);
 
   case clang::X86::BI__builtin_ia32_pext_si:
   case clang::X86::BI__builtin_ia32_pext_di:
   case Builtin::BI__builtin_elementwise_pext:
     return interp__builtin_elementwise_int_binop(S, OpPC, Call,
-                                                 llvm::APIntOps::compressBits);
+                                                 llvm::APIntOps::pext);
 
   case clang::X86::BI__builtin_ia32_addcarryx_u32:
   case clang::X86::BI__builtin_ia32_addcarryx_u64:
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index 220a7a22c6992..de2bbdfc88fe4 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -14163,9 +14163,9 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr 
*E) {
   case Builtin::BI__builtin_elementwise_clmul:
     return EvaluateBinOpExpr(llvm::APIntOps::clmul);
   case Builtin::BI__builtin_elementwise_pext:
-    return EvaluateBinOpExpr(llvm::APIntOps::compressBits);
+    return EvaluateBinOpExpr(llvm::APIntOps::pext);
   case Builtin::BI__builtin_elementwise_pdep:
-    return EvaluateBinOpExpr(llvm::APIntOps::expandBits);
+    return EvaluateBinOpExpr(llvm::APIntOps::pdep);
   case Builtin::BI__builtin_elementwise_fshl:
   case Builtin::BI__builtin_elementwise_fshr: {
     APValue SourceHi, SourceLo, SourceShift;
@@ -17986,7 +17986,7 @@ bool IntExprEvaluator::VisitBuiltinCallExpr(const 
CallExpr *E,
     if (!EvaluateInteger(E->getArg(0), Val, Info) ||
         !EvaluateInteger(E->getArg(1), Msk, Info))
       return false;
-    return Success(llvm::APIntOps::expandBits(Val, Msk), E);
+    return Success(llvm::APIntOps::pdep(Val, Msk), E);
   }
 
   case clang::X86::BI__builtin_ia32_pext_si:
@@ -17996,7 +17996,7 @@ bool IntExprEvaluator::VisitBuiltinCallExpr(const 
CallExpr *E,
     if (!EvaluateInteger(E->getArg(0), Val, Info) ||
         !EvaluateInteger(E->getArg(1), Msk, Info))
       return false;
-    return Success(llvm::APIntOps::compressBits(Val, Msk), E);
+    return Success(llvm::APIntOps::pext(Val, Msk), E);
   }
   case X86::BI__builtin_ia32_ptestz128:
   case X86::BI__builtin_ia32_ptestz256:
diff --git a/llvm/include/llvm/ADT/APInt.h b/llvm/include/llvm/ADT/APInt.h
index 99eb758cc7a6f..026efbe866a93 100644
--- a/llvm/include/llvm/ADT/APInt.h
+++ b/llvm/include/llvm/ADT/APInt.h
@@ -2495,9 +2495,9 @@ LLVM_ABI APInt clmulh(const APInt &LHS, const APInt &RHS);
 /// and packs them contiguously into the least significant bits of the result.
 ///
 /// Examples:
-/// (1) compressBits(i8 0b1010'1010, i8 0b1100'1100) = 0b0000'1010
-/// (2) compressBits(i8 0b1111'1111, i8 0b1010'1010) = 0b0000'1111
-LLVM_ABI APInt compressBits(const APInt &Val, const APInt &Mask);
+/// (1) pext(i8 0b1010'1010, i8 0b1100'1100) = 0b0000'1010
+/// (2) pext(i8 0b1111'1111, i8 0b1010'1010) = 0b0000'1111
+LLVM_ABI APInt pext(const APInt &Val, const APInt &Mask);
 
 /// Perform an "expand" operation, also known as pdep or bdep.
 ///
@@ -2505,9 +2505,9 @@ LLVM_ABI APInt compressBits(const APInt &Val, const APInt 
&Mask);
 /// has a 1-bit, and zeros the remaining bits.
 ///
 /// Examples:
-/// (1) expandBits(i8 0b0000'1010, i8 0b1100'1100) = 0b1000'1000
-/// (2) expandBits(i8 0b0000'1111, i8 0b1010'1010) = 0b1010'1010
-LLVM_ABI APInt expandBits(const APInt &Val, const APInt &Mask);
+/// (1) pdep(i8 0b0000'1010, i8 0b1100'1100) = 0b1000'1000
+/// (2) pdep(i8 0b0000'1111, i8 0b1010'1010) = 0b1010'1010
+LLVM_ABI APInt pdep(const APInt &Val, const APInt &Mask);
 
 } // namespace APIntOps
 
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp 
b/llvm/lib/Analysis/ConstantFolding.cpp
index c7210b2e0c2d1..dfbb9f8809017 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -3911,11 +3911,11 @@ static Constant 
*ConstantFoldIntrinsicCall2(Intrinsic::ID IntrinsicID, Type *Ty,
     case Intrinsic::pdep:
       if (!C0 || !C1)
         return Constant::getNullValue(Ty);
-      return ConstantInt::get(Ty, APIntOps::expandBits(*C0, *C1));
+      return ConstantInt::get(Ty, APIntOps::pdep(*C0, *C1));
     case Intrinsic::pext:
       if (!C0 || !C1)
         return Constant::getNullValue(Ty);
-      return ConstantInt::get(Ty, APIntOps::compressBits(*C0, *C1));
+      return ConstantInt::get(Ty, APIntOps::pext(*C0, *C1));
     case Intrinsic::amdgcn_wave_reduce_umin:
     case Intrinsic::amdgcn_wave_reduce_umax:
     case Intrinsic::amdgcn_wave_reduce_max:
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp 
b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 4fdef7d4afb5d..2bfe0cdd85433 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -12230,7 +12230,7 @@ SDValue DAGCombiner::visitPEXT(SDNode *N) {
   // pext(x, -1) -> x  (all bits selected, packed into low positions = x)
   if (isAllOnesOrAllOnesSplat(N1))
     return N0;
-  // fold pext(c1, c2) -> compressBits(c1, c2)
+  // fold pext(c1, c2) -> c3
   if (SDValue C = DAG.FoldConstantArithmetic(ISD::PEXT, DL, VT, {N0, N1}))
     return C;
   return SDValue();
@@ -12250,7 +12250,7 @@ SDValue DAGCombiner::visitPDEP(SDNode *N) {
   if (isAllOnesOrAllOnesSplat(N1))
     return N0;
 
-  // fold pdep(c1, c2) -> expandBits(c1, c2)
+  // fold pdep(c1, c2) -> c3
   if (SDValue C = DAG.FoldConstantArithmetic(ISD::PDEP, DL, VT, {N0, N1}))
     return C;
 
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp 
b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 76556531ada42..3c9000da9f0ae 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -7526,9 +7526,9 @@ static std::optional<APInt> FoldValue(unsigned Opcode, 
const APInt &C1,
   case ISD::CLMULH:
     return APIntOps::clmulh(C1, C2);
   case ISD::PEXT:
-    return APIntOps::compressBits(C1, C2);
+    return APIntOps::pext(C1, C2);
   case ISD::PDEP:
-    return APIntOps::expandBits(C1, C2);
+    return APIntOps::pdep(C1, C2);
   }
   return std::nullopt;
 }
diff --git a/llvm/lib/Support/APInt.cpp b/llvm/lib/Support/APInt.cpp
index 221d642ae8539..c5766a2613e0c 100644
--- a/llvm/lib/Support/APInt.cpp
+++ b/llvm/lib/Support/APInt.cpp
@@ -3239,7 +3239,7 @@ APInt llvm::APIntOps::clmulh(const APInt &LHS, const 
APInt &RHS) {
   return clmulr(LHS, RHS).lshr(1);
 }
 
-APInt llvm::APIntOps::compressBits(const APInt &Val, const APInt &Mask) {
+APInt llvm::APIntOps::pext(const APInt &Val, const APInt &Mask) {
   unsigned BW = Val.getBitWidth();
   assert(BW == Mask.getBitWidth() && "Operand mismatch");
   APInt Result = APInt::getZero(BW);
@@ -3249,7 +3249,7 @@ APInt llvm::APIntOps::compressBits(const APInt &Val, 
const APInt &Mask) {
   return Result;
 }
 
-APInt llvm::APIntOps::expandBits(const APInt &Val, const APInt &Mask) {
+APInt llvm::APIntOps::pdep(const APInt &Val, const APInt &Mask) {
   unsigned BW = Val.getBitWidth();
   assert(BW == Mask.getBitWidth() && "Operand mismatch");
   APInt Result = APInt::getZero(BW);
diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp
index 39005969c5bad..0eea32480d0bf 100644
--- a/llvm/unittests/ADT/APIntTest.cpp
+++ b/llvm/unittests/ADT/APIntTest.cpp
@@ -4032,53 +4032,38 @@ TEST(APIntTest, sqrtFloor) {
   }
 }
 
-TEST(APIntTest, compressBits) {
-  EXPECT_EQ(APIntOps::compressBits(APInt(8, 0), APInt(8, 
0xAAU)).getZExtValue(),
+TEST(APIntTest, pext) {
+  EXPECT_EQ(APIntOps::pext(APInt(8, 0), APInt(8, 0xAAU)).getZExtValue(), 0U);
+  EXPECT_EQ(APIntOps::pext(APInt(8, 0x55U), APInt(8, 0xAAU)).getZExtValue(),
             0U);
-  EXPECT_EQ(
-      APIntOps::compressBits(APInt(8, 0x55U), APInt(8, 0xAAU)).getZExtValue(),
-      0U);
-  EXPECT_EQ(
-      APIntOps::compressBits(APInt(8, 0xAAU), APInt(8, 0xAAU)).getZExtValue(),
-      15U);
-  EXPECT_EQ(
-      APIntOps::compressBits(APInt(8, 0xFFU), APInt(8, 0xAAU)).getZExtValue(),
-      15U);
-  EXPECT_EQ(APIntOps::compressBits(APInt(8, 0xFFU), APInt(8, 
0)).getZExtValue(),
-            0U);
-  EXPECT_EQ(
-      APIntOps::compressBits(APInt(4, 0xFU), APInt(4, 0xAU)).getZExtValue(),
-      3U);
-  EXPECT_EQ(
-      APIntOps::compressBits(APInt(4, 0xAU), APInt(4, 0xAU)).getZExtValue(),
-      3U);
-  EXPECT_EQ(
-      APIntOps::compressBits(APInt(4, 0x5U), APInt(4, 0xAU)).getZExtValue(),
-      0U);
-}
-
-TEST(APIntTest, expandBits) {
-  EXPECT_EQ(APIntOps::expandBits(APInt(8, 0), APInt(8, 0xAAU)).getZExtValue(),
-            0U);
-  EXPECT_EQ(APIntOps::expandBits(APInt(8, 15U), APInt(8, 
0xAAU)).getZExtValue(),
+  EXPECT_EQ(APIntOps::pext(APInt(8, 0xAAU), APInt(8, 0xAAU)).getZExtValue(),
+            15U);
+  EXPECT_EQ(APIntOps::pext(APInt(8, 0xFFU), APInt(8, 0xAAU)).getZExtValue(),
+            15U);
+  EXPECT_EQ(APIntOps::pext(APInt(8, 0xFFU), APInt(8, 0)).getZExtValue(), 0U);
+  EXPECT_EQ(APIntOps::pext(APInt(4, 0xFU), APInt(4, 0xAU)).getZExtValue(), 3U);
+  EXPECT_EQ(APIntOps::pext(APInt(4, 0xAU), APInt(4, 0xAU)).getZExtValue(), 3U);
+  EXPECT_EQ(APIntOps::pext(APInt(4, 0x5U), APInt(4, 0xAU)).getZExtValue(), 0U);
+}
+
+TEST(APIntTest, pdep) {
+  EXPECT_EQ(APIntOps::pdep(APInt(8, 0), APInt(8, 0xAAU)).getZExtValue(), 0U);
+  EXPECT_EQ(APIntOps::pdep(APInt(8, 15U), APInt(8, 0xAAU)).getZExtValue(),
             0xAAU);
-  EXPECT_EQ(APIntOps::expandBits(APInt(8, 0xFFU), APInt(8, 0)).getZExtValue(),
-            0U);
-  EXPECT_EQ(APIntOps::expandBits(APInt(4, 3U), APInt(4, 0xAU)).getZExtValue(),
-            0xAU);
-  EXPECT_EQ(APIntOps::expandBits(APInt(4, 1U), APInt(4, 0xAU)).getZExtValue(),
-            2U);
+  EXPECT_EQ(APIntOps::pdep(APInt(8, 0xFFU), APInt(8, 0)).getZExtValue(), 0U);
+  EXPECT_EQ(APIntOps::pdep(APInt(4, 3U), APInt(4, 0xAU)).getZExtValue(), 0xAU);
+  EXPECT_EQ(APIntOps::pdep(APInt(4, 1U), APInt(4, 0xAU)).getZExtValue(), 2U);
   APInt X(8, 0b10110100U);
   APInt M(8, 0b11001110U);
-  EXPECT_EQ(APIntOps::expandBits(APIntOps::compressBits(X, M), M), X & M);
+  EXPECT_EQ(APIntOps::pdep(APIntOps::pext(X, M), M), X & M);
 }
 
-TEST(APIntTest, compressExpandBitsExhaustive) {
+TEST(APIntTest, pext_pdep_exhaustive) {
   for (unsigned V = 0; V < 256; ++V) {
     for (unsigned Mask = 0; Mask < 256; ++Mask) {
       APInt Val(8, V), APMask(8, Mask);
-      APInt Compressed = APIntOps::compressBits(Val, APMask);
-      APInt RoundTrip = APIntOps::expandBits(Compressed, APMask);
+      APInt Compressed = APIntOps::pext(Val, APMask);
+      APInt RoundTrip = APIntOps::pdep(Compressed, APMask);
       EXPECT_EQ(RoundTrip, Val & APMask);
     }
   }
diff --git a/llvm/unittests/Support/KnownBitsTest.cpp 
b/llvm/unittests/Support/KnownBitsTest.cpp
index f6f5505c67e68..d4b8dff54f3d6 100644
--- a/llvm/unittests/Support/KnownBitsTest.cpp
+++ b/llvm/unittests/Support/KnownBitsTest.cpp
@@ -654,8 +654,8 @@ TEST(KnownBitsTest, BinaryExhaustive) {
   testBinaryOpExhaustive("avgCeilS", KnownBits::avgCeilS, APIntOps::avgCeilS);
 
   testBinaryOpExhaustive("clmul", KnownBits::clmul, APIntOps::clmul);
-  testBinaryOpExhaustive("pext", KnownBits::pext, APIntOps::compressBits);
-  testBinaryOpExhaustive("pdep", KnownBits::pdep, APIntOps::expandBits);
+  testBinaryOpExhaustive("pext", KnownBits::pext, APIntOps::pext);
+  testBinaryOpExhaustive("pdep", KnownBits::pdep, APIntOps::pdep);
 }
 
 TEST(KnownBitsTest, UnaryExhaustive) {

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to