Reland [IR] Intrinsics default attributes and opt-out flag

Intrinsic properties can now be set to default and applied to all
intrinsics. If the attributes are not needed, the user can opt-out by
setting the DisableDefaultAttributes flag to true.

Differential Revision: https://reviews.llvm.org/D70365
diff --git a/llvm/test/TableGen/intrinsic-struct.td b/llvm/test/TableGen/intrinsic-struct.td
index 7a3089c..bc044a4 100644
--- a/llvm/test/TableGen/intrinsic-struct.td
+++ b/llvm/test/TableGen/intrinsic-struct.td
@@ -1,7 +1,10 @@
 // RUN: llvm-tblgen -gen-intrinsic-enums %s | FileCheck %s
 // XFAIL: vg_leak
 
-class IntrinsicProperty;
+class IntrinsicProperty<bit is_default = 0> {
+  bit IsDefault = is_default;
+}
+
 class SDNodeProperty;
 
 class ValueType<int size, int value> {
@@ -22,6 +25,7 @@
   list<LLVMType> ParamTypes = [];
   list<IntrinsicProperty> IntrProperties = [];
   list<SDNodeProperty> Properties = [];
+  bit DisableDefaultAttributes = 1;
 }
 
 def iAny : ValueType<0, 253>;