mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Mark associative nodes as associative
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23503 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7cf2fe6c48
commit
a5cac6f6eb
@ -87,7 +87,8 @@ def SDTExtInreg : SDTypeProfile<1, 2, [ // sext_inreg
|
|||||||
// Note: These are hard coded into tblgen.
|
// Note: These are hard coded into tblgen.
|
||||||
//
|
//
|
||||||
class SDNodeProperty;
|
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.
|
// Selection DAG Node definitions.
|
||||||
@ -105,12 +106,17 @@ def node;
|
|||||||
|
|
||||||
def imm : SDNode<"ISD::Constant" , SDTImm , [], "ConstantSDNode">;
|
def imm : SDNode<"ISD::Constant" , SDTImm , [], "ConstantSDNode">;
|
||||||
def vt : SDNode<"ISD::VALUETYPE" , SDTVT , [], "VTSDNode">;
|
def vt : SDNode<"ISD::VALUETYPE" , SDTVT , [], "VTSDNode">;
|
||||||
def and : SDNode<"ISD::AND" , SDTIntBinOp, [SDNPCommutative]>;
|
def and : SDNode<"ISD::AND" , SDTIntBinOp,
|
||||||
def or : SDNode<"ISD::OR" , SDTIntBinOp, [SDNPCommutative]>;
|
[SDNPCommutative, SDNPAssociative]>;
|
||||||
def xor : SDNode<"ISD::XOR" , SDTIntBinOp, [SDNPCommutative]>;
|
def or : SDNode<"ISD::OR" , SDTIntBinOp,
|
||||||
def add : SDNode<"ISD::ADD" , SDTBinOp , [SDNPCommutative]>;
|
[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 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 sdiv : SDNode<"ISD::SDIV" , SDTBinOp>;
|
||||||
def udiv : SDNode<"ISD::UDIV" , SDTIntBinOp>;
|
def udiv : SDNode<"ISD::UDIV" , SDTIntBinOp>;
|
||||||
def mulhs : SDNode<"ISD::MULHS" , SDTIntBinOp, [SDNPCommutative]>;
|
def mulhs : SDNode<"ISD::MULHS" , SDTIntBinOp, [SDNPCommutative]>;
|
||||||
|
Loading…
Reference in New Issue
Block a user