From 59482679ecd68027cd7c74b899603969c00c7295 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Sun, 5 Jul 1992 21:15:12 +0000 Subject: [PATCH] (andsi3... (andsi3, andhi3, andqi3): If one of the source operands is a constant, complement that operand instead of a register or memory operand. From-SVN: r1450 --- gcc/config/vax/vax.md | 50 ++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 93e925091ba..9144ee559ac 100644 --- a/gcc/config/vax/vax.md +++ b/gcc/config/vax/vax.md @@ -925,10 +925,20 @@ "" " { - if (GET_CODE (operands[1]) == CONST_INT) - operands[1] = gen_rtx (CONST_INT, VOIDmode, ~INTVAL (operands[1])); + rtx op1 = operands[1]; + + /* If there is a constant argument, complement that one. */ + if (GET_CODE (operands[2]) == CONST_INT && GET_CODE (op1) != CONST_INT) + { + operands[1] = operands[2]; + operands[2] = op1; + op1 = operands[1]; + } + + if (GET_CODE (op1) == CONST_INT) + operands[1] = gen_rtx (CONST_INT, VOIDmode, ~INTVAL (op1)); else - operands[1] = expand_unop (SImode, one_cmpl_optab, operands[1], 0, 1); + operands[1] = expand_unop (SImode, one_cmpl_optab, op1, 0, 1); }") (define_expand "andhi3" @@ -938,12 +948,19 @@ "" " { - rtx op = operands[1]; - if (GET_CODE (op) == CONST_INT) - operands[1] = gen_rtx (CONST_INT, VOIDmode, - ((1 << 16) - 1) & ~INTVAL (op)); + rtx op1 = operands[1]; + + if (GET_CODE (operands[2]) == CONST_INT && GET_CODE (op1) != CONST_INT) + { + operands[1] = operands[2]; + operands[2] = op1; + op1 = operands[1]; + } + + if (GET_CODE (op1) == CONST_INT) + operands[1] = gen_rtx (CONST_INT, VOIDmode, 65535 & ~INTVAL (op1)); else - operands[1] = expand_unop (HImode, one_cmpl_optab, op, 0, 1); + operands[1] = expand_unop (HImode, one_cmpl_optab, op1, 0, 1); }") (define_expand "andqi3" @@ -953,12 +970,19 @@ "" " { - rtx op = operands[1]; - if (GET_CODE (op) == CONST_INT) - operands[1] = gen_rtx (CONST_INT, VOIDmode, - ((1 << 8) - 1) & ~INTVAL (op)); + rtx op1 = operands[1]; + + if (GET_CODE (operands[2]) == CONST_INT && GET_CODE (op1) != CONST_INT) + { + operands[1] = operands[2]; + operands[2] = op1; + op1 = operands[1]; + } + + if (GET_CODE (op1) == CONST_INT) + operands[1] = gen_rtx (CONST_INT, VOIDmode, 255 & ~INTVAL (op1)); else - operands[1] = expand_unop (QImode, one_cmpl_optab, op, 0, 1); + operands[1] = expand_unop (QImode, one_cmpl_optab, op1, 0, 1); }") (define_insn "" -- 2.30.2