| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 328356
|
| |
|
|
|
|
|
|
| |
Optimize Ry = add(Rx,#n); memw(Ry+#0) = Rz => memw(Rx,#n) = Rz.
Patch by Jyotsna Verma.
llvm-svn: 328355
|
| |
|
|
| |
llvm-svn: 328353
|
| |
|
|
|
|
| |
counterparts.
llvm-svn: 328352
|
| |
|
|
|
|
|
|
|
|
|
| |
attribute for AMDGPU
- Remove use of the opencl and amdopencl environment member of the target triple for the AMDGPU target.
- Use function attribute to communicate to the AMDGPU backend to add implicit arguments for OpenCL kernels for the AMDHSA OS.
Differential Revision: https://reviews.llvm.org/D43736
llvm-svn: 328349
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When investigating bugs in PDB generation, the first step is
often to do the same link with link.exe and then compare PDBs.
But comparing PDBs is hard because two completely different byte
sequences can both be correct, so it hampers the investigation when
you also have to spend time figuring out not just which bytes are
different, but also if the difference is meaningful.
This patch fixes a couple of cases related to string table emission,
hash table emission, and the order in which we emit strings that
makes more of our bytes the same as the bytes generated by MS PDBs.
Differential Revision: https://reviews.llvm.org/D44810
llvm-svn: 328348
|
| |
|
|
|
|
|
|
|
|
|
|
| |
HexagonGenMux would collapse pairs of predicated transfers if it assumed
that the predicated .new forms cannot be created. Turns out that generating
mux is preferable in almost all cases.
Introduce an option -hexagon-gen-mux-threshold that controls the minimum
distance between the instruction defining the predicate and the later of
the two transfers. If the distance is closer than the threshold, mux will
not be generated. Set the threshold to 0 by default.
llvm-svn: 328346
|
| |
|
|
|
|
| |
Patch by Anand Kodnani.
llvm-svn: 328344
|
| |
|
|
|
|
| |
unit
llvm-svn: 328343
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Porting HWASan to Linux x86-64, first of the three patches, LLVM part.
The approach is similar to ARM case, trap signal is used to communicate
memory tag check failure. int3 instruction is used to generate a signal,
access parameters are stored in nop [eax + offset] instruction immediately
following the int3 one.
One notable difference is that x86-64 has to untag the pointer before use
due to the lack of feature comparable to ARM's TBI (Top Byte Ignore).
Reviewers: eugenis
Subscribers: kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D44699
llvm-svn: 328342
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes PR36658, "Constant pool entry out of range!" in Thumb1 mode.
In ARMConstantIslands::optimizeThumb2JumpTables() in Thumb1 mode,
adjustBBOffsetsAfter() is not calculating postOffset correctly by
properly accounting for the padding that is required for the constant pool
that immediately follows the jump table branch instruction.
Reviewers: t.p.northover, eli.friedman
Reviewed By: t.p.northover
Subscribers: chrib, tstellar, javed.absar, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D44709
llvm-svn: 328341
|
| |
|
|
|
|
|
|
|
| |
- Fix checking for vector predicate registers.
- Avoid speculating llvm.lifetime.end intrinsic.
Patch by Harsha Jagasia and Brendon Cahoon.
llvm-svn: 328339
|
| |
|
|
|
|
| |
Add missing non-VEX and (V)PMOVMSKB instructions to the pattern
llvm-svn: 328338
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D44817
llvm-svn: 328336
|
| |
|
|
| |
llvm-svn: 328334
|
| |
|
|
|
|
|
|
|
| |
When converting an instruction to the wider version, copy any
subregisters if the original operand has a subregister.
Patch by Brendon Cahoon.
llvm-svn: 328333
|
| |
|
|
|
|
| |
function unit
llvm-svn: 328331
|
| |
|
|
|
|
| |
JSAGU/JSTC function units
llvm-svn: 328328
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds functions to allow MachineLICM to hoist invariant stores.
Currently, MachineLICM does not hoist any store instructions, however
when storing the same value to a constant spot on the stack, the store
instruction should be considered invariant and be hoisted. The function
isInvariantStore iterates each operand of the store instruction and checks
that each register operand satisfies isCallerPreservedPhysReg. The store
may be fed by a copy, which is hoisted by isCopyFeedingInvariantStore.
This patch also adds the PowerPC changes needed to consider the stack
register as caller preserved.
Differential Revision: https://reviews.llvm.org/D40196
llvm-svn: 328326
|
| |
|
|
| |
llvm-svn: 328324
|
| |
|
|
| |
llvm-svn: 328323
|
| |
|
|
| |
llvm-svn: 328322
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Loads and stores can only shift the offset register by the size of the value
being loaded, but currently the DAGCombiner will reduce the width of the load
if it's followed by a trunc making it impossible to later combine the shift.
Solve this by implementing shouldReduceLoadWidth for the AArch64 backend and
make it prevent the width reduction if this is what would happen, though do
allow it if reducing the load width will let us eliminate a later sign or zero
extend.
Differential Revision: https://reviews.llvm.org/D44794
llvm-svn: 328321
|
| |
|
|
|
|
| |
This was due to a misunderstanding over what llvm calls a micro-op (retirement unit) is actually called a macro-op on the AMD/Jaguar target. Folded loads don't affect num macro ops.
llvm-svn: 328320
|
| |
|
|
|
|
|
|
| |
correctly use JFPU1 scheduler pipe followed by JLAGU/JSAGU/JFPA/JVALU function units
Fixes throughput to match Agner/Fam16h-SoG as well.
llvm-svn: 328318
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When building the SLP tree, we look for reuse among the vectorized tree
entries. However, each gather sequence is represented by a unique tree entry,
even though the sequence may be identical to another one. This means, for
example, that a gather sequence with two uses will be counted twice when
computing the cost of the tree. We should only count the cost of the definition
of a gather sequence rather than its uses. During code generation, the
redundant gather sequences are emitted, but we optimize them away with CSE. So
it looks like this problem just affects the cost model.
Differential Revision: https://reviews.llvm.org/D44742
llvm-svn: 328316
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Some targets does not support labels inside debug sections, but support
references in form `section+offset`. Patch adds initial support
for this.
Reviewers: echristo, probinson, jlebar
Subscribers: llvm-commits, JDevlieghere
Differential Revision: https://reviews.llvm.org/D43943
llvm-svn: 328314
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When targeting execute-only and fp-armv8, float constants in a compare
resulted in instruction selection failures. This is now fixed by using
vmov.f32 where possible, otherwise the floating point constant is
lowered into a integer constant that is moved into a floating point
register.
This patch also restores using fpcmp with immediate 0 under fp-armv8.
Change-Id: Ie87229706f4ed879a0c0cf66631b6047ed6c6443
llvm-svn: 328313
|
| |
|
|
|
|
|
|
| |
parameters.
Reverted for now, due to it causing verifier failures.
llvm-svn: 328312
|
| |
|
|
|
|
| |
Reviewed by @GGanesh and @craig.topper
llvm-svn: 328309
|
| |
|
|
|
|
|
|
| |
of 2 instregex entries
Found while updating D44687
llvm-svn: 328308
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For comparisons with parameters, we can use the ParamState lattice
elements which also provide constant range information. This improves
the code for PR33253 further and gets us closer to use
ValueLatticeElement for all values.
Also, as we are using the range information in the solver directly, we
do not need tryToReplaceWithConstantRange afterwards anymore.
Reviewers: dberlin, mssimpso, davide, efriedma
Reviewed By: mssimpso
Differential Revision: https://reviews.llvm.org/D43762
llvm-svn: 328307
|
| |
|
|
|
|
| |
pipe and JFPX/JVALU function unit as well as the AGUs
llvm-svn: 328304
|
| |
|
|
|
|
|
|
|
| |
Patch by Simon Pilgrim <llvm-dev@redking.me.uk>
That is a slightly modified version of the AArch64 changes from
Simon's D44687 .
llvm-svn: 328303
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Loop peeling also has an impact on the induction variables, so we should
benefit from induction variable simplification after peeling too.
Reviewers: sanjoy, bogner, mzolotukhin, efriedma
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D43878
llvm-svn: 328301
|
| |
|
|
|
|
|
|
| |
Windows on arm is thumb only.
Differential Revision: https://reviews.llvm.org/D43005
llvm-svn: 328298
|
| |
|
|
|
|
|
| |
This reverts commit r328252. This change broke building a number
of projects when targeting ARM and AArch64, see PR36873.
llvm-svn: 328297
|
| |
|
|
| |
llvm-svn: 328296
|
| |
|
|
|
|
| |
Agner's data. Add missing MMX multiplies.
llvm-svn: 328295
|
| |
|
|
|
|
| |
Change pblendvb/blendvps/blendvpd to use WriteFVarBlend
llvm-svn: 328294
|
| |
|
|
| |
llvm-svn: 328293
|
| |
|
|
| |
llvm-svn: 328292
|
| |
|
|
|
|
| |
The VMOVMSKBrr was in a separate InstRW with a lower latency, but I assume they should be the same and the higher latency matches Agners table so I'm going with that.
llvm-svn: 328291
|
| |
|
|
|
|
| |
The SSE versions were present, but not the VEX version.
llvm-svn: 328290
|
| |
|
|
| |
llvm-svn: 328289
|
| |
|
|
|
|
| |
Invalidation should be bit negation. Add missing negation.
llvm-svn: 328287
|
| |
|
|
|
|
| |
That removes some redundant recomputations from the passes pipeline.
llvm-svn: 328272
|
| |
|
|
| |
llvm-svn: 328262
|
| |
|
|
|
|
| |
account for r328254
llvm-svn: 328260
|
| |
|
|
| |
llvm-svn: 328259
|