diff options
author | Richard Stallman <rms@gnu.org> | 1992-07-05 21:15:12 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-07-05 21:15:12 +0000 |
commit | 59482679ecd68027cd7c74b899603969c00c7295 (patch) | |
tree | 34170a43bad5b50d3c0e60f7e3e0c9e59c39dd54 | |
parent | 960a2eb1d1941a46912d8fab832f7ff07c142256 (diff) | |
download | gcc-59482679ecd68027cd7c74b899603969c00c7295.zip gcc-59482679ecd68027cd7c74b899603969c00c7295.tar.gz gcc-59482679ecd68027cd7c74b899603969c00c7295.tar.bz2 |
(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
-rw-r--r-- | gcc/config/vax/vax.md | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 93e9250..9144ee5 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 "" |