summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>2013-09-23 08:30:00 +0000
committerchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>2013-09-23 08:30:00 +0000
commitf93344c894d392d4ea52965d371a9ce918aee69e (patch)
tree6b28ecb56fd261e0db81992a7cf75e7765ce0c61 /gcc
parent67358f720e579b4ff422e78cd9dd39195b9f407d (diff)
downloadgcc-f93344c894d392d4ea52965d371a9ce918aee69e.tar.gz
2013-09-23 Christian Bruel <christian.bruel@st.com>
PR target/58475 * config/sh/sh.md (movsf_ie): Allow fpul_operand. * config/sh/predicate.md (arith_reg_operand): Disallow FPUL_REG. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202825 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/sh/predicates.md2
-rw-r--r--gcc/config/sh/sh.md12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/sh/torture/pr58475.c15
5 files changed, 31 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1d9c5a9c3e9..15369d6bbe9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-09-23 Christian Bruel <christian.bruel@st.com>
+
+ PR target/58475
+ * config/sh/sh.md (movsf_ie): Allow fpul_operand.
+ * config/sh/predicate.md (arith_reg_operand): Disallow FPUL_REG.
+
2013-09-23 James Greenhalgh <james.greenhalgh@arm.com>
Revert r202780:
@@ -7,6 +13,7 @@
(aarch64_expand_epilogue): Likewise.
(aarch64_legitimize_reload_address): Likewise.
+>>>>>>> .r202824
2013-09-22 Eric Botcazou <ebotcazou@adacore.com>
* gimplify.c (gimplify_asm_expr): Reset the TREE_CHAIN of clobbers to
diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md
index 998ba7300ad..10d741abc46 100644
--- a/gcc/config/sh/predicates.md
+++ b/gcc/config/sh/predicates.md
@@ -154,7 +154,7 @@
return (regno != T_REG && regno != PR_REG
&& ! TARGET_REGISTER_P (regno)
- && (regno != FPUL_REG || TARGET_SH4)
+ && regno != FPUL_REG
&& regno != MACH_REG && regno != MACL_REG);
}
/* Allow a no-op sign extension - compare LOAD_EXTEND_OP.
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 2c20d3868a4..db6c0b6fb1c 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -8203,15 +8203,9 @@ label:
(use (match_operand:PSI 2 "fpscr_operand" "c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c"))
(clobber (match_scratch:SI 3 "=X,X,Bsc,Bsc,&z,X,X,X,X,X,X,X,X,y,X,X,X,X,X"))]
"TARGET_SH2E
- && (arith_reg_operand (operands[0], SFmode)
- || arith_reg_operand (operands[1], SFmode)
- || arith_reg_operand (operands[3], SImode)
- || (fpul_operand (operands[0], SFmode)
- && memory_operand (operands[1], SFmode)
- && GET_CODE (XEXP (operands[1], 0)) == POST_INC)
- || (fpul_operand (operands[1], SFmode)
- && memory_operand (operands[0], SFmode)
- && GET_CODE (XEXP (operands[0], 0)) == PRE_DEC))"
+ && (arith_reg_operand (operands[0], SFmode) || fpul_operand (operands[0], SFmode)
+ || arith_reg_operand (operands[1], SFmode) || fpul_operand (operands[1], SFmode)
+ || arith_reg_operand (operands[3], SImode))"
"@
fmov %1,%0
mov %1,%0
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e17d519ffc7..330bb1cc86a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-23 Christian Bruel <christian.bruel@st.com>
+
+ PR target/58475
+ * gcc.target/sh/torture/pr58475.c: New test.
+
2013-09-23 Janus Weil <janus@gcc.gnu.org>
PR fortran/58355
diff --git a/gcc/testsuite/gcc.target/sh/torture/pr58475.c b/gcc/testsuite/gcc.target/sh/torture/pr58475.c
new file mode 100644
index 00000000000..a1153da8ddb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/torture/pr58475.c
@@ -0,0 +1,15 @@
+/* { dg-do compile { target "sh*-*-*" } } */
+
+int
+kerninfo(int __bsx, double tscale)
+{
+ return (
+ (int)(__extension__
+ ({
+ ((((__bsx) & 0xff000000u) >> 24)
+ | (((__bsx) & 0x00ff0000) >> 8)
+ | (((__bsx) & 0x0000ff00) << 8)
+ | (((__bsx) & 0x000000ff) << 24)
+ ); }))
+ * tscale);
+}