[llvm] r260404 - SelectionDAG: Make Properties a field of SDPatternOperator
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 10 10:40:05 PST 2016
Author: arsenm
Date: Wed Feb 10 12:40:04 2016
New Revision: 260404
URL: http://llvm.org/viewvc/llvm-project?rev=260404&view=rev
Log:
SelectionDAG: Make Properties a field of SDPatternOperator
Currently you can't specify node properties like commutativity on
a PatFrag. If you want to create a PatFrag on a commutative node
with a hasOneUse predicate, this enables you to specify that the
PatFrag is also commutable.
Modified:
llvm/trunk/include/llvm/IR/Intrinsics.td
llvm/trunk/include/llvm/IR/IntrinsicsAArch64.td
llvm/trunk/include/llvm/IR/IntrinsicsARM.td
llvm/trunk/include/llvm/Target/TargetSelectionDAG.td
llvm/trunk/test/TableGen/intrinsic-long-name.td
llvm/trunk/test/TableGen/intrinsic-varargs.td
llvm/trunk/utils/TableGen/CodeGenTarget.cpp
Modified: llvm/trunk/include/llvm/IR/Intrinsics.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.td?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Intrinsics.td (original)
+++ llvm/trunk/include/llvm/IR/Intrinsics.td Wed Feb 10 12:40:04 2016
@@ -240,7 +240,7 @@ class Intrinsic<list<LLVMType> ret_types
string TargetPrefix = ""; // Set to a prefix for target-specific intrinsics.
list<LLVMType> RetTypes = ret_types;
list<LLVMType> ParamTypes = param_types;
- list<IntrinsicProperty> Properties = properties;
+ list<IntrinsicProperty> IntrProperties = properties;
bit isTarget = 0;
}
@@ -359,7 +359,7 @@ def int_memset : Intrinsic<[],
llvm_i32_ty, llvm_i1_ty],
[IntrReadWriteArgMem, NoCapture<0>]>;
-let Properties = [IntrNoMem] in {
+let IntrProperties = [IntrNoMem] in {
def int_fma : Intrinsic<[llvm_anyfloat_ty],
[LLVMMatchType<0>, LLVMMatchType<0>,
LLVMMatchType<0>]>;
@@ -421,7 +421,7 @@ def int_expect : Intrinsic<[llvm_anyint_
//
// None of these intrinsics accesses memory at all.
-let Properties = [IntrNoMem] in {
+let IntrProperties = [IntrNoMem] in {
def int_bswap: Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>]>;
def int_ctpop: Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>]>;
def int_ctlz : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>, llvm_i1_ty]>;
@@ -435,7 +435,7 @@ let Properties = [IntrNoMem] in {
// None of these intrinsics accesses memory at all...but that doesn't mean the
// optimizers can change them aggressively. Special handling needed in a few
// places.
-let Properties = [IntrNoMem] in {
+let IntrProperties = [IntrNoMem] in {
def int_dbg_declare : Intrinsic<[],
[llvm_metadata_ty,
llvm_metadata_ty,
@@ -472,7 +472,7 @@ def int_eh_unwind_init: Intrinsic<[]>,
def int_eh_dwarf_cfa : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty]>;
-let Properties = [IntrNoMem] in {
+let IntrProperties = [IntrNoMem] in {
def int_eh_sjlj_lsda : Intrinsic<[llvm_ptr_ty]>;
def int_eh_sjlj_callsite : Intrinsic<[], [llvm_i32_ty]>;
}
@@ -597,7 +597,7 @@ def int_debugtrap : Intrinsic<[]>,
def int_donothing : Intrinsic<[], [], [IntrNoMem]>;
// Intrisics to support half precision floating point format
-let Properties = [IntrNoMem] in {
+let IntrProperties = [IntrNoMem] in {
def int_convert_to_fp16 : Intrinsic<[llvm_i16_ty], [llvm_anyfloat_ty]>;
def int_convert_from_fp16 : Intrinsic<[llvm_anyfloat_ty], [llvm_i16_ty]>;
}
Modified: llvm/trunk/include/llvm/IR/IntrinsicsAArch64.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IntrinsicsAArch64.td?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/IntrinsicsAArch64.td (original)
+++ llvm/trunk/include/llvm/IR/IntrinsicsAArch64.td Wed Feb 10 12:40:04 2016
@@ -159,7 +159,7 @@ let TargetPrefix = "aarch64" in { // Al
// Arithmetic ops
-let Properties = [IntrNoMem] in {
+let IntrProperties = [IntrNoMem] in {
// Vector Add Across Lanes
def int_aarch64_neon_saddv : AdvSIMD_1VectorArg_Int_Across_Intrinsic;
def int_aarch64_neon_uaddv : AdvSIMD_1VectorArg_Int_Across_Intrinsic;
@@ -212,7 +212,7 @@ let Properties = [IntrNoMem] in {
// Vector Extending Multiply
def int_aarch64_neon_fmulx : AdvSIMD_2FloatArg_Intrinsic {
- let Properties = [IntrNoMem, Commutative];
+ let IntrProperties = [IntrNoMem, Commutative];
}
// Vector Saturating Doubling Long Multiply
Modified: llvm/trunk/include/llvm/IR/IntrinsicsARM.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IntrinsicsARM.td?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/IntrinsicsARM.td (original)
+++ llvm/trunk/include/llvm/IR/IntrinsicsARM.td Wed Feb 10 12:40:04 2016
@@ -207,7 +207,7 @@ class Neon_Tbl6Arg_Intrinsic
// Arithmetic ops
-let Properties = [IntrNoMem, Commutative] in {
+let IntrProperties = [IntrNoMem, Commutative] in {
// Vector Add.
def int_arm_neon_vhadds : Neon_2Arg_Intrinsic;
Modified: llvm/trunk/include/llvm/Target/TargetSelectionDAG.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetSelectionDAG.td?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Target/TargetSelectionDAG.td (original)
+++ llvm/trunk/include/llvm/Target/TargetSelectionDAG.td Wed Feb 10 12:40:04 2016
@@ -300,7 +300,9 @@ def SDNPWantParent : SDNodeProperty;
//===----------------------------------------------------------------------===//
// Selection DAG Pattern Operations
-class SDPatternOperator;
+class SDPatternOperator {
+ list<SDNodeProperty> Properties = [];
+}
//===----------------------------------------------------------------------===//
// Selection DAG Node definitions.
@@ -310,7 +312,7 @@ class SDNode<string opcode, SDTypeProfil
: SDPatternOperator {
string Opcode = opcode;
string SDClass = sdclass;
- list<SDNodeProperty> Properties = props;
+ let Properties = props;
SDTypeProfile TypeProfile = typeprof;
}
Modified: llvm/trunk/test/TableGen/intrinsic-long-name.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-long-name.td?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/test/TableGen/intrinsic-long-name.td (original)
+++ llvm/trunk/test/TableGen/intrinsic-long-name.td Wed Feb 10 12:40:04 2016
@@ -19,7 +19,7 @@ class Intrinsic<string name, list<LLVMTy
string TargetPrefix = "";
list<LLVMType> RetTypes = [];
list<LLVMType> ParamTypes = param_types;
- list<IntrinsicProperty> Properties = [];
+ list<IntrinsicProperty> IntrProperties = [];
}
def iAny : ValueType<0, 254>;
Modified: llvm/trunk/test/TableGen/intrinsic-varargs.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-varargs.td?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/test/TableGen/intrinsic-varargs.td (original)
+++ llvm/trunk/test/TableGen/intrinsic-varargs.td Wed Feb 10 12:40:04 2016
@@ -19,7 +19,7 @@ class Intrinsic<string name, list<LLVMTy
string TargetPrefix = "";
list<LLVMType> RetTypes = [];
list<LLVMType> ParamTypes = param_types;
- list<IntrinsicProperty> Properties = [];
+ list<IntrinsicProperty> IntrProperties = [];
}
// isVoid needs to match the definition in ValueTypes.td
Modified: llvm/trunk/utils/TableGen/CodeGenTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenTarget.cpp?rev=260404&r1=260403&r2=260404&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenTarget.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenTarget.cpp Wed Feb 10 12:40:04 2016
@@ -565,7 +565,7 @@ CodeGenIntrinsic::CodeGenIntrinsic(Recor
}
// Parse the intrinsic properties.
- ListInit *PropList = R->getValueAsListInit("Properties");
+ ListInit *PropList = R->getValueAsListInit("IntrProperties");
for (unsigned i = 0, e = PropList->size(); i != e; ++i) {
Record *Property = PropList->getElementAsRecord(i);
assert(Property->isSubClassOf("IntrinsicProperty") &&
More information about the llvm-commits
mailing list