[clang] [CIR][AArch64] Lower NEON vrsra_n intrinsics (PR #191129)

Andrzej WarzyƄski via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 9 04:08:17 PDT 2026


================
@@ -2544,8 +2560,27 @@ CIRGenFunction::emitAArch64BuiltinExpr(unsigned builtinID, const CallExpr *expr,
   case NEON::BI__builtin_neon_vsliq_n_v:
   case NEON::BI__builtin_neon_vsra_n_v:
   case NEON::BI__builtin_neon_vsraq_n_v:
+    cgm.errorNYI(expr->getSourceRange(),
+                 std::string("unimplemented AArch64 builtin call: ") +
+                     getContext().BuiltinInfo.getName(builtinID));
+    return mlir::Value{};
   case NEON::BI__builtin_neon_vrsra_n_v:
-  case NEON::BI__builtin_neon_vrsraq_n_v:
+  case NEON::BI__builtin_neon_vrsraq_n_v: {
----------------
banach-space wrote:

In the implementation in the incubator, https://github.com/llvm/clangir/blob/main/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp#L4857

there are some useful comments regarding the implementation (e.g. "why is the shift amount negated"? "why do use use signed integers?"). Could you provide similar explanation?

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


More information about the cfe-commits mailing list