- Mar 03, 2010
-
-
Chris Lattner authored
that they are not destination type specific. This allows tblgen to factor them and the type check is redundant with what the isel does anyway. llvm-svn: 97629
-
Evan Cheng authored
- Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality. - Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools). llvm-svn: 97628
-
Evan Cheng authored
llvm-svn: 97617
-
Johnny Chen authored
disassembly only. llvm-svn: 97614
-
Chris Lattner authored
llvm-svn: 97606
-
- Mar 02, 2010
-
-
Chris Lattner authored
We still preprocess calls and fp return stuff. llvm-svn: 97598
-
Chris Lattner authored
now that isel handles chains more aggressively. This also allows us to make isLegalToFold non-virtual. llvm-svn: 97597
-
Chris Lattner authored
CopyToReg/CopyFromReg/INLINEASM. These are annoying because they have the same opcode before an after isel. Fix this by setting their NodeID to -1 to indicate that they are selected, just like what automatically happens when selecting things that end up being machine nodes. With that done, give IsLegalToFold a new flag that causes it to ignore chains. This lets the HandleMergeInputChains routine be the one place that validates chains after a match is successful, enabling the new hotness in chain processing. This smarter chain processing eliminates the need for "PreprocessRMW" in the X86 and MSP430 backends and enables MSP to start matching it's multiple mem operand instructions more aggressively. I currently #if out the dead code in the X86 backend and MSP backend, I'll remove it for real in a follow-on patch. The testcase changes are: test/CodeGen/X86/sse3.ll: we generate better code test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was miscompiling this before, we now generate correct code Convert it to filecheck while I'm at it. test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem folding to make anton happy. :) llvm-svn: 97596
-
Johnny Chen authored
llvm-svn: 97595
-
Johnny Chen authored
the opc string passed in, since it's a given from the class inheritance of T2sI. The fixed the extra 's' in adcss & sbcss when disassembly printing. llvm-svn: 97582
-
Johnny Chen authored
SMMULR, SMMLAR, SMMLSR, TBB, TBH, and 16-bit Thumb instruction CPS for disassembly only. llvm-svn: 97573
-
Johnny Chen authored
Add printMandatoryPredicateOperand() PrintMethod for IT predicate printing. Ref: A8.3 Conditional execution llvm-svn: 97571
-
Johnny Chen authored
llvm-svn: 97567
-
Xerxes Ranby authored
llvm-svn: 97565
-
Xerxes Ranby authored
llvm-svn: 97564
-
Chris Lattner authored
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader. Sink some other stuff out of DAGISelHeader into SDISel. Eliminate the various 'Indent' stuff from various targets, which dates to when isel was recursive. 17 files changed, 114 insertions(+), 430 deletions(-) llvm-svn: 97555
-
Eric Christopher authored
Fixes PR5309. llvm-svn: 97554
-
Bill Wendling authored
llvm-svn: 97536
-
Dan Gohman authored
respectively. llvm-svn: 97531
-
- Mar 01, 2010
-
-
Chris Lattner authored
now that it is gone. llvm-svn: 97516
-
Evan Cheng authored
Remove the optimize for code size limitation on r67917. Optimize 64-bit imul by constants into leas + shl regardless if optimizing for code size. The size saving from using imulq isn't worth it. Also, the lea and shl instructions may expose further optimization. llvm-svn: 97507
-
Chris Lattner authored
problems. rdar://7697850. llvm-svn: 97500
-
Chris Lattner authored
llvm-svn: 97485
-
Johnny Chen authored
bit should be set to 0 instead of 1. llvm-svn: 97481
-
Dan Gohman authored
llvm-svn: 97460
-
Dan Gohman authored
llvm-svn: 97450
-
Nathan Keynes authored
llvm-svn: 97443
-
- Feb 28, 2010
-
-
Mikhail Glushenkov authored
llvm-svn: 97427
-
Chris Lattner authored
llvm-svn: 97374
-
Dan Gohman authored
after LSR, so that clients can opt in. llvm-svn: 97357
-
Dan Gohman authored
Extracting the low element of a vector is now done with EXTRACT_SUBREG, and the zero-extension performed by load movss is now modeled with SUBREG_TO_REG, and so on. Register-to-register movss and movsd are no longer considered copies; they are two-address instructions which insert a scalar into a vector. llvm-svn: 97354
-
Dan Gohman authored
llvm-svn: 97348
-
- Feb 27, 2010
-
-
Chris Lattner authored
but codegen'd differently. This really wanted to use some sort of subreg to get the low 4 bytes of the G8RC register or something. However, it's invalid and nothing is testing it, so I'm just zapping the bogosity. llvm-svn: 97345
-
Chris Lattner authored
llvm-svn: 97316
-
Evan Cheng authored
llvm-svn: 97310
-
- Feb 26, 2010
-
-
Johnny Chen authored
o Parallel addition and subtraction, signed/unsigned o Miscellaneous operations: QADD, QDADD, QSUB, QDSUB o Unsigned sum of absolute differences [and accumulate]: USAD8, USADA8 o Signed/Unsigned saturate: SSAT, SSAT16, USAT, USAT16 o Signed multiply accumulate long (halfwords): SMLAL<x><y> o Signed multiply accumulate/subtract [long] (dual): SMLAD[x], SMLALD[X], SMLSD[X], SMLSLD[X] o Signed dual multiply add/subtract [long]: SMUAD[X], SMUSD[X] llvm-svn: 97276
-
Jakob Stoklund Olesen authored
This is possible because F8RC is a subclass of F4RC. We keep FMRSD around so fextend has a pattern. Also allow folding of memory operands on FMRSD. llvm-svn: 97275
-
Jakob Stoklund Olesen authored
The PowerPC floating point registers can represent both f32 and f64 via the two register classes F4RC and F8RC. F8RC is considered a subclass of F4RC to allow cross-class coalescing. This coalescing only affects whether registers are spilled as f32 or f64. Spill slots must be accessed with load/store instructions corresponding to the class of the spilled register. PPCInstrInfo::foldMemoryOperandImpl was looking at the instruction opcode which is wrong. X86 has similar floating point register classes, but doesn't try to fold memory operands, so there is no problem there. llvm-svn: 97262
-
Dale Johannesen authored
as X86 is currently the only FastISel target. Per review. llvm-svn: 97255
-
Sanjiv Gupta authored
present in the module. llvm-svn: 97232
-