Commit a0caac98 by Jakub Jelinek Committed by Jakub Jelinek

sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Limit 1st alternative to noavx isa...

	* config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
	Limit 1st alternative to noavx isa, split 2nd alternative into one
	noavx and one avx alternative, use *x and Bm in the former and
	x and m in the latter.

From-SVN: r236661
parent 7733939d
2016-05-24 Jakub Jelinek <jakub@redhat.com> 2016-05-24 Jakub Jelinek <jakub@redhat.com>
* config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
Limit 1st alternative to noavx isa, split 2nd alternative into one
noavx and one avx alternative, use *x and Bm in the former and
x and m in the latter.
* config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead * config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead
of sse4 for the first alternative, drop %v from the template of sse4 for the first alternative, drop %v from the template
and d operand modifier. Split second alternative into one sse4_noavx and d operand modifier. Split second alternative into one sse4_noavx
......
...@@ -14996,22 +14996,19 @@ ...@@ -14996,22 +14996,19 @@
(set_attr "mode" "<sseinsnmode>")]) (set_attr "mode" "<sseinsnmode>")])
(define_insn "<sse4_1>_round<ssemodesuffix><avxsizesuffix>" (define_insn "<sse4_1>_round<ssemodesuffix><avxsizesuffix>"
[(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x") [(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x,x")
(unspec:VF_128_256 (unspec:VF_128_256
[(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm") [(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm,xm")
(match_operand:SI 2 "const_0_to_15_operand" "n,n")] (match_operand:SI 2 "const_0_to_15_operand" "n,n,n")]
UNSPEC_ROUND))] UNSPEC_ROUND))]
"TARGET_ROUND" "TARGET_ROUND"
"%vround<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}" "%vround<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "type" "ssecvt") [(set_attr "isa" "noavx,noavx,avx")
(set (attr "prefix_data16") (set_attr "type" "ssecvt")
(if_then_else (set_attr "prefix_data16" "1,1,*")
(match_test "TARGET_AVX")
(const_string "*")
(const_string "1")))
(set_attr "prefix_extra" "1") (set_attr "prefix_extra" "1")
(set_attr "length_immediate" "1") (set_attr "length_immediate" "1")
(set_attr "prefix" "maybe_vex") (set_attr "prefix" "orig,orig,vex")
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
(define_expand "<sse4_1>_round<ssemodesuffix>_sfix<avxsizesuffix>" (define_expand "<sse4_1>_round<ssemodesuffix>_sfix<avxsizesuffix>"
......
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