From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x729.google.com (mail-qk1-x729.google.com [IPv6:2607:f8b0:4864:20::729]) by sourceware.org (Postfix) with ESMTPS id 328403894C1D for ; Wed, 28 Apr 2021 12:11:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 328403894C1D Received: by mail-qk1-x729.google.com with SMTP id u20so31038711qku.10 for ; Wed, 28 Apr 2021 05:11:31 -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:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ct1pjBSkXji48QAoYQJmNS3cgOhR7PPHVaCM4ZZVFKo=; b=r/TnrZplnckBIz51cuHpLJ1BIhTuR2qqTusgc8fFfOP+qyOsOwIKvlvziMg586aslA TgF1i/bcGS55UVmkaBhVOOO7OT0LVnPMUmhZ84jyPpGEIjH+QUXpv3bpjNNIbr3WAaYM Ikl8lEdqS6Z4mMlp+r+dJPE+PBB6Xb+KT4O9JhJ7KbrAQCIJD053ZgtjDCBWbNYv5gSt 68D/1b0MJ+vc5GoP+vmcbpxlmSK3DoFvqMNVBEc/YzIFw253nGbZw0MEkDIWkj3jB7bo SVHjPmfo1YReCNTdmWL/QQZk3Dv4EnKUB+qxRP4oi37Ek6dJt6pd/S0PaXTkfHDVL5Qq 8EKg== X-Gm-Message-State: AOAM530tZVg28HJ4TbatW7t8ARFRQ7XRTTofOxA3bw4DteZk/0+dTa6a CIKjd+zHTpJTa+gTJAje2JDrkx7TrB8VYB4mCbc= X-Google-Smtp-Source: ABdhPJzyOLF2Moy2hllK5l5uMBBqFOaS/V4231ri8s51l6rXOrHaaIKlrC0pNLgiM5LsPp6o2FkmR1WX+ZeDzwCwEOY= X-Received: by 2002:a05:620a:218b:: with SMTP id g11mr27462651qka.292.1619611890764; Wed, 28 Apr 2021 05:11:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Uros Bizjak Date: Wed, 28 Apr 2021 14:11:15 +0200 Message-ID: Subject: Re: [PATCH] target/100312 - make x86 masked load builtins pure To: Richard Biener Cc: "gcc-patches@gcc.gnu.org" , Jakub Jelinek Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, 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 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 12:11:34 -0000 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. 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 >