Chris Lattner
07a4b4d5fe
reimplement the tblgen lexer with a simple hand-written lexer. This eliminates
...
one dependency on flex and gets rid of two ".cvs" files.
llvm-svn: 44210
2007-11-18 02:57:27 +00:00
Duncan Sands
e6821dd990
Eliminate the recently introduced CCAssignToStackABISizeAlign
...
in favour of teaching CCAssignToStack that size 0 and/or align
0 means to use the ABI values. This seems a neater solution.
It is safe since no legal value type has size 0.
llvm-svn: 44107
2007-11-14 08:29:13 +00:00
Dale Johannesen
5fd9e7a615
Add parameter to getDwarfRegNum to permit targets
...
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.
llvm-svn: 44056
2007-11-13 19:13:01 +00:00
Bill Wendling
de7d68ad52
Move SYSCTL stuff close to where it's used.
...
llvm-svn: 44031
2007-11-12 23:55:19 +00:00
Devang Patel
a490cc2952
Build universal llvm.
...
llvm-svn: 44030
2007-11-12 23:53:43 +00:00
Owen Anderson
aba398a5ce
Add a flag for indirect branch instructions.
...
Target maintainers: please check that the instructions for your target are correctly marked.
llvm-svn: 44012
2007-11-12 07:39:39 +00:00
Owen Anderson
df575e4ae5
Fix on 64-bit machines.
...
llvm-svn: 44001
2007-11-12 00:56:04 +00:00
Anton Korobeynikov
8e8473c783
Use TableGen to emit information for dwarf register numbers.
...
This makes DwarfRegNum to accept list of numbers instead.
Added three different "flavours", but only slightly tested on x86-32/linux.
Please check another subtargets if possible,
llvm-svn: 43997
2007-11-11 19:50:10 +00:00
Anton Korobeynikov
cdfd2ddaa7
Add convenient helper to obtain list of ints
...
llvm-svn: 43993
2007-11-11 11:19:37 +00:00
Dale Johannesen
2e9b020e89
Add CCAssignToStackABISizeAlign for convenience in
...
dealing with types whose size & alignment are
different on different subtargets. Use it for x86 f80.
llvm-svn: 43988
2007-11-10 22:07:15 +00:00
Evan Cheng
c6287abec9
Added -test-opts to specify test options.
...
llvm-svn: 43971
2007-11-10 01:33:27 +00:00
Bill Wendling
2405ec2b73
Initial commit of files that support building LLVM the "Apple" way.
...
llvm-svn: 43929
2007-11-09 06:59:33 +00:00
Dale Johannesen
a863789700
Interchange Dwarf numbers of ESP and EBP on x86 Darwin.
...
Much improvement in exception handling.
llvm-svn: 43794
2007-11-07 00:25:05 +00:00
Neil Booth
cd1d243989
Remove some unnecessary C-style statics.
...
Restore an assertion that arithmetic can be performed on this format.
llvm-svn: 43638
2007-11-02 15:10:05 +00:00
Chris Lattner
348195148a
switch some calls to SelectionDAG::getTargetNode to use
...
the one that takes an operand list instead of explicit
operands. There is one left though, the more interesting
one :)
llvm-svn: 43290
2007-10-24 06:25:09 +00:00
Anton Korobeynikov
f04f8f28fc
Update this file for 2.0 syntax. Contributed by Jan Rehders
...
llvm-svn: 43182
2007-10-19 16:54:13 +00:00
Chris Lattner
6b180c4e51
tblgen uses dynamic_cast heavily, so it needs rtti info
...
llvm-svn: 43126
2007-10-18 15:54:45 +00:00
Gordon Henriksen
333dc95c98
Reverting unnecessary commit of generated files.
...
llvm-svn: 43095
2007-10-17 21:36:08 +00:00
Gordon Henriksen
a6050b38d2
Switching TargetMachineRegistry to use the new generic Registry.
...
llvm-svn: 43094
2007-10-17 21:28:48 +00:00
Hartmut Kaiser
ed12f66488
Updated VC++ build system.
...
Silenced some VC warnings.
I'm getting linker errors, though: unresolved externals:
llvm::Split<class llvm::BasicBlock *,struct llvm::GraphTraits<class llvm::BasicBlock *> >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
and
llvm::Split<struct llvm::Inverse<class llvm::BasicBlock *>,struct llvm::GraphTraits<struct llvm::Inverse<class llvm::BasicBlock *> > >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
Where are these defined?
llvm-svn: 43073
2007-10-17 14:56:40 +00:00
Chris Lattner
452ebc199e
One mundane change: Change ReplaceAllUsesOfValueWith to *optionally*
...
take a deleted nodes vector, instead of requiring it.
One more significant change: Implement the start of a legalizer that
just works on types. This legalizer is designed to run before the
operation legalizer and ensure just that the input dag is transformed
into an output dag whose operand and result types are all legal, even
if the operations on those types are not.
This design/impl has the following advantages:
1. When finished, this will *significantly* reduce the amount of code in
LegalizeDAG.cpp. It will remove all the code related to promotion and
expansion as well as splitting and scalarizing vectors.
2. The new code is very simple, idiomatic, and modular: unlike
LegalizeDAG.cpp, it has no 3000 line long functions. :)
3. The implementation is completely iterative instead of recursive, good
for hacking on large dags without blowing out your stack.
4. The implementation updates nodes in place when possible instead of
deallocating and reallocating the entire graph that points to some
mutated node.
5. The code nicely separates out handling of operations with invalid
results from operations with invalid operands, making some cases
simpler and easier to understand.
6. The new -debug-only=legalize-types option is very very handy :),
allowing you to easily understand what legalize types is doing.
This is not yet done. Until the ifdef added to SelectionDAGISel.cpp is
enabled, this does nothing. However, this code is sufficient to legalize
all of the code in 186.crafty, olden and freebench on an x86 machine. The
biggest issues are:
1. Vectors aren't implemented at all yet
2. SoftFP is a mess, I need to talk to Evan about it.
3. No lowering to libcalls is implemented yet.
4. Various operations are missing etc.
5. There are FIXME's for stuff I hax0r'd out, like softfp.
Hey, at least it is a step in the right direction :). If you'd like to help,
just enable the #ifdef in SelectionDAGISel.cpp and compile code with it. If
this explodes it will tell you what needs to be implemented. Help is
certainly appreciated.
Once this goes in, we can do three things:
1. Add a new pass of dag combine between the "type legalizer" and "operation
legalizer" passes. This will let us catch some long-standing isel issues
that we miss because operation legalization often obfuscates the dag with
target-specific nodes.
2. We can rip out all of the type legalization code from LegalizeDAG.cpp,
making it much smaller and simpler. When that happens we can then
reimplement the core functionality left in it in a much more efficient and
non-recursive way.
3. Once the whole legalizer is non-recursive, we can implement whole-function
selectiondags maybe...
llvm-svn: 42981
2007-10-15 06:10:22 +00:00
Evan Cheng
a18e8dc542
Fix typos.
...
llvm-svn: 42896
2007-10-12 08:39:02 +00:00
Tanya Lattner
312ef27b52
If the user did not check out LLVM and request it to be built, it should be a build error. This relies on the user having a successful build of LLVM, but the tests will fail if they dont.
...
llvm-svn: 42514
2007-10-02 00:19:27 +00:00
Dale Johannesen
e61886cee4
Add sqrt and powi intrinsics for long double.
...
llvm-svn: 42423
2007-09-28 01:08:20 +00:00
Evan Cheng
0a3651a70d
Rename keyword "modify" -> "implicit".
...
llvm-svn: 42282
2007-09-25 01:48:59 +00:00
Evan Cheng
859720c33b
Add CopyCost to TargetRegisterClass. This specifies the cost of copying a value
...
between two registers in the specific class.
llvm-svn: 42123
2007-09-19 01:35:01 +00:00
Evan Cheng
33c343e06b
Bug fix and minor clean up of generated code.
...
llvm-svn: 42069
2007-09-17 22:26:41 +00:00
Chris Lattner
9a1b882091
regenerate
...
llvm-svn: 42036
2007-09-17 17:40:48 +00:00
Dan Gohman
53119779c2
Remove spurious consts. This fixes warnings with compilers that
...
are strict about such things.
llvm-svn: 41956
2007-09-14 20:08:19 +00:00
Evan Cheng
bd4b11cfa9
Initial support for multi-result patterns:
...
1.
[(set GR32:$dst, (add GR32:$src1, GR32:$src2)),
(modify EFLAGS)]
This indicates the source pattern expects the instruction would produce 2 values. The first is the result of the addition. The second is an implicit definition in register EFLAGS.
2.
def : Pat<(parallel (addc GR32:$src1, GR32:$src2), (modify EFLAGS)), ()>
Similar to #1 except this is used for def : Pat patterns.
llvm-svn: 41897
2007-09-12 23:30:14 +00:00
Evan Cheng
8c1086ae63
Allow set operators with multiple destinations, i.e. (set x, y, (op a, b)).
...
llvm-svn: 41861
2007-09-11 19:52:18 +00:00
Chris Lattner
28425ab55f
update this to use llvm-config, patch by Jose M. Moya
...
llvm-svn: 41849
2007-09-11 17:09:54 +00:00
Evan Cheng
65df926ced
TableGen no longer emit CopyFromReg nodes for implicit results in physical
...
registers. The scheduler is now responsible for emitting them.
llvm-svn: 41781
2007-09-07 23:59:02 +00:00
Evan Cheng
0973e15ddd
Always check the type of node. This prevents situations such as selecting 32-bit rotate target instruction for a 64-bit node when 64-bit pattern is missing.
...
llvm-svn: 41710
2007-09-04 20:18:28 +00:00
Dan Gohman
b499ea1cf6
Add MVT::fAny for overloading intrinsics on floating-point types.
...
llvm-svn: 41128
2007-08-16 21:57:19 +00:00
Reid Spencer
7ce13be5bb
Make use of the llvm-ld tool's new ability to read input from stdin to extract
...
the list of link time passes to be run, just as for opt, with the
-debug-pass=Arguments option.
llvm-svn: 41040
2007-08-13 06:19:51 +00:00
Reid Spencer
07c9c99f36
Now that llvm-ld can accept - as input from stdin, use this feature to extract
...
the pass arguments that it supports.
llvm-svn: 41019
2007-08-11 16:11:22 +00:00
Rafael Espindola
b20b9e985a
propagate struct size and alignment of byval arguments to the DAG
...
llvm-svn: 40986
2007-08-10 14:44:42 +00:00
Chandler Carruth
67d3119773
This resolves a regression of BasicAA which failed to find any memory information for overloaded intrinsics (PR1600). This resolves that issue, and improves the matching scheme to use a BitVector rather than a binary search.
...
llvm-svn: 40872
2007-08-06 20:57:16 +00:00
Chandler Carruth
00e56b0e81
This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.
...
This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.
llvm-svn: 40807
2007-08-04 01:51:18 +00:00
Evan Cheng
8f126e59f5
Added TargetInstrDescriptor::numDefs - num of results.
...
llvm-svn: 40709
2007-08-02 00:20:17 +00:00
Dan Gohman
75473b49ea
More explicit keywords.
...
llvm-svn: 40589
2007-07-30 14:51:59 +00:00
Chuck Rose III
4a3a018844
VStudio compiler errors and placing Function*->ExFunc map under ManagedStatic control.
...
This commit fixes two things. One is a pair of VStudio compiler errors stemming from variables
which defined within the for loop statement and also within the body of the for loop. I fixed these
by renaming one of the two variables. Additionally, I've made the Function*->ExFunc map in
ExternalFunctions.cpp a ManagedStatic object, so that cleanup will be done on llvm_shutdown. In repeated
uses of the interpreter, where the same Function* address may get used for completely differnet functions,
this was causing a crash.
llvm-svn: 40558
2007-07-27 18:26:35 +00:00
Dan Gohman
b7c799015b
Fix a pasto in a comment.
...
llvm-svn: 40527
2007-07-26 15:11:00 +00:00
Christopher Lamb
7bef240f69
Have register info provide the inverse mapping of register->superregisters. PR1350
...
llvm-svn: 40519
2007-07-26 08:01:58 +00:00
Christopher Lamb
9a0d88efde
Add target independent MachineInstr's to represent subreg insert/extract in MBB's. PR1350
...
llvm-svn: 40518
2007-07-26 07:48:21 +00:00
Christopher Lamb
954afaa83f
Teach TableGen about the new vector types.
...
llvm-svn: 40513
2007-07-26 06:41:18 +00:00
Dan Gohman
7428b0796c
A minor simplication in the generated code.
...
llvm-svn: 40479
2007-07-24 22:58:00 +00:00
Chandler Carruth
ae2ae3b023
Fixing some differences between CVS and SVN diff'ing. Reid fixed these already,
...
but I think it got lost in the conversion mess.
llvm-svn: 40107
2007-07-20 17:21:54 +00:00
Evan Cheng
3c78aadb70
No need for noResults anymore.
...
llvm-svn: 40075
2007-07-20 00:21:23 +00:00
Evan Cheng
8312ed6f77
Change instruction description to split OperandList into OutOperandList and
...
InOperandList. This gives one piece of important information: # of results
produced by an instruction.
An example of the change:
def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
=>
def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
llvm-svn: 40033
2007-07-19 01:14:50 +00:00
Chris Lattner
fe26fdfeaf
Work around a bogus gcc 4.2 warning.
...
llvm-svn: 39993
2007-07-18 04:51:57 +00:00
Dan Gohman
48b2f7992b
Eliminate an unused parameter.
...
llvm-svn: 39828
2007-07-13 20:16:50 +00:00
Evan Cheng
974bb09390
Try committing again. Add OptionalDefOperand. Remove clobbersPred.
...
llvm-svn: 38498
2007-07-10 18:05:01 +00:00
Reid Spencer
5ca021347d
Remove the cvsupdate script. Its no longer useful in the face of
...
tools such as svn info and svn status.
llvm-svn: 38446
2007-07-09 08:31:14 +00:00
Reid Spencer
1db5c92d36
Subversionify the script.
...
llvm-svn: 38440
2007-07-09 07:41:11 +00:00
Evan Cheng
2ecd061c78
ImmutablePredicateOperand is no more.
...
llvm-svn: 37963
2007-07-06 23:23:38 +00:00
Rafael Espindola
7b3de98989
Add the byval attribute
...
llvm-svn: 37940
2007-07-06 10:57:03 +00:00
Evan Cheng
9593d4ed73
Refactor code to add initial support for OptionalDefOperand.
...
llvm-svn: 37933
2007-07-06 01:05:26 +00:00
Evan Cheng
2ce6ccab6d
Teach DAGISelEmitter about zero_reg.
...
llvm-svn: 37900
2007-07-05 07:19:45 +00:00
Evan Cheng
2a4b3f341b
Instructions with ImmutablePredicateOperand aren't really predicable since their predicates are fixed at isel time.
...
llvm-svn: 37899
2007-07-05 07:19:29 +00:00
Reid Spencer
b7e9781af2
Ignore the .svn directories so countloc.sh and llvmgrep won't traverse them.
...
llvm-svn: 37867
2007-07-04 01:35:32 +00:00
Anton Korobeynikov
b03fde6e79
Test modified svn mailer
...
llvm-svn: 37859
2007-07-03 21:57:50 +00:00
Reid Spencer
d0ce01f3de
Remove the last vestiges of -usesvn.
...
Implement -usecvs just in case we need to go back to cvs for some reason.
llvm-svn: 37837
2007-07-02 06:19:57 +00:00
Reid Spencer
796eb92698
We want the Subversion checkout to succeed even if we don't specify
...
the -verbose option! Doh!
llvm-svn: 37836
2007-07-02 06:16:32 +00:00
John Criswell
5e067e8643
Applied Reid's patch. Long live Subversion!
...
llvm-svn: 37812
2007-06-29 19:12:50 +00:00
John Criswell
57e5ed4b5a
Convert .cvsignore files
...
llvm-svn: 37801
2007-06-29 16:35:07 +00:00
Reid Spencer
3b037fbe81
Fix problems with the checkout and cd directories for SVN checkout.
...
llvm-svn: 37797
2007-06-29 03:12:42 +00:00
Evan Cheng
c8b17dd965
One additional field in TargetRegisterDesc.
...
llvm-svn: 37760
2007-06-27 17:09:34 +00:00
Evan Cheng
ac10d44736
Add immediate sub-registers.
...
llvm-svn: 37738
2007-06-26 20:59:16 +00:00
Reid Spencer
fee7d394f7
Update for Subversion conversion:
...
1. Fix comments for -usesvn and -svnurl options.
2. Fix default URL for SVN access.
3. Fix paths to accommodate "trunk" when checking out from SVN.
llvm-svn: 37736
2007-06-26 17:08:16 +00:00
Dan Gohman
9cbc3fb1ab
Revert the earlier change that removed the M_REMATERIALIZABLE machine
...
instruction flag, and use the flag along with a virtual member function
hook for targets to override if there are instructions that are only
trivially rematerializable with specific operands (i.e. constant pool
loads).
llvm-svn: 37728
2007-06-26 00:48:07 +00:00
Dan Gohman
550ec9362b
Fix a typo in a comment.
...
llvm-svn: 37727
2007-06-26 00:43:18 +00:00
Chris Lattner
efa46b445c
silence warning when assertions are disabled.
...
llvm-svn: 37654
2007-06-19 06:40:46 +00:00
Dan Gohman
b60d8a92c9
Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad
...
with a general target hook to identify rematerializable instructions. Some
instructions are only rematerializable with specific operands, such as loads
from constant pools, while others are always rematerializable. This hook
allows both to be identified as being rematerializable with the same
mechanism.
llvm-svn: 37644
2007-06-19 01:48:05 +00:00
Evan Cheng
12b3002673
Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.
...
llvm-svn: 37643
2007-06-19 01:26:51 +00:00
Christopher Lamb
68017d151b
Add support to tablegen for specifying subregister classes on a per register class basis.
...
llvm-svn: 37572
2007-06-13 22:20:15 +00:00
Evan Cheng
1be50b2f54
Add clobbersPred - instruction that clobbers condition code / register which are used to predicate instructions.
...
llvm-svn: 37465
2007-06-06 10:14:55 +00:00
Bill Wendling
d2b1274d1b
Patches by Chuck Rose to unbreak V Studio builds.
...
Thanks Chuck!
llvm-svn: 37428
2007-06-04 23:52:59 +00:00
Dan Gohman
4ea79a66c2
Remove the operator<< for MVT::ValueType in preparation for MVT::ValueType
...
being changed from an enum to an integer type, which can't have a custom
operator<< overload.
llvm-svn: 37412
2007-06-04 16:11:03 +00:00
Reid Spencer
31622dd4a9
The Intrinsic::getDeclaration function's Tys parameter only contains the
...
types of the iAny types involved in the overloaded intrinsic. Thus, we
can't use the argument number as the index but have to count them separately
in order to index Tys correctly. This patch rectifies this situation.
llvm-svn: 37296
2007-05-22 19:30:31 +00:00
Evan Cheng
ecb8e3dc44
Rename M_PREDICATED to M_PREDICABLE; opcode can be specified isPredicable without having a PredicateOperand.
...
llvm-svn: 37116
2007-05-16 20:45:24 +00:00
Chris Lattner
39d713e4a5
Fix CodeGen/PowerPC/2007-05-14-InlineAsmSelectCrash.ll, the other recent
...
patches are also needed.
llvm-svn: 37070
2007-05-15 01:36:44 +00:00
Evan Cheng
f96cf9eab6
Added \!con(a,b) syntax to concatnate two dag fragments.
...
llvm-svn: 37063
2007-05-15 01:23:24 +00:00
Evan Cheng
34ce8e7297
Mark all (not just the first) predicate operand M_PREDICATE_OPERAND.
...
llvm-svn: 37061
2007-05-15 01:20:36 +00:00
Evan Cheng
0afaeec496
PredicateOperand related bug fix.
...
llvm-svn: 37060
2007-05-15 01:19:51 +00:00
Evan Cheng
f3da111f16
Remove duplicated line.
...
llvm-svn: 37040
2007-05-14 18:03:45 +00:00
Evan Cheng
41d7d13158
If a PredicateOperand has an empty ExecuteAlways field, treat it as if a normal operand for isel.
...
llvm-svn: 36946
2007-05-08 21:04:07 +00:00
Bill Wendling
dc82c5a195
Add an "implies" field to features. This indicates that, if the current
...
feature is set, then the features in the implied list should be set also.
The opposite is also enforced: if a feature in the implied list isn't set,
then the feature that owns that implies list shouldn't be set either.
llvm-svn: 36756
2007-05-04 20:38:40 +00:00
Lauro Ramos Venancio
4b7c032c6e
Make my proxy happy.
...
llvm-svn: 36665
2007-05-03 14:05:07 +00:00
Nate Begeman
e32b8f8b4b
A bit of feedback from Chris that I missed; error rather than asserting.
...
llvm-svn: 36619
2007-05-01 06:08:36 +00:00
Nate Begeman
767ee95d29
llvm bug #1350 , parts 1, 2, and 3.
...
llvm-svn: 36618
2007-05-01 05:57:02 +00:00
Dan Gohman
eaa7a3889e
Update a comment to reflect recent changes in the type system.
...
llvm-svn: 36486
2007-04-26 19:43:14 +00:00
Lauro Ramos Venancio
40822aaf24
bugfix: remember that ResNode was declared.
...
llvm-svn: 36477
2007-04-26 17:03:22 +00:00
Christopher Lamb
56768513ee
Fix generation of certain scheduler itineraries.
...
llvm-svn: 36338
2007-04-22 09:04:24 +00:00
Evan Cheng
59dcbfde67
Bug fix; add super-registers sets.
...
llvm-svn: 36296
2007-04-21 00:55:29 +00:00
Lauro Ramos Venancio
bc32d90b46
Implement "general dynamic", "initial exec" and "local exec" TLS models for
...
X86 32 bits.
llvm-svn: 36283
2007-04-20 21:38:10 +00:00
Evan Cheng
842e2c48a0
Add sub-registers sets.
...
llvm-svn: 36278
2007-04-20 21:13:46 +00:00
Reid Spencer
f12ab5a55b
For PR1328:
...
Don't assert everytime an intrinsic name isn't recognized. Instead, make
the assert optional when callin getIntrinsicID(). This allows the assembler
to handle invalid intrinsic names gracefully.
llvm-svn: 36120
2007-04-16 06:54:34 +00:00
Tanya Lattner
425b614986
Adding target triplet to be passed to database.
...
llvm-svn: 35958
2007-04-13 04:36:48 +00:00
Jeff Cohen
8d7aaa4843
Correctly report version of GCC used.
...
llvm-svn: 35866
2007-04-10 19:13:43 +00:00
Reid Spencer
543d051aad
Update for PathWithStatus
...
llvm-svn: 35745
2007-04-07 19:49:35 +00:00
Reid Spencer
ed3e05f699
Terminate some lines that need to be.
...
llvm-svn: 35725
2007-04-07 05:20:07 +00:00
Reid Spencer
ed64d11c33
Reinstate the SVN capability without requiring Date::Parse. As before the
...
SVN Repository is only used if requested with -usesvn option otherwise it
uses CVS.
llvm-svn: 35721
2007-04-07 04:41:16 +00:00
Reid Spencer
22ecfc9cc9
Revert this until the Date::Parse module can be installed on the nightly
...
testers.
llvm-svn: 35657
2007-04-04 06:59:36 +00:00
Reid Spencer
fcebed346e
Prepare for Subversion migration by implementing a -usesvn to tell the
...
script to to check out llvm and llvm-test from Subversion instead of CVS.
Without this option the script will continue to check out from CVS. To
specify the Subversion URL, set the SVNURL environment variable or pass
-svnurl followed by the URL. For now, -svnurl will default to Reid's
temporary (read-only, daily snapshot) SVN server. Try it out if you like!
llvm-svn: 35621
2007-04-03 08:28:44 +00:00
Reid Spencer
5b8b959d29
For PR1297:
...
Implement code generation for overloaded intrinsic functions. The basic
difference is that "actual" argument types must be provided when
constructing intrinsic names and types. Also, for recognition, only the
prefix is examined. If it matches, the suffix is assumed to match. The
suffix is checked by the Verifier, however.
llvm-svn: 35539
2007-04-01 07:20:02 +00:00
Bill Wendling
d764cbdfbb
Add better support for keywords.
...
llvm-svn: 35386
2007-03-27 20:23:56 +00:00
Bill Wendling
a42484728c
Add support for the v1i64 type. This makes better code for this:
...
#include <mmintrin.h>
extern __m64 C;
void baz(__v2si *A, __v2si *B)
{
*A = C;
_mm_empty();
}
We get this:
_baz:
call "L1$pb"
"L1$pb":
popl %eax
movl L_C$non_lazy_ptr-"L1$pb"(%eax), %eax
movq (%eax), %mm0
movl 4(%esp), %eax
movq %mm0, (%eax)
emms
ret
GCC gives us this:
_baz:
pushl %ebx
call L3
"L00000000001$pb":
L3:
popl %ebx
subl $8, %esp
movl L_C$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
movl (%eax), %edx
movl 4(%eax), %ecx
movl 16(%esp), %eax
movl %edx, (%eax)
movl %ecx, 4(%eax)
emms
addl $8, %esp
popl %ebx
ret
llvm-svn: 35351
2007-03-26 07:53:08 +00:00
Duncan Sands
9ee02c3f2e
The -funcresolve and -raise options no longer exist.
...
llvm-svn: 35272
2007-03-22 21:06:50 +00:00
Evan Cheng
a54c20ca4e
Recognize target instruction flag 'isReMaterializable'.
...
llvm-svn: 35159
2007-03-19 06:20:37 +00:00
Anton Korobeynikov
85d6c1ebad
Refactoring of formal parameter flags. Enable properly use of
...
zext/sext/aext stuff.
llvm-svn: 35008
2007-03-07 16:25:09 +00:00
Anton Korobeynikov
6da6c8c48b
Use new SDIselParamAttr enumeration. This removes "magick" constants
...
from formal attributes' flags processing.
llvm-svn: 34963
2007-03-06 08:12:33 +00:00
Chris Lattner
b7edd45f41
rename some CCActions
...
llvm-svn: 34724
2007-02-28 05:29:06 +00:00
Chris Lattner
2b616c0c0a
implement CCPromoteToType
...
llvm-svn: 34720
2007-02-28 04:43:48 +00:00
Chris Lattner
35b160f990
reapply
...
llvm-svn: 34697
2007-02-27 22:08:27 +00:00
Chris Lattner
33bdd3ed53
*** empty log message ***
...
llvm-svn: 34696
2007-02-27 22:05:51 +00:00
Evan Cheng
06b5bb9888
Backing out
...
CodeGenTarget.cpp updated: 1.82 -> 1.83
Record.cpp updated: 1.55 -> 1.56
Record.h updated: 1.59 -> 1.60
TableGen.cpp updated: 1.47 -> 1.48
It's missing CallingConvEmitter.h
llvm-svn: 34693
2007-02-27 21:44:08 +00:00
Chris Lattner
5e2b19c767
initial support for calling convention generation, still unfinished.
...
llvm-svn: 34682
2007-02-27 20:43:37 +00:00
Chris Lattner
d01ebce896
emit an enum value for the # of target registers.
...
llvm-svn: 34624
2007-02-26 03:34:38 +00:00
Chris Lattner
ddb46d765a
the lengths of the strings are known, just use memcmp
...
llvm-svn: 34321
2007-02-15 19:26:16 +00:00
Chris Lattner
5d0b16f797
Implement Function::getIntrinsicID without it needing to call Value::getName,
...
which allocates a string. This speeds up instcombine on 447.dealII by 5%.
llvm-svn: 34318
2007-02-15 19:17:16 +00:00
Reid Spencer
e7ff3305d6
For PR1195:
...
Change use of "packed" term to "vector" in comments, strings, variable
names, etc.
llvm-svn: 34300
2007-02-15 03:39:18 +00:00
Reid Spencer
55e4e98a2a
For PR1195:
...
Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and
PackedTyID -> VectorTyID. No functional changes.
llvm-svn: 34293
2007-02-15 02:26:10 +00:00
Chris Lattner
a4853a3340
remove obsolete path
...
llvm-svn: 34273
2007-02-14 07:39:35 +00:00
Jim Laskey
c27aed3dc0
Automatically generating intrinsic declarations from Dan Gohman. Modified
...
to construct FunctionType in separate function, and, have getDeclaration
return a Function instead of a Constant.
llvm-svn: 34008
2007-02-07 20:38:26 +00:00
Reid Spencer
9f642b1776
Set the new NO_INSTALL flag for build-only tools.
...
llvm-svn: 33967
2007-02-06 18:51:28 +00:00
Jim Laskey
52c07ebe15
Error check and eliminate unnecessary value.
...
llvm-svn: 33966
2007-02-06 18:30:58 +00:00
Jim Laskey
4fd5f28165
Regenerate.
...
llvm-svn: 33965
2007-02-06 18:20:07 +00:00
Jim Laskey
595ef8f868
Deemed too cute to live.
...
llvm-svn: 33964
2007-02-06 18:19:44 +00:00
Jim Laskey
bc1fb68dc6
Regenerate.
...
llvm-svn: 33963
2007-02-06 18:03:31 +00:00
Jim Laskey
7d5ddeb668
Support var arg intrinsics.
...
llvm-svn: 33962
2007-02-06 18:02:54 +00:00
Reid Spencer
b32cc501f5
Use opt to generate the list of passes to run.
...
llvm-svn: 33903
2007-02-05 06:10:19 +00:00
Jim Laskey
9d10e4e1fe
Make the constant honest.
...
llvm-svn: 33557
2007-01-26 23:00:54 +00:00
Jim Laskey
1bab68f592
Files missing from LABEL check in.
...
llvm-svn: 33539
2007-01-26 17:29:20 +00:00
Chris Lattner
135e17b756
Make tblgen error more useful. Patch by B. Scott Michel
...
llvm-svn: 33295
2007-01-17 07:45:12 +00:00
Reid Spencer
ad67732a72
Fix this tool for use on Darwin which requires the file to come after the
...
commands. Linux is more forgiving.
Patch by Gordon Henriksen. Thanks, Gordon!
llvm-svn: 33285
2007-01-17 03:38:22 +00:00
Reid Spencer
bbcedcf45d
Join two lines that caused awk to squak on some platforms.
...
llvm-svn: 33274
2007-01-16 22:41:12 +00:00
Reid Spencer
373d2bccea
For PR1064:
...
Implement the arbitrary bit-width integer feature. The feature allows
integers of any bitwidth (up to 64) to be defined instead of just 1, 8,
16, 32, and 64 bit integers.
This change does several things:
1. Introduces a new Derived Type, IntegerType, to represent the number of
bits in an integer. The Type classes SubclassData field is used to
store the number of bits. This allows 2^23 bits in an integer type.
2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and
64-bit integers. These are replaced with just IntegerType which is not
a primitive any more.
3. Adjust the rest of LLVM to account for this change.
Note that while this incremental change lays the foundation for arbitrary
bit-width integers, LLVM has not yet been converted to actually deal with
them in any significant way. Most optimization passes, for example, will
still only deal with the byte-width integer types. Future increments
will rectify this situation.
llvm-svn: 33113
2007-01-12 07:05:14 +00:00
Reid Spencer
9963189831
Put in some needed \ at the end of lines!!!
...
llvm-svn: 33070
2007-01-11 06:51:56 +00:00
Reid Spencer
0e73246942
For PR950:
...
Convert signed integer types to signless.
llvm-svn: 32786
2006-12-31 05:50:28 +00:00
Reid Spencer
142f27dfd4
Remove some clutter and make it keep going instead of stopping at the
...
first difference.
llvm-svn: 32645
2006-12-18 00:37:37 +00:00
Jim Laskey
023e836c5b
Ignore entries with blank names.
...
llvm-svn: 32491
2006-12-12 20:55:58 +00:00
Jim Laskey
b039172d58
Rollback changes to take a different tack.
...
llvm-svn: 32488
2006-12-12 19:26:50 +00:00
Jim Laskey
8a5cea99ed
Honor the command line specification for machine type.
...
llvm-svn: 32483
2006-12-12 16:07:33 +00:00
Reid Spencer
d5ba7eadcc
Provide a script that can track down which optimization pass causes
...
different code to be produced between two llvm builds that differe slightly.
This is useful in tracking down mis-optimization bugs.
llvm-svn: 32435
2006-12-11 17:42:12 +00:00
Reid Spencer
f2048c9717
Allow the input of the test program to be specified.
...
Don't generate the reference output for each comparison.
llvm-svn: 32395
2006-12-09 04:42:33 +00:00
Reid Spencer
6254d95a45
Add the -ldl library option.
...
llvm-svn: 32369
2006-12-08 18:58:38 +00:00
Bill Wendling
f13d78d3b8
What should be the last unnecessary <iostream>s in the library.
...
llvm-svn: 32333
2006-12-07 22:21:48 +00:00
Evan Cheng
7eb095f346
Match TargetInstrInfo changes.
...
llvm-svn: 32107
2006-12-01 22:57:41 +00:00
Reid Spencer
5605ecd40d
Only show the first few lines of difference.
...
llvm-svn: 31901
2006-11-25 04:07:06 +00:00
Reid Spencer
a10284b03f
Add an option to enable lli (interpreter mode) testing.
...
llvm-svn: 31899
2006-11-24 20:34:16 +00:00
Reid Spencer
336bf8354e
Stop early if there is no mis-optimization.
...
llvm-svn: 31893
2006-11-22 03:46:45 +00:00
Chris Lattner
670eb9da78
Fix PR1001, patch by Nikhil Patil!
...
llvm-svn: 31880
2006-11-20 18:54:33 +00:00
Reid Spencer
ce839fd108
Make the awk filter print out which files its eliminating.
...
llvm-svn: 31851
2006-11-18 18:30:18 +00:00
Reid Spencer
e52a08d399
This is a utility for preparing patches against LLVM. It runs cvs diff with
...
the correct options, places the patch content in order that makes sense for
review, and filters cruft out of the patch (like diffs in *.cvs files). It
produces both a NAME.patch.raw (unfiltered) and NAME.patch (filtered) file.
llvm-svn: 31850
2006-11-18 18:02:30 +00:00
Reid Spencer
e5c34cf38e
Provide a list of gccld optimization switches.
...
llvm-svn: 31849
2006-11-18 17:14:09 +00:00
Evan Cheng
e1ca976ce4
Add opcode to TargetInstrDescriptor.
...
llvm-svn: 31804
2006-11-17 01:46:27 +00:00
Reid Spencer
a9ff1e4cec
Use a release version of bugpoint, if found. Include gccld passes.
...
llvm-svn: 31786
2006-11-16 18:32:47 +00:00
Chris Lattner
4a2af4e374
Remove the isTwoAddress property from the CodeGenInstruction class. It should
...
not be used for anything other than backwards compat constraint handling.
Add support for a new DisableEncoding property which contains a list of
registers that should not be encoded by the generated code emitter. Convert
the codeemitter generator to use this, fixing some PPC JIT regressions.
llvm-svn: 31769
2006-11-15 23:23:02 +00:00
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
Reid Spencer
c7d7e1ed9c
Add some output so the user is informed while they wait.
...
llvm-svn: 31700
2006-11-13 16:08:51 +00:00
Reid Spencer
6c8c157f98
Add -lstdc++ to the link line for C++ programs.
...
llvm-svn: 31678
2006-11-11 10:22:48 +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
Reid Spencer
872f4226e4
Don't run bugpoint if we can't find a misoptimization.
...
llvm-svn: 31582
2006-11-09 01:47:04 +00:00
Reid Spencer
1d8fddc5b0
Print a usage message if too few arguments to program.
...
llvm-svn: 31581
2006-11-09 00:50:32 +00:00
Reid Spencer
dbb1ac36fa
Add a utility script to find a mis-optimization problem. This sometimes
...
helps when bugpoint can't find the problem directly because it needs the
set of optimizations that cause the program to fail.
llvm-svn: 31580
2006-11-09 00:26:17 +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
Chris Lattner
f6b840a1ae
silence warning
...
llvm-svn: 31402
2006-11-03 01:45:13 +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
Reid Spencer
4bafa71dc1
For PR786:
...
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.
llvm-svn: 31380
2006-11-02 20:25:50 +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
Reid Spencer
bddf9a66ec
80 cols fix.
...
llvm-svn: 31050
2006-10-19 15:24:04 +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