Commit Graph

26876 Commits

Author SHA1 Message Date
Jim Laskey a13b9c7aa4 Alias analysis of TRUNCSTORE.
llvm-svn: 30889
2006-10-11 18:55:16 +00:00
Chris Lattner c52dab5894 regenerate
llvm-svn: 30888
2006-10-11 18:13:09 +00:00
Chris Lattner 9d9de698b5 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 ddf7347283 add test for mdef in a let
llvm-svn: 30886
2006-10-11 18:12:14 +00:00
Bill Wendling f21825f55a Clean-up of formatting and spelling.
llvm-svn: 30885
2006-10-11 18:00:22 +00:00
Jim Laskey 6a4c6d3a7a Typo
llvm-svn: 30884
2006-10-11 17:52:19 +00:00
Jim Laskey 0f7c328ae7 Handle aliasing of loadext.
llvm-svn: 30883
2006-10-11 17:47:52 +00:00
Jim Laskey 5684eda9e8 Explict processor.
llvm-svn: 30882
2006-10-11 17:14:14 +00:00
Andrew Lenharth fa8cbfd8e8 Reduce the amount of state in the lowering code and drop old pattern ISel functions
llvm-svn: 30881
2006-10-11 16:24:51 +00:00
Jim Laskey 08edf332ed Fix regression in combiner alias analysis.
llvm-svn: 30880
2006-10-11 13:47:09 +00:00
Jim Laskey b41de440b5 Make sure combiner alias analysis does it's thing.
llvm-svn: 30879
2006-10-11 13:42:49 +00:00
Evan Cheng d35734bd1f Naming consistency.
llvm-svn: 30878
2006-10-11 07:10:22 +00:00
Evan Cheng ac72dc81f4 Test case for the recently fixed FindModifiedNodeSlot bug.
llvm-svn: 30877
2006-10-11 07:01:37 +00:00
Bill Wendling 34ab06769d Put code example inside of "doc_code" divisions.
llvm-svn: 30876
2006-10-11 06:30:10 +00:00
Chris Lattner 6487854b3f Use cute tblgen tricks to make zap handling more powerful. Specifically,
when the dag combiner simplifies an and mask, notice this and allow those bits
to be missing from the zap mask.

This compiles Alpha/zapnot4.ll into:

        sll $16,3,$0
        zapnot $0,3,$0
        ret $31,($26),1

instead of:

        ldah $0,1($31)
        lda $0,-8($0)
        sll $16,3,$1
        and $1,$0,$0
        ret $31,($26),1

