]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/CodeGen/SDNodeProperties.td
Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / CodeGen / SDNodeProperties.td
1 //===- 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
10 class SDNodeProperty;
11
12 // Selection DAG Pattern Operations
13 class SDPatternOperator {
14   list<SDNodeProperty> Properties = [];
15 }
16
17 //===----------------------------------------------------------------------===//
18 // Selection DAG Node Properties.
19 //
20 // Note: These are hard coded into tblgen.
21 //
22 def SDNPCommutative : SDNodeProperty;   // X op Y == Y op X
23 def SDNPAssociative : SDNodeProperty;   // (X op Y) op Z == X op (Y op Z)
24 def SDNPHasChain    : SDNodeProperty;   // R/W chain operand and result
25 def SDNPOutGlue     : SDNodeProperty;   // Write a flag result
26 def SDNPInGlue      : SDNodeProperty;   // Read a flag operand
27 def SDNPOptInGlue   : SDNodeProperty;   // Optionally read a flag operand
28 def SDNPMayStore    : SDNodeProperty;   // May write to memory, sets 'mayStore'.
29 def SDNPMayLoad     : SDNodeProperty;   // May read memory, sets 'mayLoad'.
30 def SDNPSideEffect  : SDNodeProperty;   // Sets 'HasUnmodelledSideEffects'.
31 def SDNPMemOperand  : SDNodeProperty;   // Touches memory, has assoc MemOperand
32 def SDNPVariadic    : SDNodeProperty;   // Node has variable arguments.
33 def SDNPWantRoot    : SDNodeProperty;   // ComplexPattern gets the root of match
34 def SDNPWantParent  : SDNodeProperty;   // ComplexPattern gets the parent