- Aug 05, 2020
-
-
Yash Jain authored
Simplify semi-affine expression for the operations like ceildiv, floordiv and modulo by any given symbol by checking divisibilty by that symbol. Some properties used in simplification are: 1) Commutative property of the floordiv and ceildiv: ((expr1 floordiv expr2) floordiv expr3 ) = ((expr1 floordiv expr3) floordiv expr2) ((expr1 ceildiv expr2) ceildiv expr3 ) = ((expr1 ceildiv expr3) ceildiv expr2) While simplification if operations are different no simplification is possible as there is no property that simplify expressions like these: ((expr1 ceildiv expr2) floordiv expr3) or ((expr1 floordiv expr2) ceildiv expr3). 2) If both expr1 and expr2 are divisible by the expr3 then: (expr1 % expr2) / expr3 = ((expr1 / expr3) % (expr2 / expr3)) where / is divide symbol. 3) If expr1 is divisible by expr2 then expr1 % expr2 = 0. Signed-off-by:
Yash Jain <yash.jain@polymagelabs.com> Differential Revision: https://reviews.llvm.org/D84920
-
Cameron McInally authored
These tests were made redundant by D85139.
-
Xing GUO authored
This patch fixes the undefined behavior that reported by ubsan. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/44524/
-
Matt Arsenault authored
Fixes verifier error with SGPR unmerges with 96-bit result types.
-
Cameron McInally authored
This patch stops unconditionally transforming FSUB(-0, X) into an FNEG(X) while building the MIR. This corresponds with the SelectionDAGISel change in D84056. Differential Revision: https://reviews.llvm.org/D85139
-
Jonas Devlieghere authored
Upstream the code for dealing with TCC introduced in macOS Mojave. This will make the debuggee instead of the debugger responsible for the privileges it needs. Differential revision: https://reviews.llvm.org/D85217
-
Sanjay Patel authored
-
- Aug 04, 2020
-
-
Florian Hahn authored
-
Matt Arsenault authored
There seems to be an unrelated CSEMIRBuilder bug that was causing expensive checks failures in this case. Hack the test to avoid this problem for now until that's fixed.
-
Fangrui Song authored
for the advantage outlined by D83639 ([OptTable] Support grouped short options) Some behavior changes: * -i={0,false} is removed. Use --no-inlines instead. * --demangle={0,false} is removed. Use --no-demangle instead * -untag-addresses={0,false} is removed. Use --no-untag-addresses instead Added a higher level API OptTable::parseArgs which handles optional initial options populated from an environment variable, expands response files recursively, and parses options. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D83530 -
AndreyChurbanov authored
Patch by mati865@gmail.com Differential Revision: https://reviews.llvm.org/D85210
-
Yonghong Song authored
This patch added the following additional compile-once run-everywhere (CO-RE) relocations: - existence/size of typedef, struct/union or enum type - enum value and enum value existence These additional relocations will make CO-RE bpf programs more adaptive for potential kernel internal data structure changes. For existence/size relocations, the following two code patterns are supported: 1. uint32_t __builtin_preserve_type_info(*(<type> *)0, flag); 2. <type> var; uint32_t __builtin_preserve_field_info(var, flag); flag = 0 for existence relocation and flag = 1 for size relocation. For enum value existence and enum value relocations, the following code pattern is supported: uint64_t __builtin_preserve_enum_value(*(<enum_type> *)<enum_value>, flag); flag = 0 means existence relocation and flag = 1 for enum value. relocation. In the above <enum_type> can be an enum type or a typedef to enum type. The <enum_value> needs to be an enumerator value from the same enum type. The return type is uint64_t to permit potential 64bit enumerator values. Differential Revision: https://reviews.llvm.org/D83242 -
Nemanja Ivanovic authored
The swap removal pass looks to remove swaps when a loaded value is swapped, some number of lane-insensitive operations are performed and then the value is swapped again and stored. However, in a situation where we load the value, swap it and then store it without swapping again, the pass erroneously removes the single swap. The reason is that both checks in the same equivalence class: - load feeds a swap - swap feeds a store pass. However, there is no check that the two swaps are actually a single swap. This patch just fixes that. Differential revision: https://reviews.llvm.org/D84785
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Jay Foad authored
The custom lowering saves an instruction over the generic expansion, by taking advantage of the fact that PowerPC shift instructions are well defined in the shift-by-bitwidth case. Differential Revision: https://reviews.llvm.org/D83948
-
Jordan Rupprecht authored
In these two cases, use of `os.path.realpath` is problematic: - The name of the compiler is significant [1] . For testing purposes, we might provide a compiler called "clang" which is actually a symlink to some build script (which does some flag processing before invoking the real clang). The destination the symlink may not be called "clang", but we still want it to be treated as such. - When using a build system that puts build artifacts in an arbitrary build location, and later creates a symlink for it (e.g. creates a "<lldb root>/lldbsuite/test/dotest.py" symlinks that points to "/build/artifact/<hash>/dotest.py"), looking at the realpath will not match the "test" convention required here. [1] See `Makefile.rules` in the lldb tree, e.g. we use different flags if the compiler is named "clang" Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D85175
-
Jay Foad authored
This gives shorter f64 code and perhaps better accuracy. Differential Revision: https://reviews.llvm.org/D84516
-
Jay Foad authored
Differential Revision: https://reviews.llvm.org/D84515
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Now that rG47cea9e8 lets us aggressively decode multi-use shuffles for the OR(SHUFFLE(),SHUFFLE()) case we don't need the computeKnownBits variant any more.
-
Simon Pilgrim authored
Don't double indent and make it clear we're referting to the latency mode.
-
Erich Keane authored
Some shipped versions of stdlib.h use nonnull and nothrow with function multiversioning. Support these, as they are generally harmless.
-
Erich Keane authored
Since we permit using SOME attributes (at the moment, just 1) with multiversioning, we should improve the message as it still implies that no attributes should be combined with multiversioning.
-
Eduardo Caldas authored
Differential Revision: https://reviews.llvm.org/D85146
-
Nicolas Vasilache authored
The `splitFullAndPartialTransferPrecondition` has a restrictive condition to prevent the pattern to be applied recursively if it is nested under an scf.IfOp. Relaxing the condition to the immediate parent op must not be an scf.IfOp lets the pattern be applied more generally while still preventing recursion. Differential Revision: https://reviews.llvm.org/D85209
-
Eduardo Caldas authored
We use inheritance to model the grammar's disjunction rule: literal: integer-literal character-literal floating-point-literal string-literal boolean-literal pointer-literal user-defined-literal Differential Revision: https://reviews.llvm.org/D85186
-
Nemanja Ivanovic authored
Commit https://reviews.llvm.org/rGcd53ded557c3 attempts to fix the computation in computeHostNumPhysicalCores() to respect Affinity. However, the GLIBC wrapper of the affinity system call fails with a default size of cpu_set_t on systems that have more than 1024 CPUs. This just fixes the computation on such large machines.
-
Haojian Wu authored
Differential Revision: https://reviews.llvm.org/D85124
-
Simon Pilgrim authored
The only use was removed at rG36750ba5 Thanks to @nemanjai for the heads up
-
Simon Pilgrim authored
Permit lane-crossing post shuffles on AVX1 targets as long as every element comes from the same source lane, which for v8f32/v4f64 cases can be efficiently lowered with the LowerShuffleAsLanePermuteAnd* style methods.
-
Russell Gallop authored
This produces a chrome://tracing compatible trace file in the same way as -ftime-trace. This can be useful in optimising test time where one long test is causing long overall test time on a wide machine. This also helped in finding tests which have side effects on others (e.g. https://reviews.llvm.org/D84885). Differential Revision: https://reviews.llvm.org/D84931
-
Nicolas Vasilache authored
[mlir][Vector] Add linalg.copy-based pattern for splitting vector.transfer_read into full and partial copies. This revision adds a transformation and a pattern that rewrites a "maybe masked" `vector.transfer_read %view[...], %pad `into a pattern resembling: ``` %1:3 = scf.if (%inBounds) { scf.yield %view : memref<A...>, index, index } else { %2 = linalg.fill(%extra_alloc, %pad) %3 = subview %view [...][...][...] linalg.copy(%3, %alloc) memref_cast %extra_alloc: memref<B...> to memref<A...> scf.yield %4 : memref<A...>, index, index } %res= vector.transfer_read %1#0[%1#1, %1#2] {masked = [false ... false]} ``` where `extra_alloc` is a top of the function alloca'ed buffer of one vector. This rewrite makes it possible to realize the "always full tile" abstraction where vector.transfer_read operations are guaranteed to read from a padded full buffer. The extra work only occurs on the boundary tiles. -
Sanjay Patel authored
This is based on the existing code for the non-intrinsic idioms in InstCombine. The vector constant constraint is non-obvious: undefs should be ok in the outer call, but they can't propagate safely from the inner call in all cases. Example: https://alive2.llvm.org/ce/z/-2bVbM define <2 x i8> @src(<2 x i8> %x) { %0: %m = umin <2 x i8> %x, { 7, undef } %m2 = umin <2 x i8> { 9, 9 }, %m ret <2 x i8> %m2 } => define <2 x i8> @tgt(<2 x i8> %x) { %0: %m = umin <2 x i8> %x, { 7, undef } ret <2 x i8> %m } Transformation doesn't verify! ERROR: Value mismatch Example: <2 x i8> %x = < undef, undef > Source: <2 x i8> %m = < #x00 (0) [based on undef value], #x00 (0) > <2 x i8> %m2 = < #x00 (0), #x00 (0) > Target: <2 x i8> %m = < #x07 (7), #x10 (16) > Source value: < #x00 (0), #x00 (0) > Target value: < #x07 (7), #x10 (16) >
-
Alex Zinenko authored
GCC5 seems to dislike generic lambdas calling a method of the class containing the lambda without explicit `this`.
-
Alex Zinenko authored
A new first-party modeling for LLVM IR types in the LLVM dialect has been developed in parallel to the existing modeling based on wrapping LLVM `Type *` instances. It resolves the long-standing problem of modeling identified structure types, including recursive structures, and enables future removal of LLVMContext and related locking mechanisms from LLVMDialect. This commit only switches the modeling by (a) renaming LLVMTypeNew to LLVMType, (b) removing the old implementaiton of LLVMType, and (c) updating the tests. It is intentionally minimal. Separate commits will remove the infrastructure built for the transition and update API uses where appropriate. Depends On D85020 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D85021
-
Sanjay Patel authored
-
Sanjay Patel authored
This should probably be moved up to some common area eventually when there's another user.
-
Alex Zinenko authored
These are intended to smoothen the transition and may be removed in the future in favor of more MLIR-compatible APIs. They intentionally have the same semantics as the existing functions, which must remain stable until the transition is complete. Depends On D85019 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D85020
-
Alex Zinenko authored
With new LLVM dialect type modeling, the dialect types no longer wrap LLVM IR types. Therefore, they need to be translated to and from LLVM IR during export and import. Introduce the relevant functionality for translating types. It is currently exercised by an ad-hoc type translation roundtripping test that will be subsumed by the actual translation test when the type system transition is complete. Depends On D84339 Reviewed By: herhut Differential Revision: https://reviews.llvm.org/D85019
-