aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-09-05 16:20:24 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-05 16:20:24 -0700
commit514f96e69c22ffa0262d44f9a9bf46ecfa005185 (patch)
tree9007f5ae056e821b2bb34ec8dd31fa339a95ea27
parentcf1f6ae31a15dbb3e9eaf393c05f84b0c4d6aa81 (diff)
downloadgcc-514f96e69c22ffa0262d44f9a9bf46ecfa005185.zip
gcc-514f96e69c22ffa0262d44f9a9bf46ecfa005185.tar.gz
gcc-514f96e69c22ffa0262d44f9a9bf46ecfa005185.tar.bz2
ia64.md (movsi and movdi patterns): Allow moves from 8-bit constants to AR registers.
* config/ia64.md (movsi and movdi patterns): Allow moves from 8-bit constants to AR registers. From-SVN: r36172
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/ia64/ia64.md43
2 files changed, 28 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c63e7f8..0738265 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2000-09-05 Richard Henderson <rth@cygnus.com>
+ * config/ia64.md (movsi and movdi patterns): Allow moves from
+ 8-bit constants to AR registers.
+
+2000-09-05 Richard Henderson <rth@cygnus.com>
+
* config/ia64/ia64.md (mulhi3): New.
2000-09-05 Richard Henderson <rth@cygnus.com>
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index a84b185..68fbbef 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -296,7 +296,7 @@
[(match_operand:CC 3 "register_operand" "c,c,c,c,c,c,c,c")
(const_int 0)])
(set (match_operand:SI 0 "register_operand" "=r,r,r, r,*f,*f, r,*d")
- (match_operand:SI 1 "nonmemory_operand" "rO,J,i,*f,rO,*f,*d,rO")))]
+ (match_operand:SI 1 "nonmemory_operand" "rO,J,i,*f,rO,*f,*d,rK")))]
"TARGET_A_STEP && ia64_move_ok (operands[0], operands[1])"
"@
(%J2) mov %0 = %r1
@@ -312,7 +312,7 @@
(define_insn "*movsi_internal_astep"
[(set (match_operand:SI 0 "destination_operand" "=r,r,r,r, m, r,*f,*f, r,*d")
- (match_operand:SI 1 "move_operand" "rO,J,i,m,rO,*f,rO,*f,*d,rO"))]
+ (match_operand:SI 1 "move_operand" "rO,J,i,m,rO,*f,rO,*f,*d,rK"))]
"TARGET_A_STEP && ia64_move_ok (operands[0], operands[1])"
"@
mov %0 = %r1
@@ -330,7 +330,7 @@
(define_insn "*movsi_internal"
[(set (match_operand:SI 0 "destination_operand" "=r,r,r,r, m, r,*f,*f, r,*d")
- (match_operand:SI 1 "move_operand" "rO,J,i,m,rO,*f,rO,*f,*d,rO"))]
+ (match_operand:SI 1 "move_operand" "rO,J,i,m,rO,*f,rO,*f,*d,rK"))]
"! TARGET_A_STEP && ia64_move_ok (operands[0], operands[1])"
"@
mov %0 = %r1
@@ -380,12 +380,12 @@
(define_insn ""
[(cond_exec
(match_operator 2 "predicate_operator"
- [(match_operand:CC 3 "register_operand" "c,c,c,c,c,c,c,c,c,c")
+ [(match_operand:CC 3 "register_operand" "c,c,c,c,c,c,c,c,c,c,c")
(const_int 0)])
(set (match_operand:DI 0 "register_operand"
- "=r,r,r, r,*f,*f, r,*b*e, r,*d")
+ "=r,r,r, r,*f,*f, r,*b,*e, r,*d")
(match_operand:DI 1 "nonmemory_operand"
- "rO,J,i,*f,rO,*f,*b*e, rO,*d,rO")))]
+ "rO,J,i,*f,rO,*f,*b*e,rO,rK,*d,rK")))]
"TARGET_A_STEP && ia64_move_ok (operands[0], operands[1])"
"*
{
@@ -399,7 +399,8 @@
\"(%J2) mov %0 = %1\",
\"(%J2) mov %0 = %r1\",
\"(%J2) mov %0 = %1\",
- \"(%J2) mov %0 = %r1\"
+ \"(%J2) mov %0 = %1\",
+ \"(%J2) mov %0 = %1\"
};
/* We use 'i' for alternative 2 despite possible PIC problems.
@@ -419,7 +420,7 @@
return alt[which_alternative];
}"
- [(set_attr "type" "A,A,L,M,M,F,I,I,M,M")
+ [(set_attr "type" "A,A,L,M,M,F,I,I,I,M,M")
(set_attr "predicable" "no")])
;; This is used during early compilation to delay the decision on
@@ -440,9 +441,9 @@
(define_insn "*movdi_internal_astep"
[(set (match_operand:DI 0 "destination_operand"
- "=r,r,r,r, m, r,*f,*f,*f, Q, r,*b*e, r,*d, r,*c")
+ "=r,r,r,r, m, r,*f,*f,*f, Q, r,*b,*e, r,*d, r,*c")
(match_operand:DI 1 "move_operand"
- "rO,J,i,m,rO,*f,rO,*f, Q,*f,*b*e, rO,*d,rO,*c,rO"))]
+ "rO,J,i,m,rO,*f,rO,*f, Q,*f,*b*e,rO,rK,*d,rK,*c,rO"))]
"TARGET_A_STEP && ia64_move_ok (operands[0], operands[1])"
"*
{
@@ -460,7 +461,8 @@
\"mov %0 = %1\",
\"mov %0 = %r1\",
\"mov %0 = %1\",
- \"mov %0 = %r1\",
+ \"mov %0 = %1\",
+ \"mov %0 = %1\",
\"mov %0 = pr\",
\"mov pr = %1, -1\"
};
@@ -471,14 +473,14 @@
return alt[which_alternative];
}"
- [(set_attr "type" "A,A,L,M,M,M,M,F,M,M,I,I,M,M,I,I")
+ [(set_attr "type" "A,A,L,M,M,M,M,F,M,M,I,I,I,M,M,I,I")
(set_attr "predicable" "no")])
(define_insn "*movdi_internal"
[(set (match_operand:DI 0 "destination_operand"
- "=r,r,r,r, m, r,*f,*f,*f, Q, r,*b*e, r,*d, r,*c")
+ "=r,r,r,r, m, r,*f,*f,*f, Q, r,*b,*e, r,*d, r,*c")
(match_operand:DI 1 "move_operand"
- "rO,J,i,m,rO,*f,rO,*f, Q,*f,*b*e, rO,*d,rO,*c,rO"))]
+ "rO,J,i,m,rO,*f,rO,*f, Q,*f,*b*e,rO,rK,*d,rK,*c,rO"))]
"! TARGET_A_STEP && ia64_move_ok (operands[0], operands[1])"
"*
{
@@ -496,7 +498,8 @@
\"%,mov %0 = %1\",
\"%,mov %0 = %r1\",
\"%,mov %0 = %1\",
- \"%,mov %0 = %r1\",
+ \"%,mov %0 = %1\",
+ \"%,mov %0 = %1\",
\"mov %0 = pr\",
\"mov pr = %1, -1\"
};
@@ -507,7 +510,7 @@
return alt[which_alternative];
}"
- [(set_attr "type" "A,A,L,M,M,M,M,F,M,M,I,I,M,M,I,I")])
+ [(set_attr "type" "A,A,L,M,M,M,M,F,M,M,I,I,I,M,M,I,I")])
(define_split
[(set (match_operand:DI 0 "register_operand" "")
@@ -3034,16 +3037,16 @@
(define_insn "*cmovdi_internal"
[(set (match_operand:DI 0 "nonimmediate_operand"
- "=r,m,*f,Q,*b*d*e,r,m,*f,Q,*b*d*e,r,m,*f,Q,*b*d*e")
+ "=r,m,*f,Q,*b,*d*e,r,m,*f,Q,*b,*d*e,r,m,*f,Q,*b,*d*e")
(if_then_else:DI
(match_operator:CC 4 "predicate_operator"
[(match_operand:CC 1 "register_operand"
- "c,c,c,c,c,c,c,c,c,c,c,c,c,c,c")
+ "c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c")
(const_int 0)])
(match_operand:DI 2 "general_operand"
- "0,0,0,0,0,rim*f*b*d*e,rO,rOQ,*f,r,rim*f*b*d*e,rO,rOQ,*f,r")
+ "0,0,0,0,0,0,rim*f*b*d*e,rO,rOQ,*f,rO,rK,rim*f*b*d*e,rO,rOQ,*f,rO,rK")
(match_operand:DI 3 "general_operand"
- "rim*f*b*d*e,rO,rOQ,*f,r,0,0,0,0,0,rim*f*b*d*e,rO,rOQ,*f,r")))]
+ "rim*f*b*d*e,rO,rOQ,*f,rO,rK,0,0,0,0,0,0,rim*f*b*d*e,rO,rOQ,*f,rO,rK")))]
"! TARGET_A_STEP"
"* abort ();"
[(set_attr "predicable" "no")])