[AArch64, 1/6] Reimplement scalar fixed-point intrinsics

Jiong Wang jiong.wang@foss.arm.com
Tue May 24 08:24:00 GMT 2016


This patch reimplement scalar intrinsics for conversion between floating-
point and fixed-point.

Previously, all such intrinsics are implemented through inline assembly.
This patch added RTL pattern for these operations that those intrinsics
can be implemented through builtins.

gcc/
2016-05-23  Jiong Wang<jiong.wang@arm.com>

         * config/aarch64/aarch64-builtins.c (TYPES_BINOP_USS): New
         (TYPES_BINOP_SUS): Likewise.
         (aarch64_simd_builtin_data): Update include file name.
         (aarch64_builtins): Likewise.
         * config/aarch64/aarch64-simd-builtins.def: Rename to
         aarch64-builtins.def.
         (scvtfsi): New entries for conversion between scalar
         float-point and fixed-point.
         (scvtfdi): Likewise.
         (ucvtfsi): Likewise.
         (ucvtfdi): Likewise.
         (fcvtzssf): Likewise.
         (fcvtzsdf): Likewise.
         (fcvtzusf): Likewise.
         (fcvtzudf): Likewise.
         * config/aarch64/aarch64.md
         (<FCVT_F2FIXED_SCALAR:fcvt_fixed_insn><GPF:mode><GPI:mode>3): New
         pattern for conversion between scalar float to fixed-pointer.
         (<FCVT_FIXED2F_SCALAR:fcvt_fixed_insn><GPI:mode><GPF:mode>3): Likewise.
         (UNSPEC_FCVTZS_SCALAR): New UNSPEC enumeration.
         (UNSPEC_FCVTZU_SCALAR): Likewise.
         (UNSPEC_SCVTF_SCALAR): Likewise.
         (UNSPEC_UCVTF_SCALAR): Likewise.
         * config/aarch64/aarch64-simd.md
         (<FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3): New pattern for conversion
         between scalar variant of SIMD and fixed-point
         (<FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3): Likewise.
         * config/aarch64/arm_neon.h (vcvtd_n_f64_s64): Remove inline assembly.  Use
         builtin.
         (vcvtd_n_f64_u64): Likewise.
         (vcvtd_n_s64_f64): Likewise.
         (vcvtd_n_u64_f64): Likewise.
         (vcvtd_n_f32_s32): Likewise.
         (vcvts_n_f32_u32): Likewise.
         (vcvtd_n_s32_f32): Likewise.
         (vcvts_n_u32_f32): Likewise.
         * config/aarch64/iterators.md (UNSPEC_FCVTZS): New.
         (UNSPEC_FCVTZU): Likewise.
         (UNSPEC_SCVTF): Likewise.
         (UNSPEC_UCVTF): Likewise.
         (fcvt_target): Support integer to float mapping.
         (FCVT_TARGET): Likewise.
         (FCVT_FIXED2F): New iterator.
         (FCVT_F2FIXED): Likewise.
         (FCVT_FIXED2F_SCALAR): Likewise.
         (FCVT_F2FIXED_SCALAR): Likewise.
         (fcvt_fixed_insn): New define_int_attr.
         * config/aarch64/t-aarch64 (aarch64-builtins.o): Change dependency file
         name from "aarch64-simd-builtins.def" to "aarch64-builtins.def".

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-1.patch
Type: text/x-patch
Size: 52571 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20160524/b7f208de/attachment.bin>


More information about the Gcc-patches mailing list