mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-08 02:26:55 +08:00
s390.md ("*fmadddf", [...]): New insns.
* config/s390/s390.md ("*fmadddf", "*fmsubdf", "*fmaddsf", "*fmsubsf"): New insns. From-SVN: r70811
This commit is contained in:
parent
6077db9114
commit
a1b892b5d5
@ -1,3 +1,8 @@
|
||||
2003-08-26 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md ("*fmadddf", "*fmsubdf",
|
||||
"*fmaddsf", "*fmsubsf"): New insns.
|
||||
|
||||
2003-08-26 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* fold-const.c (fold <MULT_EXPR>): Optimize (C1/X)*C2 into
|
||||
|
@ -4047,6 +4047,30 @@
|
||||
[(set_attr "op_type" "RR,RX")
|
||||
(set_attr "type" "fmuld")])
|
||||
|
||||
(define_insn "*fmadddf"
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||
(plus:DF (mult:DF (match_operand:DF 1 "register_operand" "%f,f")
|
||||
(match_operand:DF 2 "nonimmediate_operand" "f,R"))
|
||||
(match_operand:DF 3 "register_operand" "0,0")))]
|
||||
"TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
|
||||
"@
|
||||
madbr\t%0,%1,%2
|
||||
madb\t%0,%1,%2"
|
||||
[(set_attr "op_type" "RRE,RXE")
|
||||
(set_attr "type" "fmuld")])
|
||||
|
||||
(define_insn "*fmsubdf"
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||
(minus:DF (mult:DF (match_operand:DF 1 "register_operand" "f,f")
|
||||
(match_operand:DF 2 "nonimmediate_operand" "f,R"))
|
||||
(match_operand:DF 3 "register_operand" "0,0")))]
|
||||
"TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
|
||||
"@
|
||||
msdbr\t%0,%1,%2
|
||||
msdb\t%0,%1,%2"
|
||||
[(set_attr "op_type" "RRE,RXE")
|
||||
(set_attr "type" "fmuld")])
|
||||
|
||||
;
|
||||
; mulsf3 instruction pattern(s).
|
||||
;
|
||||
@ -4084,6 +4108,29 @@
|
||||
[(set_attr "op_type" "RR,RX")
|
||||
(set_attr "type" "fmuls")])
|
||||
|
||||
(define_insn "*fmaddsf"
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||
(plus:SF (mult:SF (match_operand:SF 1 "register_operand" "%f,f")
|
||||
(match_operand:SF 2 "nonimmediate_operand" "f,R"))
|
||||
(match_operand:SF 3 "register_operand" "0,0")))]
|
||||
"TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
|
||||
"@
|
||||
maebr\t%0,%1,%2
|
||||
maeb\t%0,%1,%2"
|
||||
[(set_attr "op_type" "RRE,RXE")
|
||||
(set_attr "type" "fmuls")])
|
||||
|
||||
(define_insn "*fmsubsf"
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||
(minus:SF (mult:SF (match_operand:SF 1 "register_operand" "f,f")
|
||||
(match_operand:SF 2 "nonimmediate_operand" "f,R"))
|
||||
(match_operand:SF 3 "register_operand" "0,0")))]
|
||||
"TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
|
||||
"@
|
||||
msebr\t%0,%1,%2
|
||||
mseb\t%0,%1,%2"
|
||||
[(set_attr "op_type" "RRE,RXE")
|
||||
(set_attr "type" "fmuls")])
|
||||
|
||||
;;
|
||||
;;- Divide and modulo instructions.
|
||||
|
Loading…
Reference in New Issue
Block a user