Displaying 20 results from an estimated 11000 matches similar to: "RFC: A change in InstCombine canonical form"
2016 Mar 16
2
RFC: A change in InstCombine canonical form
On Wed, Mar 16, 2016 at 8:34 AM, Mehdi Amini via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hi,
>
> How do it interact with the "typeless pointers" work?
>
Right - the goal of the typeless pointer work is to fix all these bugs
related to "didn't look through bitcasts" in optimizations. Sometimes
that's going to mean more work (because the code
2016 Mar 16
3
RFC: A change in InstCombine canonical form
On Wed, Mar 16, 2016 at 11:00 AM, Ehsan Amiri <ehsanamiri at gmail.com> wrote:
> David,
>
> Could you give us an update on the status of typeless pointer work? How
> much work is left and when you think it might be ready?
>
It's a bit of an onion peel, really - since it will eventually involve
generalizing/fixing every optimization that's currently leaning on typed
2016 Mar 22
0
RFC: A change in InstCombine canonical form
Back to the discussion on the RFC, I still see some advantage in following
the proposed solution. I see two paths forward:
1- Change canonical form, possibly lower memcpy to non-integer load and
store in InstCombine. Then teach the backends to convert that to integer
load and store if that is more profitable. Notice that we are talking about
loads that have no use other than store. So it is a
2016 Mar 22
2
RFC: A change in InstCombine canonical form
I don't know enough about the tradeoff for 1, but 2 seems like a bandaid for something that is not a correctness issue neither a regression. I'm not sure it justifies "bandaid patches" while there is a clear path forward, i.e. typeless pointers, unless there is an acknowledgement that typeless pointers won't be there before a couple of years.
--
Mehdi
> On Mar 22, 2016,
2016 Mar 22
4
RFC: A change in InstCombine canonical form
I don't really mind, but the intermediate stage will not be very nice: that a lot of code / tests that needs to be written with bitcast, and all of that while they are deemed to disappear. The added value isn't clear to me considering the added work. I'm not sure it wouldn't add more work for all the cleanup required by the "typeless pointer", but I'm not sure
2016 Mar 22
2
RFC: A change in InstCombine canonical form
I feel very strongly that blocking work on making optimization
bitcast-ignorant on the typeless pointer work would be a major mistake.
Unless we expected the typeless pointer work to be concluded within the
near term (say 3-6 months maximum), we should not block any development
which would be accepted in the typeless pointer work wasn't planned.
In my view, this is one of the largest
2016 Mar 22
0
RFC: A change in InstCombine canonical form
I'd phrase this differently: being pointer-bitcast agnostic is a step
towards support typeless pointers. :) We can either become bitcast
agnostic all in one big change or incrementally. Personally, I'd prefer
the later since it reduces the risk associated with enabling typeless
pointers in the end.
Philip
On 03/22/2016 12:16 PM, Mehdi Amini via llvm-dev wrote:
> I don't know
2016 Mar 22
0
RFC: A change in InstCombine canonical form
This is roughly what I wrote...
> On Mar 22, 2016, at 1:31 PM, Philip Reames <listmail at philipreames.com> wrote:
>
> I feel very strongly that blocking work on making optimization bitcast-ignorant on the typeless pointer work would be a major mistake. Unless we expected the typeless pointer work to be concluded within the near term (say 3-6 months maximum), we should not block
2016 Mar 22
2
RFC: A change in InstCombine canonical form
But not what David was stating, unless I misread? I was specifically
responding to David's wording:
"If we're talking about making an optimization able to ignore the
bitcast instructions - yes, that work is unnecessary & perhaps
questionable given the typeless pointer work. Not outright off limits,
but the same time might be better invested in moving typeless pointers
2016 Mar 22
0
RFC: A change in InstCombine canonical form
Ultimately everything is going to be made to not rely on the types of
pointers - that's nearly equivalent to bitcast-ignorant (the difference
being that the presence of an extra instruction (the bitcast) might trip up
some optimizations - but the presence of the /type/ information implied by
the bitcast should not trip up or be necessary for optimizations (two sides
of the same coin))
If
2016 Mar 22
0
RFC: A change in InstCombine canonical form
----- Original Message -----
> From: "Mehdi Amini via llvm-dev" <llvm-dev at lists.llvm.org>
> To: "Philip Reames" <listmail at philipreames.com>, "David Blaikie"
> <dblaikie at gmail.com>
> Cc: "llvm-dev" <llvm-dev at lists.llvm.org>, uweigand at de.ibm.com, "Tom
> Stellard" <thomas.stellard at
2016 Mar 22
8
RFC: A change in InstCombine canonical form
On Tue, Mar 22, 2016 at 1:41 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:
> Sorry I should have been more clear (writing to many email in parallel)
>
> You're right. I was adding a +1 to you here.
>
> Especially I wrote "unless there is an acknowledgement that typeless
> pointers won't be there before a couple of years" with the PassManager in
>
2016 Mar 22
0
RFC: A change in InstCombine canonical form
Sorry I should have been more clear (writing to many email in parallel)
You're right. I was adding a +1 to you here.
Especially I wrote "unless there is an acknowledgement that typeless pointers won't be there before a couple of years" with the PassManager in mind, and I was expecting from David some good indication of a timeframe for the typeless pointers.
If the typeless
2016 Mar 22
0
RFC: A change in InstCombine canonical form
Thanks.
*Phillip, *As Hal said I do not think (1) is a very large item. Please let
me know if I am mistaken.
*David *I think (1) is more inline with typeless pointer work than (2).
Contributing to typeless pointer work will be great, but given its unknown
time frame we cannot stop fixing existing problems. Of course, we should
follow an approach consistent with the long-term solution.
On Tue,
2016 Mar 22
1
RFC: A change in InstCombine canonical form
On 03/22/2016 02:44 PM, Ehsan Amiri wrote:
> Thanks.
>
> *Phillip, *As Hal said I do not think (1) is a very large item. Please
> let me know if I am mistaken.
I have no specific reason to believe it will be a large amount of work,
but prior experience tells me changes to canonical form have a tendency
of exposing unexpected issues. To be clear, I am supportive of you
implementing
2016 Mar 23
0
RFC: A change in InstCombine canonical form
On 03/22/2016 06:50 PM, Ehsan Amiri wrote:
>
>
> On Tue, Mar 22, 2016 at 6:42 PM, Philip Reames
> <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
>
>
>
> On 03/22/2016 02:44 PM, Ehsan Amiri wrote:
>> Thanks.
>>
>> *Phillip, *As Hal said I do not think (1) is a very large item.
>> Please let me
2015 Apr 21
2
[LLVMdev] RFC: Missing canonicalization in LLVM
So this change did indeed have an effect! :)
I’m seeing regressions in a number of benchmarks mainly due to a host of extra bitcasts that get introduced. Here’s the problem I’m seeing in a nutshell:
1) There is a Phi with input type double
2) Polly demotes the phi into a load/store of type double
3) InstCombine canonicalizes the load/store to use i64 instead of double
4)
2015 Apr 23
2
[LLVMdev] RFC: Missing canonicalization in LLVM
Thanks for the reply Pete. Unfortunately, I don’t think it is going to be as simple as ignoring those loads which only store. In findCommonType(), only one alloca is passed in at a time. So, while you could find those cases where that alloca was loaded from and stored elsewhere, you can’t find those places that store to that alloca from somewhere else (at least not easily that I can see).
So
2013 Feb 07
1
[LLVMdev] alloca scalarization with dynamic indexing into vectors
Hi all,
I have a question regarding dynamic indexing into a vector with GEP. I see
that in the ScalarReplAggregates pass in the LLVM 3.2 release the call
SROA::isSafeGEP() will now allow alloca scalarization in the case where a
GEP index into a vector isn’t a constant. My question is: what is the
expected behavior when the index is out of bounds of the vector? Is it
undefined? I have an
2015 Jan 21
3
[LLVMdev] RFC: Missing canonicalization in LLVM
> On Jan 21, 2015, at 3:02 PM, Chandler Carruth <chandlerc at gmail.com> wrote:
>
>
> On Wed, Jan 21, 2015 at 2:43 PM, Pete Cooper <peter_cooper at apple.com <mailto:peter_cooper at apple.com>> wrote:
> The first thing that springs to mind is that I don’t trust the backend to get this right. I don’t think it will understand when an i32 load/store would have been