From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 99726 invoked by alias); 27 Jun 2017 10:09:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 99673 invoked by uid 89); 27 Jun 2017 10:09:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-ua0-f175.google.com Received: from mail-ua0-f175.google.com (HELO mail-ua0-f175.google.com) (209.85.217.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 27 Jun 2017 10:09:01 +0000 Received: by mail-ua0-f175.google.com with SMTP id g40so15477377uaa.3 for ; Tue, 27 Jun 2017 03:09:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=SYGB9HDMo75qHf7FidR5NZ9Jy4uCFQ1nrtQxDDmndx4=; b=IEYo4/MsvnSfR0Cs5iqaJj538L5SFR7OFcf6x5weqhoCdZAFI40SWiiYPSaUl1ZycH JbcZTPZ2OfYujKJ9gNLtAMm7o8p9VSUPgHVRPfcASiBldyeeduV64NVcpaG1ivKELKCo OLxocHaqRtFk7shCoonsfbqv2PsnTqsOKFuXJ6p7QP4gLVZ13bhHyEx1xA7S/WGEEPY4 9Lx8wXHqiupy6y5WO5yQBGSHuwAW8jL+7Ax7r7fkAbqsvgiXWgODjLJ51jV8J7inPeKA /4mXsr8X5F4i+56tnn8xYJ14ztbxPneBp9BZYg/Lq+VdP2tWBHT82Ya5Klnm/VjFltHt omDw== X-Gm-Message-State: AKS2vOxiMITsvFnSKfdQRJzTd9Drj8XFOZKo3a6+iy9/X96sDbyDYRiF bpGpXO4yeuk4Jdy4ps92vGAXz49FTQ== X-Received: by 10.176.24.78 with SMTP id j14mr2766396uag.120.1498558139691; Tue, 27 Jun 2017 03:08:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.69.9 with HTTP; Tue, 27 Jun 2017 03:08:59 -0700 (PDT) In-Reply-To: <20170627100240.GQ2123@tucnak> References: <20170627100240.GQ2123@tucnak> From: Uros Bizjak Date: Tue, 27 Jun 2017 10:09:00 -0000 Message-ID: Subject: Re: [PATCH] Fix PR81175, make gather builtins pure To: Jakub Jelinek Cc: Richard Biener , "gcc-patches@gcc.gnu.org" Content-Type: text/plain; charset="UTF-8" X-SW-Source: 2017-06/txt/msg01996.txt.bz2 On Tue, Jun 27, 2017 at 12:02 PM, Jakub Jelinek wrote: > On Fri, Jun 23, 2017 at 02:54:35PM +0200, Richard Biener wrote: >> 2017-06-23 Richard Biener >> >> PR target/81175 >> * config/i386/i386.c (struct builtin_isa): Add pure_p member. >> (def_builtin2): Initialize pure_p. >> (ix86_add_new_builtins): Honor pure_p. >> (def_builtin_pure): New function. >> (ix86_init_mmx_sse_builtins): Use def_builtin_pure for all >> gather builtins. > >> *************** ix86_init_mmx_sse_builtins (void) >> *** 31985,32002 **** >> IX86_BUILTIN_SCATTERALTDIV16SI); >> >> /* AVX512PF */ >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", >> ! VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPD); >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", >> ! VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPS); >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPD); >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPS); >> def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd", >> VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> IX86_BUILTIN_SCATTERPFDPD); >> --- 32004,32021 ---- >> IX86_BUILTIN_SCATTERALTDIV16SI); >> >> /* AVX512PF */ >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", >> ! VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPD); >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", >> ! VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPS); >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPD); >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPS); >> def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd", >> VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> IX86_BUILTIN_SCATTERPFDPD); > > The above hunk looks wrong and regresses > +FAIL: gcc.target/i386/avx512pf-vgatherpf0dpd-1.c scan-assembler-times vgatherpf0dpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf0dps-1.c scan-assembler-times vgatherpf0dps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf0qpd-1.c scan-assembler-times vgatherpf0qpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf0qps-1.c scan-assembler-times vgatherpf0qps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1dpd-1.c scan-assembler-times vgatherpf1dpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1dps-1.c scan-assembler-times vgatherpf1dps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1qpd-1.c scan-assembler-times vgatherpf1qpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1qps-1.c scan-assembler-times vgatherpf1qps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > The prefetch intrinsics can't be pure, after all they return void, so > as pure are always optimized away. > > Ok for trunk if it passes bootstrap/regtest? > > 2017-06-27 Jakub Jelinek > > PR target/81175 > * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin > rather than def_builtin_pure for __builtin_ia32_gatherpf*. Looks obvious to me, especially after the above explanation. Thanks, Uros. > --- gcc/config/i386/i386.c.jj 2017-06-27 09:16:09.000000000 +0200 > +++ gcc/config/i386/i386.c 2017-06-27 11:47:21.610627628 +0200 > @@ -32886,18 +32886,18 @@ ix86_init_mmx_sse_builtins (void) > IX86_BUILTIN_SCATTERALTDIV16SI); > > /* AVX512PF */ > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", > - VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFDPD); > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", > - VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFDPS); > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", > - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFQPD); > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", > - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFQPS); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", > + VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFDPD); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", > + VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFDPS); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", > + VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFQPD); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", > + VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFQPS); > def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd", > VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, > IX86_BUILTIN_SCATTERPFDPD); > > > Jakub