aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2002-03-22 23:24:05 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2002-03-22 23:24:05 +0100
commit65e6c00573077208af5011dd1bebe287ae1f2ade (patch)
tree1c8fe28d5fd37c221e1c600c933b9a83f8058156
parent44d57e3602969629e38cb1efedf94c874841ce5d (diff)
downloadgcc-65e6c00573077208af5011dd1bebe287ae1f2ade.zip
gcc-65e6c00573077208af5011dd1bebe287ae1f2ade.tar.gz
gcc-65e6c00573077208af5011dd1bebe287ae1f2ade.tar.bz2
re PR rtl-optimization/5854 (initialize_uninitialized_subregs() breaks HC11/HC12 port)
PR optimization/5854 * config/m68hc11/m68hc11.h (CONST_OK_FOR_LETTER_VALUE_P): Use K for 0. Shut up warnings. (CONST_DOUBLE_OK_FOR_LETTER_P): Use G for 0.0. (EXTRA_CONSTRAINT): Use S for non-push memory operand. * config/m68hc11/m68hc11.c (m68hc11_split_move): Handle setting from const0 if scratch register was not allocated. (m68hc11_reload_operands, m68hc11_gen_lowpart, m68hc11_gen_highpart, m68hc11_z_replacement): Replace gen_rtx (CONST_INT, VOIDmode, ...) with GEN_INT (...). (m68hc11_reorg): Compute BLOCK_FOR_INSN before reload_cse_regs. * config/m68hc11/m68hc11.md: Replace gen_rtx (CONST_INT, VOIDmode, ...) with GEN_INT (...) everywhere. Remove constraints in define_split patterns. (movdi_internal, movdf_internal, movsi_internal, movsf_internal): Don't require scratch register for setting 0 into regs/non-pushable memory. From-SVN: r51194
-rw-r--r--gcc/ChangeLog19
-rw-r--r--gcc/config/m68hc11/m68hc11.c47
-rw-r--r--gcc/config/m68hc11/m68hc11.h22
-rw-r--r--gcc/config/m68hc11/m68hc11.md252
4 files changed, 180 insertions, 160 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6b1f0b5..c94dbdd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,22 @@
+2002-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR optimization/5854
+ * config/m68hc11/m68hc11.h (CONST_OK_FOR_LETTER_VALUE_P): Use K for 0.
+ Shut up warnings.
+ (CONST_DOUBLE_OK_FOR_LETTER_P): Use G for 0.0.
+ (EXTRA_CONSTRAINT): Use S for non-push memory operand.
+ * config/m68hc11/m68hc11.c (m68hc11_split_move): Handle setting from
+ const0 if scratch register was not allocated.
+ (m68hc11_reload_operands, m68hc11_gen_lowpart, m68hc11_gen_highpart,
+ m68hc11_z_replacement): Replace gen_rtx (CONST_INT, VOIDmode, ...)
+ with GEN_INT (...).
+ (m68hc11_reorg): Compute BLOCK_FOR_INSN before reload_cse_regs.
+ * config/m68hc11/m68hc11.md: Replace gen_rtx (CONST_INT, VOIDmode, ...)
+ with GEN_INT (...) everywhere. Remove constraints in define_split
+ patterns.
+ (movdi_internal, movdf_internal, movsi_internal, movsf_internal): Don't
+ require scratch register for setting 0 into regs/non-pushable memory.
+
2002-03-22 Alexandre Oliva <aoliva@redhat.com>
* config/mips/mips.h (MASK_RETURN_ADDR): Define.
diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c
index 4927825..615c12b 100644
--- a/gcc/config/m68hc11/m68hc11.c
+++ b/gcc/config/m68hc11/m68hc11.c
@@ -778,7 +778,7 @@ m68hc11_reload_operands (operands)
/* Create the lowest part offset that still remains to be added.
If it's not a valid offset, do a 16-bit add. */
- offset = gen_rtx (CONST_INT, VOIDmode, vl);
+ offset = GEN_INT (vl);
if (!VALID_CONSTANT_OFFSET_P (offset, mode))
{
emit_insn (gen_rtx (SET, VOIDmode, reg,
@@ -789,8 +789,7 @@ m68hc11_reload_operands (operands)
{
emit_insn (gen_rtx (SET, VOIDmode, reg,
gen_rtx (PLUS, HImode, reg,
- gen_rtx (CONST_INT,
- VOIDmode, vh << 8))));
+ GEN_INT (vh << 8))));
}
emit_move_insn (operands[0],
gen_rtx (MEM, GET_MODE (operands[1]),
@@ -1874,20 +1873,18 @@ m68hc11_gen_lowpart (mode, x)
return second;
}
if (mode == SImode)
- return gen_rtx (CONST_INT, VOIDmode, l[0]);
+ return GEN_INT (l[0]);
- return gen_rtx (CONST_INT, VOIDmode,
- trunc_int_for_mode (l[0], HImode));
+ return gen_int_mode (l[0], HImode);
}
else
{
l[0] = CONST_DOUBLE_LOW (x);
}
if (mode == SImode)
- return gen_rtx (CONST_INT, VOIDmode, l[0]);
+ return GEN_INT (l[0]);
else if (mode == HImode && GET_MODE (x) == SFmode)
- return gen_rtx (CONST_INT, VOIDmode,
- trunc_int_for_mode (l[0], HImode));
+ return gen_int_mode (l[0], HImode);
else
abort ();
}
@@ -1953,10 +1950,9 @@ m68hc11_gen_highpart (mode, x)
return first;
}
if (mode == SImode)
- return gen_rtx (CONST_INT, VOIDmode, l[1]);
+ return GEN_INT (l[1]);
- return gen_rtx (CONST_INT, VOIDmode,
- trunc_int_for_mode ((l[1] >> 16), HImode));
+ return gen_int_mode ((l[1] >> 16), HImode);
}
else
{
@@ -1964,10 +1960,9 @@ m68hc11_gen_highpart (mode, x)
}
if (mode == SImode)
- return gen_rtx (CONST_INT, VOIDmode, l[1]);
+ return GEN_INT (l[1]);
else if (mode == HImode && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
- return gen_rtx (CONST_INT, VOIDmode,
- trunc_int_for_mode ((l[0] >> 16), HImode));
+ return gen_int_mode ((l[0] >> 16), HImode);
else
abort ();
}
@@ -1977,13 +1972,11 @@ m68hc11_gen_highpart (mode, x)
if (mode == QImode)
{
- return gen_rtx (CONST_INT, VOIDmode,
- trunc_int_for_mode (val >> 8, QImode));
+ return gen_int_mode (val >> 8, QImode);
}
else if (mode == HImode)
{
- return gen_rtx (CONST_INT, VOIDmode,
- trunc_int_for_mode (val >> 16, HImode));
+ return gen_int_mode (val >> 16, HImode);
}
}
if (mode == QImode && D_REG_P (x))
@@ -2752,6 +2745,10 @@ m68hc11_split_move (to, from, scratch)
m68hc11_split_move (high_to, high_from, scratch);
}
else if (H_REG_P (to) || H_REG_P (from)
+ || (low_from == const0_rtx
+ && high_from == const0_rtx
+ && ! push_operand (to, GET_MODE (to))
+ && ! H_REG_P (scratch))
|| (TARGET_M6812
&& (!m68hc11_register_indirect_p (from, GET_MODE (from))
|| m68hc11_small_indexed_indirect_p (from,
@@ -4758,12 +4755,7 @@ m68hc11_z_replacement (insn)
src = SET_SRC (body);
dst = SET_DEST (body);
if (SP_REG_P (src) && Z_REG_P (dst))
- {
- emit_insn_after (gen_addhi3 (dst,
- dst,
- gen_rtx (CONST_INT,
- VOIDmode, 2)), insn);
- }
+ emit_insn_after (gen_addhi3 (dst, dst, const2_rtx), insn);
}
/* Replace any (REG:HI Z) occurrence by either X or Y. */
@@ -4944,7 +4936,10 @@ m68hc11_reorg (first)
/* After some splitting, there are some oportunities for CSE pass.
This happens quite often when 32-bit or above patterns are split. */
if (optimize > 0 && split_done)
- reload_cse_regs (first);
+ {
+ find_basic_blocks (first, max_reg_num (), 0);
+ reload_cse_regs (first);
+ }
/* Re-create the REG_DEAD notes. These notes are used in the machine
description to use the best assembly directives. */
diff --git a/gcc/config/m68hc11/m68hc11.h b/gcc/config/m68hc11/m68hc11.h
index 865e2eb..b81b941 100644
--- a/gcc/config/m68hc11/m68hc11.h
+++ b/gcc/config/m68hc11/m68hc11.h
@@ -813,32 +813,38 @@ extern enum reg_class m68hc11_tmp_regs_class;
C is the letter, and VALUE is a constant value.
Return 1 if VALUE is in the range specified by C.
+ `K' is for 0.
`L' is for range -65536 to 65536
`M' is for values whose 16-bit low part is 0
'N' is for +1 or -1.
'O' is for 16 (for rotate using swap).
'P' is for range -8 to 2 (used by addhi_sp)
- 'I', 'J', 'K' are not used. */
+ 'I', 'J' are not used. */
#define CONST_OK_FOR_LETTER_P(VALUE, C) \
- ((C) == 'L' ? (VALUE) >= -65536 && (VALUE) <= 65535 : \
+ ((C) == 'K' ? (VALUE) == 0 : \
+ (C) == 'L' ? ((VALUE) >= -65536 && (VALUE) <= 65535) : \
(C) == 'M' ? ((VALUE) & 0x0ffffL) == 0 : \
- (C) == 'N' ? ((VALUE) == 1 || (VALUE) == -1): \
+ (C) == 'N' ? ((VALUE) == 1 || (VALUE) == -1) : \
(C) == 'O' ? (VALUE) == 16 : \
- (C) == 'P' ? (VALUE) <= 2 && (VALUE) >= -8 : 0)
+ (C) == 'P' ? ((VALUE) <= 2 && (VALUE) >= -8) : 0)
/* Similar, but for floating constants, and defining letters G and H.
- No floating-point constants are valid on 68HC11. */
-#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
+
+ `G' is for 0.0. */
+#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \
+ ((C) == 'G' ? (GET_MODE_CLASS (GET_MODE (VALUE)) == MODE_FLOAT \
+ && VALUE == CONST0_RTX (GET_MODE (VALUE))) : 0)
/* 'U' represents certain kind of memory indexed operand for 68HC12.
and any memory operand for 68HC11. */
#define EXTRA_CONSTRAINT(OP, C) \
((C) == 'U' ? m68hc11_small_indexed_indirect_p (OP, GET_MODE (OP)) \
: (C) == 'Q' ? m68hc11_symbolic_p (OP, GET_MODE (OP)) \
- : (C) == 'R' ? m68hc11_indirect_p (OP, GET_MODE (OP)) : 0)
-
+ : (C) == 'R' ? m68hc11_indirect_p (OP, GET_MODE (OP)) \
+ : (C) == 'S' ? (memory_operand (OP, GET_MODE (OP)) \
+ && non_push_operand (OP, GET_MODE (OP))) : 0)
/* Stack layout; function entry, exit and calling. */
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index 092b903..ea68c8a 100644
--- a/gcc/config/m68hc11/m68hc11.md
+++ b/gcc/config/m68hc11/m68hc11.md
@@ -552,9 +552,9 @@
(define_split /* cmpqi_z_used */
[(set (cc0)
- (compare (match_operand:QI 0 "tst_operand" "dxy,m")
- (match_operand:QI 1 "cmp_operand" "m,dxy")))
- (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
+ (compare (match_operand:QI 0 "tst_operand" "")
+ (match_operand:QI 1 "cmp_operand" "")))
+ (use (match_operand:HI 2 "hard_reg_operand" ""))
(use (reg:HI 11))]
"z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))
@@ -579,8 +579,8 @@
"#")
(define_split
- [(set (strict_low_part (match_operand:SI 0 "non_push_operand" "+um,D,D"))
- (match_operand:SI 1 "general_operand" "D,Dim,u"))]
+ [(set (strict_low_part (match_operand:SI 0 "non_push_operand" ""))
+ (match_operand:SI 1 "general_operand" ""))]
"z_replacement_completed == 2"
[(set (match_dup 0) (match_dup 1))]
"")
@@ -592,8 +592,8 @@
"#")
(define_split
- [(set (strict_low_part (match_operand:HI 0 "non_push_operand" "+um,dA,dA"))
- (match_operand:HI 1 "general_operand" "dA,dAim,u"))]
+ [(set (strict_low_part (match_operand:HI 0 "non_push_operand" ""))
+ (match_operand:HI 1 "general_operand" ""))]
"z_replacement_completed == 2"
[(set (match_dup 0) (match_dup 1))]
"")
@@ -605,8 +605,8 @@
"#")
(define_split
- [(set (strict_low_part (match_operand:QI 0 "non_push_operand" "+mu,dA"))
- (match_operand:QI 1 "general_operand" "d,imudA"))]
+ [(set (strict_low_part (match_operand:QI 0 "non_push_operand" ""))
+ (match_operand:QI 1 "general_operand" ""))]
"z_replacement_completed == 2"
[(set (match_dup 0) (match_dup 1))]
"")
@@ -651,16 +651,16 @@
")
(define_insn "movdi_internal"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=U,!u,U,m,m,!u")
- (match_operand:DI 1 "general_operand" "iU,iU,!u,mi,!u,!mu"))
- (clobber (match_scratch:HI 2 "=&d,&d,&d,&d,&d,&d"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=uS,U,!u,U,m,m,!u")
+ (match_operand:DI 1 "general_operand" "K,iU,iU,!u,mi,!u,!mu"))
+ (clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
"#")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=uUm")
- (match_operand:DI 1 "general_operand" "iuUm"))
- (clobber (match_scratch:HI 2 "=&d"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ (match_operand:DI 1 "general_operand" ""))
+ (clobber (match_scratch:HI 2 ""))]
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -687,16 +687,16 @@
")
(define_insn "movdf_internal"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=U,!u,U,m,m,!u")
- (match_operand:DF 1 "general_operand" "iU,iU,!u,mi,!u,!mu"))
- (clobber (match_scratch:HI 2 "=&d,&d,&d,&d,&d,&d"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=uS,U,!u,U,m,m,!u")
+ (match_operand:DF 1 "general_operand" "G,iU,iU,!u,mi,!u,!mu"))
+ (clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
"#")
(define_split
- [(set (match_operand:DF 0 "nonimmediate_operand" "=uUm")
- (match_operand:DF 1 "general_operand" "iuUm"))
- (clobber (match_scratch:HI 2 "=&d"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "")
+ (match_operand:DF 1 "general_operand" ""))
+ (clobber (match_scratch:HI 2 ""))]
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -732,16 +732,16 @@
")
(define_insn "movsi_internal"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=mu,?D,m,?D,?u,?u,!u,D")
- (match_operand:SI 1 "general_operand" "imu,im,?D,!u,?D,mi,!u,!D"))
- (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=uS,mu,?D,m,?D,?u,?u,!u,D")
+ (match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D"))
+ (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
"#")
(define_split
- [(set (match_operand:SI 0 "nonimmediate_operand" "=m,D,m,D,!u,!u,!u,D")
- (match_operand:SI 1 "general_operand" "im,im,D,!u,D,mi,!u,!D"))
- (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "")
+ (match_operand:SI 1 "general_operand" ""))
+ (clobber (match_scratch:HI 2 ""))]
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -768,16 +768,16 @@
")
(define_insn "movsf_internal"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=m,D,m,D,!u,!u,!u,D")
- (match_operand:SF 1 "general_operand" "im,im,D,!u,D,mi,!u,!D"))
- (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=S!u,m,D,m,D,!u,!u,!u,D")
+ (match_operand:SF 1 "general_operand" "G,im,im,D,!u,D,mi,!u,!D"))
+ (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
"#")
(define_split
- [(set (match_operand:SF 0 "nonimmediate_operand" "=m,D,m,D,!u,!u,!u,D")
- (match_operand:SF 1 "general_operand" "im,im,D,!u,D,mi,!u,!D"))
- (clobber (match_scratch:HI 2 "=&d,X,X,X,X,&d,&d,X"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "")
+ (match_operand:SF 1 "general_operand" ""))
+ (clobber (match_scratch:HI 2 ""))]
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -933,7 +933,7 @@
;; appear in the source operand.
;;
(define_split
- [(set (match_operand:QI 0 "hard_addr_reg_operand" "=A")
+ [(set (match_operand:QI 0 "hard_addr_reg_operand" "")
(match_operand:QI 1 "general_operand" ""))]
"z_replacement_completed == 2 && GET_MODE (operands[0]) == QImode
&& !reg_mentioned_p (operands[0], operands[1])
@@ -950,7 +950,7 @@
;;
(define_split
[(set (match_operand:QI 0 "nonimmediate_operand" "")
- (match_operand:QI 1 "hard_addr_reg_operand" "=A"))]
+ (match_operand:QI 1 "hard_addr_reg_operand" ""))]
"z_replacement_completed == 2 && GET_MODE (operands[1]) == QImode
&& !reg_mentioned_p (operands[1], operands[0])
&& !D_REG_P (operands[0])"
@@ -1097,8 +1097,8 @@
"#")
(define_split
- [(set (match_operand:DI 0 "push_operand" "=<")
- (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "dmu*B")))
+ [(set (match_operand:DI 0 "push_operand" "")
+ (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "")))
(clobber (match_scratch:HI 2 "=&dB"))]
"z_replacement_completed == 2"
[(const_int 0)]
@@ -1155,8 +1155,8 @@
}")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=mu")
- (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "dmu*B")))
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "")))
(clobber (match_scratch:HI 2 "=&dB"))]
"z_replacement_completed == 2"
[(const_int 0)]
@@ -1194,10 +1194,10 @@
"#")
(define_split
- [(set (match_operand:DI 0 "non_push_operand" "=m,m,m,!u,!u")
+ [(set (match_operand:DI 0 "non_push_operand" "")
(zero_extend:DI
- (match_operand:HI 1 "nonimmediate_operand" "m,dA,!u,dmA,!u")))
- (clobber (match_scratch:HI 2 "=&d,&dB,&dB,&dB,&dB"))]
+ (match_operand:HI 1 "nonimmediate_operand" "")))
+ (clobber (match_scratch:HI 2 ""))]
"z_replacement_completed == 2"
[(const_int 0)]
"
@@ -1233,10 +1233,10 @@
"#")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=m,m,!u,!u")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
(zero_extend:DI
- (match_operand:SI 1 "nonimmediate_operand" "m,Du,m,Du")))
- (clobber (match_scratch:HI 2 "=d,d,&dB,d"))]
+ (match_operand:SI 1 "nonimmediate_operand" "")))
+ (clobber (match_scratch:HI 2 ""))]
"z_replacement_completed == 2"
[(const_int 0)]
"
@@ -1267,10 +1267,10 @@
"#")
(define_split
- [(set (match_operand:SI 0 "non_push_operand" "=D,mu,m,m,!u,!u")
+ [(set (match_operand:SI 0 "non_push_operand" "")
(zero_extend:SI
- (match_operand:HI 1 "nonimmediate_operand" "dAmu,dA,m,!u,m,!u")))
- (clobber (match_scratch:HI 2 "=X,X,&d,&dB,&dB,&dB"))]
+ (match_operand:HI 1 "nonimmediate_operand" "")))
+ (clobber (match_scratch:HI 2 ""))]
"reload_completed"
[(const_int 0)]
"
@@ -1295,8 +1295,8 @@
"#")
(define_split
- [(set (match_operand:SI 0 "non_push_operand" "=mu")
- (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "dxy")))]
+ [(set (match_operand:SI 0 "non_push_operand" "")
+ (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
"reload_completed && !X_REG_P (operands[0])"
[(set (match_dup 2) (zero_extend:HI (match_dup 1)))
(set (match_dup 3) (const_int 0))]
@@ -1305,8 +1305,8 @@
operands[3] = m68hc11_gen_highpart (HImode, operands[0]);")
(define_split
- [(set (match_operand:SI 0 "hard_reg_operand" "=D")
- (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "dxymu")))]
+ [(set (match_operand:SI 0 "hard_reg_operand" "")
+ (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
"z_replacement_completed == 2 && X_REG_P (operands[0])"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 4) (const_int 0))
@@ -1584,8 +1584,8 @@
;; a temporary scratch memory location.
;;
(define_split
- [(set (match_operand:SI 0 "register_operand" "=D")
- (sign_extend:SI (match_operand:HI 1 "register_operand" "A")))]
+ [(set (match_operand:SI 0 "register_operand" "")
+ (sign_extend:SI (match_operand:HI 1 "register_operand" "")))]
"reload_completed && (Y_REG_P (operands[1]) || Z_REG_P (operands[1]))"
[(set (reg:HI D_REGNUM) (match_dup 1))
(set (match_dup 0) (sign_extend:SI (reg:HI D_REGNUM)))]
@@ -1816,10 +1816,10 @@
(define_split /* "*addsi3_zero_extendqi" */
- [(set (match_operand:SI 0 "register_operand" "=D,D")
+ [(set (match_operand:SI 0 "register_operand" "")
(plus:SI (zero_extend:SI
- (match_operand:QI 1 "general_operand" "dAmi,!dAmiu"))
- (match_operand:SI 2 "memory_operand" "m,m")))
+ (match_operand:QI 1 "general_operand" ""))
+ (match_operand:SI 2 "memory_operand" "")))
(clobber (match_scratch:HI 3 "=X,X"))]
"reload_completed"
[(set (reg:HI D_REGNUM) (zero_extend:HI (match_dup 1)))
@@ -1854,7 +1854,7 @@
{
ops[0] = operands[1];
}
- ops[1] = gen_rtx (CONST_INT, VOIDmode, 0);
+ ops[1] = const0_rtx;
}
else
{
@@ -1955,7 +1955,7 @@
}
else
{
- ops[1] = gen_rtx (CONST_INT, VOIDmode, - val);
+ ops[1] = GEN_INT (- val);
add_insn = \"subd\\t%1\";
inc_insn = \"dex\";
incb_mem = \"dec\\t%b1\";
@@ -2002,10 +2002,10 @@
}")
(define_split
- [(set (match_operand:SI 0 "register_operand" "=D,u")
- (plus:SI (match_operand:SI 1 "register_operand" "%0,0")
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "const_int_operand" "")))
- (clobber (match_scratch:HI 3 "=X,d"))]
+ (clobber (match_scratch:HI 3 ""))]
"reload_completed && z_replacement_completed == 2
&& ((INTVAL (operands[2]) & 0x0FFFF) == 0)"
[(set (match_dup 5) (match_dup 6))
@@ -2024,9 +2024,9 @@
")
(define_split
- [(set (match_operand:SI 0 "register_operand" "=D")
- (plus:SI (match_operand:SI 1 "register_operand" "%0")
- (match_operand:SI 2 "general_operand" "mui")))
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "general_operand" "")))
(clobber (match_scratch:HI 3 "=X"))]
"reload_completed && z_replacement_completed == 2
&& (GET_CODE (operands[2]) != CONST_INT ||
@@ -2392,7 +2392,7 @@
;; ??? It's not clear whether this is really necessary.
;;
(define_split
- [(set (match_operand:QI 0 "hard_reg_operand" "=dA")
+ [(set (match_operand:QI 0 "hard_reg_operand" "")
(plus:QI (match_dup 0)
(match_dup 0)))]
"0 && reload_completed"
@@ -2550,9 +2550,9 @@
;; reg:QI 7 -> ccr reg:QI 5 -> A
;;
(define_split /* "*subsi3" */
- [(set (match_operand:SI 0 "register_operand" "=D")
- (minus:SI (match_operand:SI 1 "register_operand" "0")
- (match_operand:SI 2 "general_operand" "mui")))
+ [(set (match_operand:SI 0 "register_operand" "")
+ (minus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "general_operand" "")))
(clobber (match_scratch:HI 3 "=X"))]
"reload_completed && z_replacement_completed == 2
&& X_REG_P (operands[1])"
@@ -2569,9 +2569,9 @@
operands[4] = m68hc11_gen_lowpart (QImode, operands[4]);")
(define_split /* "*subsi3" */
- [(set (match_operand:SI 0 "register_operand" "=D")
- (minus:SI (match_operand:SI 1 "general_operand" "mui")
- (match_operand:SI 2 "register_operand" "D")))
+ [(set (match_operand:SI 0 "register_operand" "")
+ (minus:SI (match_operand:SI 1 "general_operand" "")
+ (match_operand:SI 2 "register_operand" "")))
(clobber (match_scratch:HI 3 "=X"))]
"reload_completed && z_replacement_completed == 2
&& X_REG_P (operands[2])"
@@ -2589,9 +2589,9 @@
operands[4] = m68hc11_gen_lowpart (QImode, operands[4]);")
(define_split /* "*subsi3" */
- [(set (match_operand:SI 0 "nonimmediate_operand" "=u")
- (minus:SI (match_operand:SI 1 "general_operand" "0")
- (match_operand:SI 2 "general_operand" "mui")))
+ [(set (match_operand:SI 0 "nonimmediate_operand" "")
+ (minus:SI (match_operand:SI 1 "general_operand" "")
+ (match_operand:SI 2 "general_operand" "")))
(clobber (match_scratch:HI 3 "=d"))]
"reload_completed && z_replacement_completed == 2
&& !X_REG_P (operands[0])"
@@ -3045,7 +3045,7 @@
CC_STATUS_INIT;
/* The bclr instruction uses an inverted mask. */
- operands[1] = gen_rtx (CONST_INT, VOIDmode, (~val) & 0x0FFFF);
+ operands[1] = GEN_INT ((~val) & 0x0FFFF);
/* When destination is a global variable, generate a .relax instruction
and load the address in the clobber register. That load can be
@@ -3130,7 +3130,7 @@
rtx ops[2];
ops[0] = operands[0];
- ops[1] = gen_rtx (CONST_INT, VOIDmode, (~val) & 0x0FF);
+ ops[1] = GEN_INT ((~val) & 0x0FF);
output_asm_insn (\"bclr\\t%b0, %1\", ops);
}
else if ((val & 0x0FF) != 0)
@@ -3147,7 +3147,7 @@
rtx ops[2];
ops[0] = operands[0];
- ops[1] = gen_rtx (CONST_INT, VOIDmode, ((~val) & 0x0FF00) >> 8);
+ ops[1] = GEN_INT (((~val) & 0x0FF00) >> 8);
output_asm_insn (\"bclr\\t%h0, %1\", ops);
}
else if ((val & 0x0FF00) != 0)
@@ -3201,7 +3201,7 @@
}
/* The bclr instruction uses an inverted mask. */
- operands[1] = gen_rtx (CONST_INT, VOIDmode, (~val) & 0x0FF);
+ operands[1] = GEN_INT ((~val) & 0x0FF);
/* When destination is a global variable, generate a .relax instruction
and load the address in the clobber register. That load can be
@@ -3245,7 +3245,7 @@
rtx ops[2];
ops[0] = operands[0];
- ops[1] = gen_rtx (CONST_INT, VOIDmode, (~val) & 0x0FF);
+ ops[1] = GEN_INT ((~val) & 0x0FF);
output_asm_insn (\"bclr\\t%b0, %b1\", ops);
return \"\";
}
@@ -3893,10 +3893,10 @@
;;
;;
(define_split
- [(set (match_operand:HI 0 "hard_addr_reg_operand" "=A")
+ [(set (match_operand:HI 0 "hard_addr_reg_operand" "")
(match_operator:HI 3 "m68hc11_arith_operator"
- [(match_operand:HI 1 "hard_addr_reg_operand" "0")
- (match_operand:HI 2 "general_operand" "dAuim")]))]
+ [(match_operand:HI 1 "hard_addr_reg_operand" "")
+ (match_operand:HI 2 "general_operand" "")]))]
"z_replacement_completed == 2
/* If we are adding a small constant to X or Y, it's
better to use one or several inx/iny instructions. */
@@ -3943,10 +3943,10 @@
")
(define_split
- [(set (match_operand:HI 0 "hard_addr_reg_operand" "=A")
+ [(set (match_operand:HI 0 "hard_addr_reg_operand" "")
(match_operator:HI 3 "m68hc11_arith_operator"
- [(match_operand:HI 1 "general_operand" "mu")
- (match_operand:HI 2 "general_operand" "dAuim")]))]
+ [(match_operand:HI 1 "general_operand" "")
+ (match_operand:HI 2 "general_operand" "")]))]
"z_replacement_completed == 2
/* If we are adding a small constant to X or Y, it's
better to use one or several inx/iny instructions. */
@@ -3979,10 +3979,10 @@
;; The shift operators are special and must not appear here.
;;
(define_split
- [(set (match_operand:HI 0 "d_register_operand" "=d")
+ [(set (match_operand:HI 0 "d_register_operand" "")
(match_operator:HI 3 "m68hc11_non_shift_operator"
- [(match_operand:HI 1 "d_register_operand" "%0")
- (match_operand:HI 2 "hard_reg_operand" "*d*A")]))]
+ [(match_operand:HI 1 "d_register_operand" "")
+ (match_operand:HI 2 "hard_reg_operand" "")]))]
"TARGET_M6811
&& z_replacement_completed == 2 && !SP_REG_P (operands[2])"
[(set (match_dup 4) (match_dup 2))
@@ -3994,10 +3994,10 @@
;; logical/arithmetic operation with a pop.
;;
(define_split
- [(set (match_operand:HI 0 "d_register_operand" "=d")
+ [(set (match_operand:HI 0 "d_register_operand" "")
(match_operator:HI 3 "m68hc11_non_shift_operator"
- [(match_operand:HI 1 "d_register_operand" "%0")
- (match_operand:HI 2 "hard_reg_operand" "*d*A")]))]
+ [(match_operand:HI 1 "d_register_operand" "")
+ (match_operand:HI 2 "hard_reg_operand" "")]))]
"TARGET_M6812
&& z_replacement_completed == 2 && !SP_REG_P (operands[2])"
[(set (match_dup 4) (match_dup 2))
@@ -4071,10 +4071,10 @@
;; AND OR XOR PLUS MINUS ASHIFT ASHIFTRT LSHIFTRT ROTATE ROTATERT
;;
(define_split
- [(set (match_operand:QI 0 "hard_addr_reg_operand" "=xy")
+ [(set (match_operand:QI 0 "hard_addr_reg_operand" "")
(match_operator:QI 3 "m68hc11_arith_operator"
- [(match_operand:QI 1 "hard_addr_reg_operand" "%0")
- (match_operand:QI 2 "general_operand" "dxyuim")]))]
+ [(match_operand:QI 1 "hard_addr_reg_operand" "")
+ (match_operand:QI 2 "general_operand" "")]))]
"z_replacement_completed == 2
/* Reject a (plus:QI (reg:QI X) (const_int 1|-1)) because the
incqi pattern generates a better code. */
@@ -4342,10 +4342,10 @@
"#")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=<,um")
- (ashift:DI (match_operand:DI 1 "general_operand" "umi,umi")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ (ashift:DI (match_operand:DI 1 "general_operand" "")
(const_int 32)))
- (clobber (match_scratch:HI 2 "=&A,d"))]
+ (clobber (match_scratch:HI 2 ""))]
"reload_completed"
[(const_int 0)]
"/* Move the lowpart in the highpart first in case the shift
@@ -4374,10 +4374,10 @@
"#")
(define_split
- [(set (match_operand:DI 0 "non_push_operand" "=um")
- (ashift:DI (match_operand:DI 1 "general_operand" "umi")
+ [(set (match_operand:DI 0 "non_push_operand" "")
+ (ashift:DI (match_operand:DI 1 "general_operand" "")
(const_int 1)))
- (clobber (match_scratch:HI 2 "=d"))]
+ (clobber (match_scratch:HI 2 ""))]
"z_replacement_completed == 2"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 2) (ashift:HI (match_dup 2) (const_int 1)))
@@ -4456,11 +4456,11 @@
"#")
(define_split
- [(set (match_operand:SI 0 "register_operand" "=D")
+ [(set (match_operand:SI 0 "register_operand" "")
(plus:SI
- (mult:SI (match_operand:SI 2 "general_operand" "uim")
+ (mult:SI (match_operand:SI 2 "general_operand" "")
(const_int 65536))
- (match_operand:SI 1 "general_operand" "0")))
+ (match_operand:SI 1 "general_operand" "")))
(clobber (match_scratch:HI 3 "=X"))]
"0 && reload_completed && z_replacement_completed == 2"
[(set (reg:HI X_REGNUM) (plus:HI (reg:HI X_REGNUM) (match_dup 4)))]
@@ -4478,10 +4478,10 @@
"#")
(define_split
- [(set (match_operand:SI 0 "register_operand" "=D")
- (plus:SI (and:SI (match_operand:SI 1 "general_operand" "%uim")
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (and:SI (match_operand:SI 1 "general_operand" "")
(const_int 65535))
- (match_operand:SI 2 "general_operand" "0")))]
+ (match_operand:SI 2 "general_operand" "")))]
"z_replacement_completed == 2"
[(set (reg:HI D_REGNUM) (plus:HI (reg:HI D_REGNUM) (match_dup 3)))
(set (reg:HI X_REGNUM) (plus:HI (plus:HI (reg:HI X_REGNUM) (const_int 0)) (reg:HI CC_REGNUM)))]
@@ -4509,10 +4509,10 @@
"")
(define_split
- [(set (match_operand:SI 0 "nonimmediate_operand" "=D,um")
- (ashift:SI (match_operand:SI 1 "general_operand" "Duim,D")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "")
+ (ashift:SI (match_operand:SI 1 "general_operand" "")
(const_int 16)))
- (clobber (match_scratch:HI 3 "=X,X"))]
+ (clobber (match_scratch:HI 3 ""))]
""
[(set (match_dup 2) (match_dup 3))
(set (match_dup 4) (const_int 0))]
@@ -4538,9 +4538,9 @@
"#")
(define_split /* "*ashlsi3_const16_zexthi"*/
- [(set (match_operand:SI 0 "nonimmediate_operand" "=D")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "")
(ashift:SI (zero_extend:HI
- (match_operand:HI 1 "general_operand" "duim*a"))
+ (match_operand:HI 1 "general_operand" ""))
(const_int 16)))
(clobber (match_scratch:HI 2 "=X"))]
"reload_completed"
@@ -5152,8 +5152,8 @@
"#")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=<,um")
- (lshiftrt:DI (match_operand:DI 1 "general_operand" "umi,umi")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ (lshiftrt:DI (match_operand:DI 1 "general_operand" "")
(const_int 32)))
(clobber (match_scratch:HI 2 "=&A,d"))]
"reload_completed"
@@ -5174,8 +5174,8 @@
"#")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=um")
- (lshiftrt:DI (match_operand:DI 1 "general_operand" "umi")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ (lshiftrt:DI (match_operand:DI 1 "general_operand" "")
(match_operand:DI 2 "const_int_operand" "")))
(clobber (match_scratch:HI 3 "=d"))]
"z_replacement_completed && INTVAL (operands[2]) >= 56"
@@ -5187,7 +5187,7 @@
(set (match_dup 5) (reg:HI D_REGNUM))
(set (match_dup 6) (reg:HI D_REGNUM))
(set (match_dup 7) (reg:HI D_REGNUM))]
- "operands[8] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) - 56);
+ "operands[8] = GEN_INT (INTVAL (operands[2]) - 56);
operands[4] = m68hc11_gen_lowpart (SImode, operands[0]);
operands[5] = m68hc11_gen_highpart (HImode, operands[4]);
operands[4] = m68hc11_gen_lowpart (HImode, operands[4]);
@@ -5201,8 +5201,8 @@
operands[6] = m68hc11_gen_lowpart (HImode, operands[6]);")
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "=um")
- (lshiftrt:DI (match_operand:DI 1 "general_operand" "umi")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ (lshiftrt:DI (match_operand:DI 1 "general_operand" "")
(match_operand:DI 2 "const_int_operand" "")))
(clobber (match_scratch:HI 3 "=d"))]
"z_replacement_completed && INTVAL (operands[2]) >= 48
@@ -5214,7 +5214,7 @@
(set (match_dup 5) (reg:HI D_REGNUM))
(set (match_dup 6) (reg:HI D_REGNUM))
(set (match_dup 7) (reg:HI D_REGNUM))]
- "operands[8] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[2]) - 48);
+ "operands[8] = GEN_INT (INTVAL (operands[2]) - 48);
operands[4] = m68hc11_gen_lowpart (SImode, operands[0]);
operands[5] = m68hc11_gen_highpart (HImode, operands[4]);
operands[4] = m68hc11_gen_lowpart (HImode, operands[4]);
@@ -5234,10 +5234,10 @@
"#")
(define_split
- [(set (match_operand:DI 0 "non_push_operand" "=um")
- (lshiftrt:DI (match_operand:DI 1 "general_operand" "umi")
+ [(set (match_operand:DI 0 "non_push_operand" "")
+ (lshiftrt:DI (match_operand:DI 1 "general_operand" "")
(const_int 1)))
- (clobber (match_scratch:HI 2 "=d"))]
+ (clobber (match_scratch:HI 2 ""))]
"z_replacement_completed == 2"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 2) (lshiftrt:HI (match_dup 2) (const_int 1)))
@@ -5283,10 +5283,10 @@
"")
(define_split
- [(set (match_operand:SI 0 "non_push_operand" "=D,um")
- (lshiftrt:SI (match_operand:SI 1 "general_operand" "uim,D")
+ [(set (match_operand:SI 0 "non_push_operand" "")
+ (lshiftrt:SI (match_operand:SI 1 "general_operand" "")
(const_int 16)))
- (clobber (match_scratch:HI 3 "=X,X"))]
+ (clobber (match_scratch:HI 3 ""))]
"reload_completed && !(X_REG_P (operands[0]) && X_REG_P (operands[1]))"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 4) (const_int 0))]