aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@rr.iij4u.or.jp>2024-09-24 18:35:46 +0900
committerOleg Endo <olegendo@gcc.gnu.org>2024-09-25 10:22:10 +0900
commiteee3b80ab6217ab792f01280bc6240c55468600a (patch)
treea6e9cc57637ae416d2e1b66c992c5fb9ba2ff77a
parent4d28c5b1eb15cff97f07982c73770485e6eaa986 (diff)
downloadgcc-eee3b80ab6217ab792f01280bc6240c55468600a.zip
gcc-eee3b80ab6217ab792f01280bc6240c55468600a.tar.gz
gcc-eee3b80ab6217ab792f01280bc6240c55468600a.tar.bz2
SH: Fix the condition to use movsh_ie_y pattern.
gcc/ChangeLog: * config/sh/sh.cc (sh_movsf_ie_y_split_p): Take the subreg of DImode into account.
-rw-r--r--gcc/config/sh/sh.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/sh/sh.cc b/gcc/config/sh/sh.cc
index b2ba748..d9e7e67 100644
--- a/gcc/config/sh/sh.cc
+++ b/gcc/config/sh/sh.cc
@@ -11462,11 +11462,15 @@ sh_movsf_ie_y_split_p (rtx op0, rtx op1)
{
/* f, r */
if (REG_P (op0)
- && (SUBREG_P (op1) && GET_MODE (SUBREG_REG (op1)) == SImode))
+ && (SUBREG_P (op1)
+ && (GET_MODE (SUBREG_REG (op1)) == SImode
+ || GET_MODE (SUBREG_REG (op1)) == DImode)))
return true;
/* r, f */
if (REG_P (op1)
- && (SUBREG_P (op0) && GET_MODE (SUBREG_REG (op0)) == SImode))
+ && (SUBREG_P (op0)
+ && (GET_MODE (SUBREG_REG (op0)) == SImode
+ || GET_MODE (SUBREG_REG (op0)) == DImode)))
return true;
return false;