From 384be29f47a3fe1c5fd962b44abe1215983c3df3 Mon Sep 17 00:00:00 2001 From: James Greenhalgh Date: Mon, 29 Apr 2013 11:04:56 +0000 Subject: [PATCH] [AArch64] Add vector fix, fixuns, fix_trunc, fixuns_trunc standard patterns gcc/ * config/aarch64/aarch64-simd.md (2): New, maps to fix, fixuns. (2): New, maps to fix_trunc, fixuns_trunc. (ftrunc2): New. * config/aarch64/iterators.md (optab): Add fix, fixuns. (fix_trunc_optab): New. From-SVN: r198403 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/aarch64/aarch64-simd.md | 23 +++++++++++++++++++++++ gcc/config/aarch64/iterators.md | 5 +++++ 3 files changed, 38 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bef76a8..3c42d60 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,15 @@ 2013-04-29 James Greenhalgh + * config/aarch64/aarch64-simd.md + (2): New, maps to fix, fixuns. + (2): New, maps to + fix_trunc, fixuns_trunc. + (ftrunc2): New. + * config/aarch64/iterators.md (optab): Add fix, fixuns. + (fix_trunc_optab): New. + +2013-04-29 James Greenhalgh + * config/aarch64/aarch64-builtins.c (aarch64_builtin_vectorized_function): Vectorize over ifloorf, iceilf, lround, iroundf. diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 4546094..32ea587 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -1257,6 +1257,29 @@ (set_attr "simd_mode" "")] ) +(define_expand "2" + [(set (match_operand: 0 "register_operand") + (FIXUORS: (unspec: + [(match_operand:VDQF 1 "register_operand")] + UNSPEC_FRINTZ)))] + "TARGET_SIMD" + {}) + +(define_expand "2" + [(set (match_operand: 0 "register_operand") + (FIXUORS: (unspec: + [(match_operand:VDQF 1 "register_operand")] + UNSPEC_FRINTZ)))] + "TARGET_SIMD" + {}) + +(define_expand "ftrunc2" + [(set (match_operand:VDQF 0 "register_operand") + (unspec:VDQF [(match_operand:VDQF 1 "register_operand")] + UNSPEC_FRINTZ))] + "TARGET_SIMD" + {}) + (define_insn "2" [(set (match_operand:VDQF 0 "register_operand" "=w") (FLOATUORS:VDQF diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 8668d3f..d774c4c 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -560,6 +560,8 @@ (zero_extend "zero_extend") (sign_extract "extv") (zero_extract "extzv") + (fix "fix") + (unsigned_fix "fixuns") (float "float") (unsigned_float "floatuns") (and "and") @@ -580,6 +582,9 @@ (lt "lt") (ge "ge")]) +(define_code_attr fix_trunc_optab [(fix "fix_trunc") + (unsigned_fix "fixuns_trunc")]) + ;; Optab prefix for sign/zero-extending operations (define_code_attr su_optab [(sign_extend "") (zero_extend "u") (div "") (udiv "u") -- 2.7.4