1//===- SDNodeProperties.td - Common code for DAG isels ---*- tablegen -*-===// 2// 3// 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 6// 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 34