| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 113167
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
failed because a subtarget feature was not enabled. Use this to
remove a bunch of hacks from the X86AsmParser for rejecting things
like popfl in 64-bit mode. Previously these hacks weren't needed,
but were important to get a message better than "invalid instruction"
when used in the wrong mode.
This also fixes bugs where pushal would not be rejected correctly in
32-bit mode (just pusha).
llvm-svn: 113166
|
| |
|
|
| |
llvm-svn: 113165
|
| |
|
|
|
|
|
| |
into the middle of the class, and rework how the different sections of
the generated file are conditionally included for simplicity.
llvm-svn: 113163
|
| |
|
|
| |
llvm-svn: 113158
|
| |
|
|
| |
llvm-svn: 113157
|
| |
|
|
|
|
| |
by Krister Wombell.
llvm-svn: 113155
|
| |
|
|
| |
llvm-svn: 113147
|
| |
|
|
| |
llvm-svn: 113146
|
| |
|
|
| |
llvm-svn: 113144
|
| |
|
|
| |
llvm-svn: 113135
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the duplicated block instead of duplicating them.
Duplicating them into the end of the loop and the preheader
means that we got a phi node in the header of the loop,
which prevented LICM from hoisting them. GVN would
usually come around later and merge the duplicated
instructions so we'd get reasonable output... except that
anything dependent on the shoulda-been-hoisted value can't
be hoisted. In PR5319 (which this fixes), a memory value
didn't get promoted.
llvm-svn: 113134
|
| |
|
|
|
|
|
|
|
|
| |
Loop::hasLoopInvariantOperands method. Remove
a useless and confusing Loop::isLoopInvariant(Instruction)
method, which didn't do what you thought it did.
No functionality change.
llvm-svn: 113133
|
| |
|
|
|
|
| |
pattern, so there is no need to define a matching function.
llvm-svn: 113122
|
| |
|
|
| |
llvm-svn: 113119
|
| |
|
|
| |
llvm-svn: 113117
|
| |
|
|
| |
llvm-svn: 113116
|
| |
|
|
| |
llvm-svn: 113115
|
| |
|
|
| |
llvm-svn: 113114
|
| |
|
|
| |
llvm-svn: 113113
|
| |
|
|
| |
llvm-svn: 113109
|
| |
|
|
| |
llvm-svn: 113108
|
| |
|
|
| |
llvm-svn: 113106
|
| |
|
|
|
|
| |
This reduces malloc traffic (yay!) and removes MergeFunctionsEqualityInfo.
llvm-svn: 113105
|
| |
|
|
|
|
|
| |
strong functions first to make sure they're the canonical definitions and then
do a second pass looking only for weak functions.
llvm-svn: 113104
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:
int foo(int x, int y, int z) {
return x+y+z;
}
used to compile into:
_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
movl 4(%rsp), %esi
addl %edx, %esi
movl (%rsp), %edx
addl %esi, %edx
movl %edx, %eax
addq $12, %rsp
ret
Now we produce:
_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
addl 4(%rsp), %edx ## Folded load
addl (%rsp), %edx ## Folded load
movl %edx, %eax
addq $12, %rsp
ret
Fewer instructions and less register use = faster compiles.
llvm-svn: 113102
|
| |
|
|
|
|
|
| |
Clobber ranges are no longer used when joining physical registers.
Instead, all aliases are checked for interference.
llvm-svn: 113084
|
| |
|
|
| |
llvm-svn: 113077
|
| |
|
|
| |
llvm-svn: 113073
|
| |
|
|
|
|
| |
not SelectAddr
llvm-svn: 113072
|
| |
|
|
|
|
| |
regarding mmx shuffles
llvm-svn: 113059
|
| |
|
|
| |
llvm-svn: 113058
|
| |
|
|
|
|
|
| |
into an inner loop, as the new loop iteration may differ substantially.
This fixes PR8078.
llvm-svn: 113057
|
| |
|
|
|
|
| |
versions yet.
llvm-svn: 113056
|
| |
|
|
| |
llvm-svn: 113055
|
| |
|
|
| |
llvm-svn: 113050
|
| |
|
|
| |
llvm-svn: 113048
|
| |
|
|
| |
llvm-svn: 113047
|
| |
|
|
| |
llvm-svn: 113045
|
| |
|
|
| |
llvm-svn: 113044
|
| |
|
|
| |
llvm-svn: 113043
|
| |
|
|
|
|
|
|
| |
location is being re-stored to the memory location. We would get
a dangling pointer from the SSAUpdate data structure and miss a
use. This fixes PR8068
llvm-svn: 113042
|
| |
|
|
| |
llvm-svn: 113035
|
| |
|
|
| |
llvm-svn: 113034
|
| |
|
|
|
|
|
| |
checking each standalone condition and decide whether emit target
specific nodes or remove the condition if it's already matched before.
llvm-svn: 113031
|
| |
|
|
| |
llvm-svn: 113025
|
| |
|
|
|
|
|
|
|
| |
invertible. ScalarEvolution's folding routines don't always succeed
in canonicalizing equal expressions to a single canonical form, and
this can cause these asserts to fail, even though there's no actual
correctness problem. This fixes PR8066.
llvm-svn: 113021
|
| |
|
|
|
|
|
|
| |
"Use target specific nodes instead of relying in unpckl and
unpckh pattern fragments during isel time. Also place a
depth limit in getShuffleScalarElt.
llvm-svn: 113020
|
| |
|
|
|
|
|
|
| |
overload UserInInstr. Explicitly check Allocatable. The early exit in the
condition will mean the performance impact of the extra test should be
minimal.
llvm-svn: 113016
|
| |
|
|
|
|
| |
Bruno, please review.
llvm-svn: 113014
|