From 666158b9cecdc55cc2f2cf0c77f571220b5a10c3 Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Thu, 3 Feb 2005 06:36:02 +0000 Subject: [PATCH] altivec.md (altivec_dst): Make the first operand a REG, not a MEM. 2005-02-02 Geoffrey Keating * config/rs6000/altivec.md (altivec_dst): Make the first operand a REG, not a MEM. (altivec_dstt): Likewise. (altivec_dstst): Likewise. (altivec_dststt): Likewise. * config/rs6000/rs6000.c (altivec_expand_dst_builtin): Adjust creation of first operand. Index: testsuite/ChangeLog 2005-02-02 Geoffrey Keating * gcc.dg/altivec-19.c: New. From-SVN: r94652 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/rs6000/altivec.md | 24 ++++++++++++------------ gcc/config/rs6000/rs6000.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3dd5b28df18..70370e22055 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2005-02-02 Geoffrey Keating + + * config/rs6000/altivec.md (altivec_dst): Make the first operand + a REG, not a MEM. + (altivec_dstt): Likewise. + (altivec_dstst): Likewise. + (altivec_dststt): Likewise. + * config/rs6000/rs6000.c (altivec_expand_dst_builtin): Adjust creation + of first operand. + 2005-02-03 Dorit Naishlos * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Copy diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md index 6084e165b1d..1b3beffadfc 100644 --- a/gcc/config/rs6000/altivec.md +++ b/gcc/config/rs6000/altivec.md @@ -1542,35 +1542,35 @@ [(set_attr "type" "vecsimple")]) (define_insn "altivec_dst" - [(unspec [(match_operand:V4SI 0 "memory_operand" "Q") + [(unspec [(match_operand 0 "register_operand" "b") (match_operand:SI 1 "register_operand" "r") (match_operand:QI 2 "immediate_operand" "i")] 190)] - "TARGET_ALTIVEC" - "dst %P0,%1,%2" + "TARGET_ALTIVEC && GET_MODE (operands[0]) == Pmode" + "dst %0,%1,%2" [(set_attr "type" "vecsimple")]) (define_insn "altivec_dstt" - [(unspec [(match_operand:V4SI 0 "memory_operand" "Q") + [(unspec [(match_operand 0 "register_operand" "b") (match_operand:SI 1 "register_operand" "r") (match_operand:QI 2 "immediate_operand" "i")] 191)] - "TARGET_ALTIVEC" - "dstt %P0,%1,%2" + "TARGET_ALTIVEC && GET_MODE (operands[0]) == Pmode" + "dstt %0,%1,%2" [(set_attr "type" "vecsimple")]) (define_insn "altivec_dstst" - [(unspec [(match_operand:V4SI 0 "memory_operand" "Q") + [(unspec [(match_operand 0 "register_operand" "b") (match_operand:SI 1 "register_operand" "r") (match_operand:QI 2 "immediate_operand" "i")] 192)] - "TARGET_ALTIVEC" - "dstst %P0,%1,%2" + "TARGET_ALTIVEC && GET_MODE (operands[0]) == Pmode" + "dstst %0,%1,%2" [(set_attr "type" "vecsimple")]) (define_insn "altivec_dststt" - [(unspec [(match_operand:V4SI 0 "memory_operand" "Q") + [(unspec [(match_operand 0 "register_operand" "b") (match_operand:SI 1 "register_operand" "r") (match_operand:QI 2 "immediate_operand" "i")] 193)] - "TARGET_ALTIVEC" - "dststt %P0,%1,%2" + "TARGET_ALTIVEC && GET_MODE (operands[0]) == Pmode" + "dststt %0,%1,%2" [(set_attr "type" "vecsimple")]) (define_insn "altivec_lvsl" diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 4406f1b10ec..f1bb23f84bd 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -7225,7 +7225,7 @@ altivec_expand_dst_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, } if (! (*insn_data[d->icode].operand[0].predicate) (op0, mode0)) - op0 = gen_rtx_MEM (mode0, copy_to_mode_reg (Pmode, op0)); + op0 = copy_to_mode_reg (Pmode, op0); if (! (*insn_data[d->icode].operand[1].predicate) (op1, mode1)) op1 = copy_to_mode_reg (mode1, op1); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1d80350306a..b5f4ecc5c36 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-02-02 Geoffrey Keating + + * gcc.dg/altivec-19.c: New. + 2005-02-03 Joseph S. Myers PR c/17807 -- 2.30.2