public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Kirill Yukhin <kirill.yukhin@gmail.com>
To: Richard Henderson <rth@redhat.com>
Cc: Uros Bizjak <ubizjak@gmail.com>,
	Vladimir Makarov <vmakarov@redhat.com>,
	Jakub Jelinek <jakub@redhat.com>,
	GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH i386 3/8] [AVX512] [12/n] Add AVX-512 patterns: V_512 and VI_512 iterators.
Date: Wed, 09 Oct 2013 10:29:00 -0000	[thread overview]
Message-ID: <20131009102844.GK52466@msticlxl57.ims.intel.com> (raw)
In-Reply-To: <52129604.6040305@redhat.com>

Hello,

> This patch is still far too large.
>
> I think you should split it up based on every single mode iterator that
> you need to add or change.

Here's 12th subpatch. It introduces VF_512 and VI_512 iterators.

Is it Ok?

Testing:
  1. Bootstrap pass.
  2. make check shows no regressions.
  3. Spec 2000 & 2006 build show no regressions both with and without -mavx512f option.
  4. Spec 2000 & 2006 run shows no stability regressions without -mavx512f option.

--
Thanks, K

PS. If it is Ok - I am going to strip out ChangeLog lines from big patch.

---
 gcc/config/i386/sse.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 58 insertions(+), 1 deletion(-)

diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 6adcdd3..0ba1670 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
@@ -6457,6 +6480,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
@@ -6506,6 +6546,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
-- 
1.7.11.7

  parent reply	other threads:[~2013-10-09 10:29 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-08 11:26 [PATCH i386 3/8] [AVX512] Add AVX-512 patterns Kirill Yukhin
2013-08-14  7:27 ` Kirill Yukhin
2013-08-19 22:02   ` Richard Henderson
2013-08-20 14:22     ` Kirill Yukhin
2013-08-20 15:59       ` Richard Henderson
2013-08-21  9:21         ` Kirill Yukhin
2013-08-19 22:14   ` Richard Henderson
2013-08-27 18:40     ` [PATCH i386 3/8] [AVX512] [1/n] Add AVX-512 patterns: VF iterator extended Kirill Yukhin
2013-09-06 13:42       ` Kirill Yukhin
2013-09-09 11:29         ` Kirill Yukhin
2013-09-13 10:53           ` Kirill Yukhin
2013-09-18  7:55             ` Kirill Yukhin
2013-09-24  9:21               ` Kirill Yukhin
2013-09-24 17:41       ` Richard Henderson
2013-09-25 19:00         ` Ilya Verbin
2013-10-09 10:25     ` [PATCH i386 3/8] [AVX512] [2/n] Add AVX-512 patterns: Fix missing `v' constraint Kirill Yukhin
2013-10-09 21:32       ` Richard Henderson
2013-10-11 13:10         ` Kirill Yukhin
2013-10-09 10:25     ` [PATCH i386 3/8] [AVX512] [3/n] Add AVX-512 patterns: VF1 and VI iterators Kirill Yukhin
2013-10-09 21:34       ` Richard Henderson
2013-10-11 13:16         ` Kirill Yukhin
2013-10-09 10:26     ` [PATCH i386 3/8] [AVX512] [4/n] Add AVX-512 patterns: V iterator Kirill Yukhin
2013-10-09 21:34       ` Richard Henderson
2013-10-11 13:43         ` Kirill Yukhin
2013-10-09 10:26     ` [PATCH i386 3/8] [AVX512] [5/n] Add AVX-512 patterns: Introduce `multdiv' code iterator Kirill Yukhin
2013-10-09 21:35       ` Richard Henderson
2013-10-11 13:43         ` Kirill Yukhin
2013-10-11 13:46           ` Jakub Jelinek
2013-10-11 13:58             ` Kirill Yukhin
2013-10-09 10:27     ` [PATCH i386 3/8] [AVX512] [6/n] Add AVX-512 patterns: VI2 and VI124 iterators Kirill Yukhin
2013-10-09 21:38       ` Richard Henderson
2013-10-11 13:48         ` Kirill Yukhin
2013-10-09 10:27     ` [PATCH i386 3/8] [AVX512] [7/n] Add AVX-512 patterns: VI4 and VI8 iterators Kirill Yukhin
2013-10-09 21:46       ` Richard Henderson
2013-10-11 13:56         ` Kirill Yukhin
2013-10-09 10:28     ` [PATCH i386 3/8] [AVX512] [9/n] Add AVX-512 patterns: VI124_AVX2, VI8F iterators Kirill Yukhin
2013-10-09 21:51       ` Richard Henderson
2013-10-09 10:28     ` [PATCH i386 3/8] [AVX512] [10/n] Add AVX-512 patterns: VI248_AVX2_8_AVX512F and VI124_256_48_AVX512F iterators Kirill Yukhin
2013-10-09 21:58       ` Richard Henderson
2013-10-09 10:28     ` [PATCH i386 3/8] [AVX512] [8/n] Add AVX-512 patterns: VI48 and VI48_AVX2 iterators Kirill Yukhin
2013-10-09 21:51       ` Richard Henderson
2013-10-09 10:29     ` Kirill Yukhin [this message]
2013-10-09 22:08       ` [PATCH i386 3/8] [AVX512] [12/n] Add AVX-512 patterns: V_512 and VI_512 iterators Richard Henderson
2013-10-09 10:29     ` [PATCH i386 3/8] [AVX512] [11/n] Add AVX-512 patterns: FMA Kirill Yukhin
2013-10-09 22:03       ` Richard Henderson
2013-10-10 14:30         ` Kirill Yukhin
2013-10-10 17:14           ` Richard Henderson
2013-10-09 10:30     ` [PATCH i386 3/8] [AVX512] [14/n] Add AVX-512 patterns: VI48F_256_512 iterator Kirill Yukhin
2013-10-09 22:31       ` Richard Henderson
2013-10-09 10:30     ` [PATCH i386 3/8] [AVX512] [13/n] Add AVX-512 patterns: VI4_AVX iterator Kirill Yukhin
2013-10-09 22:16       ` Richard Henderson
2013-10-09 10:31     ` [PATCH i386 3/8] [AVX512] [15/n] Add AVX-512 patterns: VI48F_512 iterator Kirill Yukhin
2013-10-11 17:36       ` Richard Henderson
2013-10-15 13:58         ` Kirill Yukhin
2013-10-09 10:31     ` [PATCH i386 3/8] [AVX512] [17/n] Add AVX-512 patterns: V8FI and V16FI iterators Kirill Yukhin
2013-10-14 20:10       ` Richard Henderson
2013-10-09 10:32     ` [PATCH i386 3/8] [AVX512] [18/n] Add AVX-512 patterns: various RCPs and SQRTs Kirill Yukhin
2013-10-14 21:02       ` Richard Henderson
2013-10-14 21:03       ` Richard Henderson
2013-10-15 14:14         ` Kirill Yukhin
2013-10-15 14:56           ` Richard Henderson
2013-10-09 10:32     ` [PATCH i386 3/8] [AVX512] [19/n] Add AVX-512 patterns: Extracts and converts Kirill Yukhin
2013-10-15 16:17       ` Richard Henderson
2013-10-16 16:26         ` Kirill Yukhin
2013-10-16 17:05           ` Richard Henderson
2013-10-17 11:03             ` Kirill Yukhin
2013-10-17 11:43               ` Uros Bizjak
2013-10-17 14:21                 ` Kirill Yukhin
2013-10-20 10:28                   ` Uros Bizjak
2013-10-22 14:22                     ` Kirill Yukhin
2013-10-09 10:36     ` [PATCH i386 3/8] [AVX512] [20/n] Add AVX-512 patterns: Misc Kirill Yukhin
2013-10-15 16:29       ` Richard Henderson
2013-10-09 10:53     ` [PATCH i386 3/8] [AVX512] [16/n] Add AVX-512 patterns: VI48_512 and VI4F_128 iterators Kirill Yukhin
2013-10-11 18:28       ` Richard Henderson
2013-10-15 14:02         ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131009102844.GK52466@msticlxl57.ims.intel.com \
    --to=kirill.yukhin@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=rth@redhat.com \
    --cc=ubizjak@gmail.com \
    --cc=vmakarov@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).