aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/s390/s390.c
diff options
context:
space:
mode:
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2017-03-24 13:54:23 +0000
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2017-03-24 13:54:23 +0000
commitf413810ac0ab1ec865b8a9c765b6888740d8b534 (patch)
tree7411e42d775bfb86186d31464a4ea91f4ef95830 /gcc/config/s390/s390.c
parent4c715561ea10236239c4c2e2a24da7ea6d99ebc1 (diff)
S/390: vec_init improvements
This enables the vec_init pattern also for V4SF, V1TI, and V1TF. gcc/testsuite/ChangeLog: 2017-03-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gcc.target/s390/vector/vec-init-2.c: New test. gcc/ChangeLog: 2017-03-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.c (s390_expand_vec_init): Enable vector load pair for all vector types with 64 bit elements. * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ... * config/s390/vector.md (V_HW_64): ... here. (V_128_NOSINGLE): New mode iterator. ("vec_init<V_HW:mode>"): Use V_128 as mode iterator. ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator. ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions. ("*vec_load_pairv2di"): Change to ... ("*vec_load_pair<mode>"): ... this one. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@246446 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390/s390.c')
-rw-r--r--gcc/config/s390/s390.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index f3cebd63ef9..65a75464b1c 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -6617,7 +6617,10 @@ s390_expand_vec_init (rtx target, rtx vals)
return;
}
- if (all_regs && REG_P (target) && n_elts == 2 && inner_mode == DImode)
+ if (all_regs
+ && REG_P (target)
+ && n_elts == 2
+ && GET_MODE_SIZE (inner_mode) == 8)
{
/* Use vector load pair. */
emit_insn (gen_rtx_SET (target,