[clang] [Clang][AArch64] Lower NEON fcvtz{u/s} intrinsics into fpto{u/s}i.sat (PR #191365)

Valeriy Savchenko via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 17 03:30:43 PDT 2026


================
@@ -1384,6 +1384,12 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr(
   case NEON::BI__builtin_neon_vcvtq_s16_f16:
   case NEON::BI__builtin_neon_vcvtq_u16_f16: {
     Ops[0] = Builder.CreateBitCast(Ops[0], GetFloatNeonType(this, Type));
+    // AArch64 uses saturating FP-to-int intrinsics; ARM uses plain
+    // fptoui/fptosi.
----------------
SavchenkoValeriy wrote:

That's a really good question and from my perspective, it looks wrong that we lower ARM intrinsics into non-saturating casts. I can create a separate PR that drops this because this change in behavior doesn't really fit in this PR. WDYT?

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


More information about the cfe-commits mailing list