From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id 2A08C3A78004 for ; Wed, 28 Apr 2021 13:32:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2A08C3A78004 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rguenther@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 383D8B25C; Wed, 28 Apr 2021 13:32:41 +0000 (UTC) Date: Wed, 28 Apr 2021 15:32:41 +0200 (CEST) From: Richard Biener To: Uros Bizjak cc: "gcc-patches@gcc.gnu.org" , Jakub Jelinek Subject: Re: [PATCH] target/100312 - make x86 masked load builtins pure In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Apr 2021 13:32:43 -0000 On Wed, 28 Apr 2021, Uros Bizjak wrote: > On Wed, Apr 28, 2021 at 1:46 PM Richard Biener wrote: > > > > On Wed, 28 Apr 2021, Uros Bizjak wrote: > > > > > On Wed, Apr 28, 2021 at 1:02 PM Richard Biener wrote: > > > > > > > > This arranges for the x86 AVX and AVX2 masked load builtins to be > > > > pure to enable dead code elimination and more appropriate alias > > > > analysis. > > > > > > > > Bootstrapped and tested on x86_64-unknown-linux-gnu. OK for trunk? > > > > > > > > Thanks, > > > > Richard. > > > > > > > > 2021-04-28 Richard Biener > > > > > > > > PR target/100312 > > > > * config/i386/i386-builtin.def (IX86_BUILTIN_MASKLOADPD, > > > > IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKLOADPD256, > > > > IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKLOADD, > > > > IX86_BUILTIN_MASKLOADQ, IX86_BUILTIN_MASKLOADD256, > > > > IX86_BUILTIN_MASKLOADQ256): Remove. > > > > * config/i386/i386-builtins.h (ix86_builtins): Add entries for > > > > IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS, > > > > IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256, > > > > IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ, > > > > IX86_BUILTIN_MASKLOADD256, and IX86_BUILTIN_MASKLOADQ256. > > > > * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): > > > > Initialize IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS, > > > > IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256, > > > > IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ, > > > > IX86_BUILTIN_MASKLOADD256, and IX86_BUILTIN_MASKLOADQ256 > > > > as pure builtins. > > > > > > OK. > > > > Whoops - somehow I posted the wrong version. The version posted > > ICEs because I failed to realize I'd have to explicitely handle > > those builtins in ix86_expand_builtin. What bootstrapped and > > tested OK is the version below. > > > > Is that version also OK? > > Hm, your previous version removed mentioned builtins from builtins.def > and initialized them in ix86_init_mmx_sse_builtins by hand (this seems > to be the preferred way). This should work, so I really don't see why > the previous approach would result in ICE. It eventually runs into the gcc_unreachable () at the very end of ix86_expand_builtin since IX86_BUILTIN_MASKLOADD and friends are no longer in the range of IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST to IX86_BUILTIN__BDESC_SPECIAL_ARGS_LAST. Richard. > Uros. > > > > > Thanks, > > Richard. > > > > From 44fb1b12c4b5ec649804d8ea40ebc087723ccc7f Mon Sep 17 00:00:00 2001 > > From: Richard Biener > > Date: Wed, 28 Apr 2021 12:09:03 +0200 > > Subject: [PATCH] target/100312 - make x86 masked load builtins pure > > To: gcc-patches@gcc.gnu.org > > > > This arranges for the x86 AVX and AVX2 masked load builtins to be > > pure to enable dead code elimination and more appropriate alias > > analysis. > > > > 2021-04-28 Richard Biener > > > > PR target/100312 > > * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): > > Arrange for IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS, > > IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256, > > IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ, > > IX86_BUILTIN_MASKLOADD256, and IX86_BUILTIN_MASKLOADQ256 > > to be defined as pure builtins. > > --- > > gcc/config/i386/i386-builtins.c | 12 +++++++++++- > > 1 file changed, 11 insertions(+), 1 deletion(-) > > > > diff --git a/gcc/config/i386/i386-builtins.c b/gcc/config/i386/i386-builtins.c > > index 128bd39816c..fa05cd6cf65 100644 > > --- a/gcc/config/i386/i386-builtins.c > > +++ b/gcc/config/i386/i386-builtins.c > > @@ -521,7 +521,17 @@ ix86_init_mmx_sse_builtins (void) > > continue; > > > > ftype = (enum ix86_builtin_func_type) d->flag; > > - def_builtin (d->mask, d->mask2, d->name, ftype, d->code); > > + if (d->code == IX86_BUILTIN_MASKLOADPD > > + || d->code == IX86_BUILTIN_MASKLOADPS > > + || d->code == IX86_BUILTIN_MASKLOADPD256 > > + || d->code == IX86_BUILTIN_MASKLOADPS256 > > + || d->code == IX86_BUILTIN_MASKLOADD > > + || d->code == IX86_BUILTIN_MASKLOADQ > > + || d->code == IX86_BUILTIN_MASKLOADD256 > > + || d->code == IX86_BUILTIN_MASKLOADQ256) > > + def_builtin_pure (d->mask, d->mask2, d->name, ftype, d->code); > > + else > > + def_builtin (d->mask, d->mask2, d->name, ftype, d->code); > > } > > BDESC_VERIFYS (IX86_BUILTIN__BDESC_SPECIAL_ARGS_LAST, > > IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST, > > -- > > 2.26.2 > > > -- Richard Biener SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)