- Jul 27, 2020
-
-
Isaac Richter authored
This patch adds support for the LOG2CEIL builtin function in linker scripts: https://sourceware.org/binutils/docs/ld/Builtin-Functions.html#index-LOG2CEIL_0028exp_0029 As documented for LD, and to keep compatibility, LOG2CEIL(0) returns 0 (not -inf). The test vectors are somewhat arbitrary. We check minimum values (0-4); middle values (2^32, and 2^32+1); and the maximum value (2^64-1). The checks for LOG2CEIL explicitly use full 64-bit values (16 hex digits). This is needed to properly verify that -inf and other interesting results aren't returned. (For some reason, all other tests in operators.test use only 14 digits.) Differential revision: https://reviews.llvm.org/D84054
-
Alex Richardson authored
Python 2.7 fails with TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' if you pass None as the prefix argument to NamedTemporaryFile. Reviewed By: ldionne, bjope, #libc Differential Revision: https://reviews.llvm.org/D84595
-
Kirill Bobyrev authored
Summary: When dereferencing Optional's it makes sense to use ASSERT_TRUE for better test failures readability. Switch from EXPECT_TRUE to ASSERT_TRUE where it is appropriate. Reviewers: kadircet Reviewed By: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D84535 Signed-off-by:
Kirill Bobyrev <kbobyrev@google.com>
-
Guillaume Chatelet authored
Differential Revision: https://reviews.llvm.org/D83533
-
Juneyoung Lee authored
This patch adds folding freeze into phi if it has only one operand to target. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D84601
-
Pavel Labath authored
- move initialization to initializer lists - make desctructor non-virtual (nothing else is) - fix long double constructor so that it actually works
-
Pavel Labath authored
The function didn't combine a large entry which overlapped several other entries, if those other entries were not overlapping among each other. E.g., (0,20),(5,6),(10,11) produced (0,20),(10,11) Now it just produced (0,20).
-
George Mitenkov authored
This patch introduces 2 new optional attributes to `llvm.load` and `llvm.store` ops: `volatile` and `nontemporal`. These attributes are translated into proper LLVM as a `volatile` marker and a metadata node respectively. They are also helpful with SPIR-V to LLVM dialect conversion since they are the mappings for `Volatile` and `NonTemporal` Memory Operands. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D84396
-
Piotr Sobczak authored
Summary: D78800 skipped generating cache invalidating instrucions altogether on AMDPAL. However, this is sometimes too restrictive - we want a more flexible option to be able to toggle this behaviour on and off while we work towards developing a correct implementation of the alternative memory model. Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, dexonsmith, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D84448
-
David Sherwood authored
I have introduced a new TargetFrameLowering query function: isStackIdSafeForLocalArea that queries whether or not it is safe for objects of a given stack id to be bundled into the local area. The default behaviour is to always bundle regardless of the stack id, however for AArch64 this is overriden so that it's only safe for fixed-size stack objects. There is future work here to extend this algorithm for multiple local areas so that SVE stack objects can be bundled together and accessed from their own virtual base-pointer. Differential Revision: https://reviews.llvm.org/D83859
-
Roman Lebedev authored
Summary: Recursion detection can be non-trivial. Currently, the state-of-the-art for LLVM, as far as i'm concerned, is D72362 `[clang-tidy] misc-no-recursion: a new check`. However, it is quite limited: * It does very basic call-graph based analysis, in the sense it will report even dynamically-unreachable recursion. * It is inherently limited to a single TU * It is hard to gauge how problematic each recursion is in practice. Some of that can be addressed by adding clang analyzer-based check, then it would at least support multiple TU's. However, we can approach this problem from another angle - dynamic run-time analysis. We already have means to capture a run-time callgraph (XRay, duh), and there are already means to reconstruct it within `llvm-xray` tool. This proposes to add a `-recursive-calls-only` switch to the `account` tool. When the switch is on, when re-constructing callgraph for latency reconstruction, each time we enter/leave some function, we increment/decrement an entry for the function in a "recursion depth" map. If, when we leave the function, said entry was at `1`, then that means the function didn't call itself, however if it is at `2` or more, then that means the function (possibly indirectly) called itself. If the depth is 1, we don't account the time spent there, unless within this call stack the function already recursed into itself. Note that we don't pay for recursion depth tracking when `recursive-calls-only` is not on, and the perf impact is insignificant (+0.3% regression) The overhead of the option is actually negative, around -5.26% user time on a medium-sized (3.5G) XRay log. As a practical example, that 3.5G log is a capture of the entire middle-end opt pipeline at `-O3` for RawSpeed unity build. There are total of `5500` functions in the log, however `-recursive-calls-only` says that `269`, or 5%, are recursive. Having this functionality could be helpful for recursion eradication. Reviewers: dberris, mboerger Reviewed By: dberris Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D84582
-
Yuanfang Chen authored
The deleted TODO was implemented in D82344.
-
biplmish authored
This patch adds the td definitions and asm/disasm tests for the following instructions: Vector Extract Double Left Index - vextdubvlx, vextduhvlx, vextduwvlx, vextddvlx Vector Extract Double Right Index - vextdubvrx, vextduhvrx, vextduwvrx, vextddvrx Differential Revision: https://reviews.llvm.org/D84384
-
Mehdi Amini authored
This member is already publicly declared on the base class. The redundant declaration is mangled differently though and in some unoptimized build it requires a definition to also exist. However we have a definition for the base ShapedType class, removing the declaration here will redirect every use to the base class member instead. Differential Revision: https://reviews.llvm.org/D84615
-
Fangrui Song authored
-
Matt Arsenault authored
We don't really need these asserts. The LegalizerInfo is also overly-aggressivly constructed, even when not in use. It needs to not assert on dummy targets that have manually specified, unrelated features.
-
biplmish authored
Remove the duplicate LE test, correct the labels and remove common tests for vec_splat builtin. Differential Revision: https://reviews.llvm.org/D84382
-
QingShan Zhang authored
Store Addr and Store Addr+8 are clusterable pair. They have memory(ctrl) dependency on different loads. Current implementation will put these two stores into different group and miss to cluster them. Reviewed By: evandro Differential Revision: https://reviews.llvm.org/D84139
-
Juneyoung Lee authored
-
Lang Hames authored
-
Valentin Clement authored
Reviewed By: tskeith, klausler, ichoyjx Differential Revision: https://reviews.llvm.org/D83998
-
Martin Storsjö authored
Previously, the test could pass with one part of c3b1d730 removed.
-
Jez Ng authored
Needed for testing Objective-C programs (since e.g. Core Foundation is a framework) Reviewed By: #lld-macho, compnerd Differential Revision: https://reviews.llvm.org/D83925
-
Craig Topper authored
[X86] Turn X86DAGToDAGISel::tryVPTERNLOG into a fully custom instruction selector that can handle bitcasts between logic ops Previously we just matched the logic ops and replaced with an X86ISD::VPTERNLOG node that we would send through the normal pattern match. But that approach couldn't handle a bitcast between the logic ops. Extending that approach would require us to peek through the bitcasts and emit new bitcasts to match the types. Those new bitcasts would then have to be properly topologically sorted. This patch instead switches to directly emitting the MachineSDNode and skips the normal tablegen pattern matching. We do have to handle load folding and broadcast load folding ourselves now. Which also means commuting the immediate control. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D83630
-
Tim Keith authored
If a symbol (that is not a dummy argument) is implicitly declared inside a statement function, don't create it in the statement function's scope. Instead, treat statement functions like blocks when finding the inclusive scope and create the symbol there. Add a new flag, StmtFunction, to symbols that represent statement functions. Differential Revision: https://reviews.llvm.org/D84588
-
Hannes Käufler authored
-
Craig Topper authored
These cost methods don't make much sense in X86Subtarget. Make them methods in X86's TTI and move the feature checks from the X86Subtarget constructor into these methods. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D84594
-
Juneyoung Lee authored
-
Bruno Ricci authored
-
Bruno Ricci authored
-
Bruno Ricci authored
-
- Jul 26, 2020
-
-
Simon Pilgrim authored
If we lower a v2i64 shuffle to PSHUFD, we currently clamp undef elements to 0, (elements 0,1 of the v4i32) which can result in the shuffle referencing more elements of the source vector than expected, affecting later shuffle combines and KnownBits/SimplifyDemanded calls. By ensuring we widen the undef mask element we allow getV4X86ShuffleImm8 to use inline elements as the default, which are more likely to fold.
-
Vincent Zhao authored
This diff provides a concrete test case for the error that will be raised when the iteration space is non hyper-rectangular. The corresponding emission method for this error message has been changed as well. Differential Revision: https://reviews.llvm.org/D84531
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Matt Arsenault authored
The legal cases should be the first rules.
-
Matt Arsenault authored
-
Matt Arsenault authored
I noticed these don't use the _gfx9, non-m0 reading variants but not sure if that's a bug or not. It's the same in the DAG.
-
Matt Arsenault authored
-