summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Regenerate.Reid Spencer2007-04-113-271/+273
| | | | llvm-svn: 35897
* Fix a crash-by-unknown-exception caused by attempting to use a null pointerReid Spencer2007-04-111-1/+2
| | | | | | as the key for a map insertion. llvm-svn: 35896
* Fix to not give false positives.Reid Spencer2007-04-111-1/+2
| | | | llvm-svn: 35895
* Fix some issues with param attrs.Reid Spencer2007-04-111-1/+4
| | | | llvm-svn: 35894
* Add support for parameter attributes.Reid Spencer2007-04-111-1/+26
| | | | llvm-svn: 35893
* sext of compares.Chris Lattner2007-04-111-0/+14
| | | | llvm-svn: 35892
* Turn stuff like:Chris Lattner2007-04-111-9/+40
| | | | | | | | | | | | | 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
* Simplify some comparisons to arithmetic, this implements:Chris Lattner2007-04-111-0/+27
| | | | | | Transforms/InstCombine/icmp.ll llvm-svn: 35890
* new testcaseChris Lattner2007-04-111-0/+17
| | | | llvm-svn: 35889
* Fix this harder.Chris Lattner2007-04-111-12/+19
| | | | llvm-svn: 35888
* don't create shifts by zero, fix some problems with my previous patchChris Lattner2007-04-111-3/+7
| | | | llvm-svn: 35887
* canonicalize (x <u 2147483648) -> (x >s -1) and (x >u 2147483647) -> (x <s 0)Chris Lattner2007-04-111-25/+32
| | | | llvm-svn: 35886
* fix a miscompilation of:Chris Lattner2007-04-111-63/+59
| | | | | | | | | | | | | | | 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
* doneChris Lattner2007-04-111-28/+0
| | | | llvm-svn: 35884
* Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which oftenChris Lattner2007-04-111-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* new testcaseChris Lattner2007-04-111-0/+12
| | | | llvm-svn: 35882
* Codegen integer abs more efficiently using the trick from the PPC CWG. ThisChris Lattner2007-04-111-4/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* new testcases for integer abs functionChris Lattner2007-04-113-0/+50
| | | | llvm-svn: 35880
* fix a regression introduced by my last patch.Chris Lattner2007-04-111-14/+1
| | | | llvm-svn: 35879
* Hack to get sys::Path to recognize macho dylibs.Chris Lattner2007-04-111-4/+7
| | | | llvm-svn: 35878
* For PR1146:Reid Spencer2007-04-1114-157/+196
| | | | | | | Put the parameter attributes in their own ParamAttr name space. Adjust the rest of llvm as a result. llvm-svn: 35877
* Teach sys::Path how to recognize different kinds of object files for ELFReid Spencer2007-04-112-14/+43
| | | | | | | 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
* Simplify SROA conversion to integer in some ways, make it more general in ↵Chris Lattner2007-04-111-131/+138
| | | | | | | | | | | 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
* Make isDynamicLibrary detect more than just an ELF file.Reid Spencer2007-04-111-2/+10
| | | | llvm-svn: 35874
* Hack the shared library extension for dylib. The existing code just looksReid Spencer2007-04-111-1/+1
| | | | | | | 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
* Hopefully fix LTDL_SHLIB_EXT on DarwinReid Spencer2007-04-111-5/+5
| | | | llvm-svn: 35872
* Add support for our first SSSE3 instruction "pmulhrsw".Bill Wendling2007-04-108-10/+64
| | | | llvm-svn: 35869
* New test case.Devang Patel2007-04-101-0/+41
| | | | llvm-svn: 35868
* new micro optznChris Lattner2007-04-101-0/+30
| | | | llvm-svn: 35867
* Correctly report version of GCC used.Jeff Cohen2007-04-101-0/+2
| | | | llvm-svn: 35866
* Add test case for PR 1154.Devang Patel2007-04-101-0/+125
| | | | llvm-svn: 35865
* fix a comment bug Reid noticedChris Lattner2007-04-101-2/+3
| | | | llvm-svn: 35864
* Enable loop rotate pass.Devang Patel2007-04-101-0/+1
| | | | llvm-svn: 35863
* add missing methods, mark stuff constChris Lattner2007-04-101-1/+9
| | | | llvm-svn: 35862
* getLimitedValue now just forward to APInt's getLimitedValue. Mark it const.Chris Lattner2007-04-101-3/+2
| | | | llvm-svn: 35861
* add a methodChris Lattner2007-04-101-0/+7
| | | | llvm-svn: 35860
* restore support for negative stridesChris Lattner2007-04-101-3/+5
| | | | llvm-svn: 35859
* apparently some people commit without building the tree, or they forget toChris Lattner2007-04-102-2/+2
| | | | | | commit a LOT of files. llvm-svn: 35858
* unbreak the build :(Chris Lattner2007-04-101-1/+1
| | | | llvm-svn: 35857
* Fix build problem.Jeff Cohen2007-04-101-1/+1
| | | | llvm-svn: 35856
* Drop the "bit" prefix for the part.select intrinsic.Reid Spencer2007-04-101-1/+1
| | | | llvm-svn: 35854
* Fix name of an intrinsic: bit.part_select -> part.selectReid Spencer2007-04-101-10/+10
| | | | llvm-svn: 35853
* Strengthen the boundary conditions of this fold, implementingChris Lattner2007-04-091-3/+3
| | | | | | InstCombine/set.ll:test25 llvm-svn: 35852
* new testcaseChris Lattner2007-04-091-0/+5
| | | | llvm-svn: 35851
* No longer needed.Jeff Cohen2007-04-091-1/+0
| | | | llvm-svn: 35850
* Add check for opt crash.Devang Patel2007-04-091-0/+1
| | | | llvm-svn: 35849
* Re-constify things that don't break the build. Last patch in thisOwen Anderson2007-04-091-2/+4
| | | | | | series, I promise. llvm-svn: 35848
* remove dead target hooks.Chris Lattner2007-04-092-32/+0
| | | | llvm-svn: 35847
* remove dead target hooksChris Lattner2007-04-092-98/+49
| | | | llvm-svn: 35846
* remove some dead hooksChris Lattner2007-04-092-49/+0
| | | | llvm-svn: 35845
OpenPOWER on IntegriCloud