diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-10-03 20:19:12 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-10-03 20:19:12 +0200 |
commit | 4262839e12747458dddc905525271e115e3bfe83 (patch) | |
tree | 12e4a5f6a9d2c4338d87463ffe95f28069b32388 /gcc | |
parent | 342382107e44eb5c91628f9ada8f623b065eba2f (diff) | |
download | gcc-4262839e12747458dddc905525271e115e3bfe83.zip gcc-4262839e12747458dddc905525271e115e3bfe83.tar.gz gcc-4262839e12747458dddc905525271e115e3bfe83.tar.bz2 |
i386.c (ix86_expand_vec_perm_vpermi2): Fix up formatting.
* config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Fix up formatting.
(ix86_expand_vec_perm): Only call ix86_expand_vec_perm_vpermi2 if
TARGET_AVX512F.
(expand_vec_perm_1): Likewise.
From-SVN: r215868
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 42 |
2 files changed, 31 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 708dca1..7e1272c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,11 @@ 2014-10-03 Jakub Jelinek <jakub@redhat.com> + + * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Fix up formatting. + (ix86_expand_vec_perm): Only call ix86_expand_vec_perm_vpermi2 if + TARGET_AVX512F. + (expand_vec_perm_1): Likewise. + +2014-10-03 Jakub Jelinek <jakub@redhat.com> Uros Bizjak <ubizjak@gmail.com> PR tree-optimization/61403 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2f36c52..ed8fe2d 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -21373,21 +21373,23 @@ ix86_expand_vec_perm_vpermi2 (rtx target, rtx op0, rtx mask, rtx op1) { case V16SImode: emit_insn (gen_avx512f_vpermi2varv16si3 (target, op0, - force_reg (V16SImode, mask), - op1)); + force_reg (V16SImode, mask), + op1)); return true; case V16SFmode: emit_insn (gen_avx512f_vpermi2varv16sf3 (target, op0, - force_reg (V16SImode, mask), - op1)); + force_reg (V16SImode, mask), + op1)); return true; case V8DImode: emit_insn (gen_avx512f_vpermi2varv8di3 (target, op0, - force_reg (V8DImode, mask), op1)); + force_reg (V8DImode, mask), + op1)); return true; case V8DFmode: emit_insn (gen_avx512f_vpermi2varv8df3 (target, op0, - force_reg (V8DImode, mask), op1)); + force_reg (V8DImode, mask), + op1)); return true; default: return false; @@ -21414,7 +21416,8 @@ ix86_expand_vec_perm (rtx operands[]) e = GET_MODE_UNIT_SIZE (mode); gcc_assert (w <= 64); - if (ix86_expand_vec_perm_vpermi2 (target, op0, mask, op1)) + if (TARGET_AVX512F + && ix86_expand_vec_perm_vpermi2 (target, op0, mask, op1)) return; if (TARGET_AVX2) @@ -43231,17 +43234,20 @@ expand_vec_perm_1 (struct expand_vec_perm_d *d) return true; /* Try the AVX512F vpermi2 instructions. */ - rtx vec[64]; - enum machine_mode mode = d->vmode; - if (mode == V8DFmode) - mode = V8DImode; - else if (mode == V16SFmode) - mode = V16SImode; - for (i = 0; i < nelt; ++i) - vec[i] = GEN_INT (d->perm[i]); - rtx mask = gen_rtx_CONST_VECTOR (mode, gen_rtvec_v (nelt, vec)); - if (ix86_expand_vec_perm_vpermi2 (d->target, d->op0, mask, d->op1)) - return true; + if (TARGET_AVX512F) + { + rtx vec[64]; + enum machine_mode mode = d->vmode; + if (mode == V8DFmode) + mode = V8DImode; + else if (mode == V16SFmode) + mode = V16SImode; + for (i = 0; i < nelt; ++i) + vec[i] = GEN_INT (d->perm[i]); + rtx mask = gen_rtx_CONST_VECTOR (mode, gen_rtvec_v (nelt, vec)); + if (ix86_expand_vec_perm_vpermi2 (d->target, d->op0, mask, d->op1)) + return true; + } return false; } |