| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 290309
|
| |
|
|
| |
llvm-svn: 290308
|
| |
|
|
| |
llvm-svn: 290307
|
| |
|
|
| |
llvm-svn: 290306
|
| |
|
|
| |
llvm-svn: 290302
|
| |
|
|
| |
llvm-svn: 290301
|
| |
|
|
| |
llvm-svn: 290300
|
| |
|
|
|
|
| |
I don't think this matters because ConstantFP is legal.
llvm-svn: 290299
|
| |
|
|
|
|
|
| |
This is to put the vector into a well defined state. Apparently the state of a
vector after being moved from is valid but unspecified. Found with clang-tidy.
llvm-svn: 290298
|
| |
|
|
|
|
|
|
| |
-256 is a legal indexed address part.
Differential Revision: https://reviews.llvm.org/D27537
llvm-svn: 290296
|
| |
|
|
|
|
| |
Differential revision: https://reviews.llvm.org/D28038
llvm-svn: 290295
|
| |
|
|
|
|
|
| |
The range metadata inserted by NVVMIntrRange is pessimistic, range
metadata already present could be more precise.
llvm-svn: 290294
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch renumbers the metadata nodes in debug info testcases after
https://reviews.llvm.org/D26769. This is a separate patch because it
causes so much churn. This was implemented with a python script that
pipes the testcases through llvm-as - | llvm-dis - and then goes
through the original and new output side-by side to insert all
comments at a close-enough location.
Differential Revision: https://reviews.llvm.org/D27765
llvm-svn: 290292
|
| |
|
|
|
|
| |
Otherwise these records do not survive roundtrips.
llvm-svn: 290291
|
| |
|
|
| |
llvm-svn: 290288
|
| |
|
|
| |
llvm-svn: 290287
|
| |
|
|
| |
llvm-svn: 290286
|
| |
|
|
| |
llvm-svn: 290285
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a basic tablegen backend that analyzes the SelectionDAG
patterns to find simple ones that are eligible for GlobalISel-emission.
That's similar to FastISel, with one notable difference: we're not fed
ISD opcodes, so we need to map the SDNode operators to generic opcodes.
That's done using GINodeEquiv in TargetGlobalISel.td.
Otherwise, this is mostly boilerplate, and lots of filtering of any kind
of "complicated" pattern. On AArch64, this is sufficient to match G_ADD
up to s64 (to ADDWrr/ADDXrr) and G_BR (to B).
Differential Revision: https://reviews.llvm.org/D26878
llvm-svn: 290284
|
| |
|
|
| |
llvm-svn: 290283
|
| |
|
|
| |
llvm-svn: 290281
|
| |
|
|
|
|
|
|
|
|
|
| |
Each function summary has an attached list of type identifier GUIDs. The
idea is that during the regular LTO phase we would match these GUIDs to type
identifiers defined by the regular LTO module and store the resolutions in
a top-level "type identifier summary" (which will be implemented separately).
Differential Revision: https://reviews.llvm.org/D27967
llvm-svn: 290280
|
| |
|
|
| |
llvm-svn: 290278
|
| |
|
|
| |
llvm-svn: 290277
|
| |
|
|
|
|
|
|
| |
The case AM.Scale == 0 is already handled by the code right above.
Differential Revision: https://reviews.llvm.org/D28003
llvm-svn: 290275
|
| |
|
|
|
|
|
|
|
|
|
|
| |
In order for the llvm DWARF parser to be used in LLDB we will need to be able to get the parent of a DIE. This patch adds that functionality by changing the DWARFDebugInfoEntry class to store a depth field instead of a sibling index. Using a depth field allows us to easily calculate the sibling and the parent without increasing the size of DWARFDebugInfoEntry.
I tested llvm-dsymutil on a debug version of clang where this fully parses DWARF in over 1200 .o files to verify there was no serious regression in performance.
Added a full suite of unit tests to test this functionality.
Differential Revision: https://reviews.llvm.org/D27995
llvm-svn: 290274
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This sets USES_TERMINAL for the native llvm-config build, so that it
doesn't run at the same time as builds of other native tools (namely,
tablegen). Without this, if you're very unlucky with the timing it's
possible to be relinking libSupport as one of the tools is linking,
causing a spurious failure.
The tablegen build adopted USES_TERMINAL for this same reason in
r280748.
llvm-svn: 290271
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
RTDyldMemoryManager.cpp describes the differing __register_frame
API between libunwind and libgcc, with a mailing list posting URL.
The original link was 404; replace it with what I believe is the
intended post, as well as a reference to the "OS X" implementation in
libunwind.
Differential Revision: https://reviews.llvm.org/D27965
llvm-svn: 290269
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As mentioned on PR30845, we were performing our vXi64 multiplication as:
AloBlo = pmuludq(a, b);
AloBhi = pmuludq(a, psrlqi(b, 32));
AhiBlo = pmuludq(psrlqi(a, 32), b);
return AloBlo + psllqi(AloBhi, 32)+ psllqi(AhiBlo, 32);
when we could avoid one of the upper shifts with:
AloBlo = pmuludq(a, b);
AloBhi = pmuludq(a, psrlqi(b, 32));
AhiBlo = pmuludq(psrlqi(a, 32), b);
return AloBlo + psllqi(AloBhi + AhiBlo, 32);
This matches the lowering on gcc/icc.
Differential Revision: https://reviews.llvm.org/D27756
llvm-svn: 290267
|
| |
|
|
|
|
| |
This reverts commit r289813, it caused PR31449.
llvm-svn: 290266
|
| |
|
|
| |
llvm-svn: 290265
|
| |
|
|
| |
llvm-svn: 290264
|
| |
|
|
|
|
|
| |
Patch by Andrey Khalyavin
Differential Revision: https://reviews.llvm.org/D27915
llvm-svn: 290263
|
| |
|
|
|
|
|
|
|
|
|
| |
The constantexpr parsing was too constrained and rejected legal vector GEPs.
This relaxes it to be similar to the ones for instruction parsing.
This fixes PR30816.
Differential Revision: https://reviews.llvm.org/D28013
llvm-svn: 290261
|
| |
|
|
|
|
|
|
|
|
| |
For vector GEPs, CastGEPIndices can end up in an infinite recursion, because
we compare the vector type to the scalar pointer type, find them different,
and then try to cast a type to itself.
Differential Revision: https://reviews.llvm.org/D28009
llvm-svn: 290260
|
| |
|
|
| |
llvm-svn: 290257
|
| |
|
|
| |
llvm-svn: 290255
|
| |
|
|
| |
llvm-svn: 290254
|
| |
|
|
|
|
|
|
|
|
| |
I added API for creation a target specific memory node in DAG. Today, all memory nodes are common for all targets and their constructors are located in SelectionDAG.cpp.
There are some cases in X86 where we need to create a special node - truncation-with-saturation store, float-to-half-store.
In the current patch I added truncation-with-saturation nodes and I'm using them for intrinsics. In the future I plan to implement DAG lowering for truncation-with-saturation pattern.
Differential Revision: https://reviews.llvm.org/D27899
llvm-svn: 290250
|
| |
|
|
| |
llvm-svn: 290249
|
| |
|
|
|
|
| |
Fixing a warning.
llvm-svn: 290248
|
| |
|
|
|
|
| |
Fixing failing test.
llvm-svn: 290246
|
| |
|
|
|
|
| |
Fixing build issues.
llvm-svn: 290244
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The vectorcall calling convention specifies that arguments to functions are to be passed in registers, when possible.
vectorcall uses more registers for arguments than fastcall or the default x64 calling convention use.
The vectorcall calling convention is only supported in native code on x86 and x64 processors that include Streaming SIMD Extensions 2 (SSE2) and above.
The current implementation does not handle Homogeneous Vector Aggregates (HVAs) correctly and this review attempts to fix it.
This aubmit also includes additional lit tests to cover better HVAs corner cases.
Differential Revision: https://reviews.llvm.org/D27392
llvm-svn: 290240
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-loop-distribute
In r267672, where the loop distribution pragma was introduced, I tried
it hard to keep the old behavior for opt: when opt is invoked
with -loop-distribute, it should distribute the loop (it's off by
default when ran via the optimization pipeline).
As MichaelZ has discovered this has the unintended consequence of
breaking a very common developer work-flow to reproduce compilations
using opt: First you print the pass pipeline of clang
with -debug-pass=Arguments and then invoking opt with the returned
arguments.
clang -debug-pass will include -loop-distribute but the pass is invoked
with default=off so nothing happens unless the loop carries the pragma.
While through opt (default=on) we will try to distribute all loops.
This changes opt's default to off as well to match clang. The tests are
modified to explicitly enable the transformation.
llvm-svn: 290235
|
| |
|
|
|
|
|
| |
There is no need to test the pretty printer. Remove the boggus test to make the
build bots happy.
llvm-svn: 290234
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: kbarton, iteratee, hfinkel, echristo
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D27934
llvm-svn: 290232
|
| |
|
|
|
|
|
|
| |
namespace.
r290226 was a think-o - just qualifying the name doesn't count.
llvm-svn: 290230
|
| |
|
|
|
|
|
|
|
|
|
| |
we used to print UNKNOWN instructions when the instruction to be printer was not
yet inserted in any BB: in that case the pretty printer would not be able to
compute a TII as the instruction does not belong to any BB or function yet.
This patch explicitly passes the TII to the pretty-printer.
Differential Revision: https://reviews.llvm.org/D27645
llvm-svn: 290228
|
| |
|
|
|
|
| |
namespace.
llvm-svn: 290226
|