llvm-project
adcd0b73 - [CIR][AArch64] Lower NEON vfms builtins (#207022)

Commit
23 days ago
[CIR][AArch64] Lower NEON vfms builtins (#207022) Lower additional AArch64 NEON fused multiply-subtract builtins in CIR. This covers the ACLE wrappers from section 2.1.1.2.5: - vfms_f32, vfms_f64, vfmsq_f32, vfmsq_f64 - vfms_lane_f32, vfms_lane_f64, vfmsq_lane_f32, vfmsq_lane_f64 - vfms_laneq_f32, vfms_laneq_f64, vfmsq_laneq_f32, vfmsq_laneq_f64 - vfmss_lane_f32, vfmss_laneq_f32 - vfmsd_lane_f64, vfmsd_laneq_f64 The lowering reuses the existing FMA paths by negating the multiply operand before emitting llvm.fma. Vector lane forms splat the selected lane, while scalar lane/laneq forms extract the selected element before the FMA. Move the existing ACLE coverage into clang/test/CodeGen/AArch64/neon/fused-multiply.c and add direct LLVM, CIR-to-LLVM, and CIR checks. The replaced old-style checks are removed from the legacy test files. Part of #185382
Parents
Loading