- Jan 20, 2021
-
-
David Sherwood authored
In places where we call a TTI.getXXCost() function I have changed the code to use InstructionCost instead of unsigned. This is in preparation for later on when we will change the TTI interfaces to return InstructionCost. See this patch for the introduction of the type: https://reviews.llvm.org/D91174 See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html Differential Revision: https://reviews.llvm.org/D94427
-
Raphael Isemann authored
This patch implements a filter that post-processes some of the generated RST sources of the Python API docs. I mainly want to avoid two things: 1. Filter out all the inheritance boilerplate that just keeps mentioning for every class that it inherits from the builtin 'object'. There is no inheritance in the SB API. 2. More importantly, removes the SWIG generated `thisown` attribute from the public documentation. I don't think we want users to mess with that attribute and this is probably causing more confusion than it would help anyone. It also makes the documentation for some smaller classes more verbose than necessary. This patch just uses the sphinx event for reading source and removes the parts that we don't want in documentation. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D94967
-
Raphael Isemann authored
The tables in the new LLDB documentation currently are less wide than their contents. The reason for that seems to be the `-webkit-hyphens: auto` property that sphinx is setting for all `p` tags. The `p` tags in the generated Python documentation seem to trigger some Safari layout issue, so Safari is calculating the cell width to be smaller than it should be (which ends up looking like this {F15104344} ). This patch just sets that property back to the browser default `manual`. Not sure if that's the proper workaround, but I clicked around on the website with the changed CSS and nothing looked funny (which is I believe how webdev unit testing works). Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D94991 -
Bill Wendling authored
X86 allows for the "addr32" and "addr16" address size override prefixes. Also, these and the segment override prefixes should be recognized as valid prefixes. Differential Revision: https://reviews.llvm.org/D94726
-
Hsiangkai Wang authored
For Zvlsseg, we need continuous vector registers for the values. We need to define new register classes for the different combinations of (number of fields and LMUL). For example, when the number of fields(NF) = 3, LMUL = 2, the values will be assigned to (V0M2, V2M2, V4M2), (V2M2, V4M2, V6M2), (V4M2, V6M2, V8M2), ... We define the vlseg intrinsics with multiple outputs. There is no way to describe the codegen patterns with multiple outputs in the tablegen files. We do the codegen in RISCVISelDAGToDAG and use EXTRACT_SUBREG to extract the values of output. The multiple scalable vector values will be put into a struct. This patch is depended on the support for scalable vector struct. Differential Revision: https://reviews.llvm.org/D94229
-
Fangrui Song authored
``` // a.s jmp fcntl // b.s .globl fcntl fcntl: ret ``` `ld.lld -shared --wrap=fcntl a.o b.o` has an `R_X86_64_JUMP_SLOT` referencing the index 0 undefined symbol, which will cause a glibc `symbol lookup error` at runtime. This is because `__wrap_fcntl` is not in .dynsym We use an approximation `!wrap->isUndefined()`, which doesn't set `isUsedInRegularObj` of `__wrap_fcntl` when `fcntl` is referenced and `__wrap_fcntl` is undefined. Fix this by using `sym->referenced`.
-
Fangrui Song authored
-
Aart Bik authored
Use cases with 16- or even 8-bit pointer/index structures have been identified. Reviewed By: penpornk Differential Revision: https://reviews.llvm.org/D95015
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Juneyoung Lee authored
-
ShihPo Hung authored
Make it easier to reuse for intrinsic vrgatherei16 which needs to encode both LMUL & EMUL in the instruction name, like PseudoVRGATHEREI16_VV_M1_M1 and PseudoVRGATHEREI16_VV_M1_M2. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D94951
-
Juneyoung Lee authored
Currently LLVM is relying on ValueTracking's `isKnownNonZero` to attach `nonnull`, which can return true when the value is poison. To make the semantics of `nonnull` consistent with the behavior of `isKnownNonZero`, this makes the semantics of `nonnull` to accept poison, and return poison if the input pointer isn't null. This makes many transformations like below legal: ``` %p = gep inbounds %x, 1 ; % p is non-null pointer or poison call void @f(%p) ; instcombine converts this to call void @f(nonnull %p) ``` Instead, this semantics makes propagation of `nonnull` to caller illegal. The reason is that, passing poison to `nonnull` does not immediately raise UB anymore, so such program is still well defined, if the callee does not use the argument. Having `noundef` attribute there re-allows this. ``` define void @f(i8* %p) { ; functionattr cannot mark %p nonnull here anymore call void @g(i8* nonnull %p) ; .. because @g never raises UB if it never uses %p. ret void } ``` Another attribute that needs to be updated is `align`. This patch updates the semantics of align to accept poison as well. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D90529 -
wlei authored
Differential Revision: https://reviews.llvm.org/D95009
-
Sergey Dmitriev authored
Linking large bitcode archives currently takes a lot of time with llvm-link, this patch adds couple improvements which reduce link time for archives - Use one Linker instance for archive instead of recreating it for each member - Lazy load archive members Reviewed By: tra, jdoerfert Differential Revision: https://reviews.llvm.org/D94643
-
Stella Laurenzo authored
* Matches how all of the other shaped types are declared. * No super principled reason fro this ordering beyond that it makes the one that was different be like the rest. * Also matches ordering of things like ndarray, et al. Reviewed By: ftynse, nicolasvasilache Differential Revision: https://reviews.llvm.org/D94812
-
Nico Weber authored
-
Nico Weber authored
-
Ian Levesque authored
function-instrument=xray-never wasn't actually honored before. We were getting lucky that it worked because CodeGenFunction would omit the other xray attributes when a function was annotated with xray_never_instrument. This patch adds proper support. Differential Revision: https://reviews.llvm.org/D89441
-
Wei Mi authored
-
Wei Mi authored
separate sections. For ThinLTO, all the function profiles without context has been annotated to outline functions if possible in prelink phase. In postlink phase, profile annotation in postlink phase is only meaningful for function profile with context. If the profile is large, it is better to split the profile into two parts, one with context and one without, so the profile reading in postlink phase only has to read the part with context. To have the profile splitting, we extend the ExtBinary format to support different section arrangement. It will be flexible to add other section layout in the future without the need to create new class inheriting from ExtBinary class. Differential Revision: https://reviews.llvm.org/D94435
-
Jackson Fellows authored
Add a constant folder for DivFOp. Analogous to existing folders for AddFOp, SubFOp, and MulFOp. Matches the behavior of existing LLVM constant folding (https://github.com/llvm/llvm-project/blob/999f5da6b3088fa4c0bb9d05b358d015ca74c71f/llvm/lib/IR/ConstantFold.cpp#L1432). Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D94939
-
Sam Clegg authored
This reverts commit 418df4a6. This change broke emscripten tests, I believe because it started generating 5-byte a wide table index in the call_indirect instruction. Neither v8 nor wabt seem to be able to handle that. The spec currently says that this is single 0x0 byte and: "In future versions of WebAssembly, the zero byte occurring in the encoding of the call_indirectcall_indirect instruction may be used to index additional tables." So we need to revisit this change. For backwards compat I guess we need to guarantee that __indirect_function_table is always at address zero. We could also consider making this a single-byte relocation with and assert if have more than 127 tables (for now). Differential Revision: https://reviews.llvm.org/D95005
-
Stephen Kelly authored
Differential Revision: https://reviews.llvm.org/D94877
-
Eric Christopher authored
-
Stephen Kelly authored
It provides no features or advantage over ASTNodeKind-based handling. Differential Revision: https://reviews.llvm.org/D94876
-
Richard Smith authored
applied to an array the same as the array itself. This follows MS ABI, and corrects a regression from the implementation of generalized non-type template parameters, where we "forgot" how to mangle this case.
-
Craig Topper authored
NotHasStdExtZbb doesn't have an AssemblerPredicate associated with it so it didn't do anything. We don't need it either because the sorting rules in tablegen prioritize by number of predicates. So the dedicated instructions in the B extension that have predicates will be prioritized automatically.
-
Stephen Kelly authored
Add an operator overload to ArgumentAdaptingMatcherFunc to allow use of mapAnyOf within hasAncestor, hasParent etc. Differential Revision: https://reviews.llvm.org/D94864
-
Stella Stamenova authored
This test is flakey on Windows and on failure it hangs causing the test suite to fail and future builds (on the buildbot, especially) to fail because they cannot re-write the files that are currently in use
-
Sean Silva authored
- DynamicTensorFromElementsOp - TensorFromElements Differential Revision: https://reviews.llvm.org/D94994
-
Stephen Kelly authored
-
Stella Laurenzo authored
* This isn't exclusive with other mechanisms for more ODS centric op definitions, but based on discussions, we feel that we will always benefit from a python escape hatch, and that is the most natural way to write things that don't fit the mold. * I suspect this facility needs further tweaking, and once it settles, I'll document it and add more tests. * Added extensions for linalg, since it is unusable without them and continued to evolve my e2e example. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D94752
-
Sam Clegg authored
Object files (and the output --relocatable) should never define __indirect_function_table. It should always be linker synthesized with the final output executable. Differential Revision: https://reviews.llvm.org/D94993
-
Richard Smith authored
if E is merely instantiation-dependent." This change leaves us unable to distinguish between different function templates that differ in only instantiation-dependent ways, for example template<typename T> decltype(int(T())) f(); template<typename T> decltype(int(T(0))) f(); We'll need substantially better support for types that are instantiation-dependent but not dependent before we can go ahead with this change. This reverts commit e3065ce2.
-
Richard Smith authored
argument's value off it during substitution.
-
Siva Chandra authored
This change does not try to move the common parts of x86 and aarch64 and build few abstractions over them. While this is possible, x86 story needs a bit of cleanup, especially around manipulation of the mxcsr register. Moreover, on x86 one can raise exceptions without performing exception raising operations. So, all of this can be done in follow up patches. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94947
-
Alexey Bataev authored
OMP_MAP_TARGET_PARAM flag is used to mark the data that shoud be passed as arguments to the target kernels, nothing else. But the compiler still marks the data with OMP_MAP_TARGET_PARAM flags even if the data is passed to the data movement directives, like target data, target update etc. This flag is just ignored for this directives and the compiler does not need to emit it. Reviewed By: cchen Differential Revision: https://reviews.llvm.org/D91261
-
Arthur Eubanks authored
In preparation for turning on opt's -enable-new-pm by default, this pins uses of passes via the legacy "opt -passname" with pass names beginning with "polly-" and "polyhedral-info" to the legacy PM. Many of these tests use -analyze, which isn't supported in the new PM. (This doesn't affect uses of "opt -passes=passname"). rL240766 accidentally removed `-polly-prepare` in phi_not_grouped_at_top.ll, and it also doesn't use the output of -analyze. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D94266
-