summaryrefslogtreecommitdiff
path: root/gcc/config/clipper
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1993-04-18 04:42:33 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1993-04-18 04:42:33 +0000
commit597741102bc1718296c8148d79510331b284857a (patch)
tree0c60a1f4da800b493671b6fcaebdcb048db72b02 /gcc/config/clipper
parent2e0dece0cc86e58af3361ef0c901a2ca050ff1aa (diff)
downloadgcc-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.md34
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: