From: Alan Lawrence Date: Fri, 19 Dec 2014 17:48:15 +0000 (+0000) Subject: [AArch64 2/3] Add SIMD-reg variants of logical operators and/ior/xor/not X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fe82d1f27edc59a5c5cdb705235bd341cab2dbb9;p=gcc.git [AArch64 2/3] Add SIMD-reg variants of logical operators and/ior/xor/not * config/aarch64/aarch64.md (3, one_cmpl2): Add SIMD-register variant. * config/aarch64/iterators.md (Vbtype): Add value for SI. From-SVN: r218960 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f27d6986961..10b5538cd60 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-12-19 Alan Lawrence + + * config/aarch64/aarch64.md (3, one_cmpl2): + Add SIMD-register variant. + * config/aarch64/iterators.md (Vbtype): Add value for SI. + 2014-12-19 Alan Lawrence * config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 3e8434602b9..bc9138d6cf9 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -2866,12 +2866,16 @@ ;; ------------------------------------------------------------------- (define_insn "3" - [(set (match_operand:GPI 0 "register_operand" "=r,rk") - (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r") - (match_operand:GPI 2 "aarch64_logical_operand" "r,")))] + [(set (match_operand:GPI 0 "register_operand" "=r,rk,w") + (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r,w") + (match_operand:GPI 2 "aarch64_logical_operand" "r,,w")))] "" - "\\t%0, %1, %2" - [(set_attr "type" "logic_reg,logic_imm")] + "@ + \\t%0, %1, %2 + \\t%0, %1, %2 + \\t%0., %1., %2." + [(set_attr "type" "logic_reg,logic_imm,neon_logic") + (set_attr "simd" "*,*,yes")] ) ;; zero_extend version of above @@ -2992,11 +2996,14 @@ ) (define_insn "one_cmpl2" - [(set (match_operand:GPI 0 "register_operand" "=r") - (not:GPI (match_operand:GPI 1 "register_operand" "r")))] + [(set (match_operand:GPI 0 "register_operand" "=r,w") + (not:GPI (match_operand:GPI 1 "register_operand" "r,w")))] "" - "mvn\\t%0, %1" - [(set_attr "type" "logic_reg")] + "@ + mvn\\t%0, %1 + mvn\\t%0.8b, %1.8b" + [(set_attr "type" "logic_reg,neon_logic") + (set_attr "simd" "*,yes")] ) (define_insn "*one_cmpl_2" diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 16a2647cc60..26e3ebcbcab 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -387,7 +387,8 @@ (V2SI "8b") (V4SI "16b") (V2DI "16b") (V2SF "8b") (V4SF "16b") (V2DF "16b") - (DI "8b") (DF "8b")]) + (DI "8b") (DF "8b") + (SI "8b")]) ;; Define element mode for each vector mode. (define_mode_attr VEL [(V8QI "QI") (V16QI "QI")