mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-31 05:14:46 +08:00
mips.md (UNSPEC_{RSQRT,RECIP}[12]_{S,D,PS}): Delete.
* config/mips/mips.md (UNSPEC_{RSQRT,RECIP}[12]_{S,D,PS}): Delete. (UNSPEC_{RSQRT,RECIP}[12]): New constants. (UNSPEC_MOVE_TF_PS): Renumber to avoid gaps. * config/mips/mips-ps-3d.md (*movcc_v2sf_[sd]i): Use :GPR. (mips_{rsqrt,recip}[12]_{s,d,ps}): Use :ANYF. From-SVN: r86752
This commit is contained in:
parent
ef6379fded
commit
afa396ff84
@ -1,3 +1,11 @@
|
||||
2004-08-30 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* config/mips/mips.md (UNSPEC_{RSQRT,RECIP}[12]_{S,D,PS}): Delete.
|
||||
(UNSPEC_{RSQRT,RECIP}[12]): New constants.
|
||||
(UNSPEC_MOVE_TF_PS): Renumber to avoid gaps.
|
||||
* config/mips/mips-ps-3d.md (*movcc_v2sf_[sd]i): Use :GPR.
|
||||
(mips_{rsqrt,recip}[12]_{s,d,ps}): Use :ANYF.
|
||||
|
||||
2004-08-30 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
* tree-pretty-print.c (dump_generic_node): Handle VALUE_HANDLE
|
||||
|
@ -18,26 +18,11 @@
|
||||
;; the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
;; Boston, MA 02111-1307, USA.
|
||||
|
||||
(define_insn "*movcc_v2sf_di"
|
||||
(define_insn "*movcc_v2sf_<mode>"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=f,f")
|
||||
(if_then_else:V2SF
|
||||
(match_operator:DI 4 "equality_operator"
|
||||
[(match_operand:DI 1 "register_operand" "d,d")
|
||||
(const_int 0)])
|
||||
(match_operand:V2SF 2 "register_operand" "f,0")
|
||||
(match_operand:V2SF 3 "register_operand" "0,f")))]
|
||||
"TARGET_PAIRED_SINGLE_FLOAT"
|
||||
"@
|
||||
mov%T4.ps\t%0,%2,%1
|
||||
mov%t4.ps\t%0,%3,%1"
|
||||
[(set_attr "type" "condmove")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
(define_insn "*movcc_v2sf_si"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=f,f")
|
||||
(if_then_else:V2SF
|
||||
(match_operator:SI 4 "equality_operator"
|
||||
[(match_operand:SI 1 "register_operand" "d,d")
|
||||
(match_operator:GPR 4 "equality_operator"
|
||||
[(match_operand:GPR 1 "register_operand" "d,d")
|
||||
(const_int 0)])
|
||||
(match_operand:V2SF 2 "register_operand" "f,0")
|
||||
(match_operand:V2SF 3 "register_operand" "0,f")))]
|
||||
@ -1423,136 +1408,40 @@
|
||||
; Floating Point Reduced Precision Reciprocal Square Root Instructions.
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal Square Root
|
||||
; for Single (Sequence Step 1)
|
||||
(define_insn "mips_rsqrt1_s"
|
||||
[(set (match_operand:SF 0 "register_operand" "=f")
|
||||
(unspec:SF [(match_operand:SF 1 "register_operand" "f")]
|
||||
UNSPEC_RSQRT1_S))]
|
||||
(define_insn "mips_rsqrt1_<fmt>"
|
||||
[(set (match_operand:ANYF 0 "register_operand" "=f")
|
||||
(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
|
||||
UNSPEC_RSQRT1))]
|
||||
"TARGET_MIPS3D"
|
||||
"rsqrt1.s\t%0,%1"
|
||||
"rsqrt1.<fmt>\t%0,%1"
|
||||
[(set_attr "type" "frsqrt")
|
||||
(set_attr "mode" "SF")])
|
||||
(set_attr "mode" "<UNITMODE>")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal Square Root
|
||||
; for Double (Sequence Step 1)
|
||||
(define_insn "mips_rsqrt1_d"
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(unspec:DF [(match_operand:DF 1 "register_operand" "f")]
|
||||
UNSPEC_RSQRT1_D))]
|
||||
(define_insn "mips_rsqrt2_<fmt>"
|
||||
[(set (match_operand:ANYF 0 "register_operand" "=f")
|
||||
(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
|
||||
(match_operand:ANYF 2 "register_operand" "f")]
|
||||
UNSPEC_RSQRT2))]
|
||||
"TARGET_MIPS3D"
|
||||
"rsqrt1.d\t%0,%1"
|
||||
"rsqrt2.<fmt>\t%0,%1,%2"
|
||||
[(set_attr "type" "frsqrt")
|
||||
(set_attr "mode" "DF")])
|
||||
(set_attr "mode" "<UNITMODE>")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal Square Root
|
||||
; for Paired Singles (Sequence Step 1)
|
||||
(define_insn "mips_rsqrt1_ps"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=f")
|
||||
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")]
|
||||
UNSPEC_RSQRT1_PS))]
|
||||
(define_insn "mips_recip1_<fmt>"
|
||||
[(set (match_operand:ANYF 0 "register_operand" "=f")
|
||||
(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
|
||||
UNSPEC_RECIP1))]
|
||||
"TARGET_MIPS3D"
|
||||
"rsqrt1.ps\t%0,%1"
|
||||
[(set_attr "type" "frsqrt")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal Square Root
|
||||
; for Single (Sequence Step 2)
|
||||
(define_insn "mips_rsqrt2_s"
|
||||
[(set (match_operand:SF 0 "register_operand" "=f")
|
||||
(unspec:SF [(match_operand:SF 1 "register_operand" "f")
|
||||
(match_operand:SF 2 "register_operand" "f")]
|
||||
UNSPEC_RSQRT2_S))]
|
||||
"TARGET_MIPS3D"
|
||||
"rsqrt2.s\t%0,%1,%2"
|
||||
[(set_attr "type" "frsqrt")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal Square Root
|
||||
; for Double (Sequence Step 2)
|
||||
(define_insn "mips_rsqrt2_d"
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(unspec:DF [(match_operand:DF 1 "register_operand" "f")
|
||||
(match_operand:DF 2 "register_operand" "f")]
|
||||
UNSPEC_RSQRT2_D))]
|
||||
"TARGET_MIPS3D"
|
||||
"rsqrt2.d\t%0,%1,%2"
|
||||
[(set_attr "type" "frsqrt")
|
||||
(set_attr "mode" "DF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal Square Root
|
||||
; for Paired Singles (Sequence Step 2)
|
||||
(define_insn "mips_rsqrt2_ps"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=f")
|
||||
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")
|
||||
(match_operand:V2SF 2 "register_operand" "f")]
|
||||
UNSPEC_RSQRT2_PS))]
|
||||
"TARGET_MIPS3D"
|
||||
"rsqrt2.ps\t%0,%1,%2"
|
||||
[(set_attr "type" "frsqrt")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal for Single (Sequence Step 1)
|
||||
(define_insn "mips_recip1_s"
|
||||
[(set (match_operand:SF 0 "register_operand" "=f")
|
||||
(unspec:SF [(match_operand:SF 1 "register_operand" "f")]
|
||||
UNSPEC_RECIP1_S))]
|
||||
"TARGET_MIPS3D"
|
||||
"recip1.s\t%0,%1"
|
||||
"recip1.<fmt>\t%0,%1"
|
||||
[(set_attr "type" "frdiv")
|
||||
(set_attr "mode" "SF")])
|
||||
(set_attr "mode" "<UNITMODE>")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal for Double (Sequence Step 1)
|
||||
(define_insn "mips_recip1_d"
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(unspec:DF [(match_operand:DF 1 "register_operand" "f")]
|
||||
UNSPEC_RECIP1_D))]
|
||||
(define_insn "mips_recip2_<fmt>"
|
||||
[(set (match_operand:ANYF 0 "register_operand" "=f")
|
||||
(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
|
||||
(match_operand:ANYF 2 "register_operand" "f")]
|
||||
UNSPEC_RECIP2))]
|
||||
"TARGET_MIPS3D"
|
||||
"recip1.d\t%0,%1"
|
||||
"recip2.<fmt>\t%0,%1,%2"
|
||||
[(set_attr "type" "frdiv")
|
||||
(set_attr "mode" "DF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal for Paired Singles
|
||||
; (Sequence Step 1)
|
||||
(define_insn "mips_recip1_ps"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=f")
|
||||
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")]
|
||||
UNSPEC_RECIP1_PS))]
|
||||
"TARGET_MIPS3D"
|
||||
"recip1.ps\t%0,%1"
|
||||
[(set_attr "type" "frdiv")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal for Single (Sequence Step 2)
|
||||
(define_insn "mips_recip2_s"
|
||||
[(set (match_operand:SF 0 "register_operand" "=f")
|
||||
(unspec:SF [(match_operand:SF 1 "register_operand" "f")
|
||||
(match_operand:SF 2 "register_operand" "f")]
|
||||
UNSPEC_RECIP2_S))]
|
||||
"TARGET_MIPS3D"
|
||||
"recip2.s\t%0,%1,%2"
|
||||
[(set_attr "type" "frdiv")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal for Double (Sequence Step 2)
|
||||
(define_insn "mips_recip2_d"
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(unspec:DF [(match_operand:DF 1 "register_operand" "f")
|
||||
(match_operand:DF 2 "register_operand" "f")]
|
||||
UNSPEC_RECIP2_D))]
|
||||
"TARGET_MIPS3D"
|
||||
"recip2.d\t%0,%1,%2"
|
||||
[(set_attr "type" "frdiv")
|
||||
(set_attr "mode" "DF")])
|
||||
|
||||
; Floating Point Reduced Precision Reciprocal for Paired Singles
|
||||
; (Sequence Step 2)
|
||||
(define_insn "mips_recip2_ps"
|
||||
[(set (match_operand:V2SF 0 "register_operand" "=f")
|
||||
(unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")
|
||||
(match_operand:V2SF 2 "register_operand" "f")]
|
||||
UNSPEC_RECIP2_PS))]
|
||||
"TARGET_MIPS3D"
|
||||
"recip2.ps\t%0,%1,%2"
|
||||
[(set_attr "type" "frdiv")
|
||||
(set_attr "mode" "SF")])
|
||||
(set_attr "mode" "<UNITMODE>")])
|
||||
|
@ -52,6 +52,7 @@
|
||||
|
||||
;; For MIPS Paired-Singled Floating Point Instructions.
|
||||
|
||||
(UNSPEC_MOVE_TF_PS 200)
|
||||
(UNSPEC_C_F 201)
|
||||
(UNSPEC_C_UN 202)
|
||||
(UNSPEC_C_EQ 203)
|
||||
@ -96,21 +97,10 @@
|
||||
(UNSPEC_CVT_PS_PW 236)
|
||||
(UNSPEC_MULR_PS 237)
|
||||
|
||||
(UNSPEC_RECIP1_S 238)
|
||||
(UNSPEC_RECIP1_D 239)
|
||||
(UNSPEC_RECIP1_PS 240)
|
||||
(UNSPEC_RECIP2_S 241)
|
||||
(UNSPEC_RECIP2_D 242)
|
||||
(UNSPEC_RECIP2_PS 243)
|
||||
|
||||
(UNSPEC_RSQRT1_S 244)
|
||||
(UNSPEC_RSQRT1_D 245)
|
||||
(UNSPEC_RSQRT1_PS 246)
|
||||
(UNSPEC_RSQRT2_S 247)
|
||||
(UNSPEC_RSQRT2_D 248)
|
||||
(UNSPEC_RSQRT2_PS 249)
|
||||
|
||||
(UNSPEC_MOVE_TF_PS 250)
|
||||
(UNSPEC_RSQRT1 238)
|
||||
(UNSPEC_RSQRT2 239)
|
||||
(UNSPEC_RECIP1 240)
|
||||
(UNSPEC_RECIP2 241)
|
||||
]
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user