- Feb 26, 2021
-
-
Diego Caballero authored
Fix 'isLoopParallel' utility so that 'iter_args' is taken into account and loops with loop-carried dependences are not classified as parallel. Reviewed By: tungld, vinayaka-polymage Differential Revision: https://reviews.llvm.org/D97347
-
Tung D. Le authored
This patch handles defining ops between the source and dest loop nests, and prevents loop nests with `iter_args` from being fused. If there is any SSA value in the dest loop nest whose defining op has dependence from the source loop nest, we cannot fuse the loop nests. If there is a `affine.for` with `iter_args`, prevent it from being fused. Reviewed By: dcaballe, bondhugula Differential Revision: https://reviews.llvm.org/D97030
-
- Feb 25, 2021
-
-
Fraser Cormack authored
-
Florian Hahn authored
-
Craig Topper authored
[RISCV] Teach CleanupVSETVLI to remove 'vsetvli zero, zero, vtype' when the vtype matches the previous vsetvli or vsetivli Reviewed By: frasercrmck, arcbbb Differential Revision: https://reviews.llvm.org/D97408
-
Nico Weber authored
Reported by artok on irc, thanks!
-
Nico Weber authored
-
Craig Topper authored
Reviewed By: asb Differential Revision: https://reviews.llvm.org/D97262
-
Albion Fung authored
This test case was causing a PowerPC buildbot to fail as it happened to be named lld-multistage, which matches with the original regex and therefore fails the check-not. This should better represent the desired check. Differential Revision: https://reviews.llvm.org/D97423
-
Timm Bäder authored
This happens in codebases a lot, which use xor where both sides are macros. Using xor in that case is not the common error-prone 2^6 code that the warning was introduced for. Don't diagnose such a use of xor. Differential Revision: https://reviews.llvm.org/D97445
-
Vladislav Vinogradov authored
Use `::mlir::Region` inside array ref for `VariadicRegion`. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D97376
-
Fraser Cormack authored
Some of the section headers had become stale with the transition from RVV specification version 0.9 to 0.10. This patch brings them up to date.
-
Fraser Cormack authored
This patch extends the support for scalable-vector int->fp and fp->int conversions by additionally handling fixed-length vectors. The existing scalable-vector lowering re-expresses widening/narrowing by x4+ conversions as standard nodes. The fixed-length vector support slots in at "the end" of this process by lowering the now equally-sized and widening/narrowing by x2 nodes to our custom VL versions. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D97374
-
Shao-Ce Sun authored
In clang: Replace argc_ with Argc Replace argv_ with Argv Replace argv with Args In flang: Replace argc_ with argc Replace argv_ with argv Replace argv with args Reviewed By: awarzynski, aganea Differential Revision: https://reviews.llvm.org/D97138
-
Andrzej Warzynski authored
This patch makes sure that for the following invocation of the new Flang driver, clangDriver sets the input type to Fortran: ``` flang-new -E - ``` This change does not affect `clang`, i.e. for the following invocation the input type is set to C: ``` clang -E - ``` This change leverages the fact that for `flang-new` the driver is in Flang mode. Differential Revision: https://reviews.llvm.org/D96777
-
Martin Storsjö authored
-
Jan Svoboda authored
This patch removes the infrastructure for recording queries in `ArgList`, partially reverting D94472. The infrastructure was used during command line round-trip to determine which arguments should a certain subset of `CompilerInvocation` generate. Since D96280, the command line arguments are being generated all at once, making this code no longer necessary. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D96325
-
Jan Svoboda authored
Patch D96280 moved command line round-tripping from each parsing functions into single `CreateFromArgs` function. This patch cleans up the individual parsing functions, essentially merging `ParseXxxImpl` with `ParseXxx`, as the distinction is not necessary anymore. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D96323
-
Raphael Isemann authored
-
Fraser Cormack authored
This patch extends the support for vector FP_ROUND and FP_EXTEND by including support for fixed-length vector types. Since fixed-length vectors use "VL" nodes and scalable vectors can use the standard nodes, there is slightly more to do in the fixed-length case. A helper function was introduced to try and reduce the divergent paths. It is expected that this function will similarly come in useful for lowering the int-to-fp and fp-to-int operations for fixed-length vectors. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D97301
-
Christian Sigg authored
Lower !gpu.async.tokens returned from async.execute regions to events instead of streams. Make !gpu.async.token returned from !async.execute single-use. This allows creating one event per use and destroying them without leaking or ref-counting. Technically we only need this for stream/event-based lowering. I kept the code separate from the rest of the gpu-async-region pass so that we can make this optional or move to a separate pass as needed. Reviewed By: herhut Differential Revision: https://reviews.llvm.org/D96965
-
Fraser Cormack authored
This patch extends support for our custom-lowering of scalable-vector truncates to include those of fixed-length vectors. It does this by co-opting the custom RISCVISD::TRUNCATE_VECTOR node and adding mask and VL operands. This avoids unnecessary duplication of patterns and inflation of the ISel table. Some truncates go through CONCAT_VECTORS which currently isn't efficiently handled, as it goes through the stack. This can be improved upon in the future. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D97202
-
Fraser Cormack authored
This patch adds support for the custom lowering sign- and zero-extension of fixed-length vector types. It does so through custom nodes. Since the source and destination types are (necessarily) of different sizes, it is possible that the source type is legal whilst the larger destination type isn't. In this case the legalization makes heavy use of EXTRACT_SUBVECTOR. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D97194
-
Fraser Cormack authored
This patch unifies the two disparate paths for lowering EXTRACT_SUBVECTOR operations under one roof. Consequently, with this patch it is possible to support any fixed-length subvector extraction, not just "cast-like" ones. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D97192
-
Evgeniy Brevnov authored
-
Simon Pilgrim authored
-
Evgeniy Brevnov authored
Support reassociation for min/max. With that we should be able to transform min(min(a, b), c) -> min(min(a, c), b) if min(a, c) is already available. Reviewed By: mkazantsev Differential Revision: https://reviews.llvm.org/D88287
-
Simon Pilgrim authored
We should be able to extend this "canonicalizeShuffleWithBinOps" to handle more generic binop cases where either/both operands can be cheaply shuffled.
-
serge-sans-paille authored
Apply the same pattern as the one used in clangd/unittests/CMakeLists.txt Differential Revision: https://reviews.llvm.org/D96788
-
Raphael Isemann authored
The first two comments are incomplete and reference obsolete code. The last one is just commented out code (that also doesn't look correct).
-
Raphael Isemann authored
This prevents people from accidentially using this code outside the intended setup.
-
Harmen Stoppels authored
Allow users to use a non-system version of perl, python and awk, which is useful in certain package managers. Reviewed By: JDevlieghere, MaskRay Differential Revision: https://reviews.llvm.org/D95119
-
David Sherwood authored
When calling SelectionDAG::getNode() to create an ADD or SUB of two vectors with i1 element types we can canonicalise this to use XOR instead, where 1+1 is treated as wrapping around to 0 and 0-1 wraps to 1. I've added the following tests for SVE targets: CodeGen/AArch64/sve-pred-arith.ll and modified some X86 tests to reflect the much simpler codegen required. Differential Revision: https://reviews.llvm.org/D97276
-
Tim Northover authored
Some people are using alternative address spaces to track GC data, but otherwise they behave exactly the same. This is the only place in the backend we even try to care about it so it's really not achieving anything.
-
Jan Svoboda authored
Finally, this patch moves from round-tripping one `CompilerInvocation` at a time to round-tripping the invocation as a whole. This patch includes only the code required to make round-tripping the whole invocation work. More cleanups will be done in a follow-up patch. Depends on D96847, D97041 & D97042. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D96280
-
Jan Svoboda authored
After a revision of D96274 changed `DiagnosticOptions` to not store all remark arguments **as-written**, it is no longer possible to reconstruct the arguments accurately from the class. This is caused by the fact that for `-Rpass=regexp` and friends, `DiagnosticOptions` store only the group name `pass` and not `regexp`. This is the same representation used for the plain `-Rpass` argument. Note that each argument must be generated exactly once in `CompilerInvocation::generateCC1CommandLine`, otherwise each subsequent call would produce more arguments than the previous one. Currently this works out because of the way `RoundTrip` splits the responsibilities for certain arguments based on what arguments were queried during parsing. However, this invariant breaks when we move to single round-trip for the whole `CompilerInvocation`. This patch ensures that for one `-Rpass=regexp` argument, we don't generate two arguments (`-Rpass` from `DiagnosticOptions` and `-Rpass=regexp` from `CodeGenOptions`) by shifting the responsibility for handling both cases to `CodeGenOptions`. To distinguish between the cases correctly, additional information is stored in `CodeGenOptions`. The `CodeGenOptions` parser of `-Rpass[=regexp]` arguments also looks at `-Rno-pass` and `-R[no-]everything`, which is necessary for generating the correct argument regardless of the ordering of `CodeGenOptions`/`DiagnosticOptions` parsing/generation. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D96847
-
Stelios Ioannou authored
This patch adds cost-modelling for abs vector intrinsic. Change-Id: I89007971bfb15f5b4a02a2eadfd43018e9a73976
-
Haojian Wu authored
-
Jan Svoboda authored
We can now express all marshalling semantics in `Opt{In,Out}FFlag` via `BoolFOption`. This patch moves remaining `Opt{In,Out}FFlag` instances using marshalling to `BoolFOption` and removes marshalling capabilities from `Opt{In,Out}FFlag` entirely. This simplifies the decisions developers have to make when creating new boolean options: * For simple cc1 flag pairs, use `Bool{,F,G}Option`. * For cc1 flag pairs that require complex marshalling logic, use `Opt{In,Out}FFlag` and implement marshalling manually. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D97370 -
Jan Svoboda authored
This patch introduces a tablegen multiclass called `MarshallingInfoEnum`. It has the same semantics as `MarshallingInfoString` had in combination with `AutoNormalizeEnum`, but it's easier to use and follows the convention used for other `MarshallingInfoXxx` multiclasses. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D97375
-