Commit 4c1fcd13 by Jeff Law

pa.md (movsi for FP regs): Delete special case patterns.

	* pa.md (movsi for FP regs): Delete special case patterns.
	(movdi for FP regs): Likewise.
	(movsi main recognizer): Allow fp<->memory copies.
	(movdi main recognizer): Likewise.

From-SVN: r4015
parent 575bb005
...@@ -930,22 +930,6 @@ ...@@ -930,22 +930,6 @@
DONE; DONE;
}") }")
(define_insn ""
[(set (match_operand:SI 0 "fp_reg_operand" "=fx")
(match_operand:SI 1 "short_memory_operand" "T"))]
""
"fldws%F1 %1,%0"
[(set_attr "type" "fpload")
(set_attr "length" "1")])
(define_insn ""
[(set (match_operand:SI 0 "short_memory_operand" "=T")
(match_operand:SI 1 "fp_reg_operand" "fx"))]
""
"fstws%F0 %1,%0"
[(set_attr "type" "fpstore")
(set_attr "length" "1")])
;;; pic symbol references ;;; pic symbol references
(define_insn "" (define_insn ""
...@@ -958,8 +942,10 @@ ...@@ -958,8 +942,10 @@
(set_attr "length" "1")]) (set_attr "length" "1")])
(define_insn "" (define_insn ""
[(set (match_operand:SI 0 "reg_or_nonsymb_mem_operand" "=r,r,r,r,r,Q,*q,!fx") [(set (match_operand:SI 0 "reg_or_nonsymb_mem_operand"
(match_operand:SI 1 "move_operand" "rM,J,N,K,Q,rM,rM,!fxM"))] "=r,r,r,r,r,Q,*q,!fx,fx,*T")
(match_operand:SI 1 "move_operand"
"rM,J,N,K,Q,rM,rM,!fxM,*T,fx"))]
"register_operand (operands[0], SImode) "register_operand (operands[0], SImode)
|| reg_or_0_operand (operands[1], SImode)" || reg_or_0_operand (operands[1], SImode)"
"@ "@
...@@ -970,9 +956,11 @@ ...@@ -970,9 +956,11 @@
ldw%M1 %1,%0 ldw%M1 %1,%0
stw%M0 %r1,%0 stw%M0 %r1,%0
mtsar %r1 mtsar %r1
fcpy,sgl %r1,%0" fcpy,sgl %r1,%0
[(set_attr "type" "move,move,move,move,load,store,move,fpalu") fldws%F1 %1,%0
(set_attr "length" "1,1,1,1,1,1,1,1")]) fstws%F0 %1,%0"
[(set_attr "type" "move,move,move,move,load,store,move,fpalu,fpload,fpstore")
(set_attr "length" "1,1,1,1,1,1,1,1,1,1")])
;; Load indexed. We don't use unscaled modes since they can't be used ;; Load indexed. We don't use unscaled modes since they can't be used
;; unless we can tell which of the registers is the base and which is ;; unless we can tell which of the registers is the base and which is
...@@ -1499,26 +1487,10 @@ ...@@ -1499,26 +1487,10 @@
;;; Experimental ;;; Experimental
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "fp_reg_operand" "=fx")
(match_operand:DI 1 "short_memory_operand" "T"))]
""
"fldds%F1 %1,%0"
[(set_attr "type" "fpload")
(set_attr "length" "1")])
(define_insn ""
[(set (match_operand:DI 0 "short_memory_operand" "=T")
(match_operand:DI 1 "fp_reg_operand" "fx"))]
""
"fstds%F0 %1,%0"
[(set_attr "type" "fpstore")
(set_attr "length" "1")])
(define_insn ""
[(set (match_operand:DI 0 "reg_or_nonsymb_mem_operand" [(set (match_operand:DI 0 "reg_or_nonsymb_mem_operand"
"=r,Q,&r,&r,fx") "=r,Q,&r,&r,fx,fx,*T")
(match_operand:DI 1 "general_operand" (match_operand:DI 1 "general_operand"
"rM,r,Q,i,fxM"))] "rM,r,Q,i,fxM,*T,fx"))]
"register_operand (operands[0], DImode) "register_operand (operands[0], DImode)
|| reg_or_0_operand (operands[1], DImode)" || reg_or_0_operand (operands[1], DImode)"
"* "*
...@@ -1528,8 +1500,8 @@ ...@@ -1528,8 +1500,8 @@
return output_fp_move_double (operands); return output_fp_move_double (operands);
return output_move_double (operands); return output_move_double (operands);
}" }"
[(set_attr "type" "move,store,load,misc,fpalu") [(set_attr "type" "move,store,load,misc,fpalu,fpload,fpstore")
(set_attr "length" "2,3,3,3,1")]) (set_attr "length" "2,3,3,3,1,1,1")])
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r") [(set (match_operand:DI 0 "register_operand" "=r,r")
......
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