[PATCH] Gut InstCombiner::SimplifyMemTransfer.
Hal Finkel via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 16 03:23:33 PDT 2015
----- Original Message -----
> From: "Lang Hames via llvm-commits" <llvm-commits at lists.llvm.org>
> To: "Chandler Carruth" <chandlerc at gmail.com>
> Cc: "Commit Messages and Patches for LLVM" <llvm-commits at lists.llvm.org>
> Sent: Wednesday, August 12, 2015 9:06:52 PM
> Subject: Re: [PATCH] Gut InstCombiner::SimplifyMemTransfer.
>
>
>
> Another belated *ping*.
>
The SDAG change LGTM.
The InstCombine change also LGTM, but it seems that we need to fix Clang before we can make this change. Let's add this under a flag for testing.
-Hal
>
>
> - Lang.
>
>
> On Tue, Jun 30, 2015 at 2:16 PM, Lang Hames < lhames at gmail.com >
> wrote:
>
>
>
> Belated ping. :)
>
>
> - Lang.
>
> On Tue, May 12, 2015 at 2:11 PM, Lang Hames < lhames at gmail.com >
> wrote:
>
>
>
> Gentle ping.
>
>
> - Lang.
>
>
>
>
> On Tue, Apr 28, 2015 at 11:51 AM, Lang Hames < lhames at gmail.com >
> wrote:
>
>
>
> Ping / delayed reply.
>
>
> DannyB - thanks for the extra context. :)
>
>
> Chandler - any thoughts? Assuming you still want to keep this
> transform, what do you think of my instcombine change? (i.e. tagging
> the load/store pointers as non-aliasing for memcpy).
>
>
> Cheers,
> Lang.
>
>
>
>
>
>
> On Tue, Apr 21, 2015 at 9:21 PM, Daniel Berlin < dberlin at dberlin.org
> > wrote:
>
>
> On Wed, Apr 8, 2015 at 10:38 PM, Chandler Carruth <
> chandlerc at gmail.com > wrote:
> > On Wed, Apr 8, 2015 at 10:15 PM Lang Hames < lhames at gmail.com >
> > wrote:
> >>
> >> Hi David, Chandler,
> >>
> >> The attached patch guts the SimplifyMemTransfer method, which
> >> turns small
> >> memcpys (1/2/4/8 bytes) into load/store pairs. Turning memcpys
> >> into
> >> load/store pairs loses information, since we can no longer assume
> >> the source
> >> and dest are non-overlapping. This is leading to some suboptimal
> >> expansions
> >> for small memcpys on AArch64 when -mno-unaligned-access is turned
> >> on (see
> >> r234462). I suspect other architectures would suffer similar
> >> issues.
> >>
> >> I assume this transform is an old workaround to simplify other
> >> non-memcpy-aware IR transforms. These days I think most IR
> >> transforms can
> >> reason sensibly about memcpys, so I'm hoping this is safe to
> >> remove. FWIW,
> >> removing it didn't hit any regression tests except those that were
> >> verifying
> >> that this optimisation was being applied, but then you wouldn't
> >> really
> >> expect it to hit any others.
> >
> >
> > Heh. I tried to remove it before and it regressed a *lot* of
> > performance.
> > Have you measured it? I think there are many places that don't
> > today reason
> > about memcpy but do reason about loads and stores. Here is a
> > partial list:
> >
> > - GVN
>
> Note:
>
> It reasons about memory intrinsics, including memcpy and memset, and
> will pull values out to forward.
>
> for memset, if the load is in the memset size, it will compute what
> the value is.
> For memcpy, it handles anything that is constant memory.
>
>
> (Certainly, loads and stores are handled better, but ...)
>
>
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list