diff options
author | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2014-09-25 08:25:56 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2014-09-25 08:25:56 +0000 |
commit | e2a2165dea147cca592fe30911ff92a8cb74fbd7 (patch) | |
tree | 9d343c0cd10166fd3645aa8f71eb0683df678e8b /gcc | |
parent | 6eacd27c13582f51cc42088ffd1734953b2ce8ef (diff) | |
download | gcc-e2a2165dea147cca592fe30911ff92a8cb74fbd7.zip gcc-e2a2165dea147cca592fe30911ff92a8cb74fbd7.tar.gz gcc-e2a2165dea147cca592fe30911ff92a8cb74fbd7.tar.bz2 |
AVX-512. Extend `perm' insn patterns.
gcc/
* config/i386/sse.md
(define_expand "<avx2_avx512f>_perm<mode>"): Rename to ...
(define_expand "<avx2_avx512>_perm<mode>"): ... this.
(define_expand "avx512f_perm<mode>_mask"): Rename to ...
(define_expand "<avx512>_perm<mode>_mask"): ... this.
Use VI8F_256_512 mode iterator.
(define_insn "<avx2_avx512f>_perm<mode>_1<mask_name>"): Rename to ...
(define_insn "<avx2_avx512>_perm<mode>_1<mask_name>"): ... this.
Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r215590
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 18 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 16 |
2 files changed, 26 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8e357ac..06c4f0a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -8,6 +8,24 @@ Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/sse.md + (define_expand "<avx2_avx512f>_perm<mode>"): Rename to ... + (define_expand "<avx2_avx512>_perm<mode>"): ... this. + (define_expand "avx512f_perm<mode>_mask"): Rename to ... + (define_expand "<avx512>_perm<mode>_mask"): ... this. + Use VI8F_256_512 mode iterator. + (define_insn "<avx2_avx512f>_perm<mode>_1<mask_name>"): Rename to ... + (define_insn "<avx2_avx512bw>_perm<mode>_1<mask_name>"): ... this. + +2014-09-25 Alexander Ivchenko <alexander.ivchenko@intel.com> + Maxim Kuznetsov <maxim.kuznetsov@intel.com> + Anna Tikhonova <anna.tikhonova@intel.com> + Ilya Tocar <ilya.tocar@intel.com> + Andrey Turetskiy <andrey.turetskiy@intel.com> + Ilya Verbin <ilya.verbin@intel.com> + Kirill Yukhin <kirill.yukhin@intel.com> + Michael Zolotukhin <michael.v.zolotukhin@intel.com> + + * config/i386/sse.md (define_insn "avx_movshdup256<mask_name>"): Add masking. (define_insn "sse3_movshdup<mask_name>"): Ditto. (define_insn "avx_movsldup256<mask_name>"): Ditto. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 0ed9333..e7646d77 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -15921,14 +15921,14 @@ (set_attr "prefix" "<mask_prefix2>") (set_attr "mode" "<sseinsnmode>")]) -(define_expand "<avx2_avx512f>_perm<mode>" +(define_expand "<avx2_avx512>_perm<mode>" [(match_operand:VI8F_256_512 0 "register_operand") (match_operand:VI8F_256_512 1 "nonimmediate_operand") (match_operand:SI 2 "const_0_to_255_operand")] "TARGET_AVX2" { int mask = INTVAL (operands[2]); - emit_insn (gen_<avx2_avx512f>_perm<mode>_1 (operands[0], operands[1], + emit_insn (gen_<avx2_avx512>_perm<mode>_1 (operands[0], operands[1], GEN_INT ((mask >> 0) & 3), GEN_INT ((mask >> 2) & 3), GEN_INT ((mask >> 4) & 3), @@ -15936,16 +15936,16 @@ DONE; }) -(define_expand "avx512f_perm<mode>_mask" - [(match_operand:V8FI 0 "register_operand") - (match_operand:V8FI 1 "nonimmediate_operand") +(define_expand "<avx512>_perm<mode>_mask" + [(match_operand:VI8F_256_512 0 "register_operand") + (match_operand:VI8F_256_512 1 "nonimmediate_operand") (match_operand:SI 2 "const_0_to_255_operand") - (match_operand:V8FI 3 "vector_move_operand") + (match_operand:VI8F_256_512 3 "vector_move_operand") (match_operand:<avx512fmaskmode> 4 "register_operand")] "TARGET_AVX512F" { int mask = INTVAL (operands[2]); - emit_insn (gen_<avx2_avx512f>_perm<mode>_1_mask (operands[0], operands[1], + emit_insn (gen_<avx2_avx512>_perm<mode>_1_mask (operands[0], operands[1], GEN_INT ((mask >> 0) & 3), GEN_INT ((mask >> 2) & 3), GEN_INT ((mask >> 4) & 3), @@ -15954,7 +15954,7 @@ DONE; }) -(define_insn "<avx2_avx512f>_perm<mode>_1<mask_name>" +(define_insn "<avx2_avx512>_perm<mode>_1<mask_name>" [(set (match_operand:VI8F_256_512 0 "register_operand" "=v") (vec_select:VI8F_256_512 (match_operand:VI8F_256_512 1 "nonimmediate_operand" "vm") |