| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 291424
|
| |
|
|
|
|
|
| |
computeInterleaveCount() is not defined/used and is therefore removed.
Review: Davide Italiano
llvm-svn: 291423
|
| |
|
|
|
|
|
| |
not excluding ourselves when checking if any equivalent stores
exist.
llvm-svn: 291421
|
| |
|
|
| |
llvm-svn: 291420
|
| |
|
|
|
|
| |
A future patch will conver it back to BLENDM if its beneficial to register allocation.
llvm-svn: 291419
|
| |
|
|
|
|
|
|
| |
vselects of all ones and all zeros.
Previously we emitted a VPTERNLOG and a separate masked move.
llvm-svn: 291415
|
| |
|
|
|
|
|
|
| |
This patch moves convertToUnixPathSeparator from LLD to LLVM.
Differential Revision: https://reviews.llvm.org/D28444
llvm-svn: 291414
|
| |
|
|
|
|
|
|
|
| |
empty string
This is used in LDC for custom boolean commandline options, setArgStr
is called with an empty string before using AddLiteralOption.
llvm-svn: 291406
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
By using stripPointerCasts we can get to the root
value and then walk down the bitcast graph
Reviewers: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28181
llvm-svn: 291405
|
| |
|
|
| |
llvm-svn: 291404
|
| |
|
|
|
|
| |
of zeroes/ones when handling sign extends of i1 without VLX.
llvm-svn: 291402
|
| |
|
|
| |
llvm-svn: 291400
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Running a Debug build of objdump -objc-meta-data with a large Mach-O file is
currently unnecessarily slow.
With some local test input, this change reduces the run time from 75-85s down
to 15-20s.
The two changes are:
Assert on pointer equality not array equality
Replace vector<pair<address, symbol>> with DenseMap<address, symbol>
Additionally, use a std::unique_ptr rather than handling the memory manually.
Patch by Dave Lee!
llvm-svn: 291398
|
| |
|
|
| |
llvm-svn: 291395
|
| |
|
|
| |
llvm-svn: 291393
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I noticed this problem as part of the ongoing attempt to canonicalize min/max ops in IR.
The debug output shows nodes like this:
t4: i32 = xor t2, Constant:i32<-1>
t21: i8 = setcc t4, Constant:i32<0>, setlt:ch
t14: i32 = select t21, t4, Constant:i32<-1>
And because the select is holding onto the t4 (xor) node while EmitTest creates a new
x86-specific xor node, the lowering results in:
t4: i32 = xor t2, Constant:i32<-1>
t25: i32,i32 = X86ISD::XOR t2, Constant:i32<-1>
t28: i32,glue = X86ISD::CMOV Constant:i32<-1>, t4, Constant:i8<15>, t25:1
Differential Revision: https://reviews.llvm.org/D28374
llvm-svn: 291392
|
| |
|
|
|
|
|
|
|
|
| |
The 'fast' costs should only work for shifts by uniform constants (uniform non-constant are lowered using the slow default implementation).
Logical shifts were not taking into account that we must mask the psrlw result, so the costs needed to be doubled.
Added missing AVX2/AVX512BW costs as well.
llvm-svn: 291391
|
| |
|
|
|
|
| |
XOP was prematurely matching, doubling the cost of ashr/lshr uniform shifts.
llvm-svn: 291390
|
| |
|
|
|
|
| |
masking for patterns that already use the aligned form. NFC
llvm-svn: 291383
|
| |
|
|
|
|
|
|
|
|
|
| |
behind
The change in r291362 was too agressive. We still need to flush at the
end of the block because function local metadata can introduce fwd
ref as well.
(Bootstrap with ThinLTO was broken)
llvm-svn: 291379
|
| |
|
|
| |
llvm-svn: 291377
|
| |
|
|
|
|
|
| |
This allows the use of the 'read_register' intrinsics used by clang's
named register globals features.
llvm-svn: 291375
|
| |
|
|
|
|
| |
SSE41 provides pmulld which allows the simpler pslld/paddd/cvttps2dq/pmulld pattern than SSE2's use of pmuludq.
llvm-svn: 291372
|
| |
|
|
|
|
|
|
| |
redundant with masked move instructions.
We should probably teach the two address instruction pass to turn masked moves into BLENDM when its beneficial to the register allocator.
llvm-svn: 291371
|
| |
|
|
|
|
|
|
| |
All but (v2f64 broadcast f64) are handled with VBROADCAST instructions. The v2f64 version can be handled with VMOVDDUP.
We may want to consider converting to BLENDM instructions in the two address instruction pass if its beneficial to register allocation.
llvm-svn: 291369
|
| |
|
|
|
|
| |
I'm not too sure how to get isel to select even all of the unmasked forms, but at least we have a consistent set now.
llvm-svn: 291368
|
| |
|
|
| |
llvm-svn: 291366
|
| |
|
|
|
|
| |
We were matching against general vector shift costs before the uniform splat costs
llvm-svn: 291365
|
| |
|
|
|
|
| |
conversion.
llvm-svn: 291364
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The issue happens with:
%0 = ....., !tbaa !0
%1 = ....., !tbaa !1
With !0 that references !1.
In this case when loading !0 we generates a temporary for the
operand !1. We now flush it immediately and trigger the load of
!1 before moving on. If we don't we get the temporary when
attaching to %1. This is usually not an issue except that we
eagerly try to update TBAA MDNodes, which is obviously not possible
if we only have a temporary.
Differential Revision: https://reviews.llvm.org/D28423
llvm-svn: 291362
|
| |
|
|
|
|
|
|
| |
fabs(x * x) is not generally safe to assume x is positive if x is a NaN.
This is also less general than it could be, so this will be replaced
with a transformation on the intrinsic.
llvm-svn: 291359
|
| |
|
|
| |
llvm-svn: 291356
|
| |
|
|
| |
llvm-svn: 291355
|
| |
|
|
| |
llvm-svn: 291354
|
| |
|
|
|
|
| |
Allows us to correctly fall through to the lower AVX1 costs if look up failed.
llvm-svn: 291353
|
| |
|
|
|
|
| |
order. NFCI.
llvm-svn: 291352
|
| |
|
|
|
|
|
| |
congruence classes for stores, and then keep them up to date. Add
testcases.
llvm-svn: 291351
|
| |
|
|
|
|
| |
v64i8 shuffles (PR31470)
llvm-svn: 291347
|
| |
|
|
|
|
| |
This change should have been commit as part of r291340.
llvm-svn: 291341
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Tar's Ustar header has the "prefix" field to store a directory
part of a filename. It is not as flexible as the PAX-extended
filename because there's still a limitation on the maximum filename
size, but it mitigates the situation.
This patch should unbreak some Windows buildbots that uses very
old tar command.
llvm-svn: 291340
|
| |
|
|
|
|
| |
size is smaller than the register size so unfolding would increase the load size.
llvm-svn: 291338
|
| |
|
|
| |
llvm-svn: 291335
|
| |
|
|
| |
llvm-svn: 291334
|
| |
|
|
| |
llvm-svn: 291328
|
| |
|
|
|
|
|
|
| |
Gracefully leave code that performs function-pointer bitcasts implying
non-trivial pointer conversions alone, rather than aborting, since it's
just undefined behavior.
llvm-svn: 291326
|
| |
|
|
| |
llvm-svn: 291324
|
| |
|
|
|
|
|
|
|
|
|
| |
the pass.
Also move command line handling out of the pass constructor and into
a separate function.
Differential Revision: https://reviews.llvm.org/D28422
llvm-svn: 291323
|
| |
|
|
|
|
|
| |
Without the parentheses, clang would emit warnings while compiling the
code.
llvm-svn: 291320
|
| |
|
|
|
|
|
|
|
|
|
|
| |
WebAssembly requires caller and callee signatures to match exactly. In LLVM,
there are a variety of circumstances where signatures may be mismatched in
practice, and one can bitcast a function address to another type to call it
as that type. This patch adds a pass which replaces bitcasted function
addresses with wrappers to replace the bitcasts.
This doesn't catch everything, but it does match many common cases.
llvm-svn: 291315
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: LLVM's non-standard notion of phi nodes means we can't both try to substitute for undef in phi nodes *and* use phi nodes as leaders all the time. This changes NewGVN to use the same semantics as SimplifyPHINode to decide which phi nodes are equivalent.
Reviewers: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28312
llvm-svn: 291308
|