Commit 914a7297 by David Edelsohn Committed by David Edelsohn

rs6000.md (movdf_hardfloat32): Order alternatives consistently.

        * rs6000.md (movdf_hardfloat32): Order alternatives consistently.
        Use length of 4 not *.
        (movdf_hardfloat64): Same.  Support DFmode moves to/from CTR/LR.
        (movdf_softfloat64): Likewise.
        (movdi_internal32): Use length of 4 not *.
        (movti_power): Same.
        (ctrsi, ctrdi): Same.

From-SVN: r58299
parent 4a7510cb
2002-10-18 David Edelsohn <edelsohn@gnu.org>
* rs6000.md (movdf_hardfloat32): Order alternatives consistently.
Use length of 4 not *.
(movdf_hardfloat64): Same. Support DFmode moves to/from CTR/LR.
(movdf_softfloat64): Likewise.
(movdi_internal32): Use length of 4 not *.
(movti_power): Same.
(ctrsi, ctrdi): Same.
2002-10-18 Zack Weinberg <zack@codesourcery.com> 2002-10-18 Zack Weinberg <zack@codesourcery.com>
* c-decl.c (start_decl): Point users of the old initialized- * c-decl.c (start_decl): Point users of the old initialized-
......
...@@ -8541,8 +8541,8 @@ ...@@ -8541,8 +8541,8 @@
;; The "??" is a kludge until we can figure out a more reasonable way ;; The "??" is a kludge until we can figure out a more reasonable way
;; of handling these non-offsettable values. ;; of handling these non-offsettable values.
(define_insn "*movdf_hardfloat32" (define_insn "*movdf_hardfloat32"
[(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,m,!r,!r,!r,f,f,m") [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,m,f,f,m,!r,!r,!r")
(match_operand:DF 1 "input_operand" "r,m,r,G,H,F,f,m,f"))] (match_operand:DF 1 "input_operand" "r,m,r,f,m,f,G,H,F"))]
"! TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS "! TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DFmode) && (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))" || gpc_reg_operand (operands[1], DFmode))"
...@@ -8619,19 +8619,19 @@ ...@@ -8619,19 +8619,19 @@
return \"\"; return \"\";
} }
case 3: case 3:
return \"fmr %0,%1\";
case 4: case 4:
return \"lfd%U1%X1 %0,%1\";
case 5: case 5:
return \"#\"; return \"stfd%U0%X0 %1,%0\";
case 6: case 6:
return \"fmr %0,%1\";
case 7: case 7:
return \"lfd%U1%X1 %0,%1\";
case 8: case 8:
return \"stfd%U0%X0 %1,%0\"; return \"#\";
} }
}" }"
[(set_attr "type" "*,load,store,*,*,*,fp,fpload,fpstore") [(set_attr "type" "*,load,store,fp,fpload,fpstore,*,*,*")
(set_attr "length" "8,16,16,8,12,16,*,*,*")]) (set_attr "length" "8,16,16,4,4,4,8,12,16")])
(define_insn "*movdf_softfloat32" (define_insn "*movdf_softfloat32"
[(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r") [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r")
...@@ -8675,8 +8675,8 @@ ...@@ -8675,8 +8675,8 @@
(set_attr "length" "8,8,8,8,12,16")]) (set_attr "length" "8,8,8,8,12,16")])
(define_insn "*movdf_hardfloat64" (define_insn "*movdf_hardfloat64"
[(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,m,!r,!r,!r,f,f,m") [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,m,f,f,m,!cl,!r,!r,!r,!r")
(match_operand:DF 1 "input_operand" "r,m,r,G,H,F,f,m,f"))] (match_operand:DF 1 "input_operand" "r,m,r,f,m,f,r,h,G,H,F"))]
"TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS "TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DFmode) && (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))" || gpc_reg_operand (operands[1], DFmode))"
...@@ -8684,30 +8684,34 @@ ...@@ -8684,30 +8684,34 @@
mr %0,%1 mr %0,%1
ld%U1%X1 %0,%1 ld%U1%X1 %0,%1
std%U0%X0 %1,%0 std%U0%X0 %1,%0
#
#
#
fmr %0,%1 fmr %0,%1
lfd%U1%X1 %0,%1 lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0" stfd%U0%X0 %1,%0
[(set_attr "type" "*,load,store,*,*,*,fp,fpload,fpstore") mt%0 %1
(set_attr "length" "4,4,4,8,12,16,4,4,4")]) mf%1 %0
#
#
#"
[(set_attr "type" "*,load,store,fp,fpload,fpstore,mtjmpr,*,*,*,*")
(set_attr "length" "4,4,4,4,4,4,4,4,8,12,16")])
(define_insn "*movdf_softfloat64" (define_insn "*movdf_softfloat64"
[(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r") [(set (match_operand:DF 0 "nonimmediate_operand" "=r,cl,r,r,m,r,r,r")
(match_operand:DF 1 "input_operand" "r,m,r,G,H,F"))] (match_operand:DF 1 "input_operand" "r,r,h,m,r,G,H,F"))]
"TARGET_POWERPC64 && (TARGET_SOFT_FLOAT || !TARGET_FPRS) "TARGET_POWERPC64 && (TARGET_SOFT_FLOAT || !TARGET_FPRS)
&& (gpc_reg_operand (operands[0], DFmode) && (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))" || gpc_reg_operand (operands[1], DFmode))"
"@ "@
mr %0,%1 mr %0,%1
mt%0 %1
mf%1 %0
ld%U1%X1 %0,%1 ld%U1%X1 %0,%1
std%U0%X0 %1,%0 std%U0%X0 %1,%0
# #
# #
#" #"
[(set_attr "type" "*,load,store,*,*,*") [(set_attr "type" "*,*,*,load,store,*,*,*")
(set_attr "length" "*,*,*,8,12,16")]) (set_attr "length" "4,4,4,4,4,8,12,16")])
(define_expand "movtf" (define_expand "movtf"
[(set (match_operand:TF 0 "general_operand" "") [(set (match_operand:TF 0 "general_operand" "")
...@@ -9026,7 +9030,7 @@ ...@@ -9026,7 +9030,7 @@
} }
}" }"
[(set_attr "type" "*,load,store,fp,fpload,fpstore,*,*,*,*,*") [(set_attr "type" "*,load,store,fp,fpload,fpstore,*,*,*,*,*")
(set_attr "length" "8,8,8,*,*,*,8,12,8,12,16")]) (set_attr "length" "8,8,8,4,4,4,8,12,8,12,16")])
(define_split (define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "") [(set (match_operand:DI 0 "gpc_reg_operand" "")
...@@ -9241,7 +9245,7 @@ ...@@ -9241,7 +9245,7 @@
} }
}" }"
[(set_attr "type" "store,store,*,load,load") [(set_attr "type" "store,store,*,load,load")
(set_attr "length" "*,16,16,*,16")]) (set_attr "length" "4,16,16,4,16")])
(define_insn "*movti_string" (define_insn "*movti_string"
[(set (match_operand:TI 0 "reg_or_mem_operand" "=m,????r,????r") [(set (match_operand:TI 0 "reg_or_mem_operand" "=m,????r,????r")
...@@ -14153,7 +14157,7 @@ ...@@ -14153,7 +14157,7 @@
return \"bdz $+8\;b %l0\"; return \"bdz $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrsi_internal2" (define_insn "*ctrsi_internal2"
[(set (pc) [(set (pc)
...@@ -14177,7 +14181,7 @@ ...@@ -14177,7 +14181,7 @@
return \"{bdn|bdnz} $+8\;b %l0\"; return \"{bdn|bdnz} $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrdi_internal1" (define_insn "*ctrdi_internal1"
[(set (pc) [(set (pc)
...@@ -14201,7 +14205,7 @@ ...@@ -14201,7 +14205,7 @@
return \"bdz $+8\;b %l0\"; return \"bdz $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrdi_internal2" (define_insn "*ctrdi_internal2"
[(set (pc) [(set (pc)
...@@ -14225,7 +14229,7 @@ ...@@ -14225,7 +14229,7 @@
return \"{bdn|bdnz} $+8\;b %l0\"; return \"{bdn|bdnz} $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
;; Similar, but we can use GE since we have a REG_NONNEG. ;; Similar, but we can use GE since we have a REG_NONNEG.
...@@ -14251,7 +14255,7 @@ ...@@ -14251,7 +14255,7 @@
return \"bdz $+8\;b %l0\"; return \"bdz $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrsi_internal4" (define_insn "*ctrsi_internal4"
[(set (pc) [(set (pc)
...@@ -14275,7 +14279,7 @@ ...@@ -14275,7 +14279,7 @@
return \"{bdn|bdnz} $+8\;b %l0\"; return \"{bdn|bdnz} $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrdi_internal3" (define_insn "*ctrdi_internal3"
[(set (pc) [(set (pc)
...@@ -14299,7 +14303,7 @@ ...@@ -14299,7 +14303,7 @@
return \"bdz $+8\;b %l0\"; return \"bdz $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrdi_internal4" (define_insn "*ctrdi_internal4"
[(set (pc) [(set (pc)
...@@ -14323,7 +14327,7 @@ ...@@ -14323,7 +14327,7 @@
return \"{bdn|bdnz} $+8\;b %l0\"; return \"{bdn|bdnz} $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
;; Similar but use EQ ;; Similar but use EQ
...@@ -14349,7 +14353,7 @@ ...@@ -14349,7 +14353,7 @@
return \"{bdn|bdnz} $+8\;b %l0\"; return \"{bdn|bdnz} $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrsi_internal6" (define_insn "*ctrsi_internal6"
[(set (pc) [(set (pc)
...@@ -14373,7 +14377,7 @@ ...@@ -14373,7 +14377,7 @@
return \"bdz $+8\;b %l0\"; return \"bdz $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrdi_internal5" (define_insn "*ctrdi_internal5"
[(set (pc) [(set (pc)
...@@ -14397,7 +14401,7 @@ ...@@ -14397,7 +14401,7 @@
return \"{bdn|bdnz} $+8\;b %l0\"; return \"{bdn|bdnz} $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
(define_insn "*ctrdi_internal6" (define_insn "*ctrdi_internal6"
[(set (pc) [(set (pc)
...@@ -14421,7 +14425,7 @@ ...@@ -14421,7 +14425,7 @@
return \"bdz $+8\;b %l0\"; return \"bdz $+8\;b %l0\";
}" }"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "*,12,16")]) (set_attr "length" "4,12,16")])
;; Now the splitters if we could not allocate the CTR register ;; Now the splitters if we could not allocate the CTR register
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment