aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-11-10 15:41:50 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-11-10 15:41:50 -0500
commit57fa673965950f8586de56fe568bee9a534f0efd (patch)
tree6c2b958bfcb4d02a24bb1d5c662e36a511e33d60
parenta2991183af807c2bb3b3d15863eb4d2f4c49d4ff (diff)
downloadgcc-57fa673965950f8586de56fe568bee9a534f0efd.zip
gcc-57fa673965950f8586de56fe568bee9a534f0efd.tar.gz
gcc-57fa673965950f8586de56fe568bee9a534f0efd.tar.bz2
(movsi): In TOC symbol case, use "la" for PowerPC.
(movdi): Handle TOC symbol just like movsi. From-SVN: r8408
-rw-r--r--gcc/config/rs6000/rs6000.md9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 3a1b6f6..a11f756 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -3566,7 +3566,7 @@
{st%U0%X0|stw%U0%X0} %1,%0
{lil|li} %0,%1
{liu|lis} %0,%u1
- cal %0,%1(%*)
+ {cal|la} %0,%1(%*)
mf%1 %0
mt%0 %1
mt%0 %1
@@ -3999,8 +3999,8 @@
(set_attr "length" "8,8,8,*,*,*")])
(define_insn ""
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,f,f,m,r,*h")
- (match_operand:DI 1 "input_operand" "r,m,r,I,J,f,m,f,*h,r"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,f,f,m,r,*h")
+ (match_operand:DI 1 "input_operand" "r,m,r,I,J,R,f,m,f,*h,r"))]
"TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode)
|| gpc_reg_operand (operands[1], DImode))"
"@
@@ -4009,12 +4009,13 @@
sd%U0%X0 %1,%0
li %0,%1
lis %0,%u1
+ {cal|la} %0,%1(%*)
fmr %0,%1
lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
mf%1 %0
mt%0 %1"
- [(set_attr "type" "*,load,*,*,*,fp,fpload,*,*,mtjmpr")])
+ [(set_attr "type" "*,load,*,*,*,*,fp,fpload,*,*,mtjmpr")])
;; TImode is similar, except that we usually want to compute the address into
;; a register and use lsi/stsi (the exception is during reload). MQ is also