X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FCodeGenIntrinsics.h;h=ababfa4e7e77af10e30b4fb6ba2e6f6fad5aba3a;hb=c50299bab64d9232d992ec3c42b9d5ddf03e5001;hp=fea868b8c0612ac1b6ba9879a563ad69299546e1;hpb=49de98214b82fefeb8f16efbf8cdd8813a85469b;p=oota-llvm.git diff --git a/utils/TableGen/CodeGenIntrinsics.h b/utils/TableGen/CodeGenIntrinsics.h index fea868b8c06..ababfa4e7e7 100644 --- a/utils/TableGen/CodeGenIntrinsics.h +++ b/utils/TableGen/CodeGenIntrinsics.h @@ -14,9 +14,9 @@ #ifndef CODEGEN_INTRINSIC_H #define CODEGEN_INTRINSIC_H +#include "llvm/CodeGen/ValueTypes.h" #include #include -#include "llvm/CodeGen/ValueTypes.h" namespace llvm { class Record; @@ -34,7 +34,7 @@ namespace llvm { /// parameter values of an intrinsic. If the number of return values is > 1, /// then the intrinsic implicitly returns a first-class aggregate. The /// numbering of the types starts at 0 with the first return value and - /// continues from there throug the parameter list. This is useful for + /// continues from there through the parameter list. This is useful for /// "matching" types. struct IntrinsicSignature { /// RetVTs - The MVT::SimpleValueType for each return type. Note that this @@ -60,7 +60,7 @@ namespace llvm { // Memory mod/ref behavior of this intrinsic. enum { - NoMem, ReadArgMem, ReadMem, WriteArgMem, WriteMem + NoMem, ReadArgMem, ReadMem, ReadWriteArgMem, ReadWriteMem } ModRef; /// This is set to true if the intrinsic is overloaded by its argument @@ -69,9 +69,17 @@ namespace llvm { /// isCommutative - True if the intrinsic is commutative. bool isCommutative; - + + /// canThrow - True if the intrinsic can throw. + bool canThrow; + + /// isNoReturn - True if the intrinsic is no-return. + bool isNoReturn; + enum ArgAttribute { - NoCapture + NoCapture, + ReadOnly, + ReadNone }; std::vector > ArgumentAttributes;