[clang] [Clang][CIR] Add vqshlud and vqshld AArch64 builtins (PR #190728)

Andy Kaylor via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 7 12:02:16 PDT 2026


================
@@ -2177,9 +2177,28 @@ CIRGenFunction::emitAArch64BuiltinExpr(unsigned builtinID, const CallExpr *expr,
   case NEON::BI__builtin_neon_vsubd_u64:
   case NEON::BI__builtin_neon_vqdmlalh_s16:
   case NEON::BI__builtin_neon_vqdmlslh_s16:
-  case NEON::BI__builtin_neon_vqshlud_n_s64:
+  case NEON::BI__builtin_neon_vqshlud_n_s64: {
+    cir::IntType intType = builder.getSInt64Ty();
+    std::optional<llvm::APSInt> amt =
+        expr->getArg(1)->getIntegerConstantExpr(getContext());
+    assert(amt && "Expected argument to be a constant");
+    ops[1] = builder.getSInt64(amt->getZExtValue(), loc);
----------------
andykaylor wrote:

Shouldn't this already have been handled as an iceArgument? I would expect that ops[1] is already a constant here, and we just need to extend it to i64, which can be done with `getZExtIntValueFromConstOp`.

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


More information about the cfe-commits mailing list