- Jan 25, 2022
-
-
Jeremy Morse authored
Over in the comments for D116821, some use-cases have cropped up where there's a substantial increase in memory usage. A quick inspection shows that a) it's a lot of memory and b) there are several things to be done to reduce it. Reverting (via disabling this feature by default) to avoid bothering people in the meantime.
-
Sebastian Neubauer authored
Remove the offset parameter if it is zero. Differential Revision: https://reviews.llvm.org/D117876
-
Owen Pan authored
Wraps the expansions of TYPE_SWITCH and COMPOSITE_TYPE_SWITCH in the constexpr interpreter with "do { ... } while (0)" so that these macros can be used like this: if (llvm::Optional<PrimType> T = Ctx.classify(FieldTy)) TYPE_SWITCH(*T, Ok &= ReturnValue<T>(FP.deref<T>(), Value)); else Ok &= Composite(FieldTy, FP, Value); This bug was found while testing D116316. See also review comment: https://reviews.llvm.org/D64146?id=208520#inline-584131 Also cleaned up the macro definitions by removing the superfluous do-while statements and removed the unused INT_TPYE_SWITCH macro. Differential Revision: https://reviews.llvm.org/D117301 -
eopXD authored
Tell the users they are specifying something without vector register. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D117980
-
Louis Dionne authored
-
Fangrui Song authored
Notation: dst is `t->getThunkTargetSym()->getVA()` On AArch64, when `src-0x8000000-r_addend <= dst < src-0x8000000`, the condition `target->inBranchRange(rel.type, src, rel.sym->getVA(rel.addend))` may incorrectly consider a thunk reusable. `rel.addend = -getPCBias(rel.type)` resets the addend to 0 for AArch64/PPC and the zero addend is used by `rel.sym->getVA(rel.addend)` to check out-of-range relocations. See the test for a case this computation is wrong: `error: a.o:(.text_high+0x4): relocation R_AARCH64_JUMP26 out of range: -134217732 is not in [-134217728, 134217727]` I have seen a real world case with r_addend=19960. Reviewed By: peter.smith Differential Revision: https://reviews.llvm.org/D117734
-
Simon Pilgrim authored
As suggested on PR53379, for all-of icmp-eq patterns, we can use ptest(sub(x,y)) on SSE41+ targets This is a generalization of the existing allof(cmpeq(x,0)) -> ptest(x) pattern We can probably extend this further, in particularly to handle 256-bit cases on pre-AVX2 targets, but this part of the generalization is pretty trivial Fixes Issue #53379
-
Sander de Smalen authored
Given that step_vector is practically a constant, doing this early helps with DAGCombine folds that happen before type legalization. There is currently no way to test this happens earlier, although existing tests for step_vector folds continue protect the folds happening at all. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D117863
-
Casey Carter authored
Since their nested reference types are defined in terms of `iter_reference_t<T>`, which examines `decltype(*declval<T>())`. Differential Revision: https://reviews.llvm.org/D117371
-
gysit authored
Add a transpose option to hoist padding to transpose the padded tensor before storing it into the packed tensor. The early transpose improves the memory access patterns of the actual compute kernel. The patch introduces a transpose right after the hoisted pad tensor and a second transpose inside the compute loop. The second transpose can either be fused into the compute operation or will canonicalize away when lowering to vector instructions. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D117893
-
Craig Topper authored
If the bitreverse gets expanded, it will introduce a new bswap. By putting a bswap before the bitreverse, we can ensure it gets cancelled out when this happens. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D118012
-
Matthias Springer authored
No longer go through an external model. Also put BufferizableOpInterface into the same build target as the BufferizationDialect. This allows for some code reuse between BufferizationOps canonicalizers and BufferizableOpInterface implementations. Differential Revision: https://reviews.llvm.org/D117987
-
Craig Topper authored
This can show up during when bitreverse is expanded to bswap and swap of bits within a byte. If the input is already a bswap, we should cancel them out before we further transform them in a way that makes it harder to see the redundancy. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D118007
-
Craig Topper authored
Add might be faster than shift. We can't do this earlier without using a Freeze instruction. This is the intrinsic version of D106689. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D118013
-
- Jan 24, 2022
-
-
Hans Wennborg authored
'ln -s' isn't Windows friendly.
-
Lorenzo Chelini authored
-
Matthias Springer authored
Both insertion points are valid. This is to make BufferizableOpInteface-based bufferization compatible with existing partial bufferization test cases. (So less changes are necessary to unit tests.) Differential Revision: https://reviews.llvm.org/D117986
-
Kristóf Umann authored
Patch originally by oktal3000: https://github.com/mikael-s-persson/templight/pull/40 When a template parameter is unnamed, the name of -templight-dump might return an empty string. This is fine, they are unnamed after all, but it might be more user friendly to at least describe what entity is unnamed. Differential Revision: https://reviews.llvm.org/D115521
-
Valentin Clement authored
Add the MemoryAllocation pass into the pipeline. Add the possibilty to pass the options directly within the tool (tco). This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D117886
-
Matthias Springer authored
This is the only op that is not supported via BufferizableOpInterfaceImpl bufferization. Once this op is supported we can switch `tensor-bufferize` over to the new unified bufferization. Differential Revision: https://reviews.llvm.org/D117985
-
Sean Fertile authored
A number of the filesystem tests create a directory that contains a bad symlink. On AIX recursively setting permissions on said directory will return a non-zero value because of the bad symlink, however the following rm -r still completes successfully. Avoid the assertion on AIX, and rely on the return value of the remove command to detect problems. Differential Revision: https://reviews.llvm.org/D112086
-
Denys Shabalin authored
Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D118027
-
David Spickett authored
Without a langauge name it's an error (with some verisons of Sphinx it seems) or the block is simply missing in the output.
-
Matthias Springer authored
This is in preparation of unifying the existing bufferization with One-Shot bufferization. A subsequent commit will replace `tensor-bufferize`'s implementation with the BufferizableOpInterface-based implementation and move over missing test cases. Differential Revision: https://reviews.llvm.org/D117984
-
Matt Arsenault authored
These have negative / out of bounds frame index values and would assert when trying to set the BitVector. Fixed stack objects can't be colored away so ignore them.
-
Bjorn Pettersson authored
Add test case to show missing folds for (sra (load)) -> (sextload). Differential Revision: https://reviews.llvm.org/D116929
-
Matt Arsenault authored
This reverts commit a97e20a3.
-
Matt Arsenault authored
Reapply 3d2d208f, reverted in a97e20a3
-
ksyx authored
- Fixes https://github.com/llvm/llvm-project/issues/53227 that wrongly indents multiline comments - Fixes wrong detection of single-line opening braces when used along with those only opening scopes, causing crashes due to duplicated replacements on the same token: void foo() { { int x; } } - Fixes wrong recognition of first line of definition when the line starts with block comment, causing crashes due to duplicated replacements on the same token for this leads toward skipping the line starting with inline block comment: /* Some descriptions about function */ /*inline*/ void bar() { } - Fixes wrong recognition of enum when used as a type name rather than starting definition block, causing crashes due to duplicated replacements on the same token since both actions for enum and for definition blocks were taken place: void foobar(const enum EnumType e) { } - Change to use function keyword for JavaScript instead of comparing strings - Resolves formatting conflict with options EmptyLineAfterAccessModifier and EmptyLineBeforeAccessModifier (prompts with --dry-run (-n) or --output-replacement-xml but no observable change) - Recognize long (len>=5) uppercased name taking a single line as return type and fix the problem of adding newline below it, with adding new token type FunctionLikeOrFreestandingMacro and marking tokens in UnwrappedLineParser: void afunc(int x) { return; } TYPENAME func(int x, int y) { // ... } - Remove redundant and repeated initialization - Do no change to newlines before EOF Reviewed By: MyDeveloperDay, curdeius, HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D117520
-
Paul Walker authored
-
Simon Pilgrim authored
PR53379 test coverage
-
Simon Pilgrim authored
Explicitly name them icmp0_* - I'm intending to add PR53379 test coverage shortly
-
Simon Pilgrim authored
We were supposed to be testing <8 x i16> reductions
-
serge-sans-paille authored
-
Fraser Cormack authored
This patch introduces new intrinsics that enable the use of vsetvli in contexts where only the returned vector length is of interest. The pre-existing intrinsics are marked with side-effects, which prevents even trivial optimizations on/across them. These intrinsics are intended to be used in situations where the vector length is fed in turn to RVV intrinsics or to vector-predication intrinsics during loop vectorization, for example. Those codegen paths ensure that instructions are generated with their own implicit vsetvli, so the vector length and vtype can be relied upon to be correct. No corresponding C builtins are planned at this stage, though that is a possibility for the future if the need arises. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D117910
-
Sjoerd Meijer authored
Together with the previous commit which mainly documents better LoopFlatten's overall strategy, this addresses a concern added as a FIXME comment in D110587; the code refactoring (NFC) introduces functions (also for the SCEV usage) to make this clearer.
-
Sjoerd Meijer authored
-
serge-sans-paille authored
-
Evgeny Shulgin authored
Support C++20 constinit variables for AST Matchers.
-
Nathan Sidwell authored
There's some unnecessary code duplication in the parser. This refactors that and deploys boolean variables to avoid the duplication. These also happen to help adding module demangling (with an updated mangling scheme). 1a) The grammar requires some lookahead concerning <template-args>. We may discover an <unscoped-name> is actually <unscoped-template-name> <template-args>. (When <unscoped-name> was a substitution, there must be a following <template-args>.) Refactor parseName to only have one code path looking for the 'I' indicating <template-args>. 1b) While there I altered the control flow to hold the result in a variable, rather than tail call. Made it easier to debug (and of course an optimizer will DTRT here anyway). 2a) An <unscoped-name> can have an St or StL prefix. No need for completely separate code paths handling the following unqualified-name though. 2b) Also no need to look for both 'St' and 'StL' separately. Look for 'St' and then conditionally swallow an 'L'. 3) We get a similar issue as #1a when parsing a typeName. Here I just change the control flow slightly to bring the 'break' out to the end of the 'S' block and embed the early return inside an if. That's more in keeping with the code style. 4) Although NFC, there's a new testcase as that's not covered by the existing demangler tests and is significant in the #1a case above. Reviewed By: ChuanqiXu Differential Revision: https://reviews.llvm.org/D117879
-