LLVM API Documentation

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Intrinsics.h

Go to the documentation of this file.
00001 //===-- llvm/Instrinsics.h - LLVM Intrinsic Function Handling ---*- C++ -*-===//
00002 // 
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file was developed by the LLVM research group and is distributed under
00006 // the University of Illinois Open Source License. See LICENSE.TXT for details.
00007 // 
00008 //===----------------------------------------------------------------------===//
00009 //
00010 // This file defines a set of enums which allow processing of intrinsic
00011 // functions.  Values of these enum types are returned by
00012 // Function::getIntrinsicID.
00013 //
00014 //===----------------------------------------------------------------------===//
00015 
00016 #ifndef LLVM_INTRINSICS_H
00017 #define LLVM_INTRINSICS_H
00018 
00019 namespace llvm {
00020 
00021 /// Intrinsic Namespace - This namespace contains an enum with a value for
00022 /// every intrinsic/builtin function known by LLVM.  These enum values are
00023 /// returned by Function::getIntrinsicID().
00024 ///
00025 namespace Intrinsic {
00026   enum ID {
00027     not_intrinsic = 0,   // Must be zero
00028 
00029     // Varargs handling intrinsics.
00030     vastart,        // Used to implement the va_start macro in C
00031     vaend,          // Used to implement the va_end macro in C
00032     vacopy,         // Used to implement the va_copy macro in C
00033 
00034     // Code generator intrinsics.
00035     returnaddress,  // Yields the return address of a dynamic call frame
00036     frameaddress,   // Yields the frame address of a dynamic call frame
00037 
00038     // setjmp/longjmp intrinsics.
00039     setjmp,         // Used to represent a setjmp call in C
00040     longjmp,        // Used to represent a longjmp call in C
00041     sigsetjmp,      // Used to represent a sigsetjmp call in C
00042     siglongjmp,     // Used to represent a siglongjmp call in C
00043 
00044     // Garbage Collection intrinsics.
00045     gcroot,         // Defines a new GC root on the stack
00046     gcread,         // Defines a read of a heap object  (for read barriers)
00047     gcwrite,        // Defines a write to a heap object (for write barriers)
00048 
00049     // Debugging intrinsics.
00050     dbg_stoppoint,    // Represents source lines and breakpointable places
00051     dbg_region_start, // Start of a region
00052     dbg_region_end,   // End of a region
00053     dbg_func_start,   // Start of a function
00054     dbg_declare,      // Declare a local object
00055 
00056 
00057     // Standard libc functions.
00058     memcpy,         // Copy non-overlapping memory blocks
00059     memmove,        // Copy potentially overlapping memory blocks
00060     memset,         // Fill memory with a byte value
00061 
00062     // libm related functions.
00063     isunordered,    // Return true if either argument is a NaN
00064 
00065     // Input/Output intrinsics.
00066     readport,
00067     writeport,
00068     readio,
00069     writeio
00070   };
00071 
00072 } // End Intrinsic namespace
00073 
00074 } // End llvm namespace
00075 
00076 #endif