Commit acef5fe0 by Uros Bizjak Committed by Uros Bizjak

mmx.md (mov<mode>): Add ?!Ym,r and r,?!Ym alternatives.

	* config/i386/mmx.md (mov<mode>): Add ?!Ym,r and r,?!Ym alternatives.

From-SVN: r197024
parent 95a83503
2013-03-24 Uros Bizjak <ubizjak@gmail.com> 2013-03-24 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (mov<mode>): Merge with movv2sf expander * config/i386/mmx.md (mov<mode>): Add ?!Ym,r and r,?!Ym alternatives.
2013-03-24 Uros Bizjak <ubizjak@gmail.com>
* config/i386/mmx.md (mov<mode>): Merge with movv2sf expander
using MMXMODE mode iterator. using MMXMODE mode iterator.
(*move<mode>_internal): Merge with *movv2sf_internal and (*move<mode>_internal): Merge with *movv2sf_internal and
*movv2sf_internal_rex64 using MMXMODE mode iterator. *movv2sf_internal_rex64 using MMXMODE mode iterator.
......
...@@ -78,9 +78,9 @@ ...@@ -78,9 +78,9 @@
(define_insn "*mov<mode>_internal" (define_insn "*mov<mode>_internal"
[(set (match_operand:MMXMODE 0 "nonimmediate_operand" [(set (match_operand:MMXMODE 0 "nonimmediate_operand"
"=r ,o ,r,r ,m ,!?y,!y,!?y,m ,x,x,x,m,*x,*x,*x,m ,r ,Yi,!Ym,*Yi") "=r ,o ,r,r ,m ,?!y,!y,?!y,m ,r ,?!Ym,x,x,x,m,*x,*x,*x,m ,r ,Yi,!Ym,*Yi")
(match_operand:MMXMODE 1 "vector_move_operand" (match_operand:MMXMODE 1 "vector_move_operand"
"rCo,rC,C,rm,rC,C ,!y,m ,!?y,C,x,m,x,C ,*x,m ,*x,Yi,r ,*Yi,!Ym"))] "rCo,rC,C,rm,rC,C ,!y,m ,?!y,?!Ym,r ,C,x,m,x,C ,*x,m ,*x,Yi,r ,*Yi,!Ym"))]
"TARGET_MMX "TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))" && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
{ {
...@@ -146,7 +146,7 @@ ...@@ -146,7 +146,7 @@
[(set (attr "isa") [(set (attr "isa")
(cond [(eq_attr "alternative" "0,1") (cond [(eq_attr "alternative" "0,1")
(const_string "nox64") (const_string "nox64")
(eq_attr "alternative" "2,3,4,9,10,11,12,17,18") (eq_attr "alternative" "2,3,4,9,10,11,12,13,14,19,20")
(const_string "x64") (const_string "x64")
] ]
(const_string "*"))) (const_string "*")))
...@@ -157,16 +157,16 @@ ...@@ -157,16 +157,16 @@
(const_string "imov") (const_string "imov")
(eq_attr "alternative" "5") (eq_attr "alternative" "5")
(const_string "mmx") (const_string "mmx")
(eq_attr "alternative" "6,7,8") (eq_attr "alternative" "6,7,8,9,10")
(const_string "mmxmov") (const_string "mmxmov")
(eq_attr "alternative" "9,13") (eq_attr "alternative" "11,15")
(const_string "sselog1") (const_string "sselog1")
(eq_attr "alternative" "19,20") (eq_attr "alternative" "21,22")
(const_string "ssecvt") (const_string "ssecvt")
] ]
(const_string "ssemov"))) (const_string "ssemov")))
(set (attr "prefix_rex") (set (attr "prefix_rex")
(if_then_else (eq_attr "alternative" "17,18") (if_then_else (eq_attr "alternative" "9,10,19,20")
(const_string "1") (const_string "1")
(const_string "*"))) (const_string "*")))
(set (attr "prefix") (set (attr "prefix")
...@@ -181,7 +181,7 @@ ...@@ -181,7 +181,7 @@
(set (attr "mode") (set (attr "mode")
(cond [(eq_attr "alternative" "2") (cond [(eq_attr "alternative" "2")
(const_string "SI") (const_string "SI")
(eq_attr "alternative" "9,10,13,14") (eq_attr "alternative" "11,12,15,16")
(cond [(match_test "<MODE>mode == V2SFmode") (cond [(match_test "<MODE>mode == V2SFmode")
(const_string "V4SF") (const_string "V4SF")
(ior (not (match_test "TARGET_SSE2")) (ior (not (match_test "TARGET_SSE2"))
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
] ]
(const_string "TI")) (const_string "TI"))
(and (eq_attr "alternative" "11,12,15,16") (and (eq_attr "alternative" "13,14,17,18")
(ior (match_test "<MODE>mode == V2SFmode") (ior (match_test "<MODE>mode == V2SFmode")
(not (match_test "TARGET_SSE2")))) (not (match_test "TARGET_SSE2"))))
(const_string "V2SF") (const_string "V2SF")
......
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