From: Torbjorn Granlund Date: Thu, 14 Dec 1995 23:16:23 +0000 (+0000) Subject: (logic_operand): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f20200f4bc55067621823cd2f0ba9e87c18b4e17;p=gcc.git (logic_operand): New function. (i960_print_operand): Handle code `C'. From-SVN: r10726 --- diff --git a/gcc/config/i960/i960.c b/gcc/config/i960/i960.c index fde2e43e786..cdd591396c4 100644 --- a/gcc/config/i960/i960.c +++ b/gcc/config/i960/i960.c @@ -215,6 +215,19 @@ arith_operand (op, mode) return (register_operand (op, mode) || literal (op, mode)); } +/* Return truth value of whether OP can be used as an operands in a three + address logic insn, possibly complementing OP, of mode MODE. */ + +int +logic_operand (op, mode) + rtx op; + enum machine_mode mode; +{ + return (register_operand (op, mode) + || (GET_CODE (op) == CONST_INT + && INTVAL(op) >= -32 && INTVAL(op) < 32)); +} + /* Return true if OP is a register or a valid floating point literal. */ int @@ -1638,10 +1651,13 @@ i960_print_operand (file, x, code) } else if (rtxcode == CONST_INT) { - if (INTVAL (x) > 9999 || INTVAL (x) < -999) - fprintf (file, "0x%x", INTVAL (x)); + HOST_WIDE_INT val = INTVAL (x); + if (code == 'C') + val = ~val; + if (val > 9999 || val < -999) + fprintf (file, "0x%x", val); else - fprintf (file, "%d", INTVAL (x)); + fprintf (file, "%d", val); return; } else if (rtxcode == CONST_DOUBLE)