From a5cac6f6eb939b033c020cc59499756d2b95b349 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 28 Sep 2005 20:58:39 +0000 Subject: [PATCH] Mark associative nodes as associative git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23503 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCInstrInfo.td | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index 94f504a23ab..9467f17cd5d 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.td +++ b/lib/Target/PowerPC/PPCInstrInfo.td @@ -87,7 +87,8 @@ def SDTExtInreg : SDTypeProfile<1, 2, [ // sext_inreg // Note: These are hard coded into tblgen. // class SDNodeProperty; -def SDNPCommutative : SDNodeProperty; +def SDNPCommutative : SDNodeProperty; // X op Y == Y op X +def SDNPAssociative : SDNodeProperty; // (X op Y) op Z == X op (Y op Z) //===----------------------------------------------------------------------===// // Selection DAG Node definitions. @@ -105,12 +106,17 @@ def node; def imm : SDNode<"ISD::Constant" , SDTImm , [], "ConstantSDNode">; def vt : SDNode<"ISD::VALUETYPE" , SDTVT , [], "VTSDNode">; -def and : SDNode<"ISD::AND" , SDTIntBinOp, [SDNPCommutative]>; -def or : SDNode<"ISD::OR" , SDTIntBinOp, [SDNPCommutative]>; -def xor : SDNode<"ISD::XOR" , SDTIntBinOp, [SDNPCommutative]>; -def add : SDNode<"ISD::ADD" , SDTBinOp , [SDNPCommutative]>; +def and : SDNode<"ISD::AND" , SDTIntBinOp, + [SDNPCommutative, SDNPAssociative]>; +def or : SDNode<"ISD::OR" , SDTIntBinOp, + [SDNPCommutative, SDNPAssociative]>; +def xor : SDNode<"ISD::XOR" , SDTIntBinOp, + [SDNPCommutative, SDNPAssociative]>; +def add : SDNode<"ISD::ADD" , SDTBinOp , + [SDNPCommutative, SDNPAssociative]>; def sub : SDNode<"ISD::SUB" , SDTBinOp>; -def mul : SDNode<"ISD::MUL" , SDTBinOp , [SDNPCommutative]>; +def mul : SDNode<"ISD::MUL" , SDTBinOp , + [SDNPCommutative, SDNPAssociative]>; def sdiv : SDNode<"ISD::SDIV" , SDTBinOp>; def udiv : SDNode<"ISD::UDIV" , SDTIntBinOp>; def mulhs : SDNode<"ISD::MULHS" , SDTIntBinOp, [SDNPCommutative]>;