- Mar 05, 2020
-
-
River Riddle authored
Summary: This revision removes all of the functionality related to successor operands on the core Operation class. This greatly simplifies a lot of handling of operands, as well as successors. For example, DialectConversion no longer needs a special "matchAndRewrite" for branching terminator operations.(Note, the existing method was also broken for operations with variadic successors!!) This also enables terminator operations to define their own relationships with successor arguments, instead of the hardcoded "pass-through" behavior that exists today. Differential Revision: https://reviews.llvm.org/D75318
-
River Riddle authored
This greatly simplifies the requirements for builders using this mechanism for managing variadic operands. Differential Revision: https://reviews.llvm.org/D75317
-
River Riddle authored
The existing API for successor operands on operations is in the process of being removed. This revision simplifies a later one that completely removes the existing API. Differential Revision: https://reviews.llvm.org/D75316
-
River Riddle authored
This attribute details the segment sizes for operand groups within the operation. This revision add support for automatically populating this attribute in the declarative parser. Differential Revision: https://reviews.llvm.org/D75315
-
River Riddle authored
[mlir] Add a new BranchOpInterface to allow for opaquely interfacing with branching terminator operations. This interface contains the necessary components to provide the same builtin behavior that terminators have. This will be used in future revisions to remove many of the hardcoded constraints placed on successors and successor operands. The interface initially contains three methods: ```c++ // Return a set of values corresponding to the operands for successor 'index', or None if the operands do not correspond to materialized values. Optional<OperandRange> getSuccessorOperands(unsigned index); // Return true if this terminator can have it's successor operands erased. bool canEraseSuccessorOperand(); // Erase the operand of a successor. This is only valid to call if 'canEraseSuccessorOperand' returns true. void eraseSuccessorOperand(unsigned succIdx, unsigned opIdx); ``` Differential Revision: https://reviews.llvm.org/D75314
-
River Riddle authored
This allows for simplifying OpDefGen, as well providing specializing accessors for the different successor counts. This mirrors the existing traits for operands and results. Differential Revision: https://reviews.llvm.org/D75313
-
Nathan Ridge authored
Summary: Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75292
-
Jon Chesterfield authored
Summary: [libomptarget] Implement locks for amdgcn The nvptx implementation deadlocks on amdgcn. atomic_cas with multiple active lanes can deadlock - if one lane succeeds, all the others are locked out. The set_lock implementation therefore runs on a single lane. Also uses a sleep intrinsic instead of the system clock for a probably minor performance improvement. The unset/test implementations may be revised later, based on code size / performance or similar concerns. This implements the lock at a per-wavefront scope. That's not strictly as specified, since openmp describes locks in terms of threads. I think the nvptx implementation provides true per-thread locking on volta and the same per-warp locking on other architectures. Reviewers: jdoerfert, ABataev, grokos Reviewed By: jdoerfert Subscribers: jvesely, mgorny, jfb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D75546
-
Yitzhak Mandelbaum authored
Summary: Currently, `optionally` can take multiple arguments, which commits it to a particular strategy for those arguments (in this case, "for each"). We limit the matcher to a single argument, which avoids any potential confusion and simplifies the implementation. The user can retrieve multiple-argument optionality, by explicitly using the desired operator (like `forEach`, `anyOf`, `allOf`, etc.) with all children wrapped in `optionally`. Reviewers: sbenza, aaron.ballman Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75556
-
Alexey Bataev authored
Added codegen for update clause in depobj. Reads the number of the elements from the first element and updates flags for each element in the loop. ``` omp_depend_t x; kmp_depend_info *base = (kmp_depend_info *)x; intptr_t num = x[-1].base_addr; kmp_depend_info *end = x + num; kmp_depend_info *el = base; do { el.flags = new_flag; el = &el[1]; } while (el != end); ```
-
Alexey Bataev authored
in depobj object. The first element in the list of the dependencies is used for internal purposes to store the number of the elements in the provided list. The first element now is skipped and depobj object poits exactly to the list of dependencies.
-
Alex Brachet authored
This revision creates abort and _Exit implementations Differential Revision: https://reviews.llvm.org/D74949
-
Jessica Paquette authored
Previously for any copy from a register bigger than the destination: Copied to a same-sized register in the destination register bank. Subregister copy of that to the destination. This fails for copies from 128-bit FPRs to GPRs because the GPR register bank can't accomodate 128-bit values. Instead of special-casing such copies to perform the truncation beforehand in the source register bank, generalize this: a) Perform a subregister copy straight from source register whenever possible. This results in shorter MIR and fixes the above problem. b) Perform a full copy to target bank and then do a subregister copy only if source bank can't support target's size. E.g. GPR to 8-bit FPR copy. Patch by Raul Tambre (tambre)! Differential Revision: https://reviews.llvm.org/D75421
-
Fangrui Song authored
Reviewed By: #powerpc, sfertile Differential Revision: https://reviews.llvm.org/D75494
-
MaheshRavishankar authored
The current setup of the GPU dialect is to model both the host and device side codegen. For cases (like IREE) the host side modeling might not directly fit its use case, but device-side codegen is still valuable. First step in accessing just the device-side functionality of the GPU dialect is to allow just creating a gpu.func operation from a gpu.launch operation. In addition this change also "inlines" operations into the gpu.func op at time of creation instead of this being a later step. Differential Revision: https://reviews.llvm.org/D75287
-
Fangrui Song authored
* Delete boilerplate * Change functions to return `Error` * Test parsing errors * Update callers of ARMAttributeParser::parse() to check the `Error` return value. Since this patch touches nearly everything in the file, I apply http://llvm.org/docs/Proposals/VariableNames.html and change variable names to lower case. Reviewed By: compnerd Differential Revision: https://reviews.llvm.org/D75015
-
Aaron Puchert authored
Summary: It's basically Doxygen's version of a link and can happen anywhere inside of a paragraph. Fixes a bogus warning about empty paragraphs when a parameter description starts with a link. Reviewers: gribozavr2 Reviewed By: gribozavr2 Differential Revision: https://reviews.llvm.org/D75632
-
Mitch Phillips authored
Summary: GWP-ASan currently reports <unknown> thread ID, as the crash handler merge dropped the include. Oops. Reviewers: morehouse Reviewed By: morehouse Subscribers: eugenis, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D75693
-
Fangrui Song authored
This fixes several issues. The behavior changes are: A SHN_COMMON symbol does not have the 'g' flag. An undefined symbol does not have 'g' or 'l' flag. A STB_GLOBAL SymbolRef::ST_Unknown symbol has the 'g' flag. A STB_LOCAL SymbolRef::ST_Unknown symbol has the 'l' flag. Reviewed By: rupprecht Differential Revision: https://reviews.llvm.org/D75659
-
Adrian Prantl authored
Block copy/destroy helpers are now linkonce_odr functions, meant to be uniqued, and thus attaching debug information from one translation unit (or even just from one instance of many inside one translation unit) would be misleading and wrong in the general case. This effectively reverts commit 9c6b6826. <rdar://problem/59137040> Differential Revision: https://reviews.llvm.org/D75615
-
Hiroshi Yamauchi authored
Summary: This performs better for sample PGO. NFC as PGSOColdCodeOnlyForSamplePGO is still true. Reviewers: davidxl Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75550
-
Jordan Rupprecht authored
This changes the output of `llvm-readelf -n` from: ``` Displaying notes found at file offset 0x<...> with length 0x<...>: ``` to: ``` Displaying notes found in: .note.foo ``` And similarly, adds a `Name:` field to the `llvm-readobj -n` output for notes. This change not only increases GNU compatibility, it also makes it much easier to read notes. Note that we still fall back to printing the file offset/length in cases where we don't have a section name, such as when printing notes in program headers or printing notes in a partially stripped file (GNU readelf does the same). Fixes llvm.org/PR41339. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D75647
-
Philip Reames authored
-
Pablo Barrio authored
The Memory Tagging Extension was introduced in Armv8.5-A.
-
Benjamin Kramer authored
-
Rodrigo Dominguez authored
Summary: Add tests for 64-bit image atomic swap and cmpswap. Fix tests for 32-bit image atomic add. Change-Id: Ibb7619749c1ad504b24aa1c5f3185417a3013f3c Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, jfb, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75295
-
David Stuttard authored
Summary: This seems like an obvious error - cut and paste issue? The change does make a change to one of the lit tests - it stops s_buffer_load re-ordering past an MUBUF instruction (which is not surprising). Change-Id: I80be99de5b62af4f42e91af2591b76a52ac9efa6 Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, tpr, t-tye, hiraditya, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75686
-
Jon Chesterfield authored
Summary: [libomptarget][nfc] Move GetWarp/LaneId functions into per arch code No code change for nvptx. Amdgcn currently has two implementations of GetLaneId, this patch keeps the one a colleague considered to be superior for our ISA. GetWarpId is currently the same function for amdgcn and nvptx, but I think it's cleaner to keep it grouped with all the others than to keep it in support.cu. Reviewers: jdoerfert, grokos, ABataev Reviewed By: jdoerfert Subscribers: jvesely, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D75587
-
Sterling Augustine authored
Summary: This cleans up control flow inside findUnwindSections, and will make it easier to replace this code in a following patch. Also, expose the data structure to allow use by a future replacment function. Reviewers: mstorsjo, miyuki Subscribers: krytarowski, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D75637
-
Chris Bowler authored
This is a follow up to the previous patch: [AIX] Implement caller arguments passed in stack memory. This corrects a defect in AIX 64-bit where an i32 is written to the stack with stw (4 bytes) rather than the expected std (8 bytes.) Integer arguments pass on the stack as images of their register representation. I also took the opportunity to tidy up some of the calling convention AIX tests I added in my last commit. This patch adds the missed assembly expected output for the stack arg int case, which would have caught this problem. Differential Revision: https://reviews.llvm.org/D75126
-
Luís Marques authored
Implements `__clear_cache` for RISC-V Linux. We can't just use `fence.i` on Linux, because the Linux thread might be scheduled on another hart, and the `fence.i` instruction only flushes the icache of the current hart.
-
Chris Lattner authored
Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75663
-
Juneyoung Lee authored
[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison look into branch conditions of dominating blocks' terminators Summary: ``` br i1 c, BB1, BB2: BB1: use1(c) BB2: use2(c) ``` In BB1 and BB2, c is never undef or poison because otherwise the branch would have triggered UB. This is a resubmission of 952ad470 with crash fix of llvm/test/Transforms/LoopRotate/freeze-crash.ll. Checked with Alive2 Reviewers: xbolva00, spatel, lebedev.ri, reames, jdoerfert, nlopes, sanjoy Reviewed By: reames Subscribers: jdoerfert, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75401
-
Sanjay Patel authored
-
Simon Pilgrim authored
Use castAs as we know the cast should succeed and we're dereferencing in the mangleBareFunctionType call.
-
Florian Hahn authored
Currently when printing VPValues we use the object address, which makes it hard to distinguish VPValues as they usually are large numbers with varying distance between them. This patch adds a simple slot tracker, similar to the ModuleSlotTracker used for IR values. In order to dump a VPValue or anything containing a VPValue, a slot tracker for the enclosing VPlan needs to be created. The existing VPlanPrinter can take care of that for the existing code. We assign consecutive numbers to each VPValue we encounter in a reverse post order traversal of the VPlan. Reviewers: rengolin, hsaito, fhahn, Ayal, dorit, gilr Reviewed By: gilr Differential Revision: https://reviews.llvm.org/D73078
-
Daniel Kiss authored
Summary: Hint instructions printed as "hint\t#hintnum" except in case of ARM v8.3a instruction only "hint #hintnum" is printed. This patch changes all format to the fist one. Reviewers: pbarrio, LukeCheeseman, vsk Reviewed By: vsk Subscribers: kristof.beyls, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75625
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-