| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 35897
|
| |
|
|
|
|
| |
as the key for a map insertion.
llvm-svn: 35896
|
| |
|
|
| |
llvm-svn: 35895
|
| |
|
|
| |
llvm-svn: 35894
|
| |
|
|
| |
llvm-svn: 35893
|
| |
|
|
| |
llvm-svn: 35892
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
icmp slt i32 %X, 0 ; <i1>:0 [#uses=1]
sext i1 %0 to i32 ; <i32>:1 [#uses=1]
into:
%X.lobit = ashr i32 %X, 31 ; <i32> [#uses=1]
This implements InstCombine/icmp.ll:test[34]
llvm-svn: 35891
|
| |
|
|
|
|
| |
Transforms/InstCombine/icmp.ll
llvm-svn: 35890
|
| |
|
|
| |
llvm-svn: 35889
|
| |
|
|
| |
llvm-svn: 35888
|
| |
|
|
| |
llvm-svn: 35887
|
| |
|
|
| |
llvm-svn: 35886
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
define i32 @test(i32 %X) {
entry:
%Y = and i32 %X, 4 ; <i32> [#uses=1]
icmp eq i32 %Y, 0 ; <i1>:0 [#uses=1]
sext i1 %0 to i32 ; <i32>:1 [#uses=1]
ret i32 %1
}
by moving code out of commonIntCastTransforms into visitZExt. Simplify the
APInt gymnastics in it etc.
llvm-svn: 35885
|
| |
|
|
| |
llvm-svn: 35884
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
allows other simplifications. For example, this compiles:
int isnegative(unsigned int X) {
return !(X < 2147483648U);
}
Into this code:
x86:
movl 4(%esp), %eax
shrl $31, %eax
ret
arm:
mov r0, r0, lsr #31
bx lr
thumb:
lsr r0, r0, #31
bx lr
instead of:
x86:
cmpl $0, 4(%esp)
sets %al
movzbl %al, %eax
ret
arm:
mov r3, #0
cmp r0, #0
movlt r3, #1
mov r0, r3
bx lr
thumb:
mov r2, #1
mov r1, #0
cmp r0, #0
blt LBB1_2 @entry
LBB1_1: @entry
cpy r2, r1
LBB1_2: @entry
cpy r0, r2
bx lr
Testcase here: test/CodeGen/Generic/ispositive.ll
llvm-svn: 35883
|
| |
|
|
| |
llvm-svn: 35882
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
improves codegen on many architectures. Tests committed as CodeGen/*/iabs.ll
X86 Old: X86 New:
_test: _test:
movl 4(%esp), %ecx movl 4(%esp), %eax
movl %ecx, %eax movl %eax, %ecx
negl %eax sarl $31, %ecx
testl %ecx, %ecx addl %ecx, %eax
cmovns %ecx, %eax xorl %ecx, %eax
ret ret
PPC Old: PPC New:
_test: _test:
cmpwi cr0, r3, -1 srawi r2, r3, 31
neg r2, r3 add r3, r3, r2
bgt cr0, LBB1_2 ; xor r3, r3, r2
LBB1_1: ; blr
mr r3, r2
LBB1_2: ;
blr
ARM Old: ARM New:
_test: _test:
rsb r3, r0, #0 add r3, r0, r0, asr #31
cmp r0, #0 eor r0, r3, r0, asr #31
movge r3, r0 bx lr
mov r0, r3
bx lr
Thumb Old: Thumb New:
_test: _test:
neg r2, r0 asr r2, r0, #31
cmp r0, #0 add r0, r0, r2
bge LBB1_2 eor r0, r2
LBB1_1: @ bx lr
cpy r0, r2
LBB1_2: @
bx lr
Sparc Old: Sparc New:
test: test:
save -96, %o6, %o6 save -96, %o6, %o6
sethi 0, %l0 sra %i0, 31, %l0
sub %l0, %i0, %l0 add %i0, %l0, %l1
subcc %i0, -1, %l1 xor %l1, %l0, %i0
bg .BB1_2 restore %g0, %g0, %g0
nop retl
.BB1_1: nop
or %g0, %l0, %i0
.BB1_2:
restore %g0, %g0, %g0
retl
nop
It also helps alpha/ia64 :)
llvm-svn: 35881
|
| |
|
|
| |
llvm-svn: 35880
|
| |
|
|
| |
llvm-svn: 35879
|
| |
|
|
| |
llvm-svn: 35878
|
| |
|
|
|
|
|
| |
Put the parameter attributes in their own ParamAttr name space. Adjust the
rest of llvm as a result.
llvm-svn: 35877
|
| |
|
|
|
|
|
| |
and Mach-O systems. Additionally, correct the Mach-O logic code to look at
byte 12 not byte 15. Hopefully this fixes the llvm-ld warning on Darwin.
llvm-svn: 35876
|
| |
|
|
|
|
|
|
|
|
|
| |
others.
We now tolerate small amounts of undefined behavior, better emulating what
would happen if the transaction actually occurred in memory. This fixes
SingleSource/UnitTests/2007-04-10-BitfieldTest.c on PPC, at least until
Devang gets a chance to fix the CFE from doing undefined things with bitfields :)
llvm-svn: 35875
|
| |
|
|
| |
llvm-svn: 35874
|
| |
|
|
|
|
|
| |
plain wrong since $module was never defined so we always get .so which is
broken on Darwin. Just force it to .dylib.
llvm-svn: 35873
|
| |
|
|
| |
llvm-svn: 35872
|
| |
|
|
| |
llvm-svn: 35869
|
| |
|
|
| |
llvm-svn: 35868
|
| |
|
|
| |
llvm-svn: 35867
|
| |
|
|
| |
llvm-svn: 35866
|
| |
|
|
| |
llvm-svn: 35865
|
| |
|
|
| |
llvm-svn: 35864
|
| |
|
|
| |
llvm-svn: 35863
|
| |
|
|
| |
llvm-svn: 35862
|
| |
|
|
| |
llvm-svn: 35861
|
| |
|
|
| |
llvm-svn: 35860
|
| |
|
|
| |
llvm-svn: 35859
|
| |
|
|
|
|
| |
commit a LOT of files.
llvm-svn: 35858
|
| |
|
|
| |
llvm-svn: 35857
|
| |
|
|
| |
llvm-svn: 35856
|
| |
|
|
| |
llvm-svn: 35854
|
| |
|
|
| |
llvm-svn: 35853
|
| |
|
|
|
|
| |
InstCombine/set.ll:test25
llvm-svn: 35852
|
| |
|
|
| |
llvm-svn: 35851
|
| |
|
|
| |
llvm-svn: 35850
|
| |
|
|
| |
llvm-svn: 35849
|
| |
|
|
|
|
| |
series, I promise.
llvm-svn: 35848
|
| |
|
|
| |
llvm-svn: 35847
|
| |
|
|
| |
llvm-svn: 35846
|
| |
|
|
| |
llvm-svn: 35845
|