From afbde658c8cff7ac10b015e3c4ce478a6a77b24b Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Fri, 28 Jun 2019 19:52:52 +0000 Subject: [PATCH] re PR target/91009 (Bug with future PowerPC patches with lfiwax/lfiwzx (related to PR 90822)) Fix PR target/91009 2019-06-27 Michael Meissner PR target/91009 * config/rs6000/rs6000.md (floatsi2_lfiwax): Add non-VSX alternative. (floatsi2_lfiwax_mem): Add non-VSX alternative. (floatunssi2_lfiwzx): Add non-VSX alternative. (floatunssi2_lfiwzx_mem): Add non-VSX alternative. From-SVN: r272791 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/rs6000.md | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84cc51febb8..21d2977736c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2019-06-28 Michael Meissner + + PR target/91009 + * config/rs6000/rs6000.md (floatsi2_lfiwax): Add non-VSX + alternative. + (floatsi2_lfiwax_mem): Add non-VSX alternative. + (floatunssi2_lfiwzx): Add non-VSX alternative. + (floatunssi2_lfiwzx_mem): Add non-VSX alternative. + 2019-06-28 Iain Sandoe * config.gcc (powerpc-*-darwin*, powerpc64-*-darwin*): Remove diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 1b4a43e5d50..5947a43440b 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -5232,9 +5232,9 @@ ; not be needed and also in case the insns are deleted as dead code. (define_insn_and_split "floatsi2_lfiwax" - [(set (match_operand:SFDF 0 "gpc_reg_operand" "=") - (float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r"))) - (clobber (match_scratch:DI 2 "=wa"))] + [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,") + (float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r,r"))) + (clobber (match_scratch:DI 2 "=d,wa"))] "TARGET_HARD_FLOAT && TARGET_LFIWAX && && can_create_pseudo_p ()" "#" @@ -5271,11 +5271,11 @@ (set_attr "type" "fpload")]) (define_insn_and_split "floatsi2_lfiwax_mem" - [(set (match_operand:SFDF 0 "gpc_reg_operand" "=") + [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,") (float:SFDF (sign_extend:DI - (match_operand:SI 1 "indexed_or_indirect_operand" "Z")))) - (clobber (match_scratch:DI 2 "=wa"))] + (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z")))) + (clobber (match_scratch:DI 2 "=d,wa"))] "TARGET_HARD_FLOAT && TARGET_LFIWAX && " "#" "" @@ -5308,9 +5308,9 @@ (set_attr "isa" "*,p8v,p8v,p9v")]) (define_insn_and_split "floatunssi2_lfiwzx" - [(set (match_operand:SFDF 0 "gpc_reg_operand" "=") - (unsigned_float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r"))) - (clobber (match_scratch:DI 2 "=wa"))] + [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,") + (unsigned_float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r,r"))) + (clobber (match_scratch:DI 2 "=d,wa"))] "TARGET_HARD_FLOAT && TARGET_LFIWZX && " "#" "" @@ -5346,11 +5346,11 @@ (set_attr "type" "fpload")]) (define_insn_and_split "floatunssi2_lfiwzx_mem" - [(set (match_operand:SFDF 0 "gpc_reg_operand" "=") + [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,") (unsigned_float:SFDF (zero_extend:DI - (match_operand:SI 1 "indexed_or_indirect_operand" "Z")))) - (clobber (match_scratch:DI 2 "=wa"))] + (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z")))) + (clobber (match_scratch:DI 2 "=d,wa"))] "TARGET_HARD_FLOAT && TARGET_LFIWZX && " "#" "" -- 2.30.2