- Sep 22, 2021
-
-
Owen Anderson authored
Reviewed By: majnemer Differential Revision: https://reviews.llvm.org/D109988
-
Brendon Cahoon authored
When adding alias.scope and noalias metadata to a memcpy function, the alias.scope and noalias metadata from the operands are merged. The rule for merging alias.scope is to take the intersection of the domains and the union of the scopes within those domains. The rule for merging noalias is to take the intersection. The bug is that AMDGPULowerModuleLDS was using concatenation for both alias.scope and noalias. For example, when f1 and f2 are added to the LDS structure and there is a memcpy(f2, f1, sizeof(f1)). Then, concatenation creates noalias metadata for the memcpy that includes both {f1, f2}. That means that the memcpy is assumed not to alias a prior load of f2, which enables the optimizer to remove a load of f2 that occurs after mempcy. The function MDNode::getmostGenericAliasScope defines the semantics for alias.scope. There is a function, combineMetadata in Local.cpp, that uses intersect for noalias. Differential Revision: https://reviews.llvm.org/D110049 -
Craig Topper authored
This helps the compiler generate better code.
-
Danila Malyutin authored
Fixes pr42770 Differential Revision: https://reviews.llvm.org/D108772
-
Giorgis Georgakoudis authored
Parallel regions are outlined as functions with capture variables explicitly generated as distinct parameters in the function's argument list. That complicates the fork_call interface in the OpenMP runtime: (1) the fork_call is variadic since there is a variable number of arguments to forward to the outlined function, (2) wrapping/unwrapping arguments happens in the OpenMP runtime, which is sub-optimal, has been a source of ABI bugs, and has a hardcoded limit (16) in the number of arguments, (3) forwarded arguments must cast to pointer types, which complicates debugging. This patch avoids those issues by aggregating captured arguments in a struct to pass to the fork_call. Reviewed By: jdoerfert, jhuber6 Differential Revision: https://reviews.llvm.org/D102107
-
Amy Kwan authored
This patch adds a prefixed load pattern involving v2f32 fpext v2f64, where we are dealing with a value with an offset that fits into a 34-bit signed immediate. A reduced test case is also added to patch that tests the pattern, in which the pattern is tested in the big endian CHECKs of the newly added test. Differential Revision: https://reviews.llvm.org/D109887
-
Ayal Zaks authored
This patch fixes the crash found by PR51614: whenever doing tail folding, interleave groups must be considered under mask. Another fix D108900 follows for targets that support masked loads and stores: when *deciding* to vectorize with masked interleave groups, check if the access is reverse - which is currently not supported; rather than (only) asserting when computing cost and generating code. Differential Revision: https://reviews.llvm.org/D108891
-
Craig Topper authored
This requires a minor change to CodeGenPrepare to ensure that shouldSinkOperands will be called for And. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D110106
-
Nico Weber authored
Trying to use the DIA SDK reader only to fail with "DIA SDK wasn't enabled" isn't very useful. The native PDB reader is missing some stuff, but it's still better than nothing. Reduces number of lldb-check-shell test failures with LLVM_ENABLE_DIA_SDK=NO from 27 to 15. Differential Revision: https://reviews.llvm.org/D110172
-
LLVM GN Syncbot authored
-
Mark de Wever authored
This implements the generic std.format.spec framework for all types. The Unicode support will be added in a separate patch. Implements parts of: - P0645 Text Formatting Completes: - LWG-3242 std::format: missing rules for arg-id in width and precision - P1892 Extended locale-specific presentation specifiers for std::format Reviewed By: #libc, ldionne, vitaut Differential Revision: https://reviews.llvm.org/D103368
-
cchen authored
-
Aaron Ballman authored
This reverts commit 63e0d038. It causes test failures: http://lab.llvm.org:8011/#/builders/119/builds/5612 https://logs.chromium.org/logs/fuchsia/buildbucket/cr-buildbucket/8835548361443044001/+/u/clang/test/stdout
-
Dávid Bolvanský authored
We already have pow(x, y) * pow(x, z) -> pow(x, y + z) transformation, but we are missing same transformation for powi (power is integer). Requires reassoc. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D109954
-
Quinn Pham authored
This patch changes the signature of the load and store vector pair builtins to match their documentation. The type of the `signed long long` argument is changed to `signed long`. This patch also changes existing testcases to match the signature change. Reviewed By: lei, Conanap Differential Revision: https://reviews.llvm.org/D109996
-
Kazu Hirata authored
-
Sanjay Patel authored
Planning to reframe a proposed transform in terms of demanded bits as suggested in D110170. The new tests end with an 'or'.
-
Kostya Serebryany authored
The current code writes the pc-table at the process startup, which may happen before the common_flags() are initialized. Move writing to the process end. This is consistent with how we write the counters and avoids the problem with the uninitalized flags. Add prints if verbosity>=1. Reviewed By: kostik Differential Revision: https://reviews.llvm.org/D110119
-
- Sep 21, 2021
-
-
Florian Hahn authored
isValidAssumeForContext can provide better results with access to the dominator tree in some cases. This patch adjusts computeConstantRange to allow passing through a dominator tree. The use VectorCombine is updated to pass through the DT to enable additional scalarization. Note that similar APIs like computeKnownBits already accept optional dominator tree arguments. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D110175
-
Michael Liao authored
Reviewed By: jeroen.dobbelaere Differential Revision: https://reviews.llvm.org/D102821
-
Aleksandr Bezzubikov authored
When using instructions which have a MetadataAsValue argument (e.g. some target-specific intrinsics) MD canonicalization strips internal MDNodes with a single ConstantAsMetadata child. That prevented IRTranslator from the proper translation of such a calls.
-
Tobias Gysi authored
Compute the tiled producer slice dimensions directly starting from the consumer not using the producer at all. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D110147
-
Tobias Gysi authored
Add a helper method to check if an index vector contains a permutation of its indices. Additionally, refactor applyPermutationToVector to take int64_t. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D110135
-
Dmitry Preobrazhensky authored
Differential Revision: https://reviews.llvm.org/D109616
-
Petar Avramovic authored
-
Andy Wingo authored
Strip a layer of parentheses in TreeTransform::RebuildQualifiedType. Differential Revision: https://reviews.llvm.org/D108359
-
David Green authored
-
Nicolas Vasilache authored
It was previously assumed that tensor.insert_slice should be bufferized first in a greedy fashion to avoid out-of-place bufferization of the large tensor. This heuristic does not hold upon further inspection. This CL removes the special handling of such ops and adds a test that exhibits better behavior and appears in real use cases. The only test adversely affected is an artificial test which results in a returned memref: this pattern is not allowed by comprehensive bufferization in real scenarios anyway and the offending test is deleted. Differential Revision: https://reviews.llvm.org/D110072
-
Nicolas Vasilache authored
Previously, comprehensive bufferize would consider all aliasing reads and writes to the result buffer and matching operand. This resulted in spurious dependences being considered and resulted in too many unnecessary copies. Instead, this revision revisits the gathering of read and write alias sets. This results in fewer alloc and copies. An exhaustive test cases is added that considers all possible permutations of `matmul(extract_slice(fill), extract_slice(fill), ...)`.
-
Tobias Gysi authored
Assert the tile loop nest invariants are satisfied instead of failing silently. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D110137
-
Chris Bieneman authored
This patch replaces reliance on `goto failure` pattern with `llvm::scope_exit`. Reviewed By: bkramer Differential Revision: https://reviews.llvm.org/D109865
-
Ben Shi authored
Optimize (add (mul x, c0), c1) -> (ADDI (MUL (ADDI, c1/c0), c0), c1%c0), if c1/c0 and c1%c0 are simm12, while c1 is not. Optimize (add (mul x, c0), c1) -> (MUL (ADDI, c1/c0), c0), if c1%c0 is zero, and c1/c0 is simm12 while c1 is not. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D108607
-
Justas Janickas authored
Helper function `getDefaultOpenCLPointeeAddrSpace()` introduced to `ASTContext` class. It returns default OpenCL address space depending on language version and enabled features. If generic address space is supported, the helper function returns value `LangAS::opencl_generic`. Otherwise, value `LangAS::opencl_private` is returned. Code refactoring changes performed in several suitable places. Differential Revision: https://reviews.llvm.org/D109874
-
Anna Thomas authored
This patch allows sinking an instruction which can have multiple uses in a single user. We were previously over-restrictive by looking for exactly one use, rather than one user. Also added an API for retrieving a unique undroppable user. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D109700
-
Saiyedul Islam authored
Add documentation of unbundling of heterogeneous device archives to create device specific archives, as introduced by D93525. Also, add documentation for supported text file formats. Reviewed By: yaxunl Differential Revision: https://reviews.llvm.org/D110083
-
OGINO Masanori authored
The updated list is based on the output of cmake -G Ninja -S llvm -B build -DLLVM_ENABLE_PROJECTS='foo'. Differential Revision: https://reviews.llvm.org/D110124
-
Sanjay Patel authored
-
Dmitry Preobrazhensky authored
Differential Revision: https://reviews.llvm.org/D109614
-
hyeongyu kim authored
One of the two inputs of the Shufflevector is often a placeholder. Previously, there were cases where the placeholder was undef, and there were cases where it was poison. I added these constructors to create a placeholder consistently. Changing to use the newly added constructor will be written in a separate patch. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D110146
-
Nico Weber authored
-