[clang] [CIR][AArch64] Lower vfma and scalar FMA lane builtins (PR #204819)
Yair Ben Avraham via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 28 08:52:11 PDT 2026
yairbenavraham wrote:
> LGTM, thank you!
>
> I've left one nit :) Thank you for the additional clean-up (e.g. in `getNeonType`) and for sending your changes in separate (and well documented) commits. Neatly done!
>
> Is there anything left?
The count depends on whether we mean the issue row's 'Common prefix' scope: 'vfma_*' or the broader local ACLE fused-multiply-accumulate section*s* e.g. 2.6.1.9.3 and not just the one (2.1.1.2.5) linked in the 'Intrinsic Group'.
Counting updated main together with this PR, the two fused files:
- clang/test/CodeGen/AArch64/neon/fused-multiply.c: (19 test functions)
- clang/test/CodeGen/AArch64/neon/fused-multiple-fullfp16.c: (8 test functions)
cover 24 unique ACLE wrappers, via 27 test functions.
The difference between 24 wrappers and 27 test functions is from three intentional lane-boundary tests that exercise already-covered wrappers with lane 0:
- test_vfma_laneq_f32_0 -> vfma_laneq_f32
- test_vfmaq_laneq_f32_0 -> vfmaq_laneq_f32
- test_vfmaq_laneq_f64_0 -> vfmaq_laneq_f64
There are also two existing scalar FP16 tests already covered in clang/test/CodeGen/AArch64/neon/fullfp16.c:
- vfmah_f16
- vfmsh_f16
So across all clang/test/CodeGen/AArch64/neon/, counting updated main plus this PR, we have 26 unique related ACLE wrappers, covered by 29 test functions.
Across the broader local ACLE fused-multiply-accumulate sections there are 86 intrinsic rows. Of those, 24 unique wrappers are covered by the two fused files, and vfmah_f16 and vfmsh_f16 are covered elsewhere under clang/test/CodeGen/AArch64/neon/. That leaves 60 intrinsic rows not covered anywhere under clang/test/CodeGen/AArch64/neon/.
For just the first ACLE “Fused multiply-accumulate” section, there are 32 rows. The two fused files cover the 16 accumulate-side vfma / vfmas / vfmad forms. The remaining 16 are subtract-side vfms / vfmss / vfmsd forms.
https://github.com/llvm/llvm-project/pull/204819
More information about the cfe-commits
mailing list