- User Since
- Nov 23 2015, 1:58 PM (187 w, 11 h)
Cuz PPC's allowsMemoryAccess lacks information about which CombineLevel is at, it fails the check(Only a few vector types are allowed to have misaligned access). As a result, currently no changes happen in PPC's code. I might try to solve this problem with another patch.
Thu, Jun 20
Looks like it's mostly an improvement though there are some potential regressions around vector shuffles. I'll leave it to the others if it's acceptable to land.
Tue, Jun 18
By double check, I just meant to look at the results again with isTypeLegal checked, which is where we are?
Hi, @niravd, after investigate code carefully, I think this check might not be redundant. Considering the case, we have 3 i32 values extracted from vectors, both isTypeLegal and TIL.isTypeLegal see a v3i32 illegal.
Tue, Jun 11
Should we have the corresponding subcarry case folded in here as well?
Mon, Jun 10
Fri, Jun 7
Thu, Jun 6
This seems like it should be folded into the already existing checks. Do you know why NumStoresToMerge was not being before. I expect it's the requirement of a legal types in pre-legal merges or PPC's check for allowed misaligned accesses missing some cases. If it's the former I suspect we can disable the legality requirement prelegaltypes for non-truncated stores (replace TLI.isTypeLegal(ty) with isTypeLegal(ty)).
Wed, Jun 5
Yes, I think that keeping the flag stuff to an atomic makes the most sense. We should probably make sure we're doing the right thing for the dereferenceable and invariant flags as well.
Don't we need to do something for non-temporal loads as well?
Sun, Jun 2
LGTM modulo typo nit. Thanks!
Thu, May 30
Wed, May 29
Can you get away with just adding all remaining TFs (not their operands) to Ops? That way we keep the TF smaller and the pruning search still happens. That seems sufficient to fix the dropped operator issue.
May 9 2019
May 7 2019
May 6 2019
The current interfaces definitely do not provide anything like that. As I recall, most of the use cases requiring canMergeStoresTo involve ad hoc ways to locally declare a type/operation invalid localized to the specific target, so I suggest the just marginally expanding hte interface to capture the one issue we've seen so far (no-implict-float) and defer any deeper analysis for when we run into it.
May 5 2019
This is okay modulo nits, but let's land the TokenFactor operand size limiting first as it also implicitly bounds things.
May 2 2019
Notes inline, but I think the majority of the compile time improvements come from keepign TokenFactor operand counts bounded. This should be changed to do reflect that.
Apr 30 2019
Apr 26 2019
I think, make it unconditional.
I was thinking things pending from the folding optimization in getNode, but I missed that it was the target specific one so it should be fine. That said, I still think it's better to do it unconditionally so it'll be pruned by default with the future additio of Listener-based pruning if that proves too expensive.
I worry this is just fix just the dangling nodes as we see them. A brief glance at the AND construction gives us space for this to happen again. I'd much rather we do the removal check unconditionally or leverage something like
DAGUpdateListener to get a more fundamental measure of what nodes may be prunable.
Apr 24 2019
DAGCombiner now has infrastructure to strip away nodes that were created but unused in during a visit. It probably makes sense to do something similar in ISel
Apr 18 2019
Apr 2 2019
It's not sufficient to check if you can merge two stores into a valid node; there are backends where you need 4 or more to get a legal merged store.
Mar 29 2019
rL357283 supersedes this.
Mar 28 2019
Consider inserted nodes for pruning.
Defer Worklist modification in NodeInserter to follow up patch (D58070).
Now that lifetime node hashing and TokenFactor cleanup has happened, factor out Dead Store improvements as they are no longer needed to prevent regressions.
Mar 27 2019
Debug test also changes. h
Initial commit reverted due to Halide compile time explosion.
Address lingering test comments.
Mar 26 2019
Landed in rL356996
Extract copied code into helper and format
Revert mips test changes
This seems like it a natural thing to do as with the X86 backend, but since it doesn't make any test change differences, perhap it is unecessary.
Summarizing offline discussion with jyknight for future reference:
Rebase to tip before landing.
Mar 25 2019
Address James' Comments.
Check HasSideEffects in analysis for inlineasm.
Mar 18 2019
Address James' comments.
It fell off the end of my work queue, but yes.
Copy over Simon's suggestion.
Mar 15 2019
Realized explanatory comment and associate fixup had been lost in patch stack. Folding it back in.
Mar 13 2019