diff options
author | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-04-18 04:42:33 +0000 |
---|---|---|
committer | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-04-18 04:42:33 +0000 |
commit | 597741102bc1718296c8148d79510331b284857a (patch) | |
tree | 0c60a1f4da800b493671b6fcaebdcb048db72b02 /gcc/config/clipper | |
parent | 2e0dece0cc86e58af3361ef0c901a2ca050ff1aa (diff) | |
download | gcc-597741102bc1718296c8148d79510331b284857a.tar.gz |
(cmpsi): Use `cmpq' for small immediate values.
(addsi3): Use `loada' for `reg1 = reg2 + immed'.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@4182 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/clipper')
-rw-r--r-- | gcc/config/clipper/clipper.md | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/gcc/config/clipper/clipper.md b/gcc/config/clipper/clipper.md index d53312d9fab..24aa2588cdf 100644 --- a/gcc/config/clipper/clipper.md +++ b/gcc/config/clipper/clipper.md @@ -83,13 +83,26 @@ "" "* { + int val; + if (which_alternative == 0) return \"cmpw %1,%0\"; if (which_alternative == 1) - return \"cmpi %1,%0\"; + { + val = INTVAL (operands[1]); + if (0 <= val && val < 16) + return \"cmpq %1,%0\"; + return \"cmpi %1,%0\"; + } cc_status.flags |= CC_REVERSED; /* immediate must be first */ + + val = INTVAL (operands[0]); + + if (0 <= val && val < 16) + return \"cmpq %0,%1\"; + return \"cmpi %0,%1\"; }") @@ -688,12 +701,16 @@ (define_insn "addsi3" [(set (match_operand:SI 0 "int_reg_operand" "=r,r,r") (plus:SI (match_operand:SI 1 "int_reg_operand" "%0,r,r") - (match_operand:SI 2 "nonmemory_operand" "rn,0,r")))] + (match_operand:SI 2 "nonmemory_operand" "rn,0,rn")))] "" "* { if (which_alternative == 2) /* 3 address version */ - return \"loada [%2](%1),%0\"; + { + if (GET_CODE (operands[2]) == CONST_INT) + return \"loada %a2(%1),%0\"; + return \"loada [%2](%1),%0\"; + } /* 2 address version */ if (GET_CODE (operands[2]) == CONST_INT) { @@ -1377,14 +1394,3 @@ ;; These patters are jump_insns that do not allow output reloads and clipper ;; can only decrement and test registers. ;; - - -;;- Local variables: -;;- mode:c -;;- comment-start: ";;- " -;;- eval: (set-syntax-table (copy-sequence (syntax-table))) -;;- eval: (modify-syntax-entry ?[ "(]") -;;- eval: (modify-syntax-entry ?] ")[") -;;- eval: (modify-syntax-entry ?{ "(}") -;;- eval: (modify-syntax-entry ?} "){") -;;- End: |