aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-07-05 21:15:12 +0000
committerRichard Stallman <rms@gnu.org>1992-07-05 21:15:12 +0000
commit59482679ecd68027cd7c74b899603969c00c7295 (patch)
tree34170a43bad5b50d3c0e60f7e3e0c9e59c39dd54
parent960a2eb1d1941a46912d8fab832f7ff07c142256 (diff)
downloadgcc-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.md50
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 ""