- 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: 97627
-
Evan Cheng authored
llvm-svn: 97617
-
Bill Wendling authored
long test(long x) { return (x & 123124) | 3; } Currently compiles to: _test: orl $3, %edi movq %rdi, %rax andq $123127, %rax ret This is because instruction and DAG combiners canonicalize (or (and x, C), D) -> (and (or, D), (C | D)) However, this is only profitable if (C & D) != 0. It gets in the way of the 3-addressification because the input bits are known to be zero. llvm-svn: 97616
-
Johnny Chen authored
disassembly only. llvm-svn: 97614
-
Erick Tryzelaar authored
llvm-svn: 97608
-
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
-
Bill Wendling authored
Place the LSDA into the TEXT section on Mach-O. This saves space. llvm-svn: 97592
-
Erick Tryzelaar authored
llvm-svn: 97585
-
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
-
Chris Lattner authored
llvm-svn: 97581
-
Dan Gohman authored
by loop depth and emit loop-invariant subexpressions outside of loops. This speeds up MultiSource/Applications/viterbi and others. llvm-svn: 97580
-
Evan Cheng authored
llvm-svn: 97578
-
Evan Cheng authored
llvm-svn: 97577
-
Johnny Chen authored
SMMULR, SMMLAR, SMMLSR, TBB, TBH, and 16-bit Thumb instruction CPS for disassembly only. llvm-svn: 97573
-
Devang Patel authored
Thanks Duncan! llvm-svn: 97572
-
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
-
Duncan Sands authored
and nothing for AddressSpace, pass 0 for InsertBefore, "false" for ThreadLocal and AddressSpace for AddressSpace. Spotted by gcc-4.5. llvm-svn: 97563
-
Chris Lattner authored
was that we weren't properly handling the case when interior nodes of a matched pattern become dead after updating chain and flag uses. Now we handle this explicitly in UpdateChainsAndFlags. llvm-svn: 97561
-
Chris Lattner authored
*does* delete ex-operands that become dead. llvm-svn: 97559
-
Chris Lattner authored
llvm-svn: 97558
-
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
-
Erick Tryzelaar authored
llvm-svn: 97550
-
Eric Christopher authored
llvm-svn: 97545
-
Evan Cheng authored
llvm-svn: 97543
-
Chris Lattner authored
llvm-svn: 97541
-
Chris Lattner authored
stuff now that we don't care about emulating the old broken behavior of the old isel. This eliminates the 'CheckChainCompatible' check (along with IsChainCompatible) which did an incorrect and inefficient scan *up* the chain nodes which happened as the pattern was being formed and does the validation at the end in HandleMergeInputChains when it forms a structural pattern. This scans "down" the graph, which means that it is quickly bounded by nodes already selected. This also handles token factors that get "trapped" in the dag. Removing the CheckChainCompatible nodes also shrinks the generated tables by about 6K for X86 (down to 83K). There are two pieces remaining before I can nuke PreprocessRMW: 1. I xfailed a test because we're now producing worse code in a case that has nothing to do with the change: it turns out that our use of MorphNodeTo will leave dead nodes in the graph which (depending on how the graph is walked) end up causing bogus uses of chains and blocking matches. This is really bad for other reasons, so I'll fix this in a follow-up patch. 2. CheckFoldableChainNode needs to be improved to handle the TF. llvm-svn: 97539
-
Dan Gohman authored
Based on a patch by Micah Villmow for PR6438. llvm-svn: 97538
-
Dan Gohman authored
emitted after the increment. Make sure the insert position reflects this. This fixes PR6453. llvm-svn: 97537
-
Bill Wendling authored
llvm-svn: 97536
-
Devang Patel authored
Constructors and operators for anonymous aggregates does not names. Do not force empty AT_name attribute in such cases. llvm-svn: 97533
-