[clang] [Headers][X86] Allow SLLDQ/SRLDQ byte shift intrinsics to be used in constexpr (PR #164166)

Simon Pilgrim via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 22 03:54:45 PDT 2025


================
@@ -12790,6 +12790,64 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
 
     return Success(APValue(Elems.data(), NumElems), E);
   }
+
+  case X86::BI__builtin_ia32_pslldqi128_byteshift:
+  case X86::BI__builtin_ia32_pslldqi256_byteshift: {
+    assert(E->getNumArgs() == 2);
+
+    APValue Src;
+    APSInt Imm;
+    if (!EvaluateAsRValue(Info, E->getArg(0), Src) ||
+        !EvaluateInteger(E->getArg(1), Imm, Info))
+      return false;
+
+    unsigned VecLen = Src.getVectorLength();
+    unsigned Shift = Imm.getZExtValue();
----------------
RKSimon wrote:

```suggestion
    unsigned Shift = Imm.getZExtValue() & 0xff;
```

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


More information about the cfe-commits mailing list