| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
This patch ensures that we scale the estimated cost of predicated stores by
block probability. This is a follow-on patch for r284123.
llvm-svn: 284126
|
| |
|
|
| |
llvm-svn: 284124
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch modifies the cost calculation of predicated instructions (div and
rem) to avoid the accumulation of rounding errors due to multiple truncating
integer divisions. The calculation for predicated stores will be addressed in a
follow-on patch since we currently don't scale the cost of predicated stores by
block probability.
Differential Revision: https://reviews.llvm.org/D25333
llvm-svn: 284123
|
| |
|
|
|
|
| |
Y) style combines
llvm-svn: 284122
|
| |
|
|
|
|
|
|
| |
Because everything live is spilled at the end of a
block by fast regalloc, assume this will happen and
avoid the copies of the resource descriptor.
llvm-svn: 284119
|
| |
|
|
|
|
| |
Repeated the "fold (mul x, 0) -> 0" instead of "fold (mul x, 1) -> x"
llvm-svn: 284118
|
| |
|
|
| |
llvm-svn: 284117
|
| |
|
|
| |
llvm-svn: 284116
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
These instructions were only defined for microMIPSR6 previously. Add
definitions for MIPSR6, correct definitions for microMIPSR6, flag these
instructions as having unmodelled side effects (they disable/enable
virtual processors) and add missing disassember tests for microMIPSR6.
Reviewers: vkalintiris
Differential Review: https://reviews.llvm.org/D24291
llvm-svn: 284115
|
| |
|
|
|
|
| |
Improves commutation potential
llvm-svn: 284113
|
| |
|
|
|
|
|
|
|
|
| |
The Register Calling Convention (RegCall) was introduced by Intel to optimize parameter transfer on function call.
This calling convention ensures that as many values as possible are passed or returned in registers.
This commit presents the basic additions to LLVM CodeGen in order to support RegCall in X86.
Differential Revision: http://reviews.llvm.org/D25022
llvm-svn: 284108
|
| |
|
|
| |
llvm-svn: 284107
|
| |
|
|
|
|
| |
extend.
llvm-svn: 284106
|
| |
|
|
| |
llvm-svn: 284105
|
| |
|
|
|
|
| |
will be improved in a future commit.
llvm-svn: 284104
|
| |
|
|
|
|
| |
Sorry about the noise.
llvm-svn: 284103
|
| |
|
|
|
|
|
| |
We don't need to check if AVX is enabled. It's implied by the operation action being set to Custom.
We don't need to check both the input and output type widths. We only need to check the type that's being inserted or extracted. The other type is known to be a legal type and we can assume its a different width.
llvm-svn: 284102
|
| |
|
|
|
|
|
| |
As Danny pointed out, defClobbersUseOrDef should use MemoryLocOrCall to make
sure fences are properly handled.
llvm-svn: 284099
|
| |
|
|
|
|
|
|
|
|
| |
PR30499)"
This is with an extra change to avoid calling MemoryLocation::get() on a call instruction.
Differential Revision: https://reviews.llvm.org/D25542
llvm-svn: 284098
|
| |
|
|
|
|
|
|
| |
This allows RegBankSelect in greedy mode to get rid some of the cross
register bank copies when loads are involved in the chain of
computation.
llvm-svn: 284097
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Use storage class C_STAT for 'PrivateLinkage' The storage class for
PrivateLinkage should equal to the Internal Linkage.
- Set 'PrivateGlobalPrefix' from "L" to ".L" for MM_WinCOFF (includes
x86_64) MM_WinCOFF has empty GlobalPrefix '\0' so PrivateGlobalPrefix
"L" may conflict to the normal symbol name starting with 'L'.
Based on a patch by Han Sangjin! Manually updated test cases.
llvm-svn: 284096
|
| |
|
|
|
|
|
| |
Thanks to this patch, RegBankSelect is able to get rid of some register
bank copies as demonstrated in the test case.
llvm-svn: 284094
|
| |
|
|
|
|
|
|
|
|
|
| |
This CL didn't actually address the test case in PR30499, and clang
still crashes.
Also revert dependent change "Memory-SSA cleanup of clobbers interface, NFC"
Reverts r283965 and r283967.
llvm-svn: 284093
|
| |
|
|
|
|
| |
NFC.
llvm-svn: 284091
|
| |
|
|
|
|
| |
NFC.
llvm-svn: 284090
|
| |
|
|
|
|
|
| |
Basically any vector types that fits in a 32-bit register is also valid
as far as copies are concerned.
llvm-svn: 284089
|
| |
|
|
|
|
|
| |
This does not change anything yet, because we do not offer any
alternative mapping.
llvm-svn: 284088
|
| |
|
|
|
|
|
| |
This does not change anything yet, because we do not offer any
alternative mapping.
llvm-svn: 284087
|
| |
|
|
| |
llvm-svn: 284086
|
| |
|
|
| |
llvm-svn: 284085
|
| |
|
|
| |
llvm-svn: 284082
|
| |
|
|
| |
llvm-svn: 284078
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This document describes the proposal to move to GitHub, and
compare the two proposals through various workflow examples,
presenting the current set of commands following by the ones
involved in each of the two proposals.
It is intended to supersede the previous "submodule proposal"
document entirely, and drive the discussion at the BoF during
the next Dev Meeting.
Differential Revision: https://reviews.llvm.org/D24167
llvm-svn: 284077
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D25533
llvm-svn: 284076
|
| |
|
|
|
|
| |
Ahmed's patch again.
llvm-svn: 284075
|
| |
|
|
|
|
| |
More of Ahmed's work.
llvm-svn: 284074
|
| |
|
|
|
|
| |
Another of Ahmed's patches.
llvm-svn: 284073
|
| |
|
|
|
|
| |
Patch from Ahmed Bougaca again.
llvm-svn: 284072
|
| |
|
|
| |
llvm-svn: 284071
|
| |
|
|
|
|
| |
It's going to be a TBNZ (at -O0) anyway, so the high bits don't matter.
llvm-svn: 284070
|
| |
|
|
| |
llvm-svn: 284069
|
| |
|
|
| |
llvm-svn: 284066
|
| |
|
|
| |
llvm-svn: 284065
|
| |
|
|
| |
llvm-svn: 284064
|
| |
|
|
| |
llvm-svn: 284063
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: We need a new LLVM intrinsic to implement MS _AddressOfReturnAddress builtin on 64-bit Windows.
Reviewers: majnemer, rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25293
llvm-svn: 284061
|
| |
|
|
|
|
|
|
|
| |
Use inequality instead of equality to defend against minor version
increases in _MSC_VER. An _MSC_VER value of 1901 should still use
msdia140.dll, as described in this blog post:
https://blogs.msdn.microsoft.com/vcblog/2016/10/05/visual-c-compiler-version/
llvm-svn: 284058
|
| |
|
|
|
|
|
|
|
|
| |
Update the CHECK lines in the shtest-timeout.py lit test to account for
the current output. The output has been changed in r271610 without
adjusting the tests.
Differential Revision: https://reviews.llvm.org/D25236
llvm-svn: 284057
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D25195
llvm-svn: 284056
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
unroll a loop"
Reappy r284044 after revert in r284051. Krzysztof fixed the error in r284049.
The original summary:
This patch tries to fully unroll loops having break statement like this
for (int i = 0; i < 8; i++) {
if (a[i] == value) {
found = true;
break;
}
}
GCC can fully unroll such loops, but currently LLVM cannot because LLVM only
supports loops having exact constant trip counts.
The upper bound of the trip count can be obtained from calling
ScalarEvolution::getMaxBackedgeTakenCount(). Part of the patch is the
refactoring work in SCEV to prevent duplicating code.
The feature of using the upper bound is enabled under the same circumstance
when runtime unrolling is enabled since both are used to unroll loops without
knowing the exact constant trip count.
llvm-svn: 284053
|