aboutsummaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/CodeGenIntrinsics.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/TableGen/CodeGenIntrinsics.h')
-rw-r--r--llvm/utils/TableGen/CodeGenIntrinsics.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/CodeGenIntrinsics.h b/llvm/utils/TableGen/CodeGenIntrinsics.h
index 723bbe0cc23d..af59c1f3d833 100644
--- a/llvm/utils/TableGen/CodeGenIntrinsics.h
+++ b/llvm/utils/TableGen/CodeGenIntrinsics.h
@@ -123,6 +123,12 @@ struct CodeGenIntrinsic {
/// True if the intrinsic is no-return.
bool isNoReturn;
+ /// True if the intrinsic is no-sync.
+ bool isNoSync;
+
+ /// True if the intrinsic is no-free.
+ bool isNoFree;
+
/// True if the intrinsic is will-return.
bool isWillReturn;
@@ -139,17 +145,32 @@ struct CodeGenIntrinsic {
// True if the intrinsic is marked as speculatable.
bool isSpeculatable;
- enum ArgAttribute {
+ enum ArgAttrKind {
NoCapture,
NoAlias,
Returned,
ReadOnly,
WriteOnly,
ReadNone,
- ImmArg
+ ImmArg,
+ Alignment
+ };
+
+ struct ArgAttribute {
+ unsigned Index;
+ ArgAttrKind Kind;
+ uint64_t Value;
+
+ ArgAttribute(unsigned Idx, ArgAttrKind K, uint64_t V)
+ : Index(Idx), Kind(K), Value(V) {}
+
+ bool operator<(const ArgAttribute &Other) const {
+ return std::tie(Index, Kind, Value) <
+ std::tie(Other.Index, Other.Kind, Other.Value);
+ }
};
- std::vector<std::pair<unsigned, ArgAttribute>> ArgumentAttributes;
+ std::vector<ArgAttribute> ArgumentAttributes;
bool hasProperty(enum SDNP Prop) const {
return Properties & (1 << Prop);