SDNodeProperties.td 1.6 KB

123456789101112131415161718192021222324252627282930313233
  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. class SDNodeProperty;
  9. // Selection DAG Pattern Operations
  10. class SDPatternOperator {
  11. list<SDNodeProperty> Properties = [];
  12. }
  13. //===----------------------------------------------------------------------===//
  14. // Selection DAG Node Properties.
  15. //
  16. // Note: These are hard coded into tblgen.
  17. //
  18. def SDNPCommutative : SDNodeProperty; // X op Y == Y op X
  19. def SDNPAssociative : SDNodeProperty; // (X op Y) op Z == X op (Y op Z)
  20. def SDNPHasChain : SDNodeProperty; // R/W chain operand and result
  21. def SDNPOutGlue : SDNodeProperty; // Write a flag result
  22. def SDNPInGlue : SDNodeProperty; // Read a flag operand
  23. def SDNPOptInGlue : SDNodeProperty; // Optionally read a flag operand
  24. def SDNPMayStore : SDNodeProperty; // May write to memory, sets 'mayStore'.
  25. def SDNPMayLoad : SDNodeProperty; // May read memory, sets 'mayLoad'.
  26. def SDNPSideEffect : SDNodeProperty; // Sets 'HasUnmodelledSideEffects'.
  27. def SDNPMemOperand : SDNodeProperty; // Touches memory, has assoc MemOperand
  28. def SDNPVariadic : SDNodeProperty; // Node has variable arguments.
  29. def SDNPWantRoot : SDNodeProperty; // ComplexPattern gets the root of match
  30. def SDNPWantParent : SDNodeProperty; // ComplexPattern gets the parent