aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Intrinsics.h
AgeCommit message (Collapse)Author
2013-01-02Move all of the header files which are involved in modelling the LLVM IRChandler Carruth
into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-07s/AttrListPtr/AttributeSet/g to better label what this class is going to be ↵Bill Wendling
in the near future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169651 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-15Attributes RewriteBill Wendling
Convert the internal representation of the Attributes class into a pointer to an opaque object that's uniqued by and stored in the LLVMContext object. The Attributes class then becomes a thin wrapper around this opaque object. Eventually, the internal representation will be expanded to include attributes that represent code generation options, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165917 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-27generalize this to allow any argument.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157542 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-27move some code around so that Verifier.cpp can get access to the intrinsic ↵Chris Lattner
info table. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157540 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-18land David Blaikie's patch to de-constify Type, with a few tweaks.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-14Change Intrinsic::getDeclaration and friends to take an ArrayRef.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135154 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-12Second attempt at de-constifying LLVM Types in FunctionType::get(),Jay Foad
StructType::get() and TargetData::getIntPtrType(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134982 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-12Revert r134893 and r134888 (and related patches in other trees). It was causingBill Wendling
an assert on Darwin llvm-gcc builds. Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, li\ ne 2067. etc. http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354 --- Reverse-merging r134893 into '.': U include/llvm/Target/TargetData.h U include/llvm/DerivedTypes.h U tools/bugpoint/ExtractFunction.cpp U unittests/Support/TypeBuilderTest.cpp U lib/Target/ARM/ARMGlobalMerge.cpp U lib/Target/TargetData.cpp U lib/VMCore/Constants.cpp U lib/VMCore/Type.cpp U lib/VMCore/Core.cpp U lib/Transforms/Utils/CodeExtractor.cpp U lib/Transforms/Instrumentation/ProfilingUtils.cpp U lib/Transforms/IPO/DeadArgumentElimination.cpp U lib/CodeGen/SjLjEHPrepare.cpp --- Reverse-merging r134888 into '.': G include/llvm/DerivedTypes.h U include/llvm/Support/TypeBuilder.h U include/llvm/Intrinsics.h U unittests/Analysis/ScalarEvolutionTest.cpp U unittests/ExecutionEngine/JIT/JITTest.cpp U unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp U unittests/VMCore/PassManagerTest.cpp G unittests/Support/TypeBuilderTest.cpp U lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp U lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp U lib/VMCore/IRBuilder.cpp G lib/VMCore/Type.cpp U lib/VMCore/Function.cpp G lib/VMCore/Core.cpp U lib/VMCore/Module.cpp U lib/AsmParser/LLParser.cpp U lib/Transforms/Utils/CloneFunction.cpp G lib/Transforms/Utils/CodeExtractor.cpp U lib/Transforms/Utils/InlineFunction.cpp U lib/Transforms/Instrumentation/GCOVProfiling.cpp U lib/Transforms/Scalar/ObjCARC.cpp U lib/Transforms/Scalar/SimplifyLibCalls.cpp U lib/Transforms/Scalar/MemCpyOptimizer.cpp G lib/Transforms/IPO/DeadArgumentElimination.cpp U lib/Transforms/IPO/ArgumentPromotion.cpp U lib/Transforms/InstCombine/InstCombineCompares.cpp U lib/Transforms/InstCombine/InstCombineAndOrXor.cpp U lib/Transforms/InstCombine/InstCombineCalls.cpp U lib/CodeGen/DwarfEHPrepare.cpp U lib/CodeGen/IntrinsicLowering.cpp U lib/Bitcode/Reader/BitcodeReader.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134949 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-11De-constify Types in FunctionType::get().Jay Foad
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134888 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-09Mention vAny and iPTRAny in a comment.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95665 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-11Make LLVMContext and LLVMContextImpl classes instead of structs.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78690 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-11Add a new overloaded EVT::vAny type for use in TableGen to allow intrinsicBob Wilson
arguments that are vectors of any size and element type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78631 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-04Factor some of the constants+context related code out into a separate ↵Owen Anderson
header, to make LLVMContextImpl.h not hideous. Also, fix some MSVC compile errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78115 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-07LLVMContext-ification.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74973 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Added support to have TableGen provide information if an intrinsic (coreMon P Wang
or target) can be overloaded or not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65404 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-05Reapply 63765. Patches for clang and llvm-gcc to follow.Dale Johannesen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63812 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04Reverting 63765. This broke the build of both clangDale Johannesen
and llvm-gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63786 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04New feature: add support for target intrinsics being defined in theNate Begeman
target directories themselves. This also means that VMCore no longer needs to know about every target's list of intrinsics. Future work will include converting the PowerPC target to this interface as an example implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63765 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-25 Large mechanical patch.Devang Patel
s/ParamAttr/Attribute/g s/PAList/AttrList/g s/FnAttributeWithIndex/AttributeWithIndex/g s/FnAttr/Attribute/g This sets the stage - to implement function notes as function attributes and - to distinguish between function attributes and return value attributes. This requires corresponding changes in llvm-gcc and clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56622 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-30add missing #includeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50468 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12Reimplement the parameter attributes support, phase #1. hilights:Chris Lattner
1. There is now a "PAListPtr" class, which is a smart pointer around the underlying uniqued parameter attribute list object, and manages its refcount. It is now impossible to mess up the refcount. 2. PAListPtr is now the main interface to the underlying object, and the underlying object is now completely opaque. 3. Implementation details like SmallVector and FoldingSet are now no longer part of the interface. 4. You can create a PAListPtr with an arbitrary sequence of ParamAttrsWithIndex's, no need to make a SmallVector of a specific size (you can just use an array or scalar or vector if you wish). 5. All the client code that had to check for a null pointer before dereferencing the pointer is simplified to just access the PAListPtr directly. 6. The interfaces for adding attrs to a list and removing them is a bit simpler. Phase #2 will rename some stuff (e.g. PAListPtr) and do other less invasive changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48289 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Add some comments to Intrinsic::getDeclaration to clarify how toDan Gohman
get declarations for overloaded intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47353 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29Don't attribute in file headers anymore. See llvmdev for theChris Lattner
discussion of this change. Boy are my fingers tired. ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-03Rather than having special rules like "intrinsics cannotDuncan Sands
throw exceptions", just mark intrinsics with the nounwind attribute. Likewise, mark intrinsics as readnone/readonly and get rid of special aliasing logic (which didn't use anything more than this anyway). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01For PR1297:Reid Spencer
Change the interface to the getName, getType, getDeclaration methods to include the "actual" types of the result/arguments. This is necessary to support overloaded intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35542 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-07Automatically generating intrinsic declarations from Dan Gohman. ModifiedJim Laskey
to construct FunctionType in separate function, and, have getDeclaration return a Function instead of a Constant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34008 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-25Add a programatic interface to intrinsic names.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27107 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-09use the enum list autogen'd from Intrinsics.tdChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26660 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-03remove the read/write port/io intrinsics.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26479 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-03Split memcpy/memset/memmove intrinsics into i32/i64 versions, resolvingChris Lattner
PR709, and paving the way for future progress. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26476 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-16For PR411:Reid Spencer
This patch is an incremental step towards supporting a flat symbol table. It de-overloads the intrinsic functions by providing type-specific intrinsics and arranging for automatically upgrading from the old overloaded name to the new non-overloaded name. Specifically: llvm.isunordered -> llvm.isunordered.f32, llvm.isunordered.f64 llvm.sqrt -> llvm.sqrt.f32, llvm.sqrt.f64 llvm.ctpop -> llvm.ctpop.i8, llvm.ctpop.i16, llvm.ctpop.i32, llvm.ctpop.i64 llvm.ctlz -> llvm.ctlz.i8, llvm.ctlz.i16, llvm.ctlz.i32, llvm.ctlz.i64 llvm.cttz -> llvm.cttz.i8, llvm.cttz.i16, llvm.cttz.i32, llvm.cttz.i64 New code should not use the overloaded intrinsic names. Warnings will be emitted if they are used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25366 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-14Add bswap intrinsics as documented in the Language ReferenceNate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25309 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-13add new llvm.stacksave/llvm.stackrestore intrinsicsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25265 91177308-0d34-0410-b5e6-96231b3b80d8
2005-11-11Add support for a cycle counter intrinsic. As basically all processors haveAndrew Lenharth
this and have it in about the same form, I think this makes sense. on X86, you do a RDTSC (64bit result, from any ring since the P5MMX) on Alpha, you do a RDCC on PPC, there is a sequence which may or may not work depending on how things are setup by the OS. Or something like that. Maybe someone who knows PPC can add support. Something about the time base register. on Sparc, you read %tick, which in some solaris versions (>=8) is readable by userspace on IA64 read ar.itc So I think the ulong is justified since all of those are 64bit. Support is slighly flaky on old chips (P5 and lower) and sometimes depends on OS (PPC, Sparc). But for modern OS/Hardware (aka this decade), we should be ok. I am still not sure what to do about lowering. I can either see a lower to 0, to gettimeofday (or the target os equivalent), or loudly complaining and refusing to continue. I am commiting an Alpha implementation. I will add the X86 implementation if I have to (I have use of it in the near future), but if someone who knows that backend (and the funky multi-register results) better wants to add it, it would take them a lot less time ;) TODO: better lowering and legalizing, and support more platforms git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24299 91177308-0d34-0410-b5e6-96231b3b80d8
2005-05-03Implement count leading zeros (ctlz), count trailing zeros (cttz), and countAndrew Lenharth
population (ctpop). Generic lowering is implemented, however only promotion is implemented for SelectionDAG at the moment. More coming soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21676 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-30Add llvm.sqrt intrinsic, patch contributed by Morten OfstadChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21627 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-21Remove trailing whitespaceMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21408 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28First step in adding pcmarker intrinsic. Second step (soon) is adding ↵Andrew Lenharth
backend support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20900 91177308-0d34-0410-b5e6-96231b3b80d8
2005-02-28Add a prefetch intrinsic, patch contributed by Justin Wick!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20374 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-29The Alpha (tm) intrinsics aren't even being usedMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17341 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15isnan is deadChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14191 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-12Add the isunordered intrinsic.Alkis Evlogimenos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14159 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11I misled Alkis: LLVM should have isnan, not isunordered.Chris Lattner
isunordered(X, Y) === isnan(X) | isnan(Y) Remove isunordered, add isnan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14132 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11Add the isunordered intrinsic.Alkis Evlogimenos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14127 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-23Add the new GC intrinsicsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13686 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-14Temporarily hack in the intrinsics that John added. I expect him to finish ↵Chris Lattner
up their addition, but in the meantime, the build should not be broken. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12938 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-08Added the llvm.readport and llvm.writeport intrinsics.John Criswell
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12780 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-13Rename the intrinsic enum values for llvm.va_* from Intrinsic::va_* toChris Lattner
Intrinsic::va*. This avoid conflicting with macros in the stdlib.h file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12356 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-14Add llvm.memset/frameaddress/returnaddress intrinsics.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11431 91177308-0d34-0410-b5e6-96231b3b80d8