Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] Back end loop invariant opt"
2007 Mar 25
0
[LLVMdev] Back end loop invariant opt
On Sat, 24 Mar 2007, Christopher Lamb wrote:
> It seems to me that there is potential for doing some target independent loop
> invariant optimizations in the back end, but prior to instruction selection.
I assume you mean after instruction selection?
> For instance, I noticed that the loop invariant constant generated for a loop
> bounds check is still stuck inside the loop.
2007 Mar 25
3
[LLVMdev] Back end loop invariant opt
On Mar 25, 2007, at 2:21 AM, Chris Lattner wrote:
> On Sat, 24 Mar 2007, Christopher Lamb wrote:
>> It seems to me that there is potential for doing some target
>> independent loop
>> invariant optimizations in the back end, but prior to instruction
>> selection.
>
> I assume you mean after instruction selection?
I assumed that to be target independent the
2019 Sep 13
3
Loop Opt WG Meeting Minutes for Sep 11, 2019
Thanks Florian.
Tim you said:
> Some cases can be undone by rematerialization, but not all, and it can
involve a lot of effort which increases compile time.
Do you have examples of cases where rematerialization is not possible? We
are interested in learning about any previous attempts at trying to address
the issue in RA. Have you tried it?
Bardia Mahjour
Compiler Optimizations
IBM Toronto
2007 Mar 25
0
[LLVMdev] Back end loop invariant opt
On 3/25/07, Christopher Lamb <christopher.lamb at gmail.com> wrote:
> Isn't it possible to tell that certain DAG nodes are loop invariant prior to
> instruction selection, such as a constant or global address node?
Only in part. Selection of some nodes generates duplicate code in
some backends and not others. A global that requires 2 instructions
to load, as on alpha (where one
2011 Feb 07
3
[LLVMdev] A question about LICM (Loop Invariant Code Motion)
Hi,
I recently looked into the LICM(Loop Invariant Code Motion) pass of
LLVM and got a question about hoist load instruction to loop
preheader. I would like to show two examples:
Example 1:
int func(int n, int *fp) {
int i;
int a[1000];
for (i = 0; i < n; ++i) {
a[i] += *fp; // load from *fp pointer, no hoist
}
}
Here, load *fp CAN NOT be hoisted to loop preheader. If replace *fp
2008 Jul 21
6
[LLVMdev] LICM/store-aliasing of global loads
Our frontend can guarantee that loads from globals are
rematerializable and do not alias with any stores in any function in
the given module. We'd like the optimization passes (and ideally the
register allocator as well) to be able to use this fact. The globals
are not constant "forever" but are constant during the calling of any
given function in the module.
There seem to
[LLVMdev] Register pressure mechanism in PRE or Smarter rematerialization/split/spiller/coalescing ?
2015 Jul 15
2
[LLVMdev] Register pressure mechanism in PRE or Smarter rematerialization/split/spiller/coalescing ?
> Given what you are saying, you are also suggesting we are not
rematerializing addressing computations where it is cheaper to do so.
That seems pretty critical to good RA :P
Yep, about 5 months ago I had a conversation about this too... it may even
be the one you're referencing. Our remat is really conservative - it only
rematerializes values that have zero input operands (move immediate
2016 Nov 27
5
Extending Register Rematerialization
Hello LLVM Developers,
We are working on extending currently available register rematerialization
to include cases where sequence of multiple instructions is required to
rematerialize a value.
We had a discussion on this in community mailing list and link is here:
http://lists.llvm.org/pipermail/llvm-dev/2016-September/subject.html#104777
>From the above discussion and studying the code we
2012 Jun 06
2
[LLVMdev] Instruction bundles before RA: Rematerialization
Hi,
We have a new BE for a VLIW-like processor and I'm currently working on
instruction bundles. Ideally, I'd like to have bundles *before* RA to
model certain constraints, e.g. the exposed one by Tzu-Chien a while ago
in his thread
http://lists.cs.uiuc.edu/pipermail/llvmdev/2005-September/004798.html
In order to build bundles, we have added a new bottom-up MIScheduler,
right after
2012 Jun 07
2
[LLVMdev] Instruction bundles before RA: Rematerialization
Hi Jakob,
2012/6/6 Jakob Stoklund Olesen <stoklund at 2pi.dk <mailto:stoklund at 2pi.dk>>
On Jun 6, 2012, at 2:53 AM, Ivan Llopard <ivanllopard at gmail.com
<mailto:ivanllopard at gmail.com>> wrote:
> We have a new BE for a VLIW-like processor and I'm currently
working on
> instruction bundles. Ideally, I'd like to have bundles
2017 Mar 31
2
Dereferenceable load semantics & LICM
Hi all,
I have a question about dereferenceable metadata on load instruction. I
have a patch (https://reviews.llvm.org/D31539) for LICM that hoists loads
with !invariant.group.
The motivation example is devirtualization:
struct A {
virtual void foo();
};
int bar();
void indirect(A &a) {
while(bar())
a.foo();
}
With -O2 -fstrict-vtable-pointers we get:
define void
2016 Aug 31
2
invariant.load metadata semantics
On 8/30/2016 4:53 PM, Sanjoy Das via llvm-dev wrote:
> This seems fine, but it does disallow introduction of dead stores.
> That is, given:
>
> void f() {
> %x = calloc()
> call void @g(nocapture %x)
> }
>
> we cannot transform it to
>
> void f() {
> %x = calloc()
> *(%x) = 100
> *(%x) = 0
> call void @g(nocapture %x)
> }
>
> (after
2016 Sep 26
2
[RFC] Register Rematerialization (remat) Extension
----- Original Message -----
> From: "Quentin Colombet via llvm-dev" <llvm-dev at lists.llvm.org>
> To: "vivek pandya" <vivekvpandya at gmail.com>
> Cc: "llvm-dev" <llvm-dev at lists.llvm.org>, "Nirav Rana"
> <h2015087 at pilani.bits-pilani.ac.in>, "Matthias Braun"
> <matze at braunis.de>
> Sent:
2012 Jun 07
2
[LLVMdev] Instruction bundles before RA: Rematerialization
On Jun 7, 2012, at 10:25 AM, "Sergei Larin" <slarin at codeaurora.org> wrote:
> Generally as far as I concern, there is no way “generic” (platform independent) code can add instructions to bundles optimally
I agree, there are too many ways of modeling stuff with bundles. That is why I took the philosophical stance of treating bundles as black boxes during RA. I think the
2016 Sep 19
2
[RFC] Register Rematerialization (remat) Extension
On Mon, Sep 19, 2016 at 6:21 PM, James Molloy <james at jamesmolloy.co.uk>
wrote:
> Hi,
>
> I've been looking at this myself for ARM, and came up with a much simpler
> solution: lower immediate materializations to a post-RA pseudo and expand
> the chain of materialization instructions after register allocation /
> remat. Remat only sees one instruction with no
2014 Dec 02
2
[LLVMdev] TBAA vs !invariant.load metadata semantics
> On Dec 1, 2014, at 3:44 PM, Philip Reames <listmail at philipreames.com> wrote:
>
> (Spawning a separate subthread off the 'Optimization hints for "constant" loads' discussion for a related question. )
>
> Looking at TBAA again, I was reminded that TBAA also contains a third field which indicates that "meaning pointsToConstantMemory should return
2016 Sep 12
6
[RFC] Register Rematerialization (remat) Extension
Hello Developers,
I am working with my other batchmates to improve register remat in LLVM.
We want to remat live ranges made of multiple instruction.
Just to support our proposal here is a simple example that currently remat
does
not cover
$ cat ~/tmp/tl.c
void foo(long);
void bar() {
for (int i = 0; i < 1600; ++i)
foo(3494348345984503943);
}
$ clang -O3 -S -o - ~/tmp/tl.c -target
2017 Oct 31
0
Status of llvm.invariant.{start|end}
> Just to clarify: If g can modify %a in some way, the front end needs to
> identify it and avoid adding
> invariant.start.
OK cool, that's what I thought too.
>
> Once the invariant.start has been added by the front end,this is a perfectly
> legal transform to do
> based on the LLVM spec.
>
> In fact we should be implementing this in LLVM, patches welcome :)
2012 Jun 06
0
[LLVMdev] Instruction bundles before RA: Rematerialization
On Jun 6, 2012, at 2:53 AM, Ivan Llopard <ivanllopard at gmail.com> wrote:
> We have a new BE for a VLIW-like processor and I'm currently working on
> instruction bundles. Ideally, I'd like to have bundles *before* RA to
> model certain constraints, e.g. the exposed one by Tzu-Chien a while ago
> in his thread
>
2016 Oct 18
2
A use of RDF to extend register Remat
Dear Community,
I would like to discuss few points to use RDF to extend register remat
scope. Mr. Krzysztof and I have started discussion this on private mail.
But I think now it would be better to include community.
Interested community member kindly previous discussion (at the end of mail)
before starting here.
After analyzing if RDF can be used for solving Remat, we think that problem
with