- Nov 20, 2020
-
-
Arthur Eubanks authored
Just '-O2' didn't run the full AA pipeline under NPM.
-
Arthur Eubanks authored
Already has a NPM RUN line
-
Tres Popp authored
This add missing updates to the header file that caused linking issues. Original change at https://reviews.llvm.org/D91740 Differential Revision: https://reviews.llvm.org/D91822
-
Geoffrey Martin-Noble authored
Unused since https://reviews.llvm.org/D91762 and triggering -Wunused-private-field ``` llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp:365:13: error: private field 'GetArgTLS' is not used [-Werror,-Wunused-private-field] Constant *GetArgTLS; ^ llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp:366:13: error: private field 'GetRetvalTLS' is not used [-Werror,-Wunused-private-field] Constant *GetRetvalTLS; ``` Reviewed By: stephan.yichao.zhao Differential Revision: https://reviews.llvm.org/D91820
-
Roman Lebedev authored
[InstCombine] Fold `and(shl(zext(x), width(SIGNMASK) - width(%x)), SIGNMASK)` to `and(sext(%x), SIGNMASK)` One less instruction and reducing use count of zext. As alive2 confirms, we're fine with all the weird combinations of undef elts in constants, but unless the shift amount was undef for a lane, we must sanitize undef mask to zero, since sign bits are no longer zeros. https://rise4fun.com/Alive/d7r ``` ---------------------------------------- Optimization: zz Precondition: ((C1 == (width(%r) - width(%x))) && isSignBit(C2)) %o0 = zext %x %o1 = shl %o0, C1 %r = and %o1, C2 => %n0 = sext %x %r = and %n0, C2 Done: 2016 Optimization is correct! ```
-
Roman Lebedev authored
-
Nikita Popov authored
Followup to 7de7c408. I previously removed a number of == comparisons to LocationSize::unknown(), but missed these != comparisons.
-
Alex Zinenko authored
Null types are commonly used as an error marker. Catch them in the constructor of Operation if they are present in the result type list, as otherwise this could lead to further surprising behavior when querying op result types. Fix AsyncToLLVM and StandardToLLVM that were using null types when constructing operations. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D91770
-
Jianzhou Zhao authored
clean more deadcode after D84704 Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D91762
-
Sean Silva authored
These utilities are more closely associated with the buffer optimizations and buffer deallocation than with the dialect conversion stuff in Bufferize.h. So move them out. This makes Bufferize.h very easy to understand and completely focused on dialect conversion. Differential Revision: https://reviews.llvm.org/D91563
-
Nikita Popov authored
Instead of comparing to LocationSize::unknown(), prefer calling the hasValue() method instead, which is less reliant on implementation details.
-
Nikita Popov authored
Followup to 393b9e9d, where I missed updating one MemoryLocation use inside a unit test.
-
Nikita Popov authored
When constructing a MemoryLocation by hand, require that a LocationSize is explicitly specified. D91649 will split up LocationSize::unknown() into two different states, and callers should make an explicit choice regarding the kind of MemoryLocation they want to have.
-
Tres Popp authored
Differential Revision: https://reviews.llvm.org/D91788
-
Jianzhou Zhao authored
UnionTableAddr is always inlined. Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/DD91758
-
Artur Pilipenko authored
Similarly to assumes and guards deoptimize intrinsics are marked as writing to ensure proper control dependencies but they never modify any particular memory location. Differential Revision: https://reviews.llvm.org/D91658
-
George authored
These pointers do not need to be mutable. This has an affect that generated function signatures in the Swift bindings now use `UnsafePointer` instead of `UnsafeMutablePointer`. Reviewed By: ftynse, mehdi_amini Differential Revision: https://reviews.llvm.org/D91740
-
Nikita Popov authored
Instead of separately passing pointer and size, make use of MemoryLocation. This allows us to also reuse all the existing logic for determining the MemoryLocation correponding to an instruction or call argument. Not quite NFC because used locations may be more precise in some cases.
-
Louis Dionne authored
-
Nikita Popov authored
Avoid MemoryLocation::UnknownSize when we're initializing a LocationSize.
-
Nico Weber authored
-
Arthur Eubanks authored
This moves handling of alwaysinline, coroutines, matrix lowering, PGO, and LTO-required passes into PassBuilder. Much of this is replicated between Clang and opt. Other out-of-tree users also replicate some of this, such as Rust [1] replicating the alwaysinline, LTO, and PGO passes. The LTO passes are also now run in build(Thin)LTOPreLinkDefaultPipeline() since they are semantically required for (Thin)LTO. [1]: https://github.com/rust-lang/rust/blob/f5230fbf76bafd86ee4376a0e26e551df8d17fec/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp#L896 Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D91585
-
Jorge Gorbe Moya authored
In the current state, if getFromHash(0) is called and there's no CU with dwo_id=0, the lookup will stop at an empty slot, then the check `Rows[H].getSignature() != S` won't cause the lookup to fail and return a nullptr (as it should), because the empty slot has a 0 in the signature field, and a pointer to the empty slot will be incorrectly returned. This patch fixes this by using the index field in the hash entry to check for empty slots: signature = 0 can match a valid hash but according to the spec the index for an occupied slot will always be non-zero. Differential Revision: https://reviews.llvm.org/D91670
-
Sam McCall authored
-
River Riddle authored
* Move ops to a BuiltinOps.h * Add file comments
-
Sam McCall authored
Differential Revision: https://reviews.llvm.org/D91299
-
AndreyChurbanov authored
Patch by tlwilmar (Terry Wilmarth) Differential Revision: https://reviews.llvm.org/D91189
-
Fraser Cormack authored
-
Louis Dionne authored
-
Artem Belevich authored
Standard libc++ headers in stdc++ mode include <new> which picks up cuda_wrappers/new before any of the CUDA macros have been defined. We can not include CUDA headers that early, so the work-around is to define __device__ in the wrapper header itself. Differential Revision: https://reviews.llvm.org/D91807
-
Stella Stamenova authored
Generate passes.h before trying to use it Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D91750
-
Leonard Chan authored
The `dso_local_equivalent` constant is a wrapper for functions that represents a value which is functionally equivalent to the global passed to this. That is, if this accepts a function, calling this constant should have the same effects as calling the function directly. This could be a direct reference to the function, the `@plt` modifier on X86/AArch64, a thunk, or anything that's equivalent to the resolved function as a call target. When lowered, the returned address must have a constant offset at link time from some other symbol defined within the same binary. The address of this value is also insignificant. The name is leveraged from `dso_local` where use of a function or variable is resolved to a symbol in the same linkage unit. In this patch: - Addition of `dso_local_equivalent` and handling it - Update Constant::needsRelocation() to strip constant inbound GEPs and take advantage of `dso_local_equivalent` for relative references This is useful for the [Relative VTables C++ ABI](https://reviews.llvm.org/D72959) which makes vtables readonly. This works by replacing the dynamic relocations for function pointers in them with static relocations that represent the offset between the vtable and virtual functions. If a function is externally defined, `dso_local_equivalent` can be used as a generic wrapper for the function to still allow for this static offset calculation to be done. See [RFC](http://lists.llvm.org/pipermail/llvm-dev/2020-August/144469.html) for more details. Differential Revision: https://reviews.llvm.org/D77248
-
ergawy authored
This commit does the renaming mentioned in the title in order to bring 'spv' dialect closer to the MLIR naming conventions. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D91792
-
Raphael Isemann authored
-
Teresa Johnson authored
Add an interface so that the profile can be dumped on demand. Differential Revision: https://reviews.llvm.org/D91768
-
Nathan James authored
Consider this code: ``` if (Cond) { #ifdef X_SUPPORTED X(); #else return; #endif } else { Y(); } Z();``` In this example, if `X_SUPPORTED` is not defined, currently we'll get a warning from the else-after-return check. However If we apply that fix, and then the code is recompiled with `X_SUPPORTED` defined, we have inadvertently changed the behaviour of the if statement due to the else being removed. Code flow when `Cond` is `true` will be: ``` X(); Y(); Z();``` where as before the fix it was: ``` X(); Z();``` This patch adds checks that guard against `#endif` directives appearing between the control flow interrupter and the else and not applying the fix if they are detected. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D91485 -
Fraser Cormack authored
This moves the recognition of GREVI and GORCI from TableGen patterns into a DAGCombine. This is done primarily to match "deeper" patterns in the future, like (grevi (grevi x, 1) 2) -> (grevi x, 3). TableGen is not best suited to matching patterns such as these as the compile time of the DAG matchers quickly gets out of hand due to the expansion of commutative permutations. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D91259
-
Lei Zhang authored
This reverts commit 9b475258 and falls back to the original parallel-iterators-as-leading- dimensions convention. We can control the loop order by first converting the named op into linalg.generic and then performing interchange. Reviewed By: nicolasvasilache, asaadaldien Differential Revision: https://reviews.llvm.org/D91796
-
Adhemerval Zanella authored
On AArch64 it allows use the native FP16 ABI (although libcalls are not emitted for fptrunc/fpext lowering), while on other architectures the expected current semantic is preserved (arm for instance). Differential Revision: https://reviews.llvm.org/D91733
-
Adhemerval Zanella authored
This patch adds both extendhftf2 and trunctfhf2 to support conversion between half-precision and quad-precision floating-point values. They are enabled iff the compiler supports _Float16. Some notes on ARM plaforms: while __fp16 is supported on all architectures, _Float16 is supported only for 32-bit ARM, 64-bit ARM, and SPIR (as indicated by clang/docs/LanguageExtensions.rst). Also, __fp16 is a storage format and promoted to 'float' for argument passing and 64-bit ARM supports floating-point convert precision to half as base armv8-a instruction. It means that although extendhfsf2, truncdfhf2 __truncsfhf2 will be built for 64-bit ARM, they will be never used in practice (compiler won't emit libcall to them). This patch does not change the ABI for 32-bit ARM, it will continue to pass _Float16 as uint16. Differential Revision: https://reviews.llvm.org/D91732
-