[gcc(refs/users/meissner/heads/work067)] Revert patches.
Michael Meissner
meissner@gcc.gnu.org
Wed Sep 8 18:57:55 GMT 2021
https://gcc.gnu.org/g:f3b52f3d0ad38a9029dc9a0b06c480975251bba2
commit f3b52f3d0ad38a9029dc9a0b06c480975251bba2
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Wed Sep 8 14:56:42 2021 -0400
Revert patches.
2021-09-08 Michael Meissner <meissner@linux.ibm.com>
gcc/
Revert patch.
* config/rs6000/rs6000.c (rs6000_emit_move_si_sf_subreg): Deal
with SUBREGs of TImode and DImode.
* config/rs6000/rs6000.md (SI_DI_TI): New mode iterator.
(movsf_from_<mode>): Replace movsf_from_si to add support for
subregs of DImode and TImode.
2021-09-06 Michael Meissner <meissner@linux.ibm.com>
gcc/
Revert patch.
* config/rs6000/rs6000.c (rs6000_emit_move_si_sf_subreg): Deal
with SUBREGs of TImode and DImode.
Diff:
---
gcc/config/rs6000/rs6000.c | 15 ++++++---------
gcc/config/rs6000/rs6000.md | 15 +++++----------
2 files changed, 11 insertions(+), 19 deletions(-)
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index bd1ae1f8d6e..7bbf29a3e1c 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -10942,16 +10942,13 @@ rs6000_emit_move_si_sf_subreg (rtx dest, rtx source, machine_mode mode)
return true;
}
- /* Deal with subregs of SI/DI/TImode. */
- if (mode == SFmode && inner_mode == TImode)
+ /* In case we are given a SUBREG for a larger type, reduce it to
+ SImode. */
+ if (mode == SFmode && GET_MODE_SIZE (inner_mode) > 4)
{
- emit_insn (gen_movsf_from_ti (dest, inner_source));
- return true;
- }
-
- if (mode == SFmode && inner_mode == DImode)
- {
- emit_insn (gen_movsf_from_di (dest, inner_source));
+ rtx tmp = gen_reg_rtx (SImode);
+ emit_move_insn (tmp, gen_lowpart (SImode, source));
+ emit_insn (gen_movsf_from_si (dest, tmp));
return true;
}
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index fd3f6043e4b..d6af66a1728 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -466,9 +466,6 @@
; Any supported integer mode.
(define_mode_iterator INT [QI HI SI DI TI PTI])
-; Any supported integer mode that is at least 32-bits in size.
-(define_mode_iterator SI_DI_TI [SI DI TI])
-
; Any supported integer mode that fits in one register.
(define_mode_iterator INT1 [QI HI SI (DI "TARGET_POWERPC64")])
@@ -7864,11 +7861,11 @@
;; LWZ LFS LXSSP LXSSPX STW STFIWX
;; STXSIWX GPR->VSX VSX->GPR GPR->GPR
-(define_insn_and_split "movsf_from_<mode>"
+(define_insn_and_split "movsf_from_si"
[(set (match_operand:SF 0 "nonimmediate_operand"
"=!r, f, v, wa, m, Z,
Z, wa, ?r, !r")
- (unspec:SF [(match_operand:SI_DI_TI 1 "input_operand"
+ (unspec:SF [(match_operand:SI 1 "input_operand"
"m, m, wY, Z, r, f,
wa, r, wa, r")]
UNSPEC_SF_FROM_SI))
@@ -7877,7 +7874,7 @@
X, r, X, X"))]
"TARGET_NO_SF_SUBREG
&& (register_operand (operands[0], SFmode)
- || register_operand (operands[1], <MODE>mode))"
+ || register_operand (operands[1], SImode))"
"@
lwz%U1%X1 %0,%1
lfs%U1%X1 %0,%1
@@ -7892,15 +7889,13 @@
"&& reload_completed
&& vsx_reg_sfsubreg_ok (operands[0], SFmode)
- && int_reg_operand_not_pseudo (operands[1], <MODE>mode)"
+ && int_reg_operand_not_pseudo (operands[1], SImode)"
[(const_int 0)]
{
rtx op0 = operands[0];
rtx op1 = operands[1];
rtx op2 = operands[2];
- rtx op1_di = ((<MODE>mode == SImode)
- ? gen_rtx_REG (DImode, reg_or_subregno (op1))
- : gen_lowpart (DImode, op1));
+ rtx op1_di = gen_rtx_REG (DImode, REGNO (op1));
/* Move SF value to upper 32-bits for xscvspdpn. */
emit_insn (gen_ashldi3 (op2, op1_di, GEN_INT (32)));
More information about the Gcc-cvs
mailing list