From 28fc3eee79d92a367a179ef4e7fa5d8ed134fe61 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Thu, 3 Feb 2011 00:41:16 +0000 Subject: [PATCH] Fix PR target/47580 From-SVN: r169776 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/rs6000/vsx.md | 19 ++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 45343524fd3..1bcd269ac33 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-02-01 Michael Meissner + + PR target/47580 + * config/rs6000/vsx.md (vsx_float2): Use + gpc_reg_operand instead of vsx_register_operand to match rs6000.md + generator functions. + (vsx_floatuns2): Ditto. + (vsx_fix_trunc2): Ditto. + (vsx_fixuns_trunc2): Ditto. + 2011-02-02 Joseph Myers * config/i386/djgpp.opt (posix): New Driver option. diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index e241e26db89..5b3040cc2f6 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1,5 +1,5 @@ ;; VSX patterns. -;; Copyright (C) 2009, 2010 +;; Copyright (C) 2009, 2010, 2011 ;; Free Software Foundation, Inc. ;; Contributed by Michael Meissner @@ -695,33 +695,34 @@ ;; the fprs because we don't want to add the altivec registers to movdi/movsi. ;; For the unsigned tests, there isn't a generic double -> unsigned conversion ;; in rs6000.md so don't test VECTOR_UNIT_VSX_P, just test against VSX. +;; Don't use vsx_register_operand here, use gpc_reg_operand to match rs6000.md. (define_insn "vsx_float2" - [(set (match_operand:VSX_B 0 "vsx_register_operand" "=,?wa") - (float:VSX_B (match_operand: 1 "vsx_register_operand" ",")))] + [(set (match_operand:VSX_B 0 "gpc_reg_operand" "=,?wa") + (float:VSX_B (match_operand: 1 "gpc_reg_operand" ",")))] "VECTOR_UNIT_VSX_P (mode)" "xcvsx %x0,%x1" [(set_attr "type" "") (set_attr "fp_type" "")]) (define_insn "vsx_floatuns2" - [(set (match_operand:VSX_B 0 "vsx_register_operand" "=,?wa") - (unsigned_float:VSX_B (match_operand: 1 "vsx_register_operand" ",")))] + [(set (match_operand:VSX_B 0 "gpc_reg_operand" "=,?wa") + (unsigned_float:VSX_B (match_operand: 1 "gpc_reg_operand" ",")))] "VECTOR_UNIT_VSX_P (mode)" "xcvux %x0,%x1" [(set_attr "type" "") (set_attr "fp_type" "")]) (define_insn "vsx_fix_trunc2" - [(set (match_operand: 0 "vsx_register_operand" "=,?") - (fix: (match_operand:VSX_B 1 "vsx_register_operand" ",wa")))] + [(set (match_operand: 0 "gpc_reg_operand" "=,?") + (fix: (match_operand:VSX_B 1 "gpc_reg_operand" ",wa")))] "VECTOR_UNIT_VSX_P (mode)" "xcvsxs %x0,%x1" [(set_attr "type" "") (set_attr "fp_type" "")]) (define_insn "vsx_fixuns_trunc2" - [(set (match_operand: 0 "vsx_register_operand" "=,?") - (unsigned_fix: (match_operand:VSX_B 1 "vsx_register_operand" ",wa")))] + [(set (match_operand: 0 "gpc_reg_operand" "=,?") + (unsigned_fix: (match_operand:VSX_B 1 "gpc_reg_operand" ",wa")))] "VECTOR_UNIT_VSX_P (mode)" "xcvuxs %x0,%x1" [(set_attr "type" "")