LLVM 22.0.0git
TensorSpec.h File Reference
#include "llvm/Config/llvm-config.h"
#include "llvm/Support/Compiler.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/IR/LLVMContext.h"
#include <memory>
#include <optional>
#include <vector>

Go to the source code of this file.

Classes

class  llvm::TensorSpec

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
namespace  llvm::json

Macros

#define SUPPORTED_TENSOR_TYPES(M)
 TensorSpec encapsulates the specification of a tensor: its dimensions, or "shape" (row-major), its type (see TensorSpec::getDataType specializations for supported types), its name and port (see "TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems", section 4.2, para 2: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45166.pdf)
#define _TENSOR_TYPE_ENUM_MEMBERS(_, Name)
#define TFUTILS_GETDATATYPE_DEF(T, Name)

Enumerations

enum class  llvm::TensorType { llvm::Invalid , llvm::Total }

Functions

LLVM_ABI std::string llvm::tensorValueToString (const char *Buffer, const TensorSpec &Spec)
 For debugging.
LLVM_ABI std::optional< TensorSpecllvm::getTensorSpecFromJSON (LLVMContext &Ctx, const json::Value &Value)
 Construct a TensorSpec from a JSON dictionary of the form: { "name": <string>, "port": <int>, "type": <string.

Macro Definition Documentation

◆ _TENSOR_TYPE_ENUM_MEMBERS

#define _TENSOR_TYPE_ENUM_MEMBERS ( _,
Name )
Value:
Name,

Definition at line 57 of file TensorSpec.h.

◆ SUPPORTED_TENSOR_TYPES

#define SUPPORTED_TENSOR_TYPES ( M)
Value:
M(float, Float) \
M(double, Double) \
M(int8_t, Int8) \
M(uint8_t, UInt8) \
M(int16_t, Int16) \
M(uint16_t, UInt16) \
M(int32_t, Int32) \
M(uint32_t, UInt32) \
M(int64_t, Int64) \
M(uint64_t, UInt64)

TensorSpec encapsulates the specification of a tensor: its dimensions, or "shape" (row-major), its type (see TensorSpec::getDataType specializations for supported types), its name and port (see "TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems", section 4.2, para 2: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45166.pdf)

Note that the design is motivated by Tensorflow, but it is not intended to be Tensorflow-specific.

Known tensor types. The left part is the C type, the right is a name we can use to identify the type (to implement TensorSpec equality checks), and to use, if needed, when mapping to an underlying evaluator's type system. The main requirement is that the C type we use has the same size and encoding (e.g. endian-ness) as the one used by the evaluator.

Definition at line 43 of file TensorSpec.h.

Referenced by llvm::getTensorSpecFromJSON(), and llvm::tensorValueToString().

◆ TFUTILS_GETDATATYPE_DEF

#define TFUTILS_GETDATATYPE_DEF ( T,
Name )
Value:
template <> LLVM_ABI TensorType TensorSpec::getDataType<T>();
#define LLVM_ABI
Definition Compiler.h:213

Definition at line 129 of file TensorSpec.h.