LLVM API Documentation
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