x86: fold two of vec_dupv2df<mask_name>'s alternatives
By using Yvm in the source, both can be expressed in one. gcc/ * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle two of the alternatives.
This commit is contained in:
parent
0d6a022020
commit
68c3aa7510
1 changed files with 7 additions and 8 deletions
|
@ -13784,21 +13784,20 @@
|
|||
(set_attr "mode" "DF,DF,V1DF,V1DF,V1DF,V2DF,V1DF,V1DF,V1DF")])
|
||||
|
||||
(define_insn "vec_dupv2df<mask_name>"
|
||||
[(set (match_operand:V2DF 0 "register_operand" "=x,x,v,v")
|
||||
[(set (match_operand:V2DF 0 "register_operand" "=x,v,v")
|
||||
(vec_duplicate:V2DF
|
||||
(match_operand:DF 1 "nonimmediate_operand" "0,xm,vm,vm")))]
|
||||
(match_operand:DF 1 "nonimmediate_operand" "0,Yvm,vm")))]
|
||||
"TARGET_SSE2"
|
||||
"@
|
||||
unpcklpd\t%0, %0
|
||||
%vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}
|
||||
vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}
|
||||
vbroadcastsd\t{%1, }%g0<mask_operand2>{|, %1}"
|
||||
[(set_attr "isa" "noavx,sse3,avx512vl,*")
|
||||
(set_attr "type" "sselog1,ssemov,ssemov,ssemov")
|
||||
(set_attr "prefix" "orig,maybe_vex,evex,evex")
|
||||
(set_attr "mode" "V2DF,DF,DF,V8DF")
|
||||
[(set_attr "isa" "noavx,sse3,*")
|
||||
(set_attr "type" "sselog1,ssemov,ssemov")
|
||||
(set_attr "prefix" "orig,maybe_evex,evex")
|
||||
(set_attr "mode" "V2DF,DF,V8DF")
|
||||
(set (attr "enabled")
|
||||
(cond [(eq_attr "alternative" "3")
|
||||
(cond [(eq_attr "alternative" "2")
|
||||
(symbol_ref "TARGET_AVX512F && !TARGET_AVX512VL
|
||||
&& !TARGET_PREFER_AVX256")
|
||||
(match_test "<mask_avx512vl_condition>")
|
||||
|
|
Loading…
Add table
Reference in a new issue