- Dec 11, 2021
-
-
Uday Bondhugula authored
NFC. Move out and expose affine scalar replacement utility through affine utils. Renaming misleading forwardStoreToLoad -> affineScalarReplace. Update a stale doc comment. Differential Revision: https://reviews.llvm.org/D115495
-
Kirill Stoimenov authored
This is present in our assembly files. It should fix decorate_proc_maps.cpp failures because of shadow memory being allocated as executable. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D115552
-
Nicolas Vasilache authored
InsertSliceOp may have subprefix semantics where missing trailing dimensions are automatically inferred directly from the operand shape. This revision fixes an overflow that occurs in such cases when the impl is based on the op rank. Differential Revision: https://reviews.llvm.org/D115549
-
Nico Weber authored
-
Jayson Yan authored
This reverts commit 824eef23. file-summary-json.test and pretty-print.test fails on Windows.
-
John Ericson authored
This reverts commit 797b50d4. See the original D99484. @mib who noticed the original problem could not longer reproduce it, after I tried and also failed. We are threfore hoping it went away on its own! Reviewed By: mib Differential Revision: https://reviews.llvm.org/D115544
-
Joseph Huber authored
This reverts commit 7c8f4e7b. Fails a few OpenMP tests, causes a few updates to segfault.
-
Jonathan Peyton authored
Allow filtering of resources based on core attributes. There are two new attributes added: 1) Core Type (intel_atom, intel_core) 2) Core Efficiency (integer) where the higher the efficiency, the more performant the core On hybrid architectures , e.g., Alder Lake, users can specify KMP_HW_SUBSET=4c:intel_atom,4c:intel_core to select the first four Atom and first four Big cores. The can also use the efficiency syntax. e.g., KMP_HW_SUBSET=2c:eff0,2c:eff1 Differential Revision: https://reviews.llvm.org/D114901
-
Michael Liao authored
-
Sami Tolvanen authored
Inline assembly refererences to static functions with ThinLTO+CFI were fixed in D104058 by creating aliases for promoted functions. Creating the aliases unconditionally resulted in an unexpected size increase in a Chrome helper binary: https://bugs.chromium.org/p/chromium/issues/detail?id=1261715 This is caused by the compiler being unable to drop unused code now referenced by the alias in module-level inline assembly. This change adds a .set_conditional assembly extension, which emits an assignment only if the target symbol is also emitted, avoiding phantom references to functions that could have otherwise been dropped. This is an alternative to the solution proposed in D112761. Reviewed By: pcc, nickdesaulniers, MaskRay Differential Revision: https://reviews.llvm.org/D113613
-
Augie Fackler authored
Rust allows enums to be scopes, as shown by the previous change. Sadly, D111770 disallowed enums-as-scopes in the LLVM Verifier, which means that LLVM HEAD stopped working for Rust compiles. As a result, we back out the verifier part of D111770 with a modification to the testcase so we don't break this in the future. The testcase is now actual IR from rustc at commit 8f8092cc3, which is the nightly as of 2021-09-28. I would expect rustc 1.57 to produce similar or identical IR if someone wants to reproduce this IR in the future with minimal changes. A recipe for reproducing the IR using rustc is included in the test file. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D115353
-
LLVM GN Syncbot authored
-
Florian Mayer authored
This reverts commit 2a31b240.
-
River Riddle authored
This allows for passing in these attributes/types to constraints/rewrites as arguments. Differential Revision: https://reviews.llvm.org/D114817
-
River Riddle authored
* Constraints/Rewrites registered before a pattern was added were dropped * Constraints/Rewrites may be registered multiple times (if different pattern sets depend on them) * ModuleOp no longer has a terminator, so we shouldn't be removing the terminator from it Differential Revision: https://reviews.llvm.org/D114816
-
River Riddle authored
Switch the attribute creation operations to use attr-dict-with- keyword to avoid conflicts (in the case of pdl.attribute) and confusion(in the case of pdl_interp.create_attribute) with having a DictionaryAttr as a value and specifying the attributes of the operation itself (as a dictionary). Differential Revision: https://reviews.llvm.org/D114815
-
River Riddle authored
The results of a rewrite are optional, but we currently require them to be present in the assembly format. This commit makes the results component in the format optional. Differential Revision: https://reviews.llvm.org/D114814
-
Mogball authored
Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D115522
-
Mogball authored
Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D115514
-
Mogball authored
Custom ops that have no parser or printer should fall back to the dialect's parser and/or printer hooks. This avoids the need to define parsers and printers that simply dispatch to the dialect hook. Reviewed By: mehdi_amini, rriddle Differential Revision: https://reviews.llvm.org/D115481
-
Joseph Huber authored
In the OpenMC app we saw `omp target update` spending an awful lot of time in the shadow map traversal without ever doing any update there. There are two cases that allow us to avoid the traversal completely. The simplest thing is that small updates cannot (reasonably) contain an attached pointer part. The other case requires to track in the mapping table if an entry might contain an attached pointer as part. Given that we have a single location shadow map entries are created, the latter is actually fairly easy as well. Reviewed By: grokos Differential Revision: https://reviews.llvm.org/D113124
-
Florian Mayer authored
Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D114294
-
Duncan P. N. Exon Smith authored
Since 65b13610, raw_string_ostream has been unbuffered by default. Based on an audit of llvm/utils/, this commit removes every call to `raw_string_ostream::flush()` and any call to `raw_string_ostream::str()` whose result is ignored or that doesn't help with clarity. I left behind a few calls to `str()`. In these cases, the underlying std::string was declared pretty far away and never used again, whereas stream recently had its last write. The code is easier to read as-is; the no-op call to `flush()` inside `str()` isn't harmful, and when https://reviews.llvm.org/D115421 lands it'll be gone anyway.
-
Mircea Trofin authored
This is so we may reuse it. It was very non-inliner specific already. Differential Revision: https://reviews.llvm.org/D115465
-
Carlo Bertolli authored
and synchronous kernel launch implementations into a single synchronous version. This patch prepares the plugin for asynchronous implementation by: Privatizing actual kernel launch code (valid in both cases) into an anonymous namespace base function (submitted at D115267) - Separating the control flow path of asynchronous and synchronous kernel launch functions** (this diff) Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D115273 -
LLVM GN Syncbot authored
-
Jayson Yan authored
Adds JSONScopedPrinter to llvm-readelf. It includes an empty JSONELFDumper class which will be used to override any LLVMELFDumper methods which utilize startLine() which JSONScopedPrinter cannot provide. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D114225
-
Jayson Yan authored
This change adds a JSONScopedPrinter as a subclass to ScopedPrinter. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D114224
-
Jayson Yan authored
Add unit tests for the ScopedPrinter class. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D114684
-
Jayson Yan authored
Move printNumber(StringRef Label, StringRef Str, T Value) to be with the rest of the printNumber(...) methods. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D114741
-
Jayson Yan authored
Both std::string and char * implicitly convert to StringRef so the overloaded method using std::string and char* are unneeded. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D114740
-
Jayson Yan authored
Make the interface provided by ScopedPrinter virtual to support a future JSONScopedPrinter which will supply it's own implementation. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D114223
-
Simon Pilgrim authored
-
Joel E. Denny authored
D113602 broke the custom state machine when a reduction is present, as revealed by the reproducer this patch adds to the test suite. In that case, openmp-opts changes the return value to undef in `__kmpc_get_warp_size` (which the custom state machine calls as of D113602). Later optimizations then optimize away the custom state machine code as if all threads are outside the thread block, so the target region does not execute. D114802 fixed that but didn't add a reproducer. This patch also adds a `__OMP_RTL_ATTRS` entry for `__kmpc_get_warp_size` to OMPKinds.def, which D113602 missed. This change does not seem to have any impact on the reduction problem. Reviewed By: JonChesterfield, jdoerfert Differential Revision: https://reviews.llvm.org/D113824
-
Craig Topper authored
By adding the register class and funct as template parameters we can share the classes with all 3 extensions. I've used "let SchedRW =" to avoid repeating scheduler classes on multiple lines where we previously inherited from the Sched class. A subsequent patch will add mayRaiseFPException and FRM dependencies. Reducing the number of classes means less repeating for those changes. This of course conflicts with the Zfinx patch D93298. Reviewed By: achieveartificialintelligence Differential Revision: https://reviews.llvm.org/D115469
-
Adrian Prantl authored
DwarfExpression::addUnsignedConstant(const APInt &Value) only supports wider-than-64-bit values when it is used to emit a top-level DWARF expression representing the location of a variable. Before this change, it was possible to call addUnsignedConstant on >64 bit values within a subexpression when substituting DW_OP_LLVM_arg values. This can trigger an assertion failure (e.g. PR52584, PR52333) when it happens in a fragment (DW_OP_LLVM_fragment) expression, as addUnsignedConstant on >64 bit values splits the constant into separate DW_OP_pieces, which modifies DwarfExpression::OffsetInBits. This change papers over the assertion errors by bailing on overly wide DW_OP_LLVM_arg values. A more comprehensive fix might be to be to split wide values into pointer-sized fragments. [0] https://github.com/llvm/llvm-project/blob/e71fa03/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp#L799-L805 Patch by Ricky Zhou! Differential Revision: https://reviews.llvm.org/D115343
-
Craig Topper authored
We only used this to mark it as a reserved register. But that's not important if we don't do anything else with it. I think if we were ever to do anything with it, we would need to model it as a super register of FRM and FFLAGS. But it might be easier to reference both FRM and FFLAGS in implicit defs/uses for anything we were to do with "fcsr". Reviewed By: sepavloff Differential Revision: https://reviews.llvm.org/D115455
-
Zakk Chen authored
Every generated IR has a corresponding target-abi value, so encoding a non-empty value would improve the robustness and correctness. Reviewed By: asb, jrtc27, arichardson Differential Revision: https://reviews.llvm.org/D105555
-
Kazu Hirata authored
-
Denys Petrov authored
Summary: Handle intersected and adjacent ranges uniting them into a single one. Example: intersection [0, 10] U [5, 20] = [0, 20] adjacency [0, 10] U [11, 20] = [0, 20] Differential Revision: https://reviews.llvm.org/D99797
-