| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
The new relocation recently defined in the Intel386 psABI
was still missing from this file. A subsequent commit will
add support for GOT32X in MC, together with a test.
llvm-svn: 267378
|
|
|
|
|
|
| |
with a fixed size array. NFC
llvm-svn: 267377
|
|
|
|
| |
llvm-svn: 267375
|
|
|
|
|
|
| |
and without zero undef being lowered to bsf/bsr.
llvm-svn: 267373
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in a debug-info-bearing function has a debug location attached to it. Failure to
do so causes an "!dbg attachment points at wrong subprogram for function"
assertion failure when the inliner sets up inline scope info.
rdar://problem/25878916
This reaplies r267320 without changes after fixing an issue in the OpenMP IR
generator in clang.
llvm-svn: 267370
|
|
|
|
| |
llvm-svn: 267367
|
|
|
|
| |
llvm-svn: 267366
|
|
|
|
| |
llvm-svn: 267362
|
|
|
|
|
|
|
|
|
|
|
|
| |
This corrects the MI annotations for the stack adjustment following the __chkstk
invocation. We were marking the original SP usage as a Def rather than Kill.
The (new) assigned value is the definition, the original reference is killed.
Adjust the ISelLowering to mark Kills and FrameSetup as well.
This partially resolves PR27480.
llvm-svn: 267361
|
|
|
|
|
|
| |
instructions.
llvm-svn: 267360
|
|
|
|
|
|
| |
As discussed on D19318, if we only demand the first element of a DIVSS/DIVSD intrinsic, then reduce to a FDIV call. This matches the existing FADD/FSUB/FMUL patterns.
llvm-svn: 267359
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split from D17490. This patch improves support for determining the demanded vector elements through SSE scalar intrinsics:
1 - demanded vector element support for unary and some extra binary scalar intrinsics (RCP/RSQRT/SQRT/FRCZ and ADD/CMP/DIV/ROUND).
2 - addss/addsd get simplified to a fadd call if we aren't interested in the pass through elements
3 - if we don't need the lowest element of a scalar operation then just use the first argument (the pass through elements) directly
We can add support for propagating demanded elements through any equivalent packed SSE intrinsics in a future patch (these wouldn't use the pass through patterns).
Differential Revision: http://reviews.llvm.org/D19318
llvm-svn: 267357
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch improves support for determining the demanded vector elements through SSE scalar intrinsics:
1 - recognise that we only need the lowest element of the second input for binary scalar operations (and all the elements of the first input)
2 - recognise that the roundss/roundsd intrinsics use the lowest element of the second input and the remaining elements from the first input
Differential Revision: http://reviews.llvm.org/D17490
llvm-svn: 267356
|
|
|
|
|
|
| |
As discussed on D17490, we should attempt to update an intrinsic's arguments demanded elements in one pass if we can.
llvm-svn: 267355
|
|
|
|
| |
llvm-svn: 267354
|
|
|
|
|
|
| |
.cpp files are unambiguously C++, you only need the mode markers on .h files.
llvm-svn: 267353
|
|
|
|
|
|
| |
function. NFCI.
llvm-svn: 267352
|
|
|
|
|
|
| |
function. NFCI.
llvm-svn: 267351
|
|
|
|
|
|
| |
We aren't currently making use of this in any successful mask decode and its actually incorrect as it inserts the wrong number of SM_SentinelUndef mask elements.
llvm-svn: 267350
|
|
|
|
| |
llvm-svn: 267349
|
|
|
|
|
|
| |
enum encoding value.
llvm-svn: 267348
|
|
|
|
|
|
| |
Codegen is pretty bad at the moment but could use PSHUFB quite efficiently
llvm-svn: 267347
|
|
|
|
|
|
| |
Fixed issue with VPPERM target shuffle mask decoding that was incorrectly masking off the 3-bit permute op with a 2-bit mask.
llvm-svn: 267346
|
|
|
|
|
|
|
|
|
|
|
|
| |
There's hardly any functionality change here. Instead of calling
materializeMetadata on the first call to materialize(GlobalValue*), wait
until the first one that's actually going to do something. Noticed by
inspection; I don't have a concrete case where this makes a difference.
Added an assertion in materializeMetadata to be sure this (or a future
change) doesn't delay materializeMetadata after function-level metadata.
llvm-svn: 267345
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Remove the GlobalValueInfo and change the ModuleSummaryIndex to directly
reference summary objects. The info structure was there to support lazy
parsing of the combined index summary objects, which is no longer
needed and not supported.
Reviewers: joker.eph
Subscribers: joker.eph, llvm-commits
Differential Revision: http://reviews.llvm.org/D19462
llvm-svn: 267344
|
|
|
|
|
|
|
|
| |
Reused the ability to split constants of a type wider than the shuffle mask to work with masks generated from scalar constants transfered to xmm.
This fixes an issue preventing PSHUFB target shuffle masks decoding rematerialized scalar constants and also exposes the XOP VPPERM bug described in PR27472.
llvm-svn: 267343
|
|
|
|
|
|
|
|
| |
Enum bitfields have crazy portability issues with MSVC. Use unsigned
instead of LinkageTypes here in the ModuleSummaryIndex to address
Takumi's concerns from r267335.
llvm-svn: 267342
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r267335. The build has been broken for hours
because of it:
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/23352/
The correct fix is avoid using any enum in a bitfield.
llvm-svn: 267341
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes PR22248 on s390x. The previous attempt at this was D19101,
which was before LOAD_STACK_GUARD existed. Compared to the previous
version, this always emits a rather ugly block of 4 instructions, involving
a thread pointer load that can't be shared with other potential users.
However, this is necessary for SSP - spilling the guard value (or thread
pointer used to load it) is counter to the goal, since it could be
overwritten along with the frame it protects.
Differential Revision: http://reviews.llvm.org/D19363
llvm-svn: 267340
|
|
|
|
|
|
|
|
| |
lowered as rematerialized constants on scalar unit
Found whilst investigating PR27472
llvm-svn: 267339
|
|
|
|
|
|
| |
promoted to type 'const unsigned int' can equal the given constant). The fact that they trigger with this code seems like it may be a bug, but the warning itself is still generally useful enough to retain it for now.
llvm-svn: 267337
|
|
|
|
|
|
| |
Or, "LinkageTypes Linkage : 4;" might be sign-extended on msc.
llvm-svn: 267335
|
|
|
|
| |
llvm-svn: 267334
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add tests for some missing cases to bitcode upgrade in r267296.
- DICompositeType with an 'elements:' field, which will cause it to be
involved in a cycle after the upgrade.
- A DIDerivedType that references a class in 'extraData:'.
I updated test/Bitcode/dityperefs-3.8.ll with the missing cases and
regenerated test/Bitcode/dityperefs-3.8.ll.bc.
llvm-svn: 267332
|
|
|
|
|
|
| |
branches internally for the one difference, allowing the rest of the code to be common. NFC
llvm-svn: 267331
|
|
|
|
|
|
| |
The CTLZ operation is only Custom for vectors if AVX512 is enabled so if a vector gets here AVX512 is implied. NFC
llvm-svn: 267330
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: tejohnson
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D19405
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 267329
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The original patch caused crashes because it could derefence a null pointer
for SelectionDAGTargetInfo for targets that do not define it.
Evaluates fmul+fadd -> fmadd combines and similar code sequences in the
machine combiner. It adds support for float and double similar to the existing
integer implementation. The key features are:
- DAGCombiner checks whether it should combine greedily or let the machine
combiner do the evaluation. This is only supported on ARM64.
- It gives preference to throughput over latency: the heuristic used is
to combine always in loops. The targets decides whether the machine
combiner should optimize for throughput or latency.
- Supports for fmadd, f(n)msub, fmla, fmls patterns
- On by default at O3 ffast-math
llvm-svn: 267328
|
|
|
|
|
|
| |
cmove/ne+cttz/ctlz. These are folded by DAG combine now.
llvm-svn: 267326
|
|
|
|
|
|
|
|
| |
ctlz_zero_undef(X) -> ctlz(X). InstCombine already does this for IR and X86 pattern matches this during isel.
A follow up commit will remove the X86 patterns to allow this to be tested.
llvm-svn: 267325
|
|
|
|
|
|
| |
string is just true or 1.
llvm-svn: 267324
|
|
|
|
|
|
|
|
| |
debug-info-bearing function"
This reverts commit r267320 while investigating an OpenMP buildbot failure.
llvm-svn: 267322
|
|
|
|
|
|
|
|
|
|
| |
in a debug-info-bearing function has a debug location attached to it. Failure to
do so causes an "!dbg attachment points at wrong subprogram for function"
assertion failure when the inliner sets up inline scope info.
rdar://problem/25878916
llvm-svn: 267320
|
|
|
|
|
|
|
|
|
|
| |
Right now it only contains the LinkageType, but will be extended
with "hasSection", "isOptSize", "hasInlineAssembly", etc.
Differential Revision: http://reviews.llvm.org/D19404
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 267319
|
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19456
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 267318
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Keeping as much as possible internal/private is
known to help the optimizer. Let's try to benefit from
this in ThinLTO.
Note: this is early work, but is enough to build clang (and
all the LLVM tools). I still need to write some lit-tests...
Differential Revision: http://reviews.llvm.org/D19103
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 267317
|
|
|
|
|
|
| |
text string which always evaluates to true. Add a ! so they'll evaluate to false.
llvm-svn: 267312
|
|
|
|
|
|
| |
instructions. Only one of the conditions should be valid for each pattern, not both. Update tests accordingly.
llvm-svn: 267311
|
|
|
|
| |
llvm-svn: 267309
|
|
|
|
|
|
| |
Add a case where we can't relax.
llvm-svn: 267308
|