[clang] [CIR][AArch64] Lower vfmaq_v f32/f64 (PR #195602)

Yair Ben Avraham via cfe-commits cfe-commits at lists.llvm.org
Thu May 7 08:04:19 PDT 2026


================
@@ -2092,6 +2106,13 @@ CIRGenFunction::emitAArch64BuiltinExpr(unsigned builtinID, const CallExpr *expr,
     return mlir::Value{};
   }
 
+  if (builtinID == NEON::BI__builtin_neon_vfmaq_f16) {
+    cgm.errorNYI(expr->getSourceRange(),
+                 std::string("unimplemented AArch64 builtin call: ") +
+                     getContext().BuiltinInfo.getName(builtinID));
+    return mlir::Value{};
+  }
+
----------------
yairbenavraham wrote:

If I understand correctly, this guard is needed because, again, if I understand correctly, vfmaq_f16 is remapped by neonEquivalentIntrinsicMap to the same canonical BI__builtin_neon_vfmaq_v path as the f32/f64 wrappers. Since this patch only implements and adds CIR coverage for vfmaq_f32 and vfmaq_f64, the guard prevents f16 from being enabled accidentally without CIR tests. I added the guard to preserve that scope boundary, but I’m wondering whether I need to have this PR vfmaq_f32 and vfmaq_f64 only (and then to remove the guard) or keep it vfmaq_f32 and vfmaq_f64 but also make sure the vfmaq_f16 case is guarded till it will be implemented.

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


More information about the cfe-commits mailing list