diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 5 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.md | 10 |
3 files changed, 19 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0215dd9..4ed9cd3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-10-23 Jim Wilson <wilson@cygnus.com> + + * ia64.c (ia64_print_operand, case 'r'): Correct comment. Handle + CONST_INT. + * ia64.md (cmpsi_adjusted): Use %r3. + (cmpdi_adjusted): Likewise. + 2000-10-23 Diego Novillo <dnovillo@cygnus.com> * config/i386/att.h (ASM_FILE_START): Define. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 2026e99..6d13ef8 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -3261,11 +3261,14 @@ ia64_print_operand (file, x, code) break; case 'r': - /* If this operand is the constant zero, write it as zero. */ + /* If this operand is the constant zero, write it as register zero. + Any register, zero, or CONST_INT value is OK here. */ if (GET_CODE (x) == REG) fputs (reg_names[REGNO (x)], file); else if (x == CONST0_RTX (GET_MODE (x))) fputs ("r0", file); + else if (GET_CODE (x) == CONST_INT) + output_addr_const (file, x); else output_operand_lossage ("invalid %%r value"); return; diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index 022161b..cf6fdd2 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -4200,13 +4200,16 @@ "cmp4.%C1 %0, %I0 = %3, %2" [(set_attr "type" "A")]) +;; We use %r3 because it is possible for us to match a 0, and two of the +;; unsigned comparisons don't accept immediate operands of zero. + (define_insn "*cmpsi_adjusted" [(set (match_operand:BI 0 "register_operand" "=c") (match_operator:BI 1 "adjusted_comparison_operator" [(match_operand:SI 2 "gr_register_operand" "r") (match_operand:SI 3 "gr_reg_or_8bit_adjusted_operand" "rL")]))] "" - "cmp4.%C1 %0, %I0 = %3, %2" + "cmp4.%C1 %0, %I0 = %r3, %2" [(set_attr "type" "A")]) (define_insn "*cmpdi_normal" @@ -4218,13 +4221,16 @@ "cmp.%C1 %0, %I0 = %3, %r2" [(set_attr "type" "A")]) +;; We use %r3 because it is possible for us to match a 0, and two of the +;; unsigned comparisons don't accept immediate operands of zero. + (define_insn "*cmpdi_adjusted" [(set (match_operand:BI 0 "register_operand" "=c") (match_operator:BI 1 "adjusted_comparison_operator" [(match_operand:DI 2 "gr_register_operand" "r") (match_operand:DI 3 "gr_reg_or_8bit_adjusted_operand" "rL")]))] "" - "cmp.%C1 %0, %I0 = %3, %2" + "cmp.%C1 %0, %I0 = %r3, %2" [(set_attr "type" "A")]) (define_insn "*cmpsf_internal" |