User Details
- User Since
- Mar 5 2014, 12:39 AM (473 w, 1 d)
Mar 17 2020
Jan 25 2020
Jan 23 2020
CreateAlignedLoad allows align 0, as far as I see in the code.
We just assume that masked.gather is created from scalar load by vectorizer. Vectorizer just copies alignment from scalar load to masked load/gather and the requirement to alignment should match load alignment.
Nov 17 2019
Nov 12 2019
Currently we keep Pointer SCEV type as Index type because we don't have any special SCEV Expression type for pointers.
I suppose, we should add scAddPtrExpr (add index to pointer) and scPtrDiffExpr (pointers diff) to solve this problem. The scAddPtrExpr will always return PonterSizeType and will be expanded to GEP, not to "add". The scPtrDiffExpr will return IndexSizeType and will be expanded to trunc+sub.
Oct 3 2019
Oct 2 2019
Sep 12 2019
Jan 10 2019
ABS is only an example. We'd like to enable/disable the common transformation for other nodes as well.
Is it reasonable to add CombineLevel to the interface to make it more general?
Oct 30 2018
Oct 17 2018
I explained why there's no test. The following commit (linked in the stack) has a test case which crashes without this change.
You've dropped the following commit.
Oct 12 2018
Can you use the "address space" to distinguish between global and local in Data Layout?
I'm ok with the code itself. I agree with Eli that you should add CHECKs.
Add a test, please.
Aug 27 2018
Aug 7 2018
Yes. The scatter operation should be in-order after split.
Jul 12 2018
Ping
Jul 9 2018
Jul 1 2018
Ping.., Can anybody complete the review, please?
Jun 25 2018
Added more tests for BasicAA.
I looked at the code in SeparateConstOffsetFromGEP::canonicalizeArrayIndicesToPointerSize
The DL->getIntPtrType() does the right job for the "custom" GEP. I added a test that covers canonicalizeArrayIndicesToPointerSize().
I'll try to add a test to the constantOffsetHeuristic() as well.
I separated the CodeGen and middle-end changes.
I added one more test for SeparateConstOffsetFromGEP.
Jun 24 2018
Jun 20 2018
Jun 19 2018
The new test is auto-generated now.
Jun 6 2018
Jun 4 2018
I wrote this documentation after implementation. I don't work on X86 about a year, but I doubt that somebody touched this code.
Jun 2 2018
I tried to add documentation a while ago https://reviews.llvm.org/D26743
May 14 2018
I think it is simpler than load folding in td. You can open a bugzilla ticket for possible optimization.
May 13 2018
May 12 2018
It is not disappeared by itself, I removed it. I understood that you don't see any added value in the entire memory model description inside.
Thank you.
May 11 2018
Added a line about *load-store* semantics of these two intrinsics.
Removed the common description of memory modeling.
May 10 2018
Given more clarification about memory model of atomic operations.
May 8 2018
Removed the unsigned version of atomics. Enhanced semantics check.
Added more tests.
Added documentation.
May 4 2018
May 3 2018
Feb 14 2018
no context in the patch
Are there MIR changes only? What changes do you expect in the asm code?
Feb 13 2018
Feb 12 2018
Added more tests with custom data layout.
Feb 8 2018
Updated according to the latest comments.
Feb 7 2018
Feb 6 2018
I don't see these tests in this current version of the patch.
All tests that you see *-custom.ll" go through the scev calculations.
Feb 5 2018
@theraven , the latest uploaded version is aligned with what you implemented out of the tree. Could you, please, take a look?
Feb 1 2018
" > We have addressed this by adding explicit PTRADD SelectionDAG nodes, which perform pointer + integer addition. For complex addressing modes, we end up with (ptradd base (some complex integer ops)). This works well as long as the underlying hardware supports address register + integer register addressing, which I presume is the case for Intel (it is for all Harvard architectures that I've come across)."
Yes, we also added ADDPTR node for SelectionDAG and we have more changes related to the special pointer type. Apparently, the codegen does not work with MVT::Ptr.
We can try to upstream the part of DAG builder, that makes ADDPTR from GEP.
Jan 31 2018
Jan 30 2018
Added index width specification to the DataLayout. Updated the langref.
Fixed Pointer vs Index sizes in the code.
Added more tests.
Jan 25 2018
I looked at your code:
/ Return the size in bits of the specified type, for which isSCEVable must
/ return true.
uint64_t ScalarEvolution::getTypeSizeInBits(Type *Ty) const {
assert(isSCEVable(Ty) && "Type is not SCEVable!"); const DataLayout &DL = getDataLayout(); if (PointerType *PT = dyn_cast<PointerType>(Ty)) return DL.getPointerBaseSizeInBits(PT->getPointerAddressSpace()); return DL.getTypeSizeInBits(Ty);
}
I can't say that size of pointer is smaller that it is. I can't truncate pointer to integer in order to expand all SCEV expressions.
I want to deprecate SCEVs for pointers if the index size is not equal to pointer size.
What do you think?
Jan 19 2018
So you propose to extend Data Layout string and add index size to it, right? It was one of options that Hal suggested. Ok.
Updated, following Craig's comments.
Jan 17 2018
Added tests for a data layout, where pointer is wider than the largest supported integer type.
Jan 16 2018
Fixed 2 "assert" messages.
Jan 10 2018
Jan 3 2018
Jan 2 2018
+ minor comment
Dec 30 2017
Re-arranged the code to avoid duplication.
Fixed Debug prints.
Dec 29 2017
Nov 19 2017
Nov 18 2017
Nov 16 2017
Nov 13 2017
Nov 11 2017
Nov 10 2017
Nov 5 2017
Nov 1 2017
Oct 29 2017
Oct 23 2017
Please submit the same test cases before optimization.
Oct 14 2017
I suggest to open a ticket in bugzilla about possible replacement of "select" with constant mask with shuffle to avoid mask instructions on AVX-512.
Oct 11 2017
In this case we need to add "SlowShuffle.." property to these two targets. I don't see any other way to distinguish. Or "Fast" to HSW, but I suggest the fist variant, because less instructions is more obvious.