blob: d25e0bda26a95dc6da01923244a640cb20e3809d [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- SDNodeProperties.td - Common code for DAG isels ---*- tablegen -*-===//
2//
Andrew Walbran16937d02019-10-22 13:54:20 +01003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01006//
7//===----------------------------------------------------------------------===//
8
9class SDNodeProperty;
10
11// Selection DAG Pattern Operations
12class SDPatternOperator {
13 list<SDNodeProperty> Properties = [];
14}
15
16//===----------------------------------------------------------------------===//
17// Selection DAG Node Properties.
18//
19// Note: These are hard coded into tblgen.
20//
21def SDNPCommutative : SDNodeProperty; // X op Y == Y op X
22def SDNPAssociative : SDNodeProperty; // (X op Y) op Z == X op (Y op Z)
23def SDNPHasChain : SDNodeProperty; // R/W chain operand and result
24def SDNPOutGlue : SDNodeProperty; // Write a flag result
25def SDNPInGlue : SDNodeProperty; // Read a flag operand
26def SDNPOptInGlue : SDNodeProperty; // Optionally read a flag operand
27def SDNPMayStore : SDNodeProperty; // May write to memory, sets 'mayStore'.
28def SDNPMayLoad : SDNodeProperty; // May read memory, sets 'mayLoad'.
29def SDNPSideEffect : SDNodeProperty; // Sets 'HasUnmodelledSideEffects'.
30def SDNPMemOperand : SDNodeProperty; // Touches memory, has assoc MemOperand
31def SDNPVariadic : SDNodeProperty; // Node has variable arguments.
32def SDNPWantRoot : SDNodeProperty; // ComplexPattern gets the root of match
33def SDNPWantParent : SDNodeProperty; // ComplexPattern gets the parent