blob: 83bbab2fdc8de84129d24c49e2c0cd3429d4ceac [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- SDNodeProperties.td - Common code for DAG isels ---*- tablegen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10class SDNodeProperty;
11
12// Selection DAG Pattern Operations
13class SDPatternOperator {
14 list<SDNodeProperty> Properties = [];
15}
16
17//===----------------------------------------------------------------------===//
18// Selection DAG Node Properties.
19//
20// Note: These are hard coded into tblgen.
21//
22def SDNPCommutative : SDNodeProperty; // X op Y == Y op X
23def SDNPAssociative : SDNodeProperty; // (X op Y) op Z == X op (Y op Z)
24def SDNPHasChain : SDNodeProperty; // R/W chain operand and result
25def SDNPOutGlue : SDNodeProperty; // Write a flag result
26def SDNPInGlue : SDNodeProperty; // Read a flag operand
27def SDNPOptInGlue : SDNodeProperty; // Optionally read a flag operand
28def SDNPMayStore : SDNodeProperty; // May write to memory, sets 'mayStore'.
29def SDNPMayLoad : SDNodeProperty; // May read memory, sets 'mayLoad'.
30def SDNPSideEffect : SDNodeProperty; // Sets 'HasUnmodelledSideEffects'.
31def SDNPMemOperand : SDNodeProperty; // Touches memory, has assoc MemOperand
32def SDNPVariadic : SDNodeProperty; // Node has variable arguments.
33def SDNPWantRoot : SDNodeProperty; // ComplexPattern gets the root of match
34def SDNPWantParent : SDNodeProperty; // ComplexPattern gets the parent