From 0f365c102f3ae1b5025c0893074ed4a94d3ee295 Mon Sep 17 00:00:00 2001 From: Tejas Belagod Date: Wed, 13 Nov 2013 15:07:27 +0000 Subject: [PATCH] aarch64-simd.md (vec_extract): New. 2013-11-13 Tejas Belagod gcc/ * config/aarch64/aarch64-simd.md (vec_extract): New. From-SVN: r204747 --- gcc/ChangeLog | 4 ++++ gcc/config/aarch64/aarch64-simd.md | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 331e61cd6a9..8f989267084 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-11-13 Tejas Belagod + + * config/aarch64/aarch64-simd.md (vec_extract): New. + 2013-11-13 Tejas Belagod * config/aarch64/aarch64-simd.md (vec_set): Add w -> w option to diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index df4ef9592dc..0b16b057e78 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4582,3 +4582,19 @@ (set_attr "simd_mode" "")] ) +;; Standard pattern name vec_extract. + +(define_insn "vec_extract" + [(set (match_operand: 0 "aarch64_simd_nonimmediate_operand" "=r, w, Utv") + (vec_select: + (match_operand:VALL 1 "register_operand" "w, w, w") + (parallel [(match_operand:SI 2 "immediate_operand" "i,i,i")])))] + "TARGET_SIMD" + "@ + umov\\t%0, %1.[%2] + dup\\t%0, %1.[%2] + st1\\t{%1.}[%2], %0" + [(set_attr "simd_type" "simd_movgp, simd_dup, simd_store1s") + (set_attr "type" "neon_to_gp, neon_dup, neon_store1_one_lane") + (set_attr "simd_mode" "")] +) -- 2.30.2