1 //===- CallInterfaces.h - Call Interfaces for MLIR --------------*- C++ -*-===// 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 // 9 // This file contains the definitions of the call interfaces defined in 10 // `CallInterfaces.td`. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef MLIR_INTERFACES_CALLINTERFACES_H 15 #define MLIR_INTERFACES_CALLINTERFACES_H 16 17 #include "mlir/IR/SymbolTable.h" 18 #include "llvm/ADT/PointerUnion.h" 19 20 namespace mlir { 21 /// A callable is either a symbol, or an SSA value, that is referenced by a 22 /// call-like operation. This represents the destination of the call. 23 struct CallInterfaceCallable : public PointerUnion<SymbolRefAttr, Value> { 24 using PointerUnion<SymbolRefAttr, Value>::PointerUnion; 25 }; 26 } // end namespace mlir 27 28 /// Include the generated interface declarations. 29 #include "mlir/Interfaces/CallInterfaces.h.inc" 30 31 #endif // MLIR_INTERFACES_CALLINTERFACES_H 32