diff options
author | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2013-10-11 14:02:07 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2013-10-11 14:02:07 +0000 |
commit | f62ce24ff7570cf14d351c15d2799ad91ee54335 (patch) | |
tree | ca6c3898b2416d1cfa6cda1b78db0ab30968d8a0 | |
parent | 558d9f795b5c7f560bef4539e19c4f2e9e99533b (diff) | |
download | gcc-f62ce24ff7570cf14d351c15d2799ad91ee54335.zip gcc-f62ce24ff7570cf14d351c15d2799ad91ee54335.tar.gz gcc-f62ce24ff7570cf14d351c15d2799ad91ee54335.tar.bz2 |
sse.md (V_512): New.
* config/i386/sse.md (V_512): New.
(VI_512): Ditto.
(vcond<V_512:mode><VF_512:mode>): Ditto.
(vcond<V_512:mode><VI_512:mode>): Ditto.
(vcondu<V_512:mode><VI_512:mode>): Ditto.
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>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203440
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 59 |
2 files changed, 74 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0fb3d0b..8eea69f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -8,6 +8,22 @@ Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> + * config/i386/sse.md (V_512): New. + (VI_512): Ditto. + (vcond<V_512:mode><VF_512:mode>): Ditto. + (vcond<V_512:mode><VI_512:mode>): Ditto. + (vcondu<V_512:mode><VI_512:mode>): Ditto. + +2013-10-11 Alexander Ivchenko <alexander.ivchenko@intel.com> + Maxim Kuznetsov <maxim.kuznetsov@intel.com> + Sergey Lega <sergey.s.lega@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/i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F. * config/i386/sse.md (FMAMODEM): Changed modes and conditions. (FMAMODE): Ditto. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 0b81521..34215cd 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -122,6 +122,9 @@ (define_mode_iterator V_256 [V32QI V16HI V8SI V4DI V8SF V4DF]) +;; All 512bit vector modes +(define_mode_iterator V_512 [V64QI V32HI V16SI V8DI V16SF V8DF]) + ;; All 256bit and 512bit vector modes (define_mode_iterator V_256_512 [V32QI V16HI V8SI V4DI V8SF V4DF @@ -337,7 +340,10 @@ ;; All 256bit vector integer modes (define_mode_iterator VI_256 [V32QI V16HI V8SI V4DI]) -;; Random 128bit vector integer mode combinations +;; All 512bit vector integer modes +(define_mode_iterator VI_512 [V64QI V32HI V16SI V8DI]) + +;; Various 128bit vector integer mode combinations (define_mode_iterator VI12_128 [V16QI V8HI]) (define_mode_iterator VI14_128 [V16QI V4SI]) (define_mode_iterator VI124_128 [V16QI V8HI V4SI]) @@ -1853,6 +1859,23 @@ (const_string "0"))) (set_attr "mode" "<MODE>")]) +(define_expand "vcond<V_512:mode><VF_512:mode>" + [(set (match_operand:V_512 0 "register_operand") + (if_then_else:V_512 + (match_operator 3 "" + [(match_operand:VF_512 4 "nonimmediate_operand") + (match_operand:VF_512 5 "nonimmediate_operand")]) + (match_operand:V_512 1 "general_operand") + (match_operand:V_512 2 "general_operand")))] + "TARGET_AVX512F + && (GET_MODE_NUNITS (<V_512:MODE>mode) + == GET_MODE_NUNITS (<VF_512:MODE>mode))" +{ + bool ok = ix86_expand_fp_vcond (operands); + gcc_assert (ok); + DONE; +}) + (define_expand "vcond<V_256:mode><VF_256:mode>" [(set (match_operand:V_256 0 "register_operand") (if_then_else:V_256 @@ -6461,6 +6484,23 @@ (set_attr "prefix" "orig,vex") (set_attr "mode" "TI")]) +(define_expand "vcond<V_512:mode><VI_512:mode>" + [(set (match_operand:V_512 0 "register_operand") + (if_then_else:V_512 + (match_operator 3 "" + [(match_operand:VI_512 4 "nonimmediate_operand") + (match_operand:VI_512 5 "general_operand")]) + (match_operand:V_512 1) + (match_operand:V_512 2)))] + "TARGET_AVX512F + && (GET_MODE_NUNITS (<V_512:MODE>mode) + == GET_MODE_NUNITS (<VI_512:MODE>mode))" +{ + bool ok = ix86_expand_int_vcond (operands); + gcc_assert (ok); + DONE; +}) + (define_expand "vcond<V_256:mode><VI_256:mode>" [(set (match_operand:V_256 0 "register_operand") (if_then_else:V_256 @@ -6510,6 +6550,23 @@ DONE; }) +(define_expand "vcondu<V_512:mode><VI_512:mode>" + [(set (match_operand:V_512 0 "register_operand") + (if_then_else:V_512 + (match_operator 3 "" + [(match_operand:VI_512 4 "nonimmediate_operand") + (match_operand:VI_512 5 "nonimmediate_operand")]) + (match_operand:V_512 1 "general_operand") + (match_operand:V_512 2 "general_operand")))] + "TARGET_AVX512F + && (GET_MODE_NUNITS (<V_512:MODE>mode) + == GET_MODE_NUNITS (<VI_512:MODE>mode))" +{ + bool ok = ix86_expand_int_vcond (operands); + gcc_assert (ok); + DONE; +}) + (define_expand "vcondu<V_256:mode><VI_256:mode>" [(set (match_operand:V_256 0 "register_operand") (if_then_else:V_256 |