aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2013-04-08 16:03:05 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2013-04-08 17:03:05 +0100
commit093ac0a5f114589ef26472c88b9f56ce3f2792ad (patch)
tree634de7ea68528ea0010941438503fde4c98be4ef /gcc/config
parentaefb0819fbe65e061fbfba4fb09fb63e3a2918c5 (diff)
downloadgcc-093ac0a5f114589ef26472c88b9f56ce3f2792ad.zip
gcc-093ac0a5f114589ef26472c88b9f56ce3f2792ad.tar.gz
gcc-093ac0a5f114589ef26472c88b9f56ce3f2792ad.tar.bz2
epiphany.md (<insn_opname>v2si3): Use gen_addsi3_i / gen_subsi3_i.
* config/epiphany/epiphany.md (<insn_opname>v2si3): Use gen_addsi3_i / gen_subsi3_i. From-SVN: r197592
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/epiphany/epiphany.md9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/config/epiphany/epiphany.md b/gcc/config/epiphany/epiphany.md
index 4bb8da3..7b63ef2 100644
--- a/gcc/config/epiphany/epiphany.md
+++ b/gcc/config/epiphany/epiphany.md
@@ -2429,6 +2429,11 @@
[(plus "add") (minus "sub") (mult "mul") (div "div")
(and "and") (ior "ior") (xor "xor")])
+; The addsi3 / subsi3 do checks that we don't want when splitting V2SImode
+; operations into two SImode operations.
+(define_code_attr si_pattern_suffix
+ [(plus "_i") (minus "_i") (and "") (ior "") (xor "")])
+
; You might think that this would work better as a define_expand, but
; again lower_subreg pessimizes the code if it sees indiviudual operations.
; We need to keep inputs and outputs as register pairs if we want to
@@ -2455,8 +2460,8 @@
o1h = copy_to_mode_reg (SImode, o1h);
if (reg_overlap_mentioned_p (o0l, o2h))
o2h = copy_to_mode_reg (SImode, o2h);
- emit_insn (gen_<insn_opname>si3 (o0l, o1l, o2l));
- emit_insn (gen_<insn_opname>si3 (o0h, o1h, o2h));
+ emit_insn (gen_<insn_opname>si3<si_pattern_suffix> (o0l, o1l, o2l));
+ emit_insn (gen_<insn_opname>si3<si_pattern_suffix> (o0h, o1h, o2h));
DONE;
}
[(set_attr "length" "8")])