- Aug 10, 2022
-
-
Philip Reames authored
-
Lei Zhang authored
* Avoid restricting the pass to to builtin module ops. The pass should be able to run on any region ops. * Avoid hardcoding func FuncOp when handling functions. Instead, use the function op interface. * Assigns the default mapping in the constructor. So for cases where we are using the pass in a pipeline, we still have a meaningful default. Along the way, dropped uncessary unrealized conversion casts and use full conversion. The pass should be able to convert all sorts of ops; there is really no need to have such bridages. Reviewed By: kuhar Differential Revision: https://reviews.llvm.org/D131409
-
Jerry Wu authored
In addition to memref, accept ranked tensor as the base operand of vector.gather, similar to vector.trasnfer_read. This will allow us to vectorize noncontiguous tensor.extract into vector.gather. Full discussion can be found here: https://github.com/iree-org/iree/issues/9198 Reviewed By: hanchung, dcaballe Differential Revision: https://reviews.llvm.org/D130097
-
Jerry Wu authored
Previously we can only lower arith.index_cast with 1-D vectors to LLVM. This change added the support for n-D vectors. Reviewed By: ftynse, hanchung Differential Revision: https://reviews.llvm.org/D129907
-
Lei Zhang authored
Previously we are using IntegerAttr to back all SPIR-V enum attributes. Therefore we all such attributes are showed like IntegerAttr in IRs, which is barely readable and breaks roundtripability of the IR. This commit changes to use `EnumAttr` as the base directly so that we can have separate attribute definitions and better IR printing. Reviewed By: kuhar Differential Revision: https://reviews.llvm.org/D131311
-
Aart Bik authored
Spell out SparseVector instead of just using SparseVec Reviewed By: jim22k, bixia Differential Revision: https://reviews.llvm.org/D131511
-
Filipp Zhinkin authored
Baseline tests for D131189.
-
Jorge Gorbe Moya authored
This removes some error-prone repetition in FormatManager::GetPossibleMatches, where the same three boolean flags are passed in a row multiple times as arguments to recursive calls to GetPossibleMatches. Instead of: ``` // same flags, but with did_strip_typedef set to true. GetPossibleMatches(..., did_strip_ptr, did_strip_ref, true); ``` we can now say ``` GetPossibleMatches(..., current_flags.WithStrippedTypedef()); ``` which hopefully makes the intent clearer, and more readable in case we add another flag. Reviewed by: DavidSpickett, labath Differential Revision: https://reviews.llvm.org/D131459
-
Archibald Elliott authored
This patch adds the names of the Arm Architecture Reference Manual (ARM) features to the corresponding Subtarget Features in the AArch64 backend and target parser. The aim of this is to make it clearer what architectural features a subtarget feature might enable (so, which features a CPU must provide to support that subtarget feature), and so make it easier to add new CPUs in the future. Differential Revision: https://reviews.llvm.org/D131257
-
Adrian Prantl authored
This is a follow-up patch to D130999. In the test, the MIR contains an unreachable MBB but the code attempts to look it up in MLocs. This patch fixes this issue by checking for the default-constructed value. rdar://97226240 Differential Revision: https://reviews.llvm.org/D131453
-
Sanjay Patel authored
https://alive2.llvm.org/ce/z/UE48FH This is part of solving issue #56926.
-
Philip Reames authored
In an upcoming change to enable fixed length vector lowering via vector registers, the codepath exercised would change. Pin this to the old lowering.
-
Simon Pilgrim authored
This is already in sse2-intrinsics-fast-isel.ll Noticed in D104790
-
Peter Klausler authored
Remove a lambda capture of "[this]" in two cases where it is no longer required. Will be pushed without waiting for review if CI is successful in order to resolve a sad build bot. Differential Revision: https://reviews.llvm.org/D131506
-
Sanjay Patel authored
We can do more with these patterns, so this block is going to grow.
-
Sanjay Patel authored
Reduced from issue #56403
-
Markus Böck authored
This patch adds the ability to deconstruct the `value_type` returned by `llvm::enumarate` into index and value of the wrapping range. Main use case is the common occurence of using it during loop iteration. After this patch it'd then be possible to write code such as: ``` for (auto [index, value] : enumerate(container)) { ... } ``` where `index` is the current index and `value` a reference to elements in the given container. Differential Revision: https://reviews.llvm.org/D131486 -
V Donaldson authored
-
Jun Zhang authored
Signed-off-by:Jun Zhang <jun@junz.org>
-
- Aug 09, 2022
-
-
zhongyunde authored
Deal with different sizes between the itofp and fptoi with trunc or sext/zext, depend on D129756. Fixes https://github.com/llvm/llvm-project/issues/55505. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D129958
-
David Green authored
-
Peter Klausler authored
Intrinsic procedures in intrinsic modules that have (or better, *are*) generic interfaces must not have specific procedures with the same name according to the Fortran standard (17.11.1); i.e., a user program is allowed to define a procedure of the same name as one of these generic interfaces, even when the generic is in scope. Differential Revision: https://reviews.llvm.org/D131108
-
Peter Klausler authored
Allow internal I/O to support non-default kinds of CHARACTER. The I/O runtime design anticipated this standard feature, but this patch is somewhat larger than I thought it would be because many code sites had to have assumptions about units (characters vs. bytes) brought into harmony, and some encoding utilities had to be pulled out of IoStatementState and templatized into their own new header file so that they are available to formatted output code without having to "thread" an IoStatementState reference through many call chains. Differential Revision: https://reviews.llvm.org/D131107
-
Peter Klausler authored
When a procedure pointer references a function as its interface, don't apply semantic checks to the specification expressions that appear in the declaration of the function's result -- this can lead to bogus error messages as those specification expressions are being examined out of their proper context. Differential Revision: https://reviews.llvm.org/D131106
-
Peter Waller authored
-
Shawn Zhong authored
A one-bit signed bit-field can only hold the values 0 and -1; this corrects the diagnostic behavior accordingly. Fixes #53253 Differential Revision: https://reviews.llvm.org/D131255
-
Thorsten Schütt authored
-
Simon Pilgrim authored
Very minor optimization, but every little helps..
-
Keith Smiley authored
This matches the convention used elsewhere Differential Revision: https://reviews.llvm.org/D131456
-
Aaron Ballman authored
As was observed in https://reviews.llvm.org/D123627#3707635, it's confusing that a user can write: ``` float rintf(void) {} ``` and get a warning, but writing: ``` float rintf() {} ``` gives an error. This patch changes the behavior so that both are warnings, so that users who have functions which conflict with a builtin identifier can still use that identifier as they wish. Differential Revision: https://reviews.llvm.org/D131499
-
Simon Pilgrim authored
[DAG] SimplifyDemandedVectorElts - and/mul(x,y) - if a demanded element of y is known zero then we don't need to demand it in x This fixes most of the remaining regressions from the fixes in rG293899c6
-
Mark de Wever authored
D131234 marked the ranges papers as complete, but it didn't set the feature-test macro. Reviewed By: ldionne, var-const, #libc Differential Revision: https://reviews.llvm.org/D131326
-
Peter Klausler authored
Type-bound procedure bindings that specify intrinsic procedures as their interfaces should not acquire the ELEMENTAL attribute from the purposes of compatibility checking between inherited bindings and their overrides in extended derived types. Differential Revision: https://reviews.llvm.org/D131104
-
Ariel Burton authored
Earlier, if the QualType was sugared, then we would error out as it was not a pointer type, for example, typedef int *int_star; int_star __ptr32 p; Now, if ptr32 is given we apply it if the raw Canonical Type (i.e., the desugared type) is a PointerType, instead of only checking whether the sugared type is a pointer type. As before, we still disallow ptr32 usage if the pointer is used as a pointer to a member. Differential Revision: https://reviews.llvm.org/D130123
-
Peter Klausler authored
Defined generic procedure interfaces are allowed to shadow non-generic procedures of the same name in the same scope (whether or not that non-generic procedure is a specific procedure of the generic). When making a copy of a generic interface symbol so that it can be locally modified or be merged with another generic, don't forget about the homonymous non-generic procedure that it might shadow. Differential Revision: https://reviews.llvm.org/D131103
-
Peter Klausler authored
Inaccessible components -- those declared PRIVATE in another module -- should be allowed to be redeclared in extended types, and should be ignored if they appear as keywords in structure constructors. Differential Revision: https://reviews.llvm.org/D131102
-
Jakub Kuderski authored
Resolve almost all clang tidy warnings in this file: 1. Clean up string constants. 2. Use consistent argument names across function declarations and definitions. Rename `state` - > `result`, which is consistent with the other dialects. 3. Remove misleading function parameter name comments (`argTypes`). This did not match the actual function argument (`bool enableNameShadowing`). 4. Simplify calls to `is_splat`. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D131297
-
Yaxun (Sam) Liu authored
si-annotate-control-flow does depth first traversal of BB's of a function to insert amdgcn if intrinsics for conditional branches so that isel can generate correct instructions later. si-annotate-control-flow checks whether the successor BB for the 'else' branch of a conditional branch has been visited. If it has been visited, si-annotate-control-flow assumes the conditional branch has been handled and will not try to insert if intrinsic for it. This assumption is not correct when the IR contains multiple unreachable BB's. Then 'if' intrinscs are not inserted and incorrect ISA are generated. This patch fixes the issue by let amdgpu-unify-divergent-exit-nodes unify unreachables even if they are uniformly reached. In this way the IR will not contain multiple exits, and structurizer is able to structurize the IR containing one unified exit. Reviewed by: Ruiling Song, Matt Arsenault Differential Revision: https://reviews.llvm.org/D131181 Fixes: SWDEV-343244
-
Valentin Clement authored
The newly added AlgebraicSimplification pass is triggering the greedy pattern rewriter. Since we define a specific config in the flang pipeline, this patch adds the ability to pass the config to the pass directly. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D131474
-
Nikita Popov authored
This adds a +forced-atomics target feature with the same semantics as +atomics-32 on ARM (D130480). For RISCV targets without the +a extension, this forces LLVM to assume that lock-free atomics (up to 32/64 bits for riscv32/64 respectively) are available. This means that atomic load/store are lowered to a simple load/store (and fence as necessary), as these are guaranteed to be atomic (as long as they're aligned). Atomic RMW/CAS are lowered to __sync (rather than __atomic) libcalls. Responsibility for providing the __sync libcalls lies with the user (for privileged single-core code they can be implemented by disabling interrupts). Code using +forced-atomics and -forced-atomics are not ABI compatible if atomic variables cross the ABI boundary. For context, the difference between __sync and __atomic is that the former are required to be lock-free, while the latter requires a shared global lock provided by a shared object library. See https://llvm.org/docs...
-