| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Address of an alias of a global with offset is incorrectly lowered as an address of the global (i.e. ignoring offset).
llvm-svn: 295762
|
| |
|
|
| |
llvm-svn: 295759
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is part of trying to clean up our handling of min/max patterns in IR.
By converting these to canonical form, we're more likely to recognize them
because there are various places in InstCombine that don't use
matchSelectPattern or m_SMax and friends.
The backend fixups referenced in the now deleted TODO comment were added with:
https://reviews.llvm.org/rL291392
https://reviews.llvm.org/rL289738
If there's any codegen fallout from this change, we should be able to address
it in DAGCombiner or target-specific lowering.
llvm-svn: 295758
|
| |
|
|
| |
llvm-svn: 295757
|
| |
|
|
|
|
| |
There are still over 3400 files remaining with this property set, but there are tens of thousands more with the property not set. Until we decide what to do on a global scale, this at least unblocks me temporarily.
llvm-svn: 295756
|
| |
|
|
| |
llvm-svn: 295755
|
| |
|
|
| |
llvm-svn: 295754
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before frame offsets are calculated, try to eliminate the
frame indexes used by SGPR spills. Then we can delete them
after.
I think for now we can be sure that no other instruction
will be re-using the same frame indexes. It should be easy
to notice if this assumption ever breaks since everything
asserts if it tries to use a dead frame index later.
The unused emergency stack slot seems to still be left behind,
so an additional 4 bytes is still wasted.
llvm-svn: 295753
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Simplify how we compute UniqueExit. Reuse ExitBlockSet.
Reviewers: sanjoy, efriedma, hfinkel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30182
llvm-svn: 295751
|
| |
|
|
| |
llvm-svn: 295750
|
| |
|
|
|
|
|
|
|
|
|
| |
Conflicting debug info for function arguments causes hard-to-debug
assertions in the DWARF backend, so the Verifier should reject it.
For performance reasons this only checks function arguments from
non-inlined debug intrinsics for now.
rdar://problem/30520286
llvm-svn: 295749
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Rework the code that was sinking/duplicating (icmp and, 0) sequences
into blocks where they were being used by conditional branches to form
more tbz instructions on AArch64. The new code is more general in that
it just looks for 'and's that have all icmp 0's as users, with a target
hook used to select which subset of 'and' instructions to consider.
This change also enables 'and' sinking for X86, where it is more widely
beneficial than on AArch64.
The 'and' sinking/duplicating code is moved into the optimizeInst phase
of CodeGenPrepare, where it can take advantage of the fact the
OptimizeCmpExpression has already sunk/duplicated any icmps into the
blocks where they are used. One minor complication from this change is
that optimizeLoadExt needed to be updated to always mark 'and's it has
determined should be in the same block as their feeding load in the
InsertedInsts set to avoid an infinite loop of hoisting and sinking the
same 'and'.
This change fixes a regression on X86 in the tsan runtime caused by
moving GVNHoist to a later place in the optimization pipeline (see
PR31382).
Reviewers: t.p.northover, qcolombet, MatzeB
Subscribers: aemerson, mcrosier, sebpop, llvm-commits
Differential Revision: https://reviews.llvm.org/D28813
llvm-svn: 295746
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D29913
llvm-svn: 295745
|
| |
|
|
| |
llvm-svn: 295740
|
| |
|
|
|
|
| |
There appears never to have been a time that the reference was updated.
llvm-svn: 295739
|
| |
|
|
|
|
| |
Reviewed by Vedant Kumar (D30178)
llvm-svn: 295737
|
| |
|
|
|
|
|
|
| |
VPERMI2Q.
VPERMI2Q doesn't have shuffle decoding from re-materializable constants.
llvm-svn: 295736
|
| |
|
|
| |
llvm-svn: 295735
|
| |
|
|
|
|
| |
Add a missing test that I forgot to svn add in my previous commit
llvm-svn: 295734
|
| |
|
|
|
|
| |
As i64 isn't a value type on 32-bit targets, we need to fold the VZEXT_LOAD into VPBROADCASTQ.
llvm-svn: 295733
|
| |
|
|
|
|
|
|
|
|
| |
PC isn't allowed in the source operand of t2MOVr, so change the register class
to one without PC. SP handling is slightly trickier and changes depending on if
we're in ARMv8, so do that in checkTargetMatchPredicate.
Differential Revision: https://reviews.llvm.org/D30199
llvm-svn: 295732
|
| |
|
|
| |
llvm-svn: 295731
|
| |
|
|
|
|
|
|
| |
As i64 isn't a value type on 32-bit targets, we fail to fold the VZEXT_LOAD into VPBROADCASTQ.
Also shows that we're not decoding VPERMIV3 shuffles very well....
llvm-svn: 295729
|
| |
|
|
|
|
| |
This matches what is already done during shuffle lowering and helps prevent the need for a zero-vector in cases where shuffles match both patterns.
llvm-svn: 295723
|
| |
|
|
|
|
| |
Currently just contains one case where we combine to VZEXT_MOVL instead of VZEXT which would avoid the need for a zero vector to be generated
llvm-svn: 295721
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is a fix for assertion failure in
`getInverseMinMaxSelectPattern` when ABS is passed in as a select pattern.
We should not be invoking the simplification rule for
ABS(MIN(~ x,y))) or ABS(MAX(~x,y)) combinations.
Added a test case which would cause an assertion failure without the patch.
Reviewers: sanjoy, majnemer
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30051
llvm-svn: 295719
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D30189
llvm-svn: 295718
|
| |
|
|
| |
llvm-svn: 295717
|
| |
|
|
|
|
|
| |
For now, we hardcode a BLX instruction, and generate an ADJCALLSTACKDOWN/UP pair
with amount 0.
llvm-svn: 295716
|
| |
|
|
|
|
| |
use llvm::to_string instead of std:: version.
llvm-svn: 295711
|
| |
|
|
|
|
| |
They are all covered by the SSSE3 intrinsics test with SSSE3, AVX, and AVX512 command lines.
llvm-svn: 295708
|
| |
|
|
|
|
|
|
|
|
| |
some other consistency issues.
They are all covered by the SSE4.2 intrinsics test with SSE4.2, AVX, and AVX512 command lines.
Merge sse42.ll into the other intrinsics test. Rename sse42_64.ll to be named like other intrinsic tests.
llvm-svn: 295707
|
| |
|
|
|
|
| |
They are all covered by the SSE4.1 intrinsics test with SSE4.1, AVX, and AVX512 command lines.
llvm-svn: 295706
|
| |
|
|
|
|
| |
They are all covered by the SSE3 intrinsics test with SSE2, AVX, and AVX512 command lines.
llvm-svn: 295705
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new method introduced under "-lsr-exp-narrow" option (currenlty set to true).
Summary:
The method is based on registers number mathematical expectation and should be
generally closer to optimal solution.
Please see details in comments to
"LSRInstance::NarrowSearchSpaceByDeletingCostlyFormulas()" function
(in lib/Transforms/Scalar/LoopStrengthReduce.cpp).
Reviewers: qcolombet
Differential Revision: http://reviews.llvm.org/D29862
From: Evgeny Stupachenko <evstupac@gmail.com>
llvm-svn: 295704
|
| |
|
|
|
|
| |
They are all covered by the AES intrinsics test with a legacy command line and an AVX command line.
llvm-svn: 295702
|
| |
|
|
|
|
| |
update_llc_test_checks.py
llvm-svn: 295701
|
| |
|
|
|
|
|
|
| |
They are all covered by the SSE2 intrinsics test with SSE2, AVX, and AVX512 command lines.
Also remove an unneeded lfence intrinsic test since it was already covered.
llvm-svn: 295700
|
| |
|
|
|
|
|
|
| |
They are all covered by the SSE intrinsics test with SSE, AVX, and AVX512 command lines.
Also remove an unneeded sfence intrinsic test since it was already covered.
llvm-svn: 295699
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on Sandy Bridge and later Intel CPUs
Summary:
Sandy Bridge and later CPUs have better throughput using a SHLD to implement rotate versus the normal rotate instructions. Additionally it saves one uop and avoids a partial flag update dependency.
This patch implements this change on any Sandy Bridge or later processor without BMI2 instructions. With BMI2 we will use RORX as we currently do.
Reviewers: zvi
Reviewed By: zvi
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30181
llvm-svn: 295697
|
| |
|
|
| |
llvm-svn: 295695
|
| |
|
|
|
|
| |
in some patterns.
llvm-svn: 295693
|
| |
|
|
|
|
| |
in scalar intrinsics without the peephole pass.
llvm-svn: 295692
|
| |
|
|
| |
llvm-svn: 295691
|
| |
|
|
|
|
| |
(Whitespace only change)
llvm-svn: 295690
|
| |
|
|
|
|
|
|
|
| |
- Fix doxygen comments (do not repeat documented name, remove definition
comment if there is already one at the declaration, add \p, ...)
- Add some const modifiers
- Use range based for
llvm-svn: 295688
|
| |
|
|
|
|
|
|
|
| |
- Fix doxygen comments
- Remove duplicated comments
- Remove section comments (which became wrong over time)
- Use more `const` and references but less `auto`
llvm-svn: 295687
|
| |
|
|
|
|
| |
I will add one more use for this in a later change.
llvm-svn: 295685
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction.
Summary:
Currently, BranchFolder drops DebugLoc for branch instructions in some places. For example, for the test code attached, the branch instruction of 'entry' block has a DILocation of
```
!12 = !DILocation(line: 6, column: 3, scope: !11)
```
, but this information is gone when then block is lowered because BranchFolder misses it. This patch is a fix for this issue.
Reviewers: qcolombet, aprantl, craig.topper, MatzeB
Reviewed By: aprantl
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29902
llvm-svn: 295684
|
| |
|
|
| |
llvm-svn: 295682
|