Commit fe82d1f2 by Alan Lawrence Committed by Alan Lawrence

[AArch64 2/3] Add SIMD-reg variants of logical operators and/ior/xor/not

	* config/aarch64/aarch64.md (<optab><mode>3, one_cmpl<mode>2):
	Add SIMD-register variant.
	* config/aarch64/iterators.md (Vbtype): Add value for SI.

From-SVN: r218960
parent f1f1391c
2014-12-19 Alan Lawrence <alan.lawrence@arm.com> 2014-12-19 Alan Lawrence <alan.lawrence@arm.com>
* config/aarch64/aarch64.md (<optab><mode>3, one_cmpl<mode>2):
Add SIMD-register variant.
* config/aarch64/iterators.md (Vbtype): Add value for SI.
2014-12-19 Alan Lawrence <alan.lawrence@arm.com>
* config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize * config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize
SIMD reg variant. SIMD reg variant.
...@@ -2866,12 +2866,16 @@ ...@@ -2866,12 +2866,16 @@
;; ------------------------------------------------------------------- ;; -------------------------------------------------------------------
(define_insn "<optab><mode>3" (define_insn "<optab><mode>3"
[(set (match_operand:GPI 0 "register_operand" "=r,rk") [(set (match_operand:GPI 0 "register_operand" "=r,rk,w")
(LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r") (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r,w")
(match_operand:GPI 2 "aarch64_logical_operand" "r,<lconst>")))] (match_operand:GPI 2 "aarch64_logical_operand" "r,<lconst>,w")))]
"" ""
"<logical>\\t%<w>0, %<w>1, %<w>2" "@
[(set_attr "type" "logic_reg,logic_imm")] <logical>\\t%<w>0, %<w>1, %<w>2
<logical>\\t%<w>0, %<w>1, %<w>2
<logical>\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>"
[(set_attr "type" "logic_reg,logic_imm,neon_logic")
(set_attr "simd" "*,*,yes")]
) )
;; zero_extend version of above ;; zero_extend version of above
...@@ -2992,11 +2996,14 @@ ...@@ -2992,11 +2996,14 @@
) )
(define_insn "one_cmpl<mode>2" (define_insn "one_cmpl<mode>2"
[(set (match_operand:GPI 0 "register_operand" "=r") [(set (match_operand:GPI 0 "register_operand" "=r,w")
(not:GPI (match_operand:GPI 1 "register_operand" "r")))] (not:GPI (match_operand:GPI 1 "register_operand" "r,w")))]
"" ""
"mvn\\t%<w>0, %<w>1" "@
[(set_attr "type" "logic_reg")] mvn\\t%<w>0, %<w>1
mvn\\t%0.8b, %1.8b"
[(set_attr "type" "logic_reg,neon_logic")
(set_attr "simd" "*,yes")]
) )
(define_insn "*one_cmpl_<optab><mode>2" (define_insn "*one_cmpl_<optab><mode>2"
......
...@@ -387,7 +387,8 @@ ...@@ -387,7 +387,8 @@
(V2SI "8b") (V4SI "16b") (V2SI "8b") (V4SI "16b")
(V2DI "16b") (V2SF "8b") (V2DI "16b") (V2SF "8b")
(V4SF "16b") (V2DF "16b") (V4SF "16b") (V2DF "16b")
(DI "8b") (DF "8b")]) (DI "8b") (DF "8b")
(SI "8b")])
;; Define element mode for each vector mode. ;; Define element mode for each vector mode.
(define_mode_attr VEL [(V8QI "QI") (V16QI "QI") (define_mode_attr VEL [(V8QI "QI") (V16QI "QI")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment