Jakob Stoklund Olesen
e6aed139f0
Write llvm-tblgen backends as functions instead of sub-classes.
...
The TableGenBackend base class doesn't do much, and will be removed
completely soon.
Patch by Sean Silva!
llvm-svn: 158311
2012-06-11 15:37:55 +00:00
Chris Lattner
3cb6f83ebb
switch AttrListPtr::get to take an ArrayRef, simplifying a lot of clients.
...
llvm-svn: 157556
2012-05-28 01:47:44 +00:00
Chris Lattner
ff9e08baf9
rdar://11542750 - llvm.trap should be marked no return.
...
llvm-svn: 157551
2012-05-27 23:20:41 +00:00
Chris Lattner
144b619684
Reimplement the intrinsic verifier to use the same table as Intrinsic::getDefinition,
...
making it stronger and more sane.
Delete the code from tblgen that produced the old code.
Besides being a path forward in intrinsic sanity, this also eliminates a bunch of
machine generated code that was compiled into Function.o
llvm-svn: 157545
2012-05-27 19:37:05 +00:00
Chris Lattner
f39c278384
move some code around so that Verifier.cpp can get access to the intrinsic info table.
...
llvm-svn: 157540
2012-05-27 18:28:35 +00:00
Chris Lattner
c464416107
enhance the intrinsic info table to encode what *kind* of Any argument
...
it is (at the cost of 45 bytes of extra table space) so that the verifier can
start using it.
llvm-svn: 157536
2012-05-27 16:39:08 +00:00
Chris Lattner
c5a825bb79
rearrange some code, no functionality change.
...
llvm-svn: 157523
2012-05-26 23:03:52 +00:00
Patrik Hägglund
ca210d8432
Fixed typo in r156905.
...
llvm-svn: 157320
2012-05-23 12:34:56 +00:00
Chris Lattner
4f18aa8f04
small refinement to r157218 to save a tiny amount of table size in the common
...
case.
llvm-svn: 157312
2012-05-23 05:19:18 +00:00
Pete Cooper
243efd7ac3
Added address space qualifier to intrinsic PointerType arguments.
...
llvm-svn: 157218
2012-05-21 23:21:28 +00:00
Chris Lattner
a3b0f52a72
enhance the intrinsic info stuff to emit encodings that don't fit in 32-bits into a
...
separate side table, using the handy SequenceToOffsetTable class. This encodes all
these weird things into another 256 bytes, allowing all intrinsics to be encoded this way.
llvm-svn: 156995
2012-05-17 15:55:41 +00:00
Chris Lattner
3e34a7b93d
finish encoding all of the interesting details of intrinsics. Now intrinsics
...
are only rejected because they can't be encoded into a 32-bit unit, not because
they contain an unencodable feature.
llvm-svn: 156978
2012-05-17 05:03:24 +00:00
Chris Lattner
827b253c63
strengthen the intrinsic descriptor stuff to be able to handle sin, cos and other
...
intrinsics that use passed-in arguments.
llvm-svn: 156977
2012-05-17 04:30:58 +00:00
Chris Lattner
786edd228a
simplify code generated by tblgen that is not necessary since we dropped
...
compatibility with LLVM 2.x bitcode files.
llvm-svn: 156976
2012-05-17 04:07:48 +00:00
Francois Pichet
9522bfc87b
I forgot the #ifdef _MSC_VER guard in my last commit.
...
llvm-svn: 156975
2012-05-17 04:00:03 +00:00
Francois Pichet
b273b74373
Fix the MSVC 2010 build: disable the optimizer for a problematic function.
...
llvm-svn: 156973
2012-05-17 03:38:19 +00:00
Chris Lattner
7f0e7bae25
Significantly reduce the compiled size of Functions.cpp by turning a big blob of tblgen
...
generated code (for Intrinsic::getType) into a table. This handles common cases right now,
but I plan to extend it to handle all cases and merge in type verification logic as well
in follow-on patches.
llvm-svn: 156905
2012-05-16 06:34:44 +00:00
Chris Lattner
d785d060f9
have tblgen emit cast<> instead of dyn_cast<> when we know it must succeed.
...
llvm-svn: 156902
2012-05-16 04:51:09 +00:00
Douglas Gregor
12c1cd33f4
Move llvm-tblgen's StringMatcher into the TableGen library so it can
...
be used by clang-tblgen.
llvm-svn: 156000
2012-05-02 17:32:48 +00:00
Craig Topper
374f19cade
Fix target specific intrinsic handling to adjust intrinsic number before doing attribute table lookup. Also fix attribute table lookup to handle 'invalid' intrinsic correctly. Fixes PR12542
...
llvm-svn: 154658
2012-04-13 06:14:57 +00:00
Benjamin Kramer
c16e09bb80
TableGen: Don't emit the llvm intrinsic -> gcc builtin table, its only user was the c backend.
...
llvm-svn: 153432
2012-03-26 11:08:03 +00:00
Benjamin Kramer
acd78d5092
Emit the "is an intrinsic overloaded" table as a bitfield.
...
llvm-svn: 151792
2012-03-01 02:16:57 +00:00
Benjamin Kramer
aba3503639
Emit the intrinsic modref info as a lookup table instead of a huge switch.
...
Shrinks BasicAliasAnalysis.o from 106k to 56k on i386.
llvm-svn: 151781
2012-03-01 01:18:32 +00:00
Craig Topper
ccd651cac8
Convert generated intrinsic attributes to use an array lookup as Chris suggested in PR11951.
...
llvm-svn: 151622
2012-02-28 06:32:00 +00:00
Craig Topper
c4965bce14
Convert assert(0) to llvm_unreachable
...
llvm-svn: 149814
2012-02-05 07:21:30 +00:00
Dan Gohman
94580ab375
Add basic generic CodeGen support for half.
...
llvm-svn: 146927
2011-12-20 00:02:33 +00:00
Peter Collingbourne
84c287e33c
Move TableGen's parser and entry point into a library
...
This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951
2011-10-01 16:41:13 +00:00
Benjamin Kramer
e6e1933f31
Change Intrinsic::getDeclaration and friends to take an ArrayRef.
...
llvm-svn: 135154
2011-07-14 17:45:39 +00:00
Chris Lattner
f3f545ea8a
fix the varargs version of StructType::get to not require an LLVMContext, making usage
...
much cleaner.
llvm-svn: 133364
2011-06-18 22:48:56 +00:00
John McCall
375dcc9ec9
Change how tblgen generates attributes for intrinsics to use a single
...
switch. With this newfound organization, teach tblgen how not to give
all intrinsics the 'nounwind' attribute. Introduce a new intrinsic,
llvm.eh.resume, which does not have this attribute. Documentation and uses
to follow.
llvm-svn: 132252
2011-05-28 06:31:34 +00:00
Dan Gohman
f899c87343
Rename AccessesArguments and AccessesArgumentsReadonly, and rewrite
...
their comments.
llvm-svn: 118696
2010-11-10 18:30:00 +00:00
Dan Gohman
88d5f7fd95
Translate IntrReadArgMem to AccessesArgumentsReadonly.
...
llvm-svn: 118622
2010-11-09 20:07:20 +00:00
Michael J. Spencer
ded5f66813
Get rid of pop_macro warnings on MSVC.
...
llvm-svn: 114750
2010-09-24 19:48:47 +00:00
Michael J. Spencer
511dce004e
CBackend: Fix MSVC build.
...
This may produce warnings on MSVS, but it's better than failures.
llvm-svn: 113834
2010-09-14 04:27:38 +00:00
Dale Johannesen
3a12890338
Add x86mmx to TableGen.
...
llvm-svn: 113671
2010-09-11 00:16:46 +00:00
Chris Lattner
07b332f0a0
emit the LLVM intrinsic name -> intrinsic number mapping table with
...
StringMatcher instead of a linear sequence of memcmps.
llvm-svn: 113145
2010-09-06 03:58:45 +00:00
Chris Lattner
497d13e82b
emit the __builtin -> intrinsic map with StringMatcher instead of a
...
copy of a close relative of it.
llvm-svn: 113142
2010-09-06 03:14:45 +00:00
Chris Lattner
fb43da66b5
slightly improve the runtime and code size of the Intrinsics info table by not
...
comparing the "llvm." prefix in the memcmp, and not storing it in the string literal.
llvm-svn: 113136
2010-09-06 01:44:44 +00:00
Dan Gohman
ddb2d65c50
Remove IntrWriteMem, as it's the default. Rename IntrWriteArgMem
...
to IntrReadWriteArgMem, as it's for reading as well as writing.
llvm-svn: 110395
2010-08-05 23:36:21 +00:00
Douglas Gregor
6739a89117
Fixes for Microsoft Visual Studio 2010, from Steven Watanabe!
...
llvm-svn: 103457
2010-05-11 06:17:44 +00:00
Chris Lattner
2109cb461c
Change intrinsic result type for void to store it as an empty list
...
instead of as a single element list with VoidTy. Now with a fix
for the verifier.
llvm-svn: 99206
2010-03-22 20:56:36 +00:00
Eric Christopher
3e2bb702db
Revert r99009 temporarily it seems to be breaking the bots.
...
llvm-svn: 99011
2010-03-19 23:04:23 +00:00
Chris Lattner
933b2cf9a8
Change intrinsic result type for void to store it as an empty list
...
instead of as a single element list with VoidTy.
llvm-svn: 99009
2010-03-19 22:40:56 +00:00
Duncan Sands
78376ad7e1
Partially address a README by having functionattrs consider calls to
...
memcpy, memset and other intrinsics that only access their arguments
to be readnone if the intrinsic's arguments all point to local memory.
This improves the testcase in the README to readonly, but it could in
theory be made readnone, however this would involve more sophisticated
analysis that looks through the memcpy.
llvm-svn: 92829
2010-01-06 08:45:52 +00:00
Owen Anderson
55f1c09e31
Push LLVMContexts through the IntegerType APIs.
...
llvm-svn: 78948
2009-08-13 21:58:54 +00:00
Owen Anderson
9f94459d24
Split EVT into MVT and EVT, the former representing _just_ a primitive type, while
...
the latter is capable of representing either a primitive or an extended type.
llvm-svn: 78713
2009-08-11 20:47:22 +00:00
Bob Wilson
2cd5da8300
Add a new overloaded EVT::vAny type for use in TableGen to allow intrinsic
...
arguments that are vectors of any size and element type.
llvm-svn: 78631
2009-08-11 01:14:02 +00:00
Owen Anderson
53aa7a960c
Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type.
...
llvm-svn: 78610
2009-08-10 22:56:29 +00:00
Owen Anderson
03cb69fbd1
Privatize the StructType table, which unfortunately involves routing contexts through a number of APIs.
...
llvm-svn: 78258
2009-08-05 23:16:16 +00:00
Bob Wilson
1024634df7
Fix the verifier to handle intrinsics with LLVMMatchType parameters, where
...
the return type of the intrinsic is not overloaded, i.e., where the type
being matched is some other parameter. The argument to LLVMMatchType is
an index into the list of overloaded types (ignoring the fixed types),
but VerifyIntrinsicPrototype is expecting its arguments for LLVMMatchType
parameters to be indices into the combined list of _all_ return values and
parameters, not just the overloaded ones.
This patch changes TableGen to keep track for each overloaded type of the
corresponding index into the list of return values and parameters. It
then generates the values expected by VerifyIntrinsicPrototype.
llvm-svn: 77467
2009-07-29 16:35:59 +00:00