- Aug 27, 2020
-
-
Florian Hahn authored
For DSE with MemorySSA it is beneficial to manually traverse the defining access, instead of using a MemorySSA walker, so we can better control the number of steps together with other limits and also weed out invalid/unprofitable paths early on. This patch requires a follow-up patch to be most effective, which I will share soon after putting this patch up. This temporarily XFAIL's the limit tests, because we now explore more MemoryDefs that may not alias/clobber the killing def. This will be improved/fixed by the follow-up patch. This patch also renames some `Dom*` variables to `Earlier*`, because the dominance relation is not really used/important here and potentially confusing. This patch allows us to aggressively cut down compile time, geomean -O3 -0.64%, ReleaseThinLTO -1.65%, at the expense of fewer stores removed. Subsequent patches will increase the number of removed stores again, while keeping compile-time in check. http://llvm-compile-time-tracker.com/compare.php?from=d8e3294118a8c5f3f97688a704d5a05b67646012&to=0a929b6978a068af8ddb02d0d4714a2843dd8ba9&stat=instructions Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D86486
-
Rainer Orth authored
A build on `sparcv9-sun-solaris2.11` with `-DLLVM_ENABLE_PIC=Off` failed linking `LLVMPolly.so`: [2277/2297] Linking CXX shared module lib/LLVMPolly.so FAILED: lib/LLVMPolly.so [...] ld: fatal: relocation error: R_SPARC_H44: file tools/polly/lib/CMakeFiles/obj.Polly.dir/Analysis/DependenceInfo.cpp.o: symbol .data._ZL16__gthread_active (section): invalid shared object relocation type: ABS44 code model unsupported [...] As on many other targets, one cannot link non-PIC objects into a shared object on Solaris/sparcv9. The following patch avoids this by not building the library without PIC. It allowed the build to finish. Differential Revision: https://reviews.llvm.org/D85627
-
Vitaly Buka authored
-
Sjoerd Meijer authored
This reverts commit 8d5f64c4. Thanks to Eli Friedma for pointing out that this check is not appropiate here, this check will be moved to the Lint pass.
-
Piotr Sobczak authored
There is no justification for changing vcc_lo to vcc when shrinking V_CNDMASK, and such a change could later confuse live variable analysis. Make sure the original register is preserved. Differential Revision: https://reviews.llvm.org/D86541
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D86606
-
Sjoerd Meijer authored
We had already specified that second argument `n` of this intrinsic is `n > 0`, but now add to this that the result is a poison value if this is not the case. Differential Revision: https://reviews.llvm.org/D86637
-
Shinji Okumura authored
Currently, an undef value is reduced to 0 when it is added to a set of potential values. This patch introduces a flag for under values. By this, for example, we can merge two states `{undef}`, `{1}` to `{1}` (because we can reduce the undef to 1). Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D85592 -
Sam Parker authored
Enable default outlining when the function has the minsize attribute and we're targeting an m-class core. Differential Revision: https://reviews.llvm.org/D82951
-
Martin Storsjö authored
This reverts commit 99364552. That commit caused failed assertions e.g. like this: $ cat alloca.c a; b() { float c; d(); a = __builtin_alloca(d); c = e(); f(a); return c; } $ clang -target aarch64-linux-gnu -c alloca.c -O2 clang: ../lib/Target/AArch64/AArch64InstrInfo.cpp:3446: void llvm::emitFrameOffset(llvm::MachineBasicBlock&, llvm::MachineBasicBlock::iterator, const llvm::DebugLoc&, unsigned int, unsigned int, llvm::StackOffset, const llvm::TargetInstrInfo*, llvm::MachineInstr::MIFlag, bool, bool, bool*): Assertion `(DestReg != AArch64::SP || Bytes % 16 == 0) && "SP increment/decrement not 16-byte aligned"' failed.
-
Kazuaki Ishizaki authored
Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D86648
-
George Mitenkov authored
This patch allows to pass the gpu module name to SPIR-V module during conversion. This has many benefits as we can lookup converted to SPIR-V kernel in the symbol table. In order to avoid symbol conflicts, `"__spv__"` is added to the gpu module name to form the new one. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D86384
-
luxufan authored
Implements the assemble and disassemble support of RISCV Vector extension zvamo instructions, base on the 0.9 spec version. Reviewed by HsiangKai Differential Revision: https://reviews.llvm.org/D85069
-
Sam Parker authored
Fix the ARM backend's analyzeBranch so it doesn't ignore predicated return instructions, and make the MachineVerifier rule more strict. Differential Revision: https://reviews.llvm.org/D40061
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
Jez Ng authored
Summary: It was passing on my local machine due to previously-written files cached in the test output folder.
-
George Mitenkov authored
This patch introduces a hook to encode descriptor set and binding number into `spv.globalVariable`'s symbolic name. This allows to preserve this information, and at the same time legalize the global variable for the conversion to LLVM dialect. This is required for `mlir-spirv-cpu-runner` to convert kernel arguments into LLVM. Also, a couple of some nits added: - removed unused comment - changed to a capital letter in the comment Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D86515
-
Eduardo Caldas authored
Previously a NodeRole would generally be prefixed with the `NodeKind`, we remove this prefix, as it we redundant and made tests more noisy. Differential Revision: https://reviews.llvm.org/D86636
-
Brad Smith authored
-
QingShan Zhang authored
-
Mehdi Amini authored
This makes OpPassManager more of a "container" of passes and not responsible to drive the execution. As such we also make it constructible publicly, which will allow to build arbitrary pipeline decoupled from the execution. We'll make use of this facility to expose "dynamic pipeline" in the future. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D86391
-
George Mitenkov authored
This patch updates the type conversion section of the documentation. It includes the modelling of array strides and the mapping of the naturally padded structs. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D86674
-
Jianzhou Zhao authored
This happens when generating a huge file by LTO, for example, with -gmlt. When BitNo is > 2^35, ByteNo is overflowed, and an incorrect output offset is overwritten. This generates ill-formed bitcodes. Reviewed-by: tejohnson, vitalybuka Differential Revision: https://reviews.llvm.org/D86645
-
George Mitenkov authored
This patch adds an optional name to SPIR-V module. This will help with lowering from GPU dialect (so that we can pass the kernel module name) and will be more naturally aligned with `GPUModuleOp`/`ModuleOp`. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D86386
-
Amy Kwan authored
This patch implements the function prototypes vec_mulh and vec_dive in order to utilize the vector multiply high (vmulh[s|u][w|d]) and vector divide extended (vdive[s|u][w|d]) instructions introduced in Power10. Differential Revision: https://reviews.llvm.org/D82609
-
Ni Hui authored
error message /usr/bin/ld: CMakeFiles/mlir-opt.dir/mlir-opt.cpp.o: in function `main': mlir-opt.cpp:(.text.startup.main+0xb9): undefined reference to `mlir::registerTestDialect(mlir::DialectRegistry&)' Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D86592
-
Jez Ng authored
Differential Revision: https://reviews.llvm.org/D86640
-
Jez Ng authored
Previously, we were only emitting regular bindings to weak dynamic symbols; this diff adds support for the weak bindings too, which can overwrite the regular bindings at runtime. We also treat weak defined global symbols similarly -- since they can also be interposed at runtime, they need to be treated as potentially dynamic symbols. Note that weak bindings differ from regular bindings in that they do not specify the dylib to do the lookup in (i.e. weak symbol lookup happens in a flat namespace.) Differential Revision: https://reviews.llvm.org/D86572
-
Jez Ng authored
Previously, the BindingEntry struct could only store bindings to offsets within InputSections. Since the GOTSection and TLVPointerSections are OutputSections, I handled those in a separate code path. However, this makes it awkward to support weak bindings properly without code duplication. This diff allows BindingEntries to point directly to OutputSections, simplifying the upcoming weak binding implementation. Along the way, I also converted a bunch of functions taking references to symbols to take pointers instead. Given how much casting we do for Symbol (especially in the upcoming weak binding diffs), it's cleaner this way. Differential Revision: https://reviews.llvm.org/D86571
-
Jez Ng authored
It's roughly like -force_load with some filtering. Differential Revision: https://reviews.llvm.org/D86181
-
Jez Ng authored
The re-exports list in a TAPI document can either refer to other inlined TAPI documents, or to on-disk files (which may themselves be TBD or regular files.) Similarly, the re-exports of a regular dylib can refer to a TBD file. Differential Revision: https://reviews.llvm.org/D85404
-
Jez Ng authored
Two things needed fixing for that to work: 1. getName() no longer returns null for DylibFiles constructed from TAPIs 2. markSubLibrary() now accepts .tbd as a possible extension Differential Revision: https://reviews.llvm.org/D86180
-
Jez Ng authored
This matches ld64's behavior Differential Revision: https://reviews.llvm.org/D85992
-
LLVM GN Syncbot authored
-
Ryan Prichard authored
Differential Revision: https://reviews.llvm.org/D86255
-
Ryan Prichard authored
* When _LIBUNWIND_SUPPORT_COMPACT_UNWIND is defined in config.h, define it to "1" like the other macros. These macros are still checked using "#if defined(...)", however. * Include libunwind.h in AddressSpace.hpp before using _LIBUNWIND_ARM_EHABI. * Rename ProcessFrameHeaderCache to TheFrameHeaderCache, because some configurations (e.g. Android / hermetic static libraries) can have one cache per shared object in the process. (When there are more copies, it's more important not to waste memory in the cache.) * Add 3 missing header files to LIBUNWIND_HEADERS. Differential Revision: https://reviews.llvm.org/D86254
-
Matt Arsenault authored
I forgot to squash this with 0b7f6cc7
-
Matt Arsenault authored
AArch64, X86 and Mips currently directly consumes these and custom lowering to produce a libcall, but really these should follow the normal legalization process through the libcall/lower action.
-
Lang Hames authored
This will make stateful registrars (e.g. a future TargetProcessControl based registrar) easier to deal with.
-