This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Bootstrap failure on powerpc64 (mainline)
- From: Dale Johannesen <dalej at apple dot com>
- To: Josef Zlomek <zlomj9am at artax dot karlin dot mff dot cuni dot cz>
- Cc: Dale Johannesen <dalej at apple dot com>, gcc at gcc dot gnu dot org
- Date: Thu, 6 Mar 2003 10:01:18 -0800
- Subject: Re: Bootstrap failure on powerpc64 (mainline)
On Thursday, March 6, 2003, at 06:27 AM, Josef Zlomek wrote:
when I wanted to bootstrap mainline on powerpc64 I got this error:
Funny that this worked on ppc32. Anyway, try this. I'm not done
bootstrapping but it looks OK so far.
Index: rs6000.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.240
diff -u -d -b -w -r1.240 rs6000.md
--- rs6000.md 27 Feb 2003 01:24:06 -0000 1.240
+++ rs6000.md 6 Mar 2003 17:46:50 -0000
@@ -7714,6 +7714,84 @@
{st%U0%U1|stw%U0%U1} %1,%0"
[(set_attr "type"
"cr_logical,mtcr,mtcr,mfcr,mfcr,*,*,*,mtjmpr,load,store")
(set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
+
+(define_expand "movccuns"
+ [(set (match_operand:CCUNS 0 "nonimmediate_operand" "")
+ (match_operand:CCUNS 1 "nonimmediate_operand" ""))]
+ ""
+ "")
+
+(define_insn "*movccuns_internal1"
+ [(set (match_operand:CCUNS 0 "nonimmediate_operand"
"=y,x,?y,r,r,r,r,q,cl,r,m")
+ (match_operand:CCUNS 1 "nonimmediate_operand"
"y,r,r,x,y,r,h,r,r,m,r"))]
+ "register_operand (operands[0], CCUNSmode)
+ || register_operand (operands[1], CCUNSmode)"
+ "@
+ mcrf %0,%1
+ mtcrf 128,%1
+ {rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm}
%1,%1,%f0,0xffffffff
+ mfcr %0
+ mfcr %0\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
+ mr %0,%1
+ mf%1 %0
+ mt%0 %1
+ mt%0 %1
+ {l%U1%X1|lwz%U1%X1} %0,%1
+ {st%U0%U1|stw%U0%U1} %1,%0"
+ [(set_attr "type"
"cr_logical,mtcr,mtcr,mfcr,mfcr,*,*,*,mtjmpr,load,store")
+ (set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
+
+(define_expand "movccfp"
+ [(set (match_operand:CCFP 0 "nonimmediate_operand" "")
+ (match_operand:CCFP 1 "nonimmediate_operand" ""))]
+ ""
+ "")
+
+(define_insn "*movccfp_internal1"
+ [(set (match_operand:CCFP 0 "nonimmediate_operand"
"=y,x,?y,r,r,r,r,q,cl,r,m")
+ (match_operand:CCFP 1 "nonimmediate_operand"
"y,r,r,x,y,r,h,r,r,m,r"))]
+ "register_operand (operands[0], CCFPmode)
+ || register_operand (operands[1], CCFPmode)"
+ "@
+ mcrf %0,%1
+ mtcrf 128,%1
+ {rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm}
%1,%1,%f0,0xffffffff
+ mfcr %0
+ mfcr %0\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
+ mr %0,%1
+ mf%1 %0
+ mt%0 %1
+ mt%0 %1
+ {l%U1%X1|lwz%U1%X1} %0,%1
+ {st%U0%U1|stw%U0%U1} %1,%0"
+ [(set_attr "type"
"cr_logical,mtcr,mtcr,mfcr,mfcr,*,*,*,mtjmpr,load,store")
+ (set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
+
+(define_expand "movcceq"
+ [(set (match_operand:CCEQ 0 "nonimmediate_operand" "")
+ (match_operand:CCEQ 1 "nonimmediate_operand" ""))]
+ ""
+ "")
+
+(define_insn "*movcceq_internal1"
+ [(set (match_operand:CCEQ 0 "nonimmediate_operand"
"=y,x,?y,r,r,r,r,q,cl,r,m")
+ (match_operand:CCEQ 1 "nonimmediate_operand"
"y,r,r,x,y,r,h,r,r,m,r"))]
+ "register_operand (operands[0], CCEQmode)
+ || register_operand (operands[1], CCEQmode)"
+ "@
+ mcrf %0,%1
+ mtcrf 128,%1
+ {rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm}
%1,%1,%f0,0xffffffff
+ mfcr %0
+ mfcr %0\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
+ mr %0,%1
+ mf%1 %0
+ mt%0 %1
+ mt%0 %1
+ {l%U1%X1|lwz%U1%X1} %0,%1
+ {st%U0%U1|stw%U0%U1} %1,%0"
+ [(set_attr "type"
"cr_logical,mtcr,mtcr,mfcr,mfcr,*,*,*,mtjmpr,load,store")
+ (set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
;; For floating-point, we normally deal with the floating-point
registers
;; unless -msoft-float is used. The sole exception is that parameter
passing