| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
output.
llvm-svn: 31067
|
| |
|
|
|
|
|
|
| |
This patch implements the first increment for the Signless Types feature.
All changes pertain to removing the ConstantSInt and ConstantUInt classes
in favor of just using ConstantInt.
llvm-svn: 31063
|
| |
|
|
|
|
|
|
| |
blocks into the basic block list when lowering the switch inst. into a
binary tree of if-then statements. This allows the "visitSwitchCase" func
to allow for fall-through behavior.
llvm-svn: 31057
|
| |
|
|
| |
llvm-svn: 31040
|
| |
|
|
| |
llvm-svn: 31035
|
| |
|
|
| |
llvm-svn: 31020
|
| |
|
|
| |
llvm-svn: 31019
|
| |
|
|
| |
llvm-svn: 31017
|
| |
|
|
| |
llvm-svn: 31016
|
| |
|
|
|
|
| |
optimization.
llvm-svn: 31009
|
| |
|
|
| |
llvm-svn: 30999
|
| |
|
|
|
|
|
|
|
|
|
| |
(vector_shuffle
(vbitconvert (vbuildvector (copyfromreg v4f32), 1, v4f32), 4, f32),
(undef, undef, undef, undef), (0, 0, 0, 0), 4, f32)
to the
vbitconvert
is a very bad idea.
llvm-svn: 30989
|
| |
|
|
| |
llvm-svn: 30984
|
| |
|
|
| |
llvm-svn: 30961
|
| |
|
|
| |
llvm-svn: 30959
|
| |
|
|
|
|
| |
so that it can be deleted if unused.
llvm-svn: 30955
|
| |
|
|
| |
llvm-svn: 30953
|
| |
|
|
|
|
|
|
|
|
| |
SelectionDAG and it has since bitrotted. Remove the copy from SelectionDAG.
Next, remove the constant folding piece of DAGCombiner::SimplifySetCC into
a new FoldSetCC method which can be used by getNode() and SimplifySetCC.
This fixes obscure bugs.
llvm-svn: 30952
|
| |
|
|
| |
llvm-svn: 30948
|
| |
|
|
|
|
| |
which is undefined. "0" isn't a power of 2.
llvm-svn: 30947
|
| |
|
|
| |
llvm-svn: 30945
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
apply to rems as well as divs. This fixes PR945 and speeds up ReedSolomon
from 14.57s to 10.90s (which is now faster than gcc).
It compiles CodeGen/X86/rem.ll into:
_test1:
subl $4, %esp
movl %esi, (%esp)
movl $2155905153, %ecx
movl 8(%esp), %esi
movl %esi, %eax
imull %ecx
addl %esi, %edx
movl %edx, %eax
shrl $31, %eax
sarl $7, %edx
addl %eax, %edx
imull $255, %edx, %eax
subl %eax, %esi
movl %esi, %eax
movl (%esp), %esi
addl $4, %esp
ret
_test2:
movl 4(%esp), %eax
movl %eax, %ecx
sarl $31, %ecx
shrl $24, %ecx
addl %eax, %ecx
andl $4294967040, %ecx
subl %ecx, %eax
ret
_test3:
subl $4, %esp
movl %esi, (%esp)
movl $2155905153, %ecx
movl 8(%esp), %esi
movl %esi, %eax
mull %ecx
shrl $7, %edx
imull $255, %edx, %eax
subl %eax, %esi
movl %esi, %eax
movl (%esp), %esi
addl $4, %esp
ret
instead of div/idiv instructions.
llvm-svn: 30920
|
| |
|
|
| |
llvm-svn: 30916
|
| |
|
|
| |
llvm-svn: 30915
|
| |
|
|
| |
llvm-svn: 30903
|
| |
|
|
| |
llvm-svn: 30889
|
| |
|
|
| |
llvm-svn: 30884
|
| |
|
|
| |
llvm-svn: 30883
|
| |
|
|
| |
llvm-svn: 30880
|
| |
|
|
| |
llvm-svn: 30878
|
| |
|
|
|
|
| |
As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.
llvm-svn: 30873
|
| |
|
|
| |
llvm-svn: 30869
|
| |
|
|
|
|
| |
SelectionDAGCSEMap ID.
llvm-svn: 30866
|
| |
|
|
| |
llvm-svn: 30861
|
| |
|
|
| |
llvm-svn: 30860
|
| |
|
|
| |
llvm-svn: 30857
|
| |
|
|
| |
llvm-svn: 30853
|
| |
|
|
| |
llvm-svn: 30844
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if TF depends on A and B, and A depends on B, TF just needs to depend on
A. With Jim's alias-analysis stuff enabled, this compiles the testcase in
PR892 into:
__Z4test3Val:
subl $44, %esp
call L__Z3foov$stub
movl %edx, 28(%esp)
movl %eax, 32(%esp)
movl %eax, 24(%esp)
movl %edx, 36(%esp)
movl 52(%esp), %ecx
movl %ecx, 4(%esp)
movl %eax, 8(%esp)
movl %edx, 12(%esp)
movl 48(%esp), %eax
movl %eax, (%esp)
call L__Z3bar3ValS_$stub
addl $44, %esp
ret
instead of:
__Z4test3Val:
subl $44, %esp
call L__Z3foov$stub
movl %eax, 24(%esp)
movl %edx, 28(%esp)
movl 24(%esp), %eax
movl %eax, 32(%esp)
movl 28(%esp), %eax
movl %eax, 36(%esp)
movl 32(%esp), %eax
movl 36(%esp), %ecx
movl 52(%esp), %edx
movl %edx, 4(%esp)
movl %eax, 8(%esp)
movl %ecx, 12(%esp)
movl 48(%esp), %eax
movl %eax, (%esp)
call L__Z3bar3ValS_$stub
addl $44, %esp
ret
llvm-svn: 30821
|
| |
|
|
| |
llvm-svn: 30818
|
| |
|
|
|
|
| |
part was always forced to be sextload, even when we needed an zextload.
llvm-svn: 30782
|
| |
|
|
| |
llvm-svn: 30780
|
| |
|
|
| |
llvm-svn: 30776
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
long long foo(long long X) {
return (long long)(signed char)(int)X;
}
Instead of:
_foo:
extsb r2, r4
srawi r3, r4, 31
mr r4, r2
blr
we now produce:
_foo:
extsb r4, r4
srawi r3, r4, 31
blr
This fixes a miscompilation in ConstantFolding.cpp.
llvm-svn: 30768
|
| |
|
|
| |
llvm-svn: 30759
|
| |
|
|
| |
llvm-svn: 30758
|
| |
|
|
| |
llvm-svn: 30753
|
| |
|
|
| |
llvm-svn: 30727
|
| |
|
|
| |
llvm-svn: 30721
|
| |
|
|
|
|
| |
extra operand to LOADX to specify the exact value extension type.
llvm-svn: 30714
|