Patchwork [i386,3/8,AVX512] Add AVX-512 patterns.

login
register
mail settings
Submitter Kirill Yukhin
Date Aug. 20, 2013, 2:04 p.m.
Message ID <20130820140354.GA8369@msticlxl57.ims.intel.com>
Download mbox | patch
Permalink /patch/268546/
State New
Headers show

Comments

Kirill Yukhin - Aug. 20, 2013, 2:04 p.m.
On 19 Aug 15:01, Richard Henderson wrote:
> >  ;; All vector modes including V?TImode, used in move patterns.
> >  (define_mode_iterator V16
> > -  [(V32QI "TARGET_AVX") V16QI
> > -   (V16HI "TARGET_AVX") V8HI
> > -   (V8SI "TARGET_AVX") V4SI
> > -   (V4DI "TARGET_AVX") V2DI
> > +  [(V64QI "TARGET_AVX512F") (V32QI "TARGET_AVX") V16QI
> > +   (V32HI "TARGET_AVX512F") (V16HI "TARGET_AVX") V8HI
> > +   (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") V4SI
> > +   (V8DI "TARGET_AVX512F")  (V4DI "TARGET_AVX") V2DI
> >     (V2TI "TARGET_AVX") V1TI
> > -   (V8SF "TARGET_AVX") V4SF
> > -   (V4DF "TARGET_AVX") V2DF])
> > +   (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
> > +   (V8DF "TARGET_AVX512F")  (V4DF "TARGET_AVX") V2DF])
> 
> Let's rename this VMOVE, and apply only that change as a separate patch.

Hello,
I think this is kinda obvious.

I've renamed V16 iterator into VMOVE.

ChangeLog entry:

2013-08-20  Kirill Yukhin  <kirill.yukhin@intel.com>

        * config/i386/sse.md (V16): Rename to...
        (VMOVE): this.
        (mov<mode>): Update iterator name.
        (*mov<mode>_internal): Ditto.
        (push<mode>1): Ditto.
        (movmisalign<mode>): Ditto.

Bootstrap passing.

I'll check it in into MT as obvious if nobody objects in 20 hrs.

Thanks, K

---
 gcc/config/i386/sse.md | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
Richard Henderson - Aug. 20, 2013, 3:30 p.m.
On 08/20/2013 07:04 AM, Kirill Yukhin wrote:
> 2013-08-20  Kirill Yukhin  <kirill.yukhin@intel.com>
> 
>         * config/i386/sse.md (V16): Rename to...
>         (VMOVE): this.
>         (mov<mode>): Update iterator name.
>         (*mov<mode>_internal): Ditto.
>         (push<mode>1): Ditto.
>         (movmisalign<mode>): Ditto.

This is ok.


r~
Kirill Yukhin - Aug. 21, 2013, 8:41 a.m.
On 20 Aug 08:30, Richard Henderson wrote:
Hello,
> This is ok.

Checked into main trunk: http://gcc.gnu.org/ml/gcc-cvs/2013-08/msg00504.html

--
Thanks, K

Patch

diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 4397498..5c07dd7 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -96,7 +96,7 @@ 
 ])
 
 ;; All vector modes including V?TImode, used in move patterns.
-(define_mode_iterator V16
+(define_mode_iterator VMOVE
   [(V32QI "TARGET_AVX") V16QI
    (V16HI "TARGET_AVX") V8HI
    (V8SI "TARGET_AVX") V4SI
@@ -435,8 +435,8 @@ 
 ;; This is essential for maintaining stable calling conventions.
 
 (define_expand "mov<mode>"
-  [(set (match_operand:V16 0 "nonimmediate_operand")
-	(match_operand:V16 1 "nonimmediate_operand"))]
+  [(set (match_operand:VMOVE 0 "nonimmediate_operand")
+	(match_operand:VMOVE 1 "nonimmediate_operand"))]
   "TARGET_SSE"
 {
   ix86_expand_vector_move (<MODE>mode, operands);
@@ -444,8 +444,8 @@ 
 })
 
 (define_insn "*mov<mode>_internal"
-  [(set (match_operand:V16 0 "nonimmediate_operand"               "=x,x ,m")
-	(match_operand:V16 1 "nonimmediate_or_sse_const_operand"  "C ,xm,x"))]
+  [(set (match_operand:VMOVE 0 "nonimmediate_operand"               "=x,x ,m")
+	(match_operand:VMOVE 1 "nonimmediate_or_sse_const_operand"  "C ,xm,x"))]
   "TARGET_SSE
    && (register_operand (operands[0], <MODE>mode)
        || register_operand (operands[1], <MODE>mode))"
@@ -586,7 +586,7 @@ 
 })
 
 (define_expand "push<mode>1"
-  [(match_operand:V16 0 "register_operand")]
+  [(match_operand:VMOVE 0 "register_operand")]
   "TARGET_SSE"
 {
   ix86_expand_push (<MODE>mode, operands[0]);
@@ -594,8 +594,8 @@ 
 })
 
 (define_expand "movmisalign<mode>"
-  [(set (match_operand:V16 0 "nonimmediate_operand")
-	(match_operand:V16 1 "nonimmediate_operand"))]
+  [(set (match_operand:VMOVE 0 "nonimmediate_operand")
+	(match_operand:VMOVE 1 "nonimmediate_operand"))]
   "TARGET_SSE"
 {
   ix86_expand_vector_move_misalign (<MODE>mode, operands);