summaryrefslogtreecommitdiff
path: root/gcc/config/arm/iterators.md
diff options
context:
space:
mode:
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-10-15 15:28:04 +0000
committerjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-10-15 15:28:04 +0000
commit3209301064b768179d047f116f8b430972962691 (patch)
tree08158bcb7c75f8dab07a5a26b425274459368fea /gcc/config/arm/iterators.md
parent47bfaf2cfc27dd75406ab0939fde225ad61ca84c (diff)
downloadgcc-3209301064b768179d047f116f8b430972962691.tar.gz
[ARM] [Neon types 3/10] Update Current type attributes to new Neon Types.
gcc/ * config/arm/iterators.md (V_elem_ch): New. (q): Likewise. (VQH_type): Likewise. * config/arm/arm.md (is_neon_type): New. (conds): Use is_neon_type. (anddi3_insn): Update type attribute. (xordi3_insn): Likewise. (one_cmpldi2): Likewise. * gcc/config/arm/vfp.md (movhf_vfp_neon): Update type attribute. * gcc/config/arm/neon.md (neon_mov): Update type attributes for all patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203613 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/iterators.md')
-rw-r--r--gcc/config/arm/iterators.md18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
index c7d7079b9de..38777b89a87 100644
--- a/gcc/config/arm/iterators.md
+++ b/gcc/config/arm/iterators.md
@@ -355,6 +355,12 @@
(DI "64") (V2DI "64")
(V2SF "32") (V4SF "32")])
+(define_mode_attr V_elem_ch [(V8QI "b") (V16QI "b")
+ (V4HI "h") (V8HI "h")
+ (V2SI "s") (V4SI "s")
+ (DI "d") (V2DI "d")
+ (V2SF "s") (V4SF "s")])
+
;; Element sizes for duplicating ARM registers to all elements of a vector.
(define_mode_attr VD_dup [(V8QI "8") (V4HI "16") (V2SI "32") (V2SF "32")])
@@ -452,6 +458,14 @@
(define_mode_attr vfp_type [(SF "s") (DF "d")])
(define_mode_attr vfp_double_cond [(SF "") (DF "&& TARGET_VFP_DOUBLE")])
+;; Mode attribute used to build the "type" attribute.
+(define_mode_attr q [(V8QI "") (V16QI "_q")
+ (V4HI "") (V8HI "_q")
+ (V2SI "") (V4SI "_q")
+ (V2SF "") (V4SF "_q")
+ (DI "") (V2DI "_q")
+ (DF "") (V2DF "_q")])
+
;;----------------------------------------------------------------------------
;; Code attributes
;;----------------------------------------------------------------------------
@@ -460,6 +474,10 @@
(define_code_attr VQH_mnem [(plus "vadd") (smin "vmin") (smax "vmax")
(umin "vmin") (umax "vmax")])
+;; Type attributes for vqh_ops and vqhs_ops iterators.
+(define_code_attr VQH_type [(plus "add") (smin "minmax") (smax "minmax")
+ (umin "minmax") (umax "minmax")])
+
;; Signs of above, where relevant.
(define_code_attr VQH_sign [(plus "i") (smin "s") (smax "s") (umin "u")
(umax "u")])