aboutsummaryrefslogtreecommitdiff
path: root/gcc/value-range.h
diff options
context:
space:
mode:
authorJonathan Wright <jonathan.wright@arm.com>2021-02-16 15:42:36 +0000
committerJonathan Wright <jonathan.wright@arm.com>2021-04-30 18:40:54 +0100
commitb0d9aac8992c1f8c3198d9528a9867c653623dfb (patch)
treea21188d7f21698def6fac111aafce95ccfcf3c57 /gcc/value-range.h
parent60518e6473248b16db9125504da0351707c35d1a (diff)
downloadgcc-b0d9aac8992c1f8c3198d9528a9867c653623dfb.zip
gcc-b0d9aac8992c1f8c3198d9528a9867c653623dfb.tar.gz
gcc-b0d9aac8992c1f8c3198d9528a9867c653623dfb.tar.bz2
aarch64: Use RTL builtins for FP ml[as] intrinsics
Rewrite floating-point vml[as][q] Neon intrinsics to use RTL builtins rather than relying on the GCC vector extensions. Using RTL builtins allows control over the emission of fmla/fmls instructions (which we don't want here.) With this commit, the code generated by these intrinsics changes from a fused multiply-add/subtract instruction to an fmul followed by an fadd/fsub instruction. If the programmer really wants fmla/fmls instructions, they can use the vfm[as] intrinsics. gcc/ChangeLog: 2021-02-16 Jonathan Wright <jonathan.wright@arm.com> * config/aarch64/aarch64-simd-builtins.def: Add float_ml[as] builtin generator macros. * config/aarch64/aarch64-simd.md (aarch64_float_mla<mode>): Define. (aarch64_float_mls<mode>): Define. * config/aarch64/arm_neon.h (vmla_f32): Use RTL builtin instead of relying on GCC vector extensions. (vmla_f64): Likewise. (vmlaq_f32): Likewise. (vmlaq_f64): Likewise. (vmls_f32): Likewise. (vmls_f64): Likewise. (vmlsq_f32): Likewise. (vmlsq_f64): Likewise. * config/aarch64/iterators.md: Define VDQF_DF mode iterator.
Diffstat (limited to 'gcc/value-range.h')
0 files changed, 0 insertions, 0 deletions