Chris Lattner
efcd65f335
ADd support for adding constraints to suboperands
...
llvm-svn: 31748
2006-11-15 02:38:17 +00:00
Chris Lattner
1c86ab0ffe
restore some 'magic' code that I removed: it is needed. Add comments explaining
...
why.
llvm-svn: 31743
2006-11-14 22:17:10 +00:00
Chris Lattner
927a143285
minimal hack to get patterns whose result type is iPTR to be selected.
...
llvm-svn: 31742
2006-11-14 21:50:27 +00:00
Chris Lattner
1cbfe99b60
remove some dead code
...
llvm-svn: 31740
2006-11-14 21:41:35 +00:00
Chris Lattner
7e5cbf9ee0
Add support for nodes that return iPTR.
...
llvm-svn: 31739
2006-11-14 21:32:01 +00:00
Chris Lattner
03cc8c84ef
changes to get ptr_rc to be accepted in patterns. This is needed for ppc preinc
...
stores.
llvm-svn: 31738
2006-11-14 21:18:40 +00:00
Chris Lattner
796d72272b
Fix a bug handling nodes with variable arguments. The code was fixed to assume
...
that there were two input operands before the variable operand portion. This
*happened* to be true for all call instructions, which took a chain and a
destination, but was not true for the PPC BCTRL instruction, whose destination
is implicit.
Making this code more general allows elimination of the custom selection logic
for BCTRL.
llvm-svn: 31732
2006-11-14 18:41:38 +00:00
Chris Lattner
6836cbaf9d
allow ptr_rc to explicitly appear in an instructions operand list, it doesn't
...
have to be a subpart of a complex operand.
llvm-svn: 31618
2006-11-10 02:01:40 +00:00
Evan Cheng
8743c67826
Remove M_2_ADDR_FLAG.
...
llvm-svn: 31583
2006-11-09 02:22:54 +00:00
Evan Cheng
6921c1c0a7
Divide select methods into groups by SelectionDAG node opcodes (ISD::ADD,
...
X86ISD::CMP, etc.) instead of SDNode names (add, x86cmp, etc). We now allow
multiple SDNodes to map to the same SelectionDAG node (e.g. store, indexed
store).
llvm-svn: 31575
2006-11-08 23:01:03 +00:00
Evan Cheng
42fb21c3c5
Always pass the root node to ComplexPattern isel matching function.
...
llvm-svn: 31570
2006-11-08 20:31:10 +00:00
Chris Lattner
c1d27af4b8
emit TIED_TO correctly
...
llvm-svn: 31484
2006-11-07 01:27:55 +00:00
Chris Lattner
908ea22022
Mark predicate operands as such in operand info.
...
llvm-svn: 31483
2006-11-06 23:53:31 +00:00
Chris Lattner
e1960fc065
simplify the way operand flags and constraints are handled, making it easier
...
to extend.
llvm-svn: 31481
2006-11-06 23:49:51 +00:00
Chris Lattner
04b6336b73
recognize ppc's blr instruction as predicated
...
llvm-svn: 31480
2006-11-06 21:44:54 +00:00
Chris Lattner
97e9292cf3
regenerate
...
llvm-svn: 31472
2006-11-05 23:28:58 +00:00
Jeff Cohen
e1003da1a2
Unbreak VC++ build.
...
llvm-svn: 31464
2006-11-05 19:31:28 +00:00
Evan Cheng
8e65006b5e
Clean up some code.
...
llvm-svn: 31451
2006-11-04 09:40:23 +00:00
Chris Lattner
8dac4564af
Parse PredicateOperand's. When an instruction takes one, have the generated
...
isel fill in the instruction operands with the 'execute always' value
automatically.
llvm-svn: 31448
2006-11-04 05:12:02 +00:00
Chris Lattner
f7ad33f01b
First steps to getting PredicateOperand's to work. This handles instruction
...
and pat pattern definitions. Codegen is not right for them yet.
llvm-svn: 31444
2006-11-04 01:35:50 +00:00
Chris Lattner
5eca521156
eliminate need for the NumMIOperands field in Operand.
...
llvm-svn: 31432
2006-11-03 23:45:17 +00:00
Reid Spencer
da581ac715
Remove an unused variable.
...
llvm-svn: 31403
2006-11-03 01:48:30 +00:00
Reid Spencer
d41f385ed9
Don't write out variables that are never used.
...
llvm-svn: 31396
2006-11-03 01:28:12 +00:00
Chris Lattner
71ce2c5de5
silence warnings
...
llvm-svn: 31392
2006-11-03 01:11:05 +00:00
Reid Spencer
01f5071a4d
Revert last patch which causes tblgen to segfault (why, I'm not sure).
...
llvm-svn: 31383
2006-11-02 21:07:40 +00:00
Reid Spencer
0d18610609
For PR786:
...
Remove unused variables.
llvm-svn: 31381
2006-11-02 20:46:16 +00:00
Evan Cheng
05d73e7209
Tied-to constraint must be op_with_larger_idx = op_with_smaller_idx or else throw an exception.
...
llvm-svn: 31361
2006-11-01 23:03:11 +00:00
Evan Cheng
a585562f95
Not meant to be checked in.
...
llvm-svn: 31334
2006-11-01 00:27:59 +00:00
Evan Cheng
c566892bd5
Add operand constraints to TargetInstrInfo.
...
llvm-svn: 31333
2006-11-01 00:27:05 +00:00
Evan Cheng
f872538d4b
Passing isel root and use operands to ComplexPattern functions, these should do the usual load folding checks as well.
...
llvm-svn: 30972
2006-10-16 06:33:44 +00:00
Evan Cheng
513dc7ed5f
When checking if a load can be folded, we check if there is any non-direct
...
way to reach the load via any nodes that would be folded. Start from the
root of the matched sub-tree.
llvm-svn: 30956
2006-10-14 08:30:15 +00:00
Evan Cheng
c7283044d1
Really remove dead nodes from isel queue.
...
llvm-svn: 30923
2006-10-12 23:18:52 +00:00
Evan Cheng
5ff49d9410
Use RemoveDeadNode to kill dead node.
...
llvm-svn: 30917
2006-10-12 20:35:19 +00:00
Evan Cheng
65264c811f
Prior load folding check on chain operand was too strict. It requires the
...
chain operand to point to the load being folded. Now we relax this, traversing
up the chain, if it doesn't reach the load, then it's ok. We will create a
TokenFactor (of all the chain operands and the load's chain) to capture all
the control flow dependencies.
llvm-svn: 30897
2006-10-12 02:08:53 +00:00
Evan Cheng
7a185e0164
Added properties such as SDNPHasChain to ComplexPattern.
...
llvm-svn: 30890
2006-10-11 21:02:01 +00:00
Chris Lattner
461eba5c63
regenerate
...
llvm-svn: 30888
2006-10-11 18:13:09 +00:00
Chris Lattner
0c0f2eacfc
Add support for let expressions around an mdef. This implements a new part
...
of Regression/TableGen/MultiClass.td.
llvm-svn: 30887
2006-10-11 18:12:44 +00:00
Chris Lattner
822d1b259e
Special case tblgen generated code for patterns like (and X, 255) or (or X, 42).
...
The dag/inst combiners often 'simplify' the masked value based on whether
or not the bits are live or known zero/one. This is good and dandy, but
often causes special case patterns to fail, such as alpha's CMPBGE pattern,
which looks like "(set GPRC:$RC, (setuge (and GPRC:$RA, 255), (and GPRC:$RB, 255)))".
Here the pattern for (and X, 255) should match actual dags like (and X, 254) if
the dag combiner proved that the missing bits are already zero (one for 'or').
For CodeGen/Alpha/cmpbge.ll:test2 for example, this results in:
sll $16,1,$0
cmpbge $0,$17,$0
ret $31,($26),1
instead of:
sll $16,1,$0
and $0,254,$0
and $17,255,$1
cmpule $1,$0,$0
ret $31,($26),1
... and requires no target-specific code.
llvm-svn: 30871
2006-10-11 04:05:55 +00:00
Chris Lattner
ad597308ad
Split some code out into a new method. The generated code is exactly
...
identical, this is just a refactoring.
llvm-svn: 30868
2006-10-11 03:35:34 +00:00
Evan Cheng
084d415941
Predicate function on the node should be matched before its childrean' matching
...
code. This is especially important now matching ISD::LOAD also requires a
Predicate_Load call.
llvm-svn: 30845
2006-10-09 21:02:17 +00:00
Chris Lattner
b007ac9ecf
regenerate
...
llvm-svn: 30799
2006-10-07 07:15:19 +00:00
Chris Lattner
b5b2e0340e
Bugfix: this allows multiclasses to have default arguments.
...
llvm-svn: 30798
2006-10-07 07:14:48 +00:00
Chris Lattner
d55928d5f6
Fix more static dtor issues
...
llvm-svn: 30725
2006-10-04 21:52:35 +00:00
Chris Lattner
4aa2739696
This:
...
AggregateString += "\0\0";
Doesn't add two nuls to the AggregateString (for obvious reasons), which
broke the asmprinter when the first character of an asm string was not
literal text.
llvm-svn: 30625
2006-09-27 16:44:09 +00:00
Chris Lattner
7c98cc2aab
Actually, name the method PrintSpecial to match other stuff in AsmPrinter.h
...
llvm-svn: 30618
2006-09-26 23:47:10 +00:00
Chris Lattner
10e06fa138
Add support for ${:foo} syntax, where "foo" is passed into "printSpecial" and
...
has no associated operand. This is useful for portably encoding stuff like
the comment character into an asm string.
llvm-svn: 30617
2006-09-26 23:45:08 +00:00
Chris Lattner
86f1992481
don't allow 'imm' or specific imms, like '1' on the LHS of a binop.
...
This shrinks X86GenDAGISel by ~330 lines.
llvm-svn: 30574
2006-09-21 20:46:13 +00:00
Chris Lattner
28d7124afb
Fit to 80 columns.
...
llvm-svn: 30572
2006-09-21 18:28:27 +00:00
Evan Cheng
c5be7540d2
Allow PatFrag to be a leaf node.
...
llvm-svn: 30498
2006-09-19 19:08:04 +00:00
Evan Cheng
f020ff9440
Add result of a Xform to isel queue.
...
llvm-svn: 30497
2006-09-19 18:40:15 +00:00