[PATCH, i386] Disable AVX-512VL insns for scalar mode operands on -march=knl.
Uros Bizjak
ubizjak@gmail.com
Tue Aug 4 12:10:00 GMT 2015
On Tue, Aug 4, 2015 at 1:47 PM, Kirill Yukhin <kirill.yukhin@gmail.com> wrote:
> Hello,
>
> For vec_dup and vec_concat patterns (of v2df mode) second operand
> is of scalar mode, so `ix86_hard_regno_mode_ok’ didn’t block EVEX registers,
> of non-512b modes (when AVX-512VL is turned off).
> This turns into 128/256b xmm[>15] regs emit on -march=knl.
>
> There’re should be more patterns w/ similar issue. Will look for them later.
>
> Bootstrapped and regtested.
>
> If no objections, I'll commit it tomorrow morning (Moscow time).
>
> gcc/
> * config/i386/i386.md (define_attr "isa"): Addd avx512vl and
> noavx512vl.
> (define_attr "enabled"): Handle avx521vl and noavx512vl.
> * config/i386/sse.md (define_insn "vec_dupv2df<mask_name>"): Split
> AVX-512 alternative out of SSE.
> (define_insn "*vec_concatv2df"): Ditto.
>
> - (set_attr "prefix_data16" "*,*,*,1,*,*,*,*")
> - (set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex,orig,orig")
> - (set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,DF,V4SF,V2SF")])
> + (set_attr "prefix_data16" "*,*,*,*,*,1,*,*,*,*")
Please change the above to:
(set (attr "prefix_data16")
(if_then_else (eq_attr "alternative" "5")
(const_string "1")
(const_string "*")))
Uros.
More information about the Gcc-patches
mailing list