[clang] [CIR][AArch64] Complete upstream vector saturating shift left NEON builtins (PR #221507)

Vicky Nguyen via cfe-commits cfe-commits at lists.llvm.org
Sat Sep 12 22:39:57 PDT 2026


================
@@ -46,12 +46,18 @@ enum {
   // the intrinsic's .td.
   ArgAsWidenedRetType = (1 << 9),
 
+  // The immediate operand is `LLVMMatchType<0>` in the intrinsic
+  // definition, so it is vectorized like a data operand (e.g. the `_n_`
+  // scalar saturating shifts: vqshlb_n_s8, vqshlub_n_s8, ...).
+  // ClangIR-only; classic code-gen derives this from the intrinsic's .td.
+  VectorizeImmArg = (1 << 10),
+
   Vectorize1ArgType = Add1ArgType | VectorizeArgTypes,
   VectorRet = AddRetType | VectorizeRetType,
-  VectorRetGetArgs01 =
-      AddRetType | Add2ArgTypes | VectorizeRetType | VectorizeArgTypes,
-  FpCmpzModifiers =
-      AddRetType | VectorizeRetType | Add1ArgType | InventFloatType
+  VectorRetGetArgs01 = AddRetType | Add2ArgTypes | VectorizeRetType |
+      VectorizeArgTypes,
+  FpCmpzModifiers = AddRetType | VectorizeRetType | Add1ArgType |
+      InventFloatType
----------------
iamvickynguyen wrote:

Note: adding `VectorizeImmArg` above triggered clang-format v23 to reformat these.

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


More information about the cfe-commits mailing list