- Jan 31, 2020
-
-
Roman Lebedev authored
-
Alexey Bataev authored
regions. If the lastprivate conditional is passed as shared in inner region, we shall check if it was ever changed and use this updated value after exit from the inner region as an update value.
-
Yonghong Song authored
The recommended optimization level for BPF programs is O2 since (1). BPF is running inside the kernel and linux kernel won't work at -O0 level, and (2). Verifier is not able to handle O0 code properly, e.g., potential large stack size and a lot of spills. But we should keep -O0 at least compiling. This patch fixed a bug in BPFMISimplifyPatchable phase where with -O0, a segmentation fault will happen for a simple program like: int test(int a, int b) { return a + b; } A test case is added to capture such a case. Differential Revision: https://reviews.llvm.org/D73681 -
Sergey Dmitriev authored
Summary: Fat object size has significantly increased after D65819 which changed bundler tool to add host object as a normal bundle to the fat output which almost doubled its size. That patch was fixing the following issues 1. Problems associated with the partial linking - global constructors were not called for partially linking objects which clearly resulted in incorrect behavior. 2. Eliminating "junk" target object sections from the linked binary on the host side. The first problem is no longer relevant because we do not use partial linking for creating fat objects anymore. Target objects sections are now inserted into the resulting fat object with a help of llvm-objcopy tool. The second issue, "junk" sections in the linked host binary, has been fixed in D73408 by adding "exclude" flag to the fat object's sections which contain target objects. This flag tells linker to drop section from the inputs when linking executable or shared library, therefore these sections will not be propagated in the linked binary. Since both problems have been solved, we can revert D65819 changes to reduce fat object size and this patch essentially is doing that. Reviewers: ABataev, alexshap, jdoerfert Reviewed By: ABataev Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D73642
-
Lubomir Litchev authored
Summary: Add and pipe through the sqrt operation for Standard and LLVM dialects. Reviewers: nicolasvasilache, ftynse Reviewed By: ftynse Subscribers: frej, ftynse, merge_guards_bot, flaub, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73571
-
Charusso authored
Summary: This patch hooks the `Preprocessor` trough `BugReporter` to the `CheckerContext` so the checkers could look for macro definitions. Reviewed By: NoQ Differential Revision: https://reviews.llvm.org/D69731
-
Alex Zinenko authored
Summary: In some cases, one may want to use different names for C++ symbol of an enumerand from its string representation. In particular, in the LLVM dialect for, e.g., Linkage, we would like to preserve the same enumerand names as LLVM API and the same textual IR form as LLVM IR, yet the two are different (CamelCase vs snake_case with additional limitations on not being a C++ keyword). Modify EnumAttrCaseInfo in OpBase.td to include both the integer value and its string representation. By default, this representation is the same as C++ symbol name. Introduce new IntStrAttrCaseBase that allows one to use different names. Exercise it for LLVM Dialect Linkage attribute. Other attributes will follow as separate changes. Differential Revision: https://reviews.llvm.org/D73362
-
- Jan 30, 2020
-
-
jasonliu authored
Summary: This patch intends to support three most common relocation type on AIX: R_POS, R_TOC, R_RBR. These three relocation type will be needed for object file generation on AIX for small code model. We will have follow up patches to bring relocation support for large code model on AIX. Reviewers: hubert.reinterpretcast, daltenty, DiggerLin Differential Revision: https://reviews.llvm.org/D72027
-
Charusso authored
Summary: This patch uses the new `DynamicSize.cpp` to serve dynamic information. Previously it was static and probably imprecise data. Reviewed By: NoQ Differential Revision: https://reviews.llvm.org/D69599
-
Denis Khalikov authored
Add GroupNonUniform atihtmetic operations: FMax, FMin, SMax, SMin, UMax, UMin. Differential Revision: https://reviews.llvm.org/D73563
-
LLVM GN Syncbot authored
-
Charusso authored
Summary: This patch introduces a placeholder for representing the dynamic size of regions. It also moves the `getExtent()` method of `SubRegions` to the `MemRegionManager` as `getStaticSize()`. Reviewed By: NoQ Differential Revision: https://reviews.llvm.org/D69540
-
Alex Richardson authored
The tests were removed in 287307a0 to avoid a dependency on python3. update_cc_tests_checks.py also works with python2 so restore the tests without the python3 dependency.
-
Stefan Pintilie authored
By adding the prefixed instructions the branch distances are no longer computed correctly. Since prefixed instructions cannot cross a 64 byte boundary we have to assume that a prefixed instruction may have a nop prepended to it. This patch tries to take that nop into consideration when computing the size of basic blocks. Differential Revision: https://reviews.llvm.org/D72572
-
David Stenberg authored
Summary: When constant folding, constants that are wrapped in metadata were not folded. This could lead to dbg.values being the only user of a constant expression, due to the non-dbg uses having been rewritten, resulting in the constant later on being removed by some other pass. This occurred with the attached test case, in which the non-rewritten GEP in the dbg.value intrinsic was later on removed by globalopt. This patch makes the code look through metadata and fold such constants. I guess that we in the future may want to allow dbg.values using GEPs and other constant expressions to be emittable even if there are no non-dbg uses, but for example SelectionDAG does not support that. Reviewers: jmorse, aprantl, vsk, davide Reviewed By: aprantl, vsk, davide Subscribers: hiraditya, llvm-commits Tags: #debug-info, #llvm Differential Revision: https://reviews.llvm.org/D73630
-
Matt Arsenault authored
This is always a G_CONSTANT already
-
Julian Gross authored
Summary: In the scope of the lowering phase from GPU to ROCDL, the intructions for the conversion patterns seems to be wrong. According to https://github.com/ROCm-Developer-Tools/HIP/blob/master/include/hip/hcc_detail/math_fwd.h the instructions need two underscores in the beginning instead of one. Reviewers: nicolasvasilache, herhut, rriddle Reviewed By: herhut, rriddle Subscribers: merge_guards_bot, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, csigg, arpith-jacob, mgester, lucyrfox, herhut, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73535
-
Nemanja Ivanovic authored
The commit https://reviews.llvm.org/rG14fc20ca6 added some options to the X86 back end that cause the help text for opt/llc to become much harder to read. The issue is that the cl::value_desc is part of the option name and is used to compute the indentation of the description text (i.e. the maximum length option name is what everything aligns to). Since the commit puts a large number of characters into that text, everything is aligned to that width. This patch just reformats the option so that the description is contained in the description and the list of possible values is within the angle brackets. Note: the readability issue of the helptext was fixed in commit 70cbf8c7, but the re-formatting wasn't added on that commit so I am still committing this. Differential revision: https://reviews.llvm.org/D73267
-
Hans Wennborg authored
Because it's in the AArch64/ directory, it runs in cases where the arm target may not be available, see comment on D73235.
-
John Brawn authored
Strict fp-to-int and int-to-fp conversions can be handled in the same way that the non-strict versions are (by using the appropriate instruction or converting to a function call when we have no instruction). Differential Revision: https://reviews.llvm.org/D73625
-
Matt Arsenault authored
Port directly from DAG version. The lowering for G_FPTOUI used to fail on AMDGPU because it uses G_FPTOSI.
-
Matt Arsenault authored
-
Jonathan Coe authored
Reviewers: krasimir Reviewed By: krasimir Tags: #clang-format Differential Revision: https://reviews.llvm.org/D73622
-
Matt Arsenault authored
I'm pretty sure this is wrong and we should expand these in a correct way, but this matches the existing behavior.
-
Matt Arsenault authored
On targets that don't have the normal packed f16 layout, handle these during legalization. Directly modify the register types. We can infer this was a d16 load based on the mem operand size during selection. A16 operands should possibly be handled here as well, but don't worry about that yet.
-
Matt Arsenault authored
This trivially avoids violating the constant bus restriction. Previously this was allowing one SGPR in the first source operand, which technically also avoided violating this for most operations (but not for special cases reading vcc). We do need to write some new, smarter operand folds to pick the optimal SGPR to use in some kind of post-isel fold, but that's purely an optimization. I was originally thinking we would pick which operands should be SGPRs in RegBankSelect, but I think this isn't really manageable. There would be additional complexity to handle every G_* instruction, and then any nontrivial instruction patterns would need to know when to avoid violating it, which is likely to be very error prone. I think having all inputs being canonically copies to VGPRs will simplify the operand folding logic. The current folding we do is backwards, and only considers one operand at a time, relative to operands it already has. It therefore poorly handles the case where there is already a constant bus operand user. If all operands are copies, it's somewhat simpler to consider all input operands at once to choose the optimal constant bus user. Since the failure mode for constant bus violations is now a verifier error and not an selection failure, this moves towards a place where we can turn on the fallback mode. The SGPR copy folding optimizations can be left for later.
-
Dominik Montada authored
Commit 9965b12f was supposed to change the offset constant when lowering load/stores, but only introduced this change for loads. This patch adds the same fix for stores.
-
Hans Wennborg authored
-
Matt Arsenault authored
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D73689
-
serge-sans-paille authored
Original bug fixed by ab2300bc
-
LLVM GN Syncbot authored
-
Stefan Pintilie authored
A known limitation for Future CPU is that the new prefixed instructions may not cross 64 Byte boundaries. All instructions are already 4 byte aligned so the only situation where this can occur is when the prefix is in one 64 byte block and the instruction that is prefixed is at the top of the next 64 byte block. To fix this case PPCELFStreamer was added to intercept EmitInstruction. When a prefixed instruction is emitted we try to align it to 64 Bytes by adding a maximum of 4 bytes. If the prefixed instruction crosses the 64 Byte boundary then the alignment would trigger and a 4 byte nop would be added to push the instruction into the next 64 byte block. Differential Revision: https://reviews.llvm.org/D72570
-
John Brawn authored
This gets selected to the appropriate fcvt instruction. Handling from there on isn't fully correct yet, as we need to model fcvt reading and writing to fpsr and fpcr. Differential Revision: https://reviews.llvm.org/D73201
-
Ayke van Laethem authored
This commit adds AVR support to lldb. With this change, it can load a binary and do basic things like dump a line table. Not much else has been implemented, that should be done in later changes. Differential Revision: https://reviews.llvm.org/D73539
-
Marek Kurdej authored
Summary: This patch implements https://wg21.link/P0325. Please mind that at it is my first contribution to libc++, so I may have forgotten to abide to some conventions. Reviewers: EricWF, mclow.lists, ldionne, lichray Reviewed By: ldionne, lichray Subscribers: lichray, dexonsmith, zoecarver, christof, ldionne, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D69882
-
Simon Pilgrim authored
This handles all the constant splat / opaque testing for us.
-
Simon Pilgrim authored
This handles all the constant splat / opaque testing for us.
-
Shraiysh Vaishay authored
Summary: I have tried to implement `llvm.invoke` and `llvm.landingpad`. # `llvm.invoke` is similar to `llvm.call` with two successors added, the first one is the normal label and the second one is unwind label. # `llvm.launchpad` takes a variable number of args with either `catch` or `filter` associated with them. Catch clauses are not array types and filter clauses are array types. This is same as the criteria used by LLVM (https://github.com/llvm/llvm-project/blob/4f82af81a04d711721300f6ca32f402f2ea6faf4/llvm/include/llvm/IR/Instructions.h#L2866 ) Examples: LLVM IR ``` define i32 @caller(i32 %a) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { invoke i32 @foo(i32 2) to label %success unwind label %fail success: ret i32 2 fail: landingpad {i8*, i32} catch i8** @_ZTIi catch i8** null catch i8* bitcast (i8** @_ZTIi to i8*) filter [1 x i8] [ i8 1 ] ret i32 3 } ``` MLIR LLVM Dialect ``` llvm.func @caller(%arg0: !llvm.i32) -> !llvm.i32 { %0 = llvm.mlir.constant(3 : i32) : !llvm.i32 %1 = llvm.mlir.constant("\01") : !llvm<"[1 x i8]"> %2 = llvm.mlir.addressof @_ZTIi : !llvm<"i8**"> %3 = llvm.bitcast %2 : !llvm<"i8**"> to !llvm<"i8*"> %4 = llvm.mlir.null : !llvm<"i8**"> %5 = llvm.mlir.addressof @_ZTIi : !llvm<"i8**"> %6 = llvm.mlir.constant(2 : i32) : !llvm.i32 %7 = llvm.invoke @foo(%6) to ^bb1 unwind ^bb2 : (!llvm.i32) -> !llvm.i32 ^bb1: // pred: ^bb0 llvm.return %6 : !llvm.i32 ^bb2: // pred: ^bb0 %8 = llvm.landingpad (catch %5 : !llvm<"i8**">) (catch %4 : !llvm<"i8**">) (catch %3 : !llvm<"i8*">) (filter %1 : !llvm<"[1 x i8]">) : !llvm<"{ i8*, i32 }"> llvm.return %0 : !llvm.i32 } ``` Signed-off-by:
Shraiysh Vaishay <cs17btech11050@iith.ac.in> Differential Revision: https://reviews.llvm.org/D72006
-
Sam Parker authored
While iterating through the loop, don't inspect any dbg values. Differential Revision: https://reviews.llvm.org/D73688
-