diff options
author | Richard Stallman <rms@gnu.org> | 1993-04-18 04:42:33 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-04-18 04:42:33 +0000 |
commit | fd6b2a6d3e5054e023b85c67e88910a4406d0935 (patch) | |
tree | 0c60a1f4da800b493671b6fcaebdcb048db72b02 /gcc | |
parent | a3404926b09df8cc0da6e98ff27691f527c24851 (diff) | |
download | gcc-fd6b2a6d3e5054e023b85c67e88910a4406d0935.zip gcc-fd6b2a6d3e5054e023b85c67e88910a4406d0935.tar.gz gcc-fd6b2a6d3e5054e023b85c67e88910a4406d0935.tar.bz2 |
(cmpsi): Use `cmpq' for small immediate values.
(addsi3): Use `loada' for `reg1 = reg2 + immed'.
From-SVN: r4182
Diffstat (limited to 'gcc')
-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 d53312d..24aa258 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: |