i386.md (SINCOS): New int iterator.
2012-06-20 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (SINCOS): New int iterator. (sincos): New int attribute. (*<sincos>xf2_i387): Macroize insn from *{sin,cos}xf2_i387 using SINCOS int iterator. (*<sincos>_extend<mode>xf2_i387): Macroize insn from *{sin,cos}_extend<mode>xf2_i387 using SINCOS int iterator. 2012-06-20 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (RDFSGSBASE): New int iterator. (WRFSGSBASE): Ditto. (fsgs): New int attribute. (rd<fsgs>base<mode>): Macroize insn from rd<fsgs>base<mode> using RDFSGSBASE int iterator. (wr<fsgs>base<mode>): Macroize insn from wr<fsgs>base<mode> using WRFSGSBASE int iterator. From-SVN: r188843
This commit is contained in:
parent
056d8580b6
commit
19425621a5
|
@ -2,6 +2,25 @@
|
||||||
|
|
||||||
* tree.h (DECL_SOURCE_COLUMN): New accessor.
|
* tree.h (DECL_SOURCE_COLUMN): New accessor.
|
||||||
|
|
||||||
|
2012-06-20 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
* config/i386/i386.md (SINCOS): New int iterator.
|
||||||
|
(sincos): New int attribute.
|
||||||
|
(*<sincos>xf2_i387): Macroize insn from *{sin,cos}xf2_i387 using
|
||||||
|
SINCOS int iterator.
|
||||||
|
(*<sincos>_extend<mode>xf2_i387): Macroize insn from
|
||||||
|
*{sin,cos}_extend<mode>xf2_i387 using SINCOS int iterator.
|
||||||
|
|
||||||
|
2012-06-20 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
* config/i386/i386.md (RDFSGSBASE): New int iterator.
|
||||||
|
(WRFSGSBASE): Ditto.
|
||||||
|
(fsgs): New int attribute.
|
||||||
|
(rd<fsgs>base<mode>): Macroize insn from rd<fsgs>base<mode> using
|
||||||
|
RDFSGSBASE int iterator.
|
||||||
|
(wr<fsgs>base<mode>): Macroize insn from wr<fsgs>base<mode> using
|
||||||
|
WRFSGSBASE int iterator.
|
||||||
|
|
||||||
2012-06-20 Uros Bizjak <ubizjak@gmail.com>
|
2012-06-20 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* config/i386/i386.md (<rounding_insn><mode>2): Macroize expander
|
* config/i386/i386.md (<rounding_insn><mode>2): Macroize expander
|
||||||
|
@ -38,7 +57,7 @@
|
||||||
* config/i386/i386.md (IEEE_MAXMIN): New int iterator.
|
* config/i386/i386.md (IEEE_MAXMIN): New int iterator.
|
||||||
(ieee_maxmin): New int attribute.
|
(ieee_maxmin): New int attribute.
|
||||||
(*ieee_s<ieee_maxmin><mode>3): Macroize insn from
|
(*ieee_s<ieee_maxmin><mode>3): Macroize insn from
|
||||||
*ieee_s{max,min}<mode>3 using IEEE_MAXMIN mode iterator.
|
*ieee_s{max,min}<mode>3 using IEEE_MAXMIN int iterator.
|
||||||
|
|
||||||
2012-06-20 Steven Bosscher <steven@gcc.gnu.org>
|
2012-06-20 Steven Bosscher <steven@gcc.gnu.org>
|
||||||
|
|
||||||
|
|
|
@ -13863,47 +13863,34 @@
|
||||||
DONE;
|
DONE;
|
||||||
})
|
})
|
||||||
|
|
||||||
(define_insn "*sinxf2_i387"
|
(define_int_iterator SINCOS
|
||||||
|
[UNSPEC_SIN
|
||||||
|
UNSPEC_COS])
|
||||||
|
|
||||||
|
(define_int_attr sincos
|
||||||
|
[(UNSPEC_SIN "sin")
|
||||||
|
(UNSPEC_COS "cos")])
|
||||||
|
|
||||||
|
(define_insn "*<sincos>xf2_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f")
|
[(set (match_operand:XF 0 "register_operand" "=f")
|
||||||
(unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_SIN))]
|
(unspec:XF [(match_operand:XF 1 "register_operand" "0")]
|
||||||
|
SINCOS))]
|
||||||
"TARGET_USE_FANCY_MATH_387
|
"TARGET_USE_FANCY_MATH_387
|
||||||
&& flag_unsafe_math_optimizations"
|
&& flag_unsafe_math_optimizations"
|
||||||
"fsin"
|
"f<sincos>"
|
||||||
[(set_attr "type" "fpspc")
|
[(set_attr "type" "fpspc")
|
||||||
(set_attr "mode" "XF")])
|
(set_attr "mode" "XF")])
|
||||||
|
|
||||||
(define_insn "*sin_extend<mode>xf2_i387"
|
(define_insn "*<sincos>_extend<mode>xf2_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f")
|
[(set (match_operand:XF 0 "register_operand" "=f")
|
||||||
(unspec:XF [(float_extend:XF
|
(unspec:XF [(float_extend:XF
|
||||||
(match_operand:MODEF 1 "register_operand" "0"))]
|
(match_operand:MODEF 1 "register_operand" "0"))]
|
||||||
UNSPEC_SIN))]
|
SINCOS))]
|
||||||
"TARGET_USE_FANCY_MATH_387
|
"TARGET_USE_FANCY_MATH_387
|
||||||
&& (!(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
|
&& (!(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
|
||||||
|| TARGET_MIX_SSE_I387)
|
|| TARGET_MIX_SSE_I387)
|
||||||
&& flag_unsafe_math_optimizations"
|
&& flag_unsafe_math_optimizations"
|
||||||
"fsin"
|
"f<sincos>"
|
||||||
[(set_attr "type" "fpspc")
|
|
||||||
(set_attr "mode" "XF")])
|
|
||||||
|
|
||||||
(define_insn "*cosxf2_i387"
|
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f")
|
|
||||||
(unspec:XF [(match_operand:XF 1 "register_operand" "0")] UNSPEC_COS))]
|
|
||||||
"TARGET_USE_FANCY_MATH_387
|
|
||||||
&& flag_unsafe_math_optimizations"
|
|
||||||
"fcos"
|
|
||||||
[(set_attr "type" "fpspc")
|
|
||||||
(set_attr "mode" "XF")])
|
|
||||||
|
|
||||||
(define_insn "*cos_extend<mode>xf2_i387"
|
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f")
|
|
||||||
(unspec:XF [(float_extend:XF
|
|
||||||
(match_operand:MODEF 1 "register_operand" "0"))]
|
|
||||||
UNSPEC_COS))]
|
|
||||||
"TARGET_USE_FANCY_MATH_387
|
|
||||||
&& (!(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
|
|
||||||
|| TARGET_MIX_SSE_I387)
|
|
||||||
&& flag_unsafe_math_optimizations"
|
|
||||||
"fcos"
|
|
||||||
[(set_attr "type" "fpspc")
|
[(set_attr "type" "fpspc")
|
||||||
(set_attr "mode" "XF")])
|
(set_attr "mode" "XF")])
|
||||||
|
|
||||||
|
@ -18087,35 +18074,33 @@
|
||||||
(set (attr "length")
|
(set (attr "length")
|
||||||
(symbol_ref "ix86_attr_length_address_default (insn) + 9"))])
|
(symbol_ref "ix86_attr_length_address_default (insn) + 9"))])
|
||||||
|
|
||||||
(define_insn "rdfsbase<mode>"
|
(define_int_iterator RDFSGSBASE
|
||||||
|
[UNSPECV_RDFSBASE
|
||||||
|
UNSPECV_RDGSBASE])
|
||||||
|
|
||||||
|
(define_int_iterator WRFSGSBASE
|
||||||
|
[UNSPECV_WRFSBASE
|
||||||
|
UNSPECV_WRGSBASE])
|
||||||
|
|
||||||
|
(define_int_attr fsgs
|
||||||
|
[(UNSPECV_RDFSBASE "fs")
|
||||||
|
(UNSPECV_RDGSBASE "gs")
|
||||||
|
(UNSPECV_WRFSBASE "fs")
|
||||||
|
(UNSPECV_WRGSBASE "gs")])
|
||||||
|
|
||||||
|
(define_insn "rd<fsgs>base<mode>"
|
||||||
[(set (match_operand:SWI48 0 "register_operand" "=r")
|
[(set (match_operand:SWI48 0 "register_operand" "=r")
|
||||||
(unspec_volatile:SWI48 [(const_int 0)] UNSPECV_RDFSBASE))]
|
(unspec_volatile:SWI48 [(const_int 0)] RDFSGSBASE))]
|
||||||
"TARGET_64BIT && TARGET_FSGSBASE"
|
"TARGET_64BIT && TARGET_FSGSBASE"
|
||||||
"rdfsbase %0"
|
"rd<fsgs>base\t%0"
|
||||||
[(set_attr "type" "other")
|
[(set_attr "type" "other")
|
||||||
(set_attr "prefix_extra" "2")])
|
(set_attr "prefix_extra" "2")])
|
||||||
|
|
||||||
(define_insn "rdgsbase<mode>"
|
(define_insn "wr<fsgs>base<mode>"
|
||||||
[(set (match_operand:SWI48 0 "register_operand" "=r")
|
|
||||||
(unspec_volatile:SWI48 [(const_int 0)] UNSPECV_RDGSBASE))]
|
|
||||||
"TARGET_64BIT && TARGET_FSGSBASE"
|
|
||||||
"rdgsbase %0"
|
|
||||||
[(set_attr "type" "other")
|
|
||||||
(set_attr "prefix_extra" "2")])
|
|
||||||
|
|
||||||
(define_insn "wrfsbase<mode>"
|
|
||||||
[(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")]
|
[(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")]
|
||||||
UNSPECV_WRFSBASE)]
|
WRFSGSBASE)]
|
||||||
"TARGET_64BIT && TARGET_FSGSBASE"
|
"TARGET_64BIT && TARGET_FSGSBASE"
|
||||||
"wrfsbase %0"
|
"wr<fsgs>base\t%0"
|
||||||
[(set_attr "type" "other")
|
|
||||||
(set_attr "prefix_extra" "2")])
|
|
||||||
|
|
||||||
(define_insn "wrgsbase<mode>"
|
|
||||||
[(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")]
|
|
||||||
UNSPECV_WRGSBASE)]
|
|
||||||
"TARGET_64BIT && TARGET_FSGSBASE"
|
|
||||||
"wrgsbase %0"
|
|
||||||
[(set_attr "type" "other")
|
[(set_attr "type" "other")
|
||||||
(set_attr "prefix_extra" "2")])
|
(set_attr "prefix_extra" "2")])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue