summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Fix this test.Dan Gohman2010-07-101-2/+2
| | | | llvm-svn: 108059
* The accumulator tail recursion transform claims to work for any associativeDuncan Sands2010-07-101-14/+14
| | | | | | | | | | | | | | | | operation, but the way it's implemented requires the operation to also be commutative. So add a check for commutativity (and tweak the corresponding comments). This makes no difference in practice since every associative LLVM instruction is also commutative! Here's an example to show the need for commutativity: the accum_recursion.ll testcase calculates the factorial function. Before the transformation the result of a call is ((((1*1)*2)*3)...)*x while afterwards it is (((1*x)*(x-1))...*2)*1 which clearly requires both associativity and commutativity of * to be equal to the original. llvm-svn: 108056
* Emit COPY instructions instead of using copyRegToReg in InstrEmitter,Jakob Stoklund Olesen2010-07-104-53/+21
| | | | | | | | | ScheduleDAGEmit, TwoAddressLowering, and PHIElimination. This switches the bulk of register copies to using COPY, but many less used copyRegToReg calls remain. llvm-svn: 108050
* Use non-bool values for .count.Bill Wendling2010-07-101-3/+3
| | | | llvm-svn: 108048
* Don't emit st(0)/st(1) copies as FpMOV instructions. Use FpSET_ST? instead.Jakob Stoklund Olesen2010-07-102-83/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on a patch by Rafael EspĂ­ndola. Attempt to make the FpSET_ST1 hack more robust, but we are still relying on FpSET_ST0 preceeding it. This is only for supporting really weird x87 inline asm. We support: FpSET_ST0 INLINEASM FpSET_ST0 FpSET_ST1 INLINEASM with and without kills on the arguments. We don't support: FpSET_ST1 FpSET_ST0 INLINEASM nor FpSET_ST1 INLINEASM Just Don't Do It! llvm-svn: 108047
* FileCheckize inline asm FP stack testsJakob Stoklund Olesen2010-07-104-19/+89
| | | | llvm-svn: 108046
* Insert IMPLICIT_DEF instructions at the current insert position, notDan Gohman2010-07-101-1/+1
| | | | | | at the end of the block. llvm-svn: 108045
* Add parentheses yet again to satisfy GCC's warnings.Chandler Carruth2010-07-101-3/+3
| | | | llvm-svn: 108043
* Add an explicit triple to make this test behave consistently.Dan Gohman2010-07-101-1/+1
| | | | llvm-svn: 108041
* Fix this XTARGET so that this does doesn't XPASS on non-darwin hosts.Dan Gohman2010-07-101-1/+1
| | | | llvm-svn: 108040
* Reapply bottom-up fast-isel, with several fixes for x86-32:Dan Gohman2010-07-1026-392/+776
| | | | | | | | | - Check getBytesToPopOnReturn(). - Eschew ST0 and ST1 for return values. - Fix the PIC base register initialization so that it doesn't ever fail to end up the top of the entry block. llvm-svn: 108039
* An x86 function returns a floating point value in st(0), and we must make sureJakob Stoklund Olesen2010-07-101-18/+26
| | | | | | | | | it is popped, even if it is ununsed. A CopyFromReg node is too weak to represent the required sideeffect, so insert an FpGET_ST0 instruction directly instead. This will matter when CopyFromReg gets lowered to a generic COPY instruction. llvm-svn: 108037
* Update DBG_VALUE to refer appropriate stack slot in case of a spill.Devang Patel2010-07-091-2/+19
| | | | llvm-svn: 108023
* Declare YMM subregisters in the right way! Thanks JakobBruno Cardoso Lopes2010-07-091-2/+1
| | | | llvm-svn: 108022
* Add AVX 256-bit packed MOVNT variantsBruno Cardoso Lopes2010-07-093-0/+47
| | | | llvm-svn: 108021
* Remember the *_TC opcodes for load/storeJakob Stoklund Olesen2010-07-091-0/+4
| | | | llvm-svn: 108020
* Add AVX 256-bit unpack and interleaveBruno Cardoso Lopes2010-07-093-0/+81
| | | | llvm-svn: 108017
* Fix small bug in isMoveInstr -> COPY translationJakob Stoklund Olesen2010-07-091-3/+4
| | | | llvm-svn: 108013
* Automatically fold COPY instructions into stack load/store.Jakob Stoklund Olesen2010-07-094-14/+80
| | | | llvm-svn: 108012
* Fix a few testsJakob Stoklund Olesen2010-07-092-61/+61
| | | | llvm-svn: 108011
* Remat uncoalescable COPY instrsJakob Stoklund Olesen2010-07-091-0/+11
| | | | llvm-svn: 108010
* In the presence of variable sized objects, allocate an emergency spill slot.Jim Grosbach2010-07-092-5/+12
| | | | | | rdar://8131327 llvm-svn: 108008
* Clarify what mysterious check means.Bill Wendling2010-07-091-0/+3
| | | | llvm-svn: 108005
* Add a target triple.Dan Gohman2010-07-091-1/+1
| | | | llvm-svn: 108003
* Fix MachineLICM to actually visit inner loops.Dan Gohman2010-07-092-3/+100
| | | | llvm-svn: 108001
* Start the support for AVX instructions with 256-bit %ymm registers. A couple ofBruno Cardoso Lopes2010-07-0911-18/+199
| | | | | | | | | | | | | | | notes: - The instructions are being added with dummy placeholder patterns using some 256 specifiers, this is not meant to work now, but since there are some multiclasses generic enough to accept them, when we go for codegen, the stuff will be already there. - Add VEX encoding bits to support YMM - Add MOVUPS and MOVAPS in the first round - Use "Y" as suffix for those Instructions: MOVUPSYrr, ... - All AVX instructions in X86InstrSSE.td will move soon to a new X86InstrAVX file. llvm-svn: 107996
* Change TII::foldMemoryOperand API to require the machine instruction to beJakob Stoklund Olesen2010-07-096-38/+37
| | | | | | | | | | | | | | inserted in a MBB, and return an already inserted MI. This target API change is necessary to allow foldMemoryOperand to call storeToStackSlot and loadFromStackSlot when folding a COPY to a stack slot reference in a target independent way. The foldMemoryOperandImpl hook is going to change in the same way, but I'll wait until COPY folding is actually implemented. Most targets only fold copies and won't need to specialize this hook at all. llvm-svn: 107991
* cache result of operator*Gabor Greif2010-07-091-6/+6
| | | | llvm-svn: 107990
* remove useless cast and fix typos in commentGabor Greif2010-07-091-3/+3
| | | | llvm-svn: 107989
* cache result of operator*Gabor Greif2010-07-091-3/+5
| | | | llvm-svn: 107988
* --- Reverse-merging r107947 into '.':Bob Wilson2010-07-0923-648/+368
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | U utils/TableGen/FastISelEmitter.cpp --- Reverse-merging r107943 into '.': U test/CodeGen/X86/fast-isel.ll U test/CodeGen/X86/fast-isel-loads.ll U include/llvm/Target/TargetLowering.h U include/llvm/Support/PassNameParser.h U include/llvm/CodeGen/FunctionLoweringInfo.h U include/llvm/CodeGen/CallingConvLower.h U include/llvm/CodeGen/FastISel.h U include/llvm/CodeGen/SelectionDAGISel.h U lib/CodeGen/LLVMTargetMachine.cpp U lib/CodeGen/CallingConvLower.cpp U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp U lib/CodeGen/SelectionDAG/FastISel.cpp U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp U lib/CodeGen/SelectionDAG/InstrEmitter.cpp U lib/CodeGen/SelectionDAG/TargetLowering.cpp U lib/Target/XCore/XCoreISelLowering.cpp U lib/Target/XCore/XCoreISelLowering.h U lib/Target/X86/X86ISelLowering.cpp U lib/Target/X86/X86FastISel.cpp U lib/Target/X86/X86ISelLowering.h llvm-svn: 107987
* cache result of operator*Gabor Greif2010-07-091-3/+5
| | | | llvm-svn: 107984
* cache result of operator*Gabor Greif2010-07-091-2/+4
| | | | llvm-svn: 107983
* cache result of operator*Gabor Greif2010-07-091-2/+3
| | | | llvm-svn: 107982
* cache result of operator*Gabor Greif2010-07-091-2/+3
| | | | llvm-svn: 107981
* cache result of operator*Gabor Greif2010-07-091-4/+8
| | | | llvm-svn: 107980
* cache result of operator*Gabor Greif2010-07-091-2/+3
| | | | llvm-svn: 107979
* cache result of operator*Gabor Greif2010-07-091-11/+14
| | | | llvm-svn: 107978
* cache result of operator*Gabor Greif2010-07-091-2/+3
| | | | llvm-svn: 107977
* cache result of operator*Gabor Greif2010-07-092-7/+10
| | | | llvm-svn: 107976
* cache result of operator*Gabor Greif2010-07-091-4/+6
| | | | llvm-svn: 107975
* cache result of operator*Gabor Greif2010-07-091-2/+3
| | | | llvm-svn: 107974
* cache result of operator*Gabor Greif2010-07-091-2/+3
| | | | llvm-svn: 107972
* cache result of operator* (found by inspection)Gabor Greif2010-07-091-2/+4
| | | | llvm-svn: 107971
* fix clang selfhost issue (shadowing)Gabor Greif2010-07-091-3/+3
| | | | llvm-svn: 107970
* cache result of operator*Gabor Greif2010-07-091-6/+7
| | | | llvm-svn: 107969
* cache result of operator*Gabor Greif2010-07-091-3/+4
| | | | llvm-svn: 107968
* cache result of operator*Gabor Greif2010-07-091-3/+4
| | | | llvm-svn: 107967
* cache result of operator*Gabor Greif2010-07-091-3/+5
| | | | llvm-svn: 107966
* cache operator*'s result (in multiple functions)Gabor Greif2010-07-091-15/+22
| | | | llvm-svn: 107965
OpenPOWER on IntegriCloud