summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Fix a problem in getDirectoryContents where sub-directory names wereReid Spencer2005-07-281-6/+14
| | | | | | | | | appended to a path string that didn't end in a slash, yielding invalid path names. Path contribute by Nicholas Riley. llvm-svn: 22539
* get lazy JITing working. Some of shootout runs nowAndrew Lenharth2005-07-282-70/+96
| | | | llvm-svn: 22538
* Like constants, globals on some platforms are GOT relative. This means they ↵Andrew Lenharth2005-07-282-14/+78
| | | | | | | | | | | | | | have to be allocated near the GOT, which new doesn't do. So break out the allocate into a new function. Also move GOT index handling into JITResolver. This lets it update the mapping when a Lazy function is JITed. It doesn't managed the table, just the mapping. Note that this is still non-ideal, as any function that takes a function address should also take a GOT index, but that is a lot of changes. The relocation resolve process updates any GOT entry it sees is out of date. llvm-svn: 22537
* Eliminate an extra copy from R1 that Nate noticed on function calls thatChris Lattner2005-07-281-1/+2
| | | | | | have to write arguments to the stack llvm-svn: 22536
* Specify the correct number of operandsChris Lattner2005-07-281-3/+3
| | | | llvm-svn: 22535
* Fold constant adds into loads and stores to frame indices.Nate Begeman2005-07-281-17/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the following code: double %ext(int %A.0__, long %A.1__) { %A_addr = alloca %typedef.DComplex ; <%typedef.DComplex*> [#uses=2] %tmp.1 = cast %typedef.DComplex* %A_addr to int* ; <int*> [#uses=1] store int %A.0__, int* %tmp.1 %tmp.2 = getelementptr %typedef.DComplex* %A_addr, int 0, uint 1 ; <double*> [#uses=2] %tmp.3 = cast double* %tmp.2 to long* ; <long*> [#uses=1] store long %A.1__, long* %tmp.3 %tmp.5 = load double* %tmp.2 ; <double> [#uses=1] ret double %tmp.5 } We now generate: _ext: .LBB_ext_0: ; stw r3, -12(r1) stw r4, -8(r1) stw r5, -4(r1) lfd f1, -8(r1) blr Instead of: _ext: .LBB_ext_0: ; stw r3, -12(r1) addi r2, r1, -12 stw r4, 4(r2) stw r5, 8(r2) lfd f1, 4(r2) blr This also fires hundreds of times on MultiSource. llvm-svn: 22533
* Fix some commentsNate Begeman2005-07-272-4/+2
| | | | llvm-svn: 22530
* Fix debug info to not print out recently freed memory.Chris Lattner2005-07-271-1/+1
| | | | llvm-svn: 22529
* Print symbolic register names in debug dumpsChris Lattner2005-07-271-2/+4
| | | | llvm-svn: 22528
* Eliminate all remaining tabs and trailing spaces.Jeff Cohen2005-07-2761-1186/+1186
| | | | llvm-svn: 22523
* Implement the optimization for the Red Zone on Darwin. This removes theNate Begeman2005-07-272-4/+8
| | | | | | unnecessary SP manipulation in leaf routines that don't need it. llvm-svn: 22522
* fix some warnings when compiled with 32-bit hostsChris Lattner2005-07-271-2/+2
| | | | llvm-svn: 22521
* Eliminate tabs and trailing spaces.Jeff Cohen2005-07-2750-3882/+3882
| | | | llvm-svn: 22520
* add a note about the red zoneChris Lattner2005-07-261-0/+2
| | | | llvm-svn: 22518
* Wrap some long lines, fix emission of weak global variablesChris Lattner2005-07-261-8/+9
| | | | llvm-svn: 22517
* Update the PPC readmeNate Begeman2005-07-261-6/+4
| | | | llvm-svn: 22516
* ConvertibleToGEP always returns 0, remove some old crufty code whichChris Lattner2005-07-264-369/+0
| | | | | | is actually dead because of this! llvm-svn: 22515
* fix a warning on 32-bit systemsChris Lattner2005-07-251-1/+1
| | | | llvm-svn: 22513
* Fix an optimization put in for accessing static globals. This obviatesNate Begeman2005-07-251-5/+6
| | | | | | the need to build PIC. llvm-svn: 22512
* fix compile errorAndrew Lenharth2005-07-231-1/+1
| | | | llvm-svn: 22508
* PowerPC no-pic code is not quite ready for prime-timeChris Lattner2005-07-221-0/+1
| | | | llvm-svn: 22507
* Handle more imm forms, and load small negative i32 constants without hitting ↵Andrew Lenharth2005-07-221-2/+45
| | | | | | memory (should do the same for arbitrary zero extended small negative constants) llvm-svn: 22505
* finally found the gcc defined constantsAndrew Lenharth2005-07-222-2/+2
| | | | llvm-svn: 22502
* Alpha JIT (beta)Andrew Lenharth2005-07-229-3/+673
| | | | llvm-svn: 22500
* simpilfy instruction encoding (and make the lines way shorter, aka Misha ↵Andrew Lenharth2005-07-223-223/+281
| | | | | | happification) llvm-svn: 22499
* update interfaceAndrew Lenharth2005-07-226-6/+6
| | | | llvm-svn: 22498
* the JIT memory manager will construct a GOT if you want it too. Also, it ↵Andrew Lenharth2005-07-221-9/+51
| | | | | | places the constants in the allocated memory, rather than a malloc area llvm-svn: 22497
* Support building non-PICNate Begeman2005-07-218-123/+179
| | | | | | | | Remove the LoadHiAddr pseudo-instruction. Optimization of stores to and loads from statics. Force JIT to use new non-PIC codepaths. llvm-svn: 22494
* revert to using 4-byte alignment for doubles, as specified by the ABIChris Lattner2005-07-211-1/+1
| | | | llvm-svn: 22493
* Support assembling fsqrt on darwin. This will be implemented better whenNate Begeman2005-07-211-0/+9
| | | | | | PowerPC gets subtarget support up. llvm-svn: 22489
* Generate mfocrf when targeting g5. Generate fsqrt/fsqrts when targetin g5.Nate Begeman2005-07-205-22/+54
| | | | | | 8-byte align doubles. llvm-svn: 22486
* Do not let MaskedValueIsZero consider undef to be zero, for reasonsChris Lattner2005-07-201-2/+8
| | | | | | | | explained in the comment. This fixes UnitTests/2003-09-18-BitFieldTest on darwin llvm-svn: 22483
* count the number of relocations performed.Chris Lattner2005-07-201-0/+3
| | | | llvm-svn: 22480
* Integrate SelectFPExpr into SelectExpr. This gets PPC32 closer to beingNate Begeman2005-07-193-346/+242
| | | | | | automatically generated from a target description. llvm-svn: 22470
* Remove unnecessary FP_EXTEND. This causes worse codegen for SSE.Nate Begeman2005-07-191-3/+0
| | | | llvm-svn: 22469
* For: memory operations -> storesReid Spencer2005-07-192-0/+7
| | | | | | | | | | | | | | | | This is the first incremental patch to implement this feature. It adds no functionality to LLVM but setup up the information needed from targets in order to implement the optimization correctly. Each target needs to specify the maximum number of store operations for conversion of the llvm.memset, llvm.memcpy, and llvm.memmove intrinsics into a sequence of store operations. The limit needs to be chosen at the threshold of performance for such an optimization (generally smallish). The target also needs to specify whether the target can support unaligned stores for multi-byte store operations. This helps ensure the optimization doesn't generate code that will trap on an alignment errors. More patches to follow. llvm-svn: 22468
* When transforming &A[i] < &A[j] -> i < j, make sure to perform the comparisonChris Lattner2005-07-181-4/+11
| | | | | | as a signed compare. This patch may fix PR597, but is correct in any case. llvm-svn: 22465
* The assertion was wrong: the code only worked for i64. While we're at it,Chris Lattner2005-07-181-3/+11
| | | | | | | expand the code to work for all integer datatypes. This should unbreak alpha. llvm-svn: 22464
* Only get the .bss and .data sections when needed instead of unconditionally.Chris Lattner2005-07-161-11/+3
| | | | | | This allows is to not emit empty sections when .data or .bss is not used. llvm-svn: 22457
* Refactor getSection() method to make it easier to use.Chris Lattner2005-07-161-19/+15
| | | | llvm-svn: 22455
* Major refactor of the ELFWriter code. Instead of building up one bigChris Lattner2005-07-161-143/+167
| | | | | | | | | | | vector that represents the .o file at once, build up a vector for each section of the .o file. This is needed because the .o file writer needs to be able to switch between sections as it emits them (e.g. switch between the .text section and the .rel section when emitting code). This patch has no functionality change. llvm-svn: 22453
* Teach the legalizer how to promote SINT_TO_FP to a wider SINT_TO_FP thatNate Begeman2005-07-162-54/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the target natively supports. This eliminates some special-case code from the x86 backend and generates better code as well. For an i8 to f64 conversion, before & after: _x87 before: subl $2, %esp movb 6(%esp), %al movsbw %al, %ax movw %ax, (%esp) filds (%esp) addl $2, %esp ret _x87 after: subl $2, %esp movsbw 6(%esp), %ax movw %ax, (%esp) filds (%esp) addl $2, %esp ret _sse before: subl $12, %esp movb 16(%esp), %al movsbl %al, %eax cvtsi2sd %eax, %xmm0 addl $12, %esp ret _sse after: subl $12, %esp movsbl 16(%esp), %eax cvtsi2sd %eax, %xmm0 addl $12, %esp ret llvm-svn: 22452
* Teach the register allocator that movaps is also a move instructionNate Begeman2005-07-161-1/+1
| | | | llvm-svn: 22451
* A couple more darwinismsNate Begeman2005-07-161-2/+5
| | | | llvm-svn: 22450
* Remove all knowledge of UINT_TO_FP from the X86 backend, relying on theChris Lattner2005-07-161-53/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | legalizer to eliminate them. With this comes the expected code quality improvements, such as, for this: double foo(unsigned short X) { return X; } we now generate this: _foo: subl $4, %esp movzwl 8(%esp), %eax movl %eax, (%esp) fildl (%esp) addl $4, %esp ret instead of this: _foo: subl $4, %esp movw 8(%esp), %ax movzwl %ax, %eax ;; Load not folded into this. movl %eax, (%esp) fildl (%esp) addl $4, %esp ret -Chris llvm-svn: 22449
* Break the code for expanding UINT_TO_FP operations out into its ownChris Lattner2005-07-161-35/+116
| | | | | | | | | | | | | | SelectionDAGLegalize::ExpandLegalUINT_TO_FP method. Add a new method, PromoteLegalUINT_TO_FP, which allows targets to request that UINT_TO_FP operations be promoted to a larger input type. This is useful for targets that have some UINT_TO_FP or SINT_TO_FP operations but not all of them (like X86). The same should be done with SINT_TO_FP, but this patch does not do that yet. llvm-svn: 22447
* You can't use config options without config.hChris Lattner2005-07-151-0/+1
| | | | llvm-svn: 22446
* Get closer to fully working scalar FP in SSE regs. This gets singlesourceNate Begeman2005-07-153-52/+53
| | | | | | working, and Olden/power. llvm-svn: 22441
* Add support for printing the sse scalar comparison instruction mnemonics.Nate Begeman2005-07-144-0/+34
| | | | llvm-svn: 22440
* Fixed PR#596:John Criswell2005-07-141-2/+2
| | | | | | | | Add parenthesis around the value being negated; that way, if the value begins with a minus sign (e.g. negative integer), we won't generate a C predecrement operator by mistake. llvm-svn: 22437
OpenPOWER on IntegriCloud