aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-12-07 16:51:43 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-12-07 16:51:43 -0500
commit61314cb469b7a014caddd55f944ccaa84bd98e7e (patch)
tree82606e88e4497dd93c21e85e96916fa3c4404c83 /gcc
parent9e8730a444d8213d5c19a5a7723278acc725bc90 (diff)
downloadgcc-61314cb469b7a014caddd55f944ccaa84bd98e7e.zip
gcc-61314cb469b7a014caddd55f944ccaa84bd98e7e.tar.gz
gcc-61314cb469b7a014caddd55f944ccaa84bd98e7e.tar.bz2
New pattern for ior between SImode target and zero_extended value.
From-SVN: r8624
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68k.md19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index bd826e1..2afdedc 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -3194,6 +3194,25 @@
(match_dup 0)))]
""
"or%.b %1,%0")
+
+(define_insn ""
+ [(set (match_operand:SI 0 "general_operand" "=o,d")
+ (ior:SI (zero_extend:SI (match_operand 1 "general_operand" "dn,dmn"))
+ (match_operand:SI 2 "general_operand" "0,0")))]
+ ""
+ "*
+{
+ int byte_mode;
+
+ CC_STATUS_INIT;
+ byte_mode = (GET_MODE(operands[1]) == QImode);
+ if (GET_CODE (operands[0]) == MEM)
+ operands[0] = adj_offsettable_operand (operands[0], byte_mode ? 3 : 2);
+ if (byte_mode)
+ return \"or%.b %1,%0\";
+ else
+ return \"or%.w %1,%0\";
+}")
;; xor instructions