Commit c8427064 by Uros Bizjak Committed by Uros Bizjak

i386.md (any_or): New code iterator.

	* config/i386/i386.md (any_or): New code iterator.
	(any_logic): Rename from plogic code iterator.
	(logicprefix): Rename from plogicprefix code attribute.
	(<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
	any_or code iterator.
	(*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
	any_or code iterator.
	(*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
	(*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
	(ior and xor splitters): Ditto.
	* config/i386/mmx.md: Updated for rename.
	* config/i386/sse.md: Ditto.

From-SVN: r155037
parent 53567bbd
2009-12-07 Uros Bizjak <ubizjak@gmail.com> 2009-12-07 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (any_or): New code iterator.
(any_logic): Rename from plogic code iterator.
(logicprefix): Rename from plogicprefix code attribute.
(<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
any_or code iterator.
(*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
any_or code iterator.
(*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
(*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
(ior and xor splitters): Ditto.
* config/i386/mmx.md: Updated for rename.
* config/i386/sse.md: Ditto.
2009-12-07 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2): * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
Remove quotes around condition logic code. Remove quotes around condition logic code.
...@@ -15,7 +30,7 @@ ...@@ -15,7 +30,7 @@
2009-12-06 Uros Bizjak <ubizjak@gmail.com> 2009-12-06 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386-md (g): Add HImode and QImode. * config/i386/i386.md (g): Add HImode and QImode.
(general_szext_operand): New mode attribute. (general_szext_operand): New mode attribute.
(*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using (*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
SWI124 mode iterator. SWI124 mode iterator.
...@@ -1087,7 +1087,7 @@ ...@@ -1087,7 +1087,7 @@
(define_expand "mmx_<code><mode>3" (define_expand "mmx_<code><mode>3"
[(set (match_operand:MMXMODEI 0 "register_operand" "") [(set (match_operand:MMXMODEI 0 "register_operand" "")
(plogic:MMXMODEI (any_logic:MMXMODEI
(match_operand:MMXMODEI 1 "nonimmediate_operand" "") (match_operand:MMXMODEI 1 "nonimmediate_operand" "")
(match_operand:MMXMODEI 2 "nonimmediate_operand" "")))] (match_operand:MMXMODEI 2 "nonimmediate_operand" "")))]
"TARGET_MMX" "TARGET_MMX"
...@@ -1095,11 +1095,11 @@ ...@@ -1095,11 +1095,11 @@
(define_insn "*mmx_<code><mode>3" (define_insn "*mmx_<code><mode>3"
[(set (match_operand:MMXMODEI 0 "register_operand" "=y") [(set (match_operand:MMXMODEI 0 "register_operand" "=y")
(plogic:MMXMODEI (any_logic:MMXMODEI
(match_operand:MMXMODEI 1 "nonimmediate_operand" "%0") (match_operand:MMXMODEI 1 "nonimmediate_operand" "%0")
(match_operand:MMXMODEI 2 "nonimmediate_operand" "ym")))] (match_operand:MMXMODEI 2 "nonimmediate_operand" "ym")))]
"TARGET_MMX && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" "TARGET_MMX && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"p<plogicprefix>\t{%2, %0|%0, %2}" "p<logicprefix>\t{%2, %0|%0, %2}"
[(set_attr "type" "mmxadd") [(set_attr "type" "mmxadd")
(set_attr "mode" "DI")]) (set_attr "mode" "DI")])
......
...@@ -1580,7 +1580,7 @@ ...@@ -1580,7 +1580,7 @@
(define_expand "<code><mode>3" (define_expand "<code><mode>3"
[(set (match_operand:AVX256MODEF2P 0 "register_operand" "") [(set (match_operand:AVX256MODEF2P 0 "register_operand" "")
(plogic:AVX256MODEF2P (any_logic:AVX256MODEF2P
(match_operand:AVX256MODEF2P 1 "nonimmediate_operand" "") (match_operand:AVX256MODEF2P 1 "nonimmediate_operand" "")
(match_operand:AVX256MODEF2P 2 "nonimmediate_operand" "")))] (match_operand:AVX256MODEF2P 2 "nonimmediate_operand" "")))]
"AVX256_VEC_FLOAT_MODE_P (<MODE>mode)" "AVX256_VEC_FLOAT_MODE_P (<MODE>mode)"
...@@ -1588,19 +1588,19 @@ ...@@ -1588,19 +1588,19 @@
(define_insn "*avx_<code><mode>3" (define_insn "*avx_<code><mode>3"
[(set (match_operand:AVXMODEF2P 0 "register_operand" "=x") [(set (match_operand:AVXMODEF2P 0 "register_operand" "=x")
(plogic:AVXMODEF2P (any_logic:AVXMODEF2P
(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "%x") (match_operand:AVXMODEF2P 1 "nonimmediate_operand" "%x")
(match_operand:AVXMODEF2P 2 "nonimmediate_operand" "xm")))] (match_operand:AVXMODEF2P 2 "nonimmediate_operand" "xm")))]
"AVX_VEC_FLOAT_MODE_P (<MODE>mode) "AVX_VEC_FLOAT_MODE_P (<MODE>mode)
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"v<plogicprefix>p<avxmodesuffixf2c>\t{%2, %1, %0|%0, %1, %2}" "v<logicprefix>p<avxmodesuffixf2c>\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "prefix" "vex") (set_attr "prefix" "vex")
(set_attr "mode" "<avxvecmode>")]) (set_attr "mode" "<avxvecmode>")])
(define_expand "<code><mode>3" (define_expand "<code><mode>3"
[(set (match_operand:SSEMODEF2P 0 "register_operand" "") [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
(plogic:SSEMODEF2P (any_logic:SSEMODEF2P
(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "") (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")
(match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))] (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "")))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)" "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
...@@ -1608,12 +1608,12 @@ ...@@ -1608,12 +1608,12 @@
(define_insn "*<code><mode>3" (define_insn "*<code><mode>3"
[(set (match_operand:SSEMODEF2P 0 "register_operand" "=x") [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
(plogic:SSEMODEF2P (any_logic:SSEMODEF2P
(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0") (match_operand:SSEMODEF2P 1 "nonimmediate_operand" "%0")
(match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))] (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode) "SSE_VEC_FLOAT_MODE_P (<MODE>mode)
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"<plogicprefix>p<ssemodesuffixf2c>\t{%2, %0|%0, %2}" "<logicprefix>p<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
...@@ -1665,22 +1665,22 @@ ...@@ -1665,22 +1665,22 @@
(define_insn "*avx_<code><mode>3" (define_insn "*avx_<code><mode>3"
[(set (match_operand:MODEF 0 "register_operand" "=x") [(set (match_operand:MODEF 0 "register_operand" "=x")
(plogic:MODEF (any_logic:MODEF
(match_operand:MODEF 1 "register_operand" "x") (match_operand:MODEF 1 "register_operand" "x")
(match_operand:MODEF 2 "register_operand" "x")))] (match_operand:MODEF 2 "register_operand" "x")))]
"AVX_FLOAT_MODE_P (<MODE>mode)" "AVX_FLOAT_MODE_P (<MODE>mode)"
"v<plogicprefix>p<ssemodefsuffix>\t{%2, %1, %0|%0, %1, %2}" "v<logicprefix>p<ssemodefsuffix>\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "prefix" "vex") (set_attr "prefix" "vex")
(set_attr "mode" "<ssevecmode>")]) (set_attr "mode" "<ssevecmode>")])
(define_insn "*<code><mode>3" (define_insn "*<code><mode>3"
[(set (match_operand:MODEF 0 "register_operand" "=x") [(set (match_operand:MODEF 0 "register_operand" "=x")
(plogic:MODEF (any_logic:MODEF
(match_operand:MODEF 1 "register_operand" "0") (match_operand:MODEF 1 "register_operand" "0")
(match_operand:MODEF 2 "register_operand" "x")))] (match_operand:MODEF 2 "register_operand" "x")))]
"SSE_FLOAT_MODE_P (<MODE>mode)" "SSE_FLOAT_MODE_P (<MODE>mode)"
"<plogicprefix>p<ssemodefsuffix>\t{%2, %0|%0, %2}" "<logicprefix>p<ssemodefsuffix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "mode" "<ssevecmode>")]) (set_attr "mode" "<ssevecmode>")])
...@@ -6564,7 +6564,7 @@ ...@@ -6564,7 +6564,7 @@
(define_expand "<code><mode>3" (define_expand "<code><mode>3"
[(set (match_operand:SSEMODEI 0 "register_operand" "") [(set (match_operand:SSEMODEI 0 "register_operand" "")
(plogic:SSEMODEI (any_logic:SSEMODEI
(match_operand:SSEMODEI 1 "nonimmediate_operand" "") (match_operand:SSEMODEI 1 "nonimmediate_operand" "")
(match_operand:SSEMODEI 2 "nonimmediate_operand" "")))] (match_operand:SSEMODEI 2 "nonimmediate_operand" "")))]
"TARGET_SSE" "TARGET_SSE"
...@@ -6572,53 +6572,53 @@ ...@@ -6572,53 +6572,53 @@
(define_insn "*avx_<code><mode>3" (define_insn "*avx_<code><mode>3"
[(set (match_operand:AVX256MODEI 0 "register_operand" "=x") [(set (match_operand:AVX256MODEI 0 "register_operand" "=x")
(plogic:AVX256MODEI (any_logic:AVX256MODEI
(match_operand:AVX256MODEI 1 "nonimmediate_operand" "%x") (match_operand:AVX256MODEI 1 "nonimmediate_operand" "%x")
(match_operand:AVX256MODEI 2 "nonimmediate_operand" "xm")))] (match_operand:AVX256MODEI 2 "nonimmediate_operand" "xm")))]
"TARGET_AVX "TARGET_AVX
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"v<plogicprefix>ps\t{%2, %1, %0|%0, %1, %2}" "v<logicprefix>ps\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "prefix" "vex") (set_attr "prefix" "vex")
(set_attr "mode" "<avxvecpsmode>")]) (set_attr "mode" "<avxvecpsmode>")])
(define_insn "*sse_<code><mode>3" (define_insn "*sse_<code><mode>3"
[(set (match_operand:SSEMODEI 0 "register_operand" "=x") [(set (match_operand:SSEMODEI 0 "register_operand" "=x")
(plogic:SSEMODEI (any_logic:SSEMODEI
(match_operand:SSEMODEI 1 "nonimmediate_operand" "%0") (match_operand:SSEMODEI 1 "nonimmediate_operand" "%0")
(match_operand:SSEMODEI 2 "nonimmediate_operand" "xm")))] (match_operand:SSEMODEI 2 "nonimmediate_operand" "xm")))]
"(TARGET_SSE && !TARGET_SSE2) "(TARGET_SSE && !TARGET_SSE2)
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"<plogicprefix>ps\t{%2, %0|%0, %2}" "<logicprefix>ps\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "mode" "V4SF")]) (set_attr "mode" "V4SF")])
(define_insn "*avx_<code><mode>3" (define_insn "*avx_<code><mode>3"
[(set (match_operand:SSEMODEI 0 "register_operand" "=x") [(set (match_operand:SSEMODEI 0 "register_operand" "=x")
(plogic:SSEMODEI (any_logic:SSEMODEI
(match_operand:SSEMODEI 1 "nonimmediate_operand" "%x") (match_operand:SSEMODEI 1 "nonimmediate_operand" "%x")
(match_operand:SSEMODEI 2 "nonimmediate_operand" "xm")))] (match_operand:SSEMODEI 2 "nonimmediate_operand" "xm")))]
"TARGET_AVX "TARGET_AVX
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"vp<plogicprefix>\t{%2, %1, %0|%0, %1, %2}" "vp<logicprefix>\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "prefix" "vex") (set_attr "prefix" "vex")
(set_attr "mode" "TI")]) (set_attr "mode" "TI")])
(define_insn "*sse2_<code><mode>3" (define_insn "*sse2_<code><mode>3"
[(set (match_operand:SSEMODEI 0 "register_operand" "=x") [(set (match_operand:SSEMODEI 0 "register_operand" "=x")
(plogic:SSEMODEI (any_logic:SSEMODEI
(match_operand:SSEMODEI 1 "nonimmediate_operand" "%0") (match_operand:SSEMODEI 1 "nonimmediate_operand" "%0")
(match_operand:SSEMODEI 2 "nonimmediate_operand" "xm")))] (match_operand:SSEMODEI 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE2 && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)" "TARGET_SSE2 && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
"p<plogicprefix>\t{%2, %0|%0, %2}" "p<logicprefix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "prefix_data16" "1") (set_attr "prefix_data16" "1")
(set_attr "mode" "TI")]) (set_attr "mode" "TI")])
(define_expand "<code>tf3" (define_expand "<code>tf3"
[(set (match_operand:TF 0 "register_operand" "") [(set (match_operand:TF 0 "register_operand" "")
(plogic:TF (any_logic:TF
(match_operand:TF 1 "nonimmediate_operand" "") (match_operand:TF 1 "nonimmediate_operand" "")
(match_operand:TF 2 "nonimmediate_operand" "")))] (match_operand:TF 2 "nonimmediate_operand" "")))]
"TARGET_SSE2" "TARGET_SSE2"
...@@ -6626,11 +6626,11 @@ ...@@ -6626,11 +6626,11 @@
(define_insn "*<code>tf3" (define_insn "*<code>tf3"
[(set (match_operand:TF 0 "register_operand" "=x") [(set (match_operand:TF 0 "register_operand" "=x")
(plogic:TF (any_logic:TF
(match_operand:TF 1 "nonimmediate_operand" "%0") (match_operand:TF 1 "nonimmediate_operand" "%0")
(match_operand:TF 2 "nonimmediate_operand" "xm")))] (match_operand:TF 2 "nonimmediate_operand" "xm")))]
"TARGET_SSE2 && ix86_binary_operator_ok (<CODE>, TFmode, operands)" "TARGET_SSE2 && ix86_binary_operator_ok (<CODE>, TFmode, operands)"
"p<plogicprefix>\t{%2, %0|%0, %2}" "p<logicprefix>\t{%2, %0|%0, %2}"
[(set_attr "type" "sselog") [(set_attr "type" "sselog")
(set_attr "prefix_data16" "1") (set_attr "prefix_data16" "1")
(set_attr "mode" "TI")]) (set_attr "mode" "TI")])
......
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