| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
instruction. Patch inspired by Brian Lucas!
llvm-svn: 90819
|
|
|
|
|
|
| |
current form, it is too expensive in compile time.
llvm-svn: 90781
|
|
|
|
| |
llvm-svn: 90742
|
|
|
|
|
|
| |
x86 :)
llvm-svn: 90740
|
|
|
|
| |
llvm-svn: 90739
|
|
|
|
| |
llvm-svn: 90737
|
|
|
|
|
|
|
|
|
|
| |
in "bic sp, sp, #15" leads to unpredicatble behaviour in Thumb2 mode.
Emit the following code instead:
mov r4, sp
bic r4, r4, #15
mov sp, r4
llvm-svn: 90724
|
|
|
|
| |
llvm-svn: 90656
|
|
|
|
|
|
|
| |
- Privatize a typedef.
- Call the InvalidateEntry when refining a type.
llvm-svn: 90655
|
|
|
|
| |
llvm-svn: 90640
|
|
|
|
| |
llvm-svn: 90639
|
|
|
|
|
|
|
| |
MachineBasicBlock::canFallThrough(), which is target-independent and more
thorough.
llvm-svn: 90634
|
|
|
|
| |
llvm-svn: 90625
|
|
|
|
| |
llvm-svn: 90608
|
|
|
|
| |
llvm-svn: 90588
|
|
|
|
| |
llvm-svn: 90490
|
|
|
|
| |
llvm-svn: 90429
|
|
|
|
| |
llvm-svn: 90428
|
|
|
|
| |
llvm-svn: 90419
|
|
|
|
|
|
|
|
| |
both source operands. In the canonical form, the 2nd operand is changed to an
undef and the shuffle mask is adjusted to only reference elements from the 1st
operand. Radar 7434842.
llvm-svn: 90417
|
|
|
|
| |
llvm-svn: 90383
|
|
|
|
|
|
|
| |
function, converting "dyn_cast" to "cast", asserting the correct things, and
other general cleanups.
llvm-svn: 90371
|
|
|
|
| |
llvm-svn: 90370
|
|
|
|
| |
llvm-svn: 90366
|
|
|
|
|
|
| |
Patch by Howard Hinnant!
llvm-svn: 90365
|
|
|
|
|
|
|
|
|
| |
that it doesn't have dangling pointers when abstract types are resolved. This
modifies it somewhat to address comments: making the "StructLayoutMap" an
anonymous structure, calling "removeAbstractTypeUser" when appropriate, and
adding asserts where helpful.
llvm-svn: 90362
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 90336
|
|
|
|
| |
llvm-svn: 90246
|
|
|
|
| |
llvm-svn: 90243
|
|
|
|
|
|
|
|
| |
For VMOVv*i[16,32], op bit is don't care, and some cmode bits vary depending on
the immediate values.
Ref: Table A7-15 Modified immediate values for Advanced SIMD instructions.
llvm-svn: 90173
|
|
|
|
| |
llvm-svn: 90166
|
|
|
|
| |
llvm-svn: 90165
|
|
|
|
|
|
|
|
|
| |
for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low. The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.
llvm-svn: 90144
|
|
|
|
| |
llvm-svn: 90141
|
|
|
|
|
|
|
|
|
| |
vectors for
divide/remainder since these operations can trap by unroll them and adding undefs
for the resulting vector.
llvm-svn: 90108
|
|
|
|
| |
llvm-svn: 90050
|
|
|
|
| |
llvm-svn: 90009
|
|
|
|
|
|
| |
the FIXME I added yesterday to be implemented.
llvm-svn: 90008
|
|
|
|
| |
llvm-svn: 89982
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the example in GCC PR16799 to:
LBB1_2: ## %bb1
movl %eax, %eax
subq %rax, %rdi
movq %rdi, (%rcx)
movl (%rdi), %eax
testl %eax, %eax
je LBB1_2
instead of:
LBB1_2: ## %bb1
movl (%rdi), %ecx
subq %rcx, %rdi
movq %rdi, (%rax)
cmpl $0, (%rdi)
je LBB1_2
llvm-svn: 89978
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
allows us to compile the example in readme.txt into:
LBB1_1: ## %bb
movl 4(%rdx,%rax), %ecx
movl %ecx, %esi
imull (%rdx,%rax), %esi
imull %esi, %ecx
movl %esi, 8(%rdx,%rax)
imull %ecx, %esi
movl %ecx, 12(%rdx,%rax)
movl %esi, 16(%rdx,%rax)
imull %ecx, %esi
movl %esi, 20(%rdx,%rax)
addq $16, %rax
cmpq $4000, %rax
jne LBB1_1
instead of:
LBB1_1:
movl (%rdx,%rax), %ecx
imull 4(%rdx,%rax), %ecx
movl %ecx, 8(%rdx,%rax)
imull 4(%rdx,%rax), %ecx
movl %ecx, 12(%rdx,%rax)
imull 8(%rdx,%rax), %ecx
movl %ecx, 16(%rdx,%rax)
imull 12(%rdx,%rax), %ecx
movl %ecx, 20(%rdx,%rax)
addq $16, %rax
cmpq $4000, %rax
jne LBB1_1
GCC (4.2) doesn't seem to be able to eliminate the loads in this
testcase either, it generates:
L2:
movl (%rdx), %eax
imull 4(%rdx), %eax
movl %eax, 8(%rdx)
imull 4(%rdx), %eax
movl %eax, 12(%rdx)
imull 8(%rdx), %eax
movl %eax, 16(%rdx)
imull 12(%rdx), %eax
movl %eax, 20(%rdx)
addl $4, %ecx
addq $16, %rdx
cmpl $1002, %ecx
jne L2
llvm-svn: 89952
|
|
|
|
| |
llvm-svn: 89951
|
|
|
|
| |
llvm-svn: 89913
|
|
|
|
|
|
| |
which accept a comma-separated string or already parsed command line parameters as input, and some code re-factoring to use these new methods.
llvm-svn: 89893
|
|
|
|
|
|
|
| |
With the testcase for pr3120, the "threaded interpreter" runtime decreases
from 1788 to 1413 with this change.
llvm-svn: 89877
|
|
|
|
| |
llvm-svn: 89873
|
|
|
|
| |
llvm-svn: 89866
|
|
|
|
|
|
|
| |
it is definitely profitable to tail duplicate indirect branches for x86.
This is likely to be true to various degrees for all modern x86 processors.
llvm-svn: 89865
|
|
|
|
| |
llvm-svn: 89863
|
|
|
|
| |
llvm-svn: 89850
|