Message ID | 20141017123231.GB49545@msticlxl57.ims.intel.com |
---|---|
State | New |
Headers | show |
On Fri, Oct 17, 2014 at 2:32 PM, Kirill Yukhin <kirill.yukhin@gmail.com> wrote: > Hello Uroš, > On 16 Oct 14:29, Uros Bizjak wrote: >> > + if (mode == V4DImode) >> > + emit_insn (gen_avx512dq_mulv4di3 (op0, op1, op2)); >> > + else if (mode == V2DImode) >> > + emit_insn (gen_avx512dq_mulv4di3 (op0, op1, op2)); >> >> Should this be v2di ? > Right, copy-and-paste :( >> >> > + } >> > + } >> > + else if (TARGET_XOP && mode == V2DImode) >> > { >> > /* op1: A,B,C,D, op2: E,F,G,H */ >> > op1 = gen_lowpart (V4SImode, op1); >> >> Please use function pointers in the added part. > Done. > > Updated patch in the bottom. Is it ok? OK. Thanks, Uros.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index c3202c4..415e330 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -45667,7 +45667,22 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx op1, rtx op2) enum machine_mode mode = GET_MODE (op0); rtx t1, t2, t3, t4, t5, t6; - if (TARGET_XOP && mode == V2DImode) + if (TARGET_AVX512DQ) + { + rtx (*gen) (rtx, rtx, rtx); + + if (mode == V8DImode) + gen = gen_avx512dq_mulv8di3; + else if (TARGET_AVX512VL) + { + if (mode == V4DImode) + gen = gen_avx512dq_mulv4di3; + else if (mode == V2DImode) + gen = gen_avx512dq_mulv2di3; + } + emit_insn (gen (op0, op1, op2)); + } + else if (TARGET_XOP && mode == V2DImode) { /* op1: A,B,C,D, op2: E,F,G,H */ op1 = gen_lowpart (V4SImode, op1);