It would be *really* nice to replace the hunk of code in the
AlphaISelDAGToDAG.cpp file that matches (and (srl (x, C), c2) into
(SRL (ZAPNOTi)) with a similar pattern, but I've spent enough time poking
at alpha.  Make andrew will do this.

llvm-svn: 30875
2006-10-11 05:13:56 +00:00
Chris Lattner a821fe2da1 new testcase, this should turn into zap
llvm-svn: 30874
2006-10-11 05:10:19 +00:00
Andrew Lenharth a6bbf33cbf Jimptables working again on alpha.
As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.

llvm-svn: 30873
2006-10-11 04:29:42 +00:00
Chris Lattner 9f86f7c2ab Remove dead/redundant instructions. These are handled by ZAPNOTi
llvm-svn: 30872
2006-10-11 04:12:39 +00:00
Chris Lattner f405928e86 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 ee0435680b Both of these functions should turn into cmpbge instructions, even though
the second has an and of 254 not 255.

llvm-svn: 30870
2006-10-11 03:59:48 +00:00
Chris Lattner 6df349676e add two helper methods.
llvm-svn: 30869
2006-10-11 03:58:02 +00:00
Chris Lattner 66fbbca1e7 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
Andrew Lenharth 4a57e2a6ed This entry is done. switched to the gcc way of doing things.
llvm-svn: 30867
2006-10-11 01:48:03 +00:00
Evan Cheng 2da4671e05 FindModifiedNodeSlot needs to add LoadSDNode ivars to create proper SelectionDAGCSEMap ID.
llvm-svn: 30866
2006-10-11 01:47:58 +00:00
Chris Lattner 291a868823 new testcase for zap generation, from the alpha readme
llvm-svn: 30865
2006-10-11 01:47:08 +00:00
Chris Lattner 3d74556d74 This has apparently been fixed
llvm-svn: 30864
2006-10-11 01:44:46 +00:00
Chris Lattner 8adfe927bb Make the bugpoint reduction heuristics more effective. Patch submitted by
Domagoj Babic, thanks!

llvm-svn: 30863
2006-10-10 21:42:25 +00:00
Rafael Espindola 8429e1f6c3 uint <-> double conversion
llvm-svn: 30862
2006-10-10 20:38:57 +00:00
Evan Cheng 7994aec7b5 Also update getNodeLabel for LoadSDNode.
llvm-svn: 30861
2006-10-10 20:11:26 +00:00
Evan Cheng fe858538c0 SDNode::dump should also print out extension type and VT.
llvm-svn: 30860
2006-10-10 20:05:10 +00:00
Rafael Espindola b5f1ff336a add fp sub
llvm-svn: 30859
2006-10-10 19:35:01 +00:00
Rafael Espindola 57d109fb08 add double <-> int conversion
llvm-svn: 30858
2006-10-10 18:55:14 +00:00
Chris Lattner 8438429c96 Fix another bug in extload promotion.
llvm-svn: 30857
2006-10-10 18:54:19 +00:00
Rafael Espindola d1a4ea41c9 compare doubles
llvm-svn: 30856
2006-10-10 16:33:47 +00:00
Rafael Espindola 639450ea83 add some tests for floating point compare
llvm-svn: 30855
2006-10-10 14:26:06 +00:00
Rafael Espindola d15c892433 initial support for fp compares. Unordered compares not implemented yet
llvm-svn: 30854
2006-10-10 12:56:00 +00:00
Evan Cheng dc6a3aab71 Fix a bug introduced by my LOAD/LOADX changes.
llvm-svn: 30853
2006-10-10 07:51:21 +00:00
Evan Cheng 6d37137e4f Add test case from PR940.
llvm-svn: 30852
2006-10-10 04:33:46 +00:00
Evan Cheng 61b8b43bbe More isel time load folding checking for nodes that produce flag values.
See comment in CanBeFoldedBy() for detailed explanation.

llvm-svn: 30851
2006-10-10 01:46:56 +00:00
Evan Cheng e01ee43cdc Comments; getChain(), getBasePtr(), etc. should return a SDOperand by value.
llvm-svn: 30850
2006-10-10 01:44:58 +00:00
Evan Cheng 16488647d8 shufps with load folding is better than movaps; movsd.
llvm-svn: 30849
2006-10-09 22:42:31 +00:00
Evan Cheng 57ccb6d372 Don't go too crazy with these AddComplexity. Try matching shufps with load
folding first.

llvm-svn: 30848
2006-10-09 21:42:15 +00:00
Evan Cheng e646abb7b6 Don't convert to MOVLP if using shufps etc. may allow load folding.
llvm-svn: 30847
2006-10-09 21:39:25 +00:00
Devang Patel d90c2d7386 Use FindProgramByName instead of FindExecutable.
llvm-svn: 30846
2006-10-09 21:16:05 +00:00
Evan Cheng 75a1b70da8 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
Evan Cheng e71fe34d75 Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.
llvm-svn: 30844
2006-10-09 20:57:25 +00:00
Evan Cheng 0a2a4b1fbe Merging ISD::LOAD and ISD::LOADX. Added LoadSDNode to represent load nodes.
Chain and address ptr remains as operands. SrcValue, extending mode, extending
VT (or rather loaded VT before extension) are now instance variables of
LoadSDNode.

Introduce load / store addressing modes to represent pre- and post-indexed
load and store. Also added an additional operand offset that is only used in
post-indexed mode (i.e. base ptr += offset after load/store).

Added alignment info (not yet used) and isVolatile fields.

llvm-svn: 30843
2006-10-09 20:55:20 +00:00
Devang Patel 060c4857ca Do error checking.
llvm-svn: 30842
2006-10-09 20:20:13 +00:00
Chris Lattner dfa8d9258a Remove a dead var noticed by Yorion
llvm-svn: 30841
2006-10-09 20:12:37 +00:00
Rafael Espindola 4d03bf8f43 add some tests for floating point arithmetic
llvm-svn: 30840
2006-10-09 19:15:17 +00:00