aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <apinski@cavium.com>2013-11-18 19:20:12 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2013-11-18 19:20:12 +0000
commit72b7c4bc78f0c99a9b79a33b3a50fa9367b15782 (patch)
treee4106c319b42b943e6f0511b31c0ae1eeb2383e4 /gcc
parent3a0b28f83d12cc0539da18bfc4851ef4ad42f759 (diff)
downloadgcc-72b7c4bc78f0c99a9b79a33b3a50fa9367b15782.zip
gcc-72b7c4bc78f0c99a9b79a33b3a50fa9367b15782.tar.gz
gcc-72b7c4bc78f0c99a9b79a33b3a50fa9367b15782.tar.bz2
re PR middle-end/56552 (conditional move can generate unnecessary conversion code)
2013-11-18 Andrew Pinski <apinski@cavium.com> Steve Ellcey <sellcey@mips.com> PR target/56552 * config/mips/mips.md (*mov<GPR:mode>_on_<MOVECC:mode>): Remove type restriction from equality_operator on conditonal move. (*mov<SCALARF:mode>_on_<MOVECC:mode>): Ditto. (*mov<GPR:mode>_on_<GPR2:mode>_ne): New. Co-Authored-By: Steve Ellcey <sellcey@mips.com> From-SVN: r204979
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/mips/mips.md17
2 files changed, 24 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d61b494..3e88c04 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2013-11-18 Andrew Pinski <apinski@cavium.com>
+ Steve Ellcey <sellcey@mips.com>
+
+ PR target/56552
+ * config/mips/mips.md (*mov<GPR:mode>_on_<MOVECC:mode>): Remove
+ type restriction from equality_operator on conditonal move.
+ (*mov<SCALARF:mode>_on_<MOVECC:mode>): Ditto.
+ (*mov<GPR:mode>_on_<GPR2:mode>_ne): New.
+
2013-11-18 Jeff Law <law@redhat.com>
* tree-ssa-threadupdate.c: Fix file block comment.
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 3554beb..6991f20 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -6776,7 +6776,7 @@
(define_insn "*mov<GPR:mode>_on_<MOVECC:mode>"
[(set (match_operand:GPR 0 "register_operand" "=d,d")
(if_then_else:GPR
- (match_operator:MOVECC 4 "equality_operator"
+ (match_operator 4 "equality_operator"
[(match_operand:MOVECC 1 "register_operand" "<MOVECC:reg>,<MOVECC:reg>")
(const_int 0)])
(match_operand:GPR 2 "reg_or_0_operand" "dJ,0")
@@ -6788,10 +6788,23 @@
[(set_attr "type" "condmove")
(set_attr "mode" "<GPR:MODE>")])
+(define_insn "*mov<GPR:mode>_on_<GPR2:mode>_ne"
+ [(set (match_operand:GPR 0 "register_operand" "=d,d")
+ (if_then_else:GPR
+ (match_operand:GPR2 1 "register_operand" "<GPR2:reg>,<GPR2:reg>")
+ (match_operand:GPR 2 "reg_or_0_operand" "dJ,0")
+ (match_operand:GPR 3 "reg_or_0_operand" "0,dJ")))]
+ "ISA_HAS_CONDMOVE"
+ "@
+ movn\t%0,%z2,%1
+ movz\t%0,%z3,%1"
+ [(set_attr "type" "condmove")
+ (set_attr "mode" "<GPR:MODE>")])
+
(define_insn "*mov<SCALARF:mode>_on_<MOVECC:mode>"
[(set (match_operand:SCALARF 0 "register_operand" "=f,f")
(if_then_else:SCALARF
- (match_operator:MOVECC 4 "equality_operator"
+ (match_operator 4 "equality_operator"
[(match_operand:MOVECC 1 "register_operand" "<MOVECC:reg>,<MOVECC:reg>")
(const_int 0)])
(match_operand:SCALARF 2 "register_operand" "f,0")