summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Make the apint construction more effective.Zhou Sheng2007-04-131-3/+3
| | | | llvm-svn: 35960
* CSE simple binary expressions when they are inserted. This makes LSR produceChris Lattner2007-04-131-5/+25
| | | | | | less huge code that needs to be cleaned up by sdisel. llvm-svn: 35959
* Implement review feedback .. don't double search a set.Reid Spencer2007-04-121-3/+1
| | | | llvm-svn: 35957
* Make sure intrinsics that are lowered to functions make the function weakReid Spencer2007-04-121-2/+2
| | | | | | | linkage so we only end up with one of them in a program. These are, after all overloaded and templatish in nature. llvm-svn: 35956
* Provide support for intrinsics that lower themselves to a function body.Reid Spencer2007-04-121-2/+32
| | | | | | | | This can happen for intrinsics that are overloaded. In such cases it is necessary to emit a function prototype before the body of the function that calls the intrinsic and to ensure we don't emit it multiple times. llvm-svn: 35954
* Implement Thread Local Storage (TLS) in CBackend.Lauro Ramos Venancio2007-04-121-17/+27
| | | | llvm-svn: 35951
* Implement the "thread_local" keyword.Lauro Ramos Venancio2007-04-1215-3657/+4042
| | | | llvm-svn: 35950
* Fix bugs in generated code for part_select and part_set so that llc doesn'tReid Spencer2007-04-121-35/+44
| | | | | | barf when CBE is run with a program that contains these intrinsics. llvm-svn: 35946
* Fix a bug in PartSet. The replacement value needs to be zext or trunc toReid Spencer2007-04-121-3/+7
| | | | | | the size of the value, not just zext. Also, give better names to two BBs. llvm-svn: 35945
* the result of an inline asm copy can be an arbitrary VT that the registerChris Lattner2007-04-121-4/+21
| | | | | | | | class supports. In the case of vectors, this means we often get the wrong type (e.g. we get v4f32 instead of v8i16). Make sure to convert the vector result to the right type. This fixes CodeGen/X86/2007-04-11-InlineAsmVectorResult.ll llvm-svn: 35944
* fold noop vbitconvert instructionsChris Lattner2007-04-121-0/+9
| | | | llvm-svn: 35943
* Fix weirdness handling single element vectors.Chris Lattner2007-04-121-5/+2
| | | | llvm-svn: 35941
* Fix mmx paddq, add support for the 'y' register class, though it isn't tested.Chris Lattner2007-04-121-1/+5
| | | | llvm-svn: 35940
* For PR1284:Reid Spencer2007-04-123-14/+202
| | | | | | Implement the "part_set" intrinsic. llvm-svn: 35938
* improve the patch for PR1318 to also support grouped options with customChris Lattner2007-04-121-7/+12
| | | | | | | | | handlers (like the pass list). My previous fix only supported *new* command line options, not additions to old ones. This fixes test/Feature/load_module.ll llvm-svn: 35935
* Fix CodeGen/X86/2007-03-24-InlineAsmPModifier.llChris Lattner2007-04-111-6/+8
| | | | llvm-svn: 35926
* Build Hello by default so it can be used in test cases.Reid Spencer2007-04-111-1/+1
| | | | llvm-svn: 35922
* fix an infinite loop compiling ldecod, notice by JeffC.Chris Lattner2007-04-111-1/+1
| | | | llvm-svn: 35910
* Fix incorrect fall-throughs in addr mode code. This fixes ↵Chris Lattner2007-04-111-3/+3
| | | | | | CodeGen/ARM/arm-negative-stride.ll llvm-svn: 35909
* Fix Transforms/ScalarRepl/union-pointer.llChris Lattner2007-04-111-6/+7
| | | | llvm-svn: 35906
* Fix PR1318 by reacting appropriately to a mutating option list.Chris Lattner2007-04-111-0/+14
| | | | llvm-svn: 35905
* Fix a bug where ICmpInst objects instantiated directly with a name wouldReid Spencer2007-04-111-2/+2
| | | | | | | not retain that name. Not noticed because AsmParser always sets name after construction. However, llvm2cpp noticed. llvm-svn: 35903
* Fix an approximate calculation in an assertion not to give false negatives.Reid Spencer2007-04-111-1/+1
| | | | llvm-svn: 35901
* 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
* 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
* 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
* 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-1110-115/+123
| | | | | | | 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-111-7/+25
| | | | | | | 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
* Add support for our first SSSE3 instruction "pmulhrsw".Bill Wendling2007-04-107-10/+54
| | | | llvm-svn: 35869
* new micro optznChris Lattner2007-04-101-0/+30
| | | | llvm-svn: 35867
* 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
* Strengthen the boundary conditions of this fold, implementingChris Lattner2007-04-091-3/+3
| | | | | | InstCombine/set.ll:test25 llvm-svn: 35852
* No longer needed.Jeff Cohen2007-04-091-1/+0
| | | | llvm-svn: 35850
* 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-091-19/+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