diff options
Diffstat (limited to 'willow/lib/IR/Value.cpp')
| -rw-r--r-- | willow/lib/IR/Value.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/willow/lib/IR/Value.cpp b/willow/lib/IR/Value.cpp new file mode 100644 index 0000000..13e029f --- /dev/null +++ b/willow/lib/IR/Value.cpp @@ -0,0 +1,27 @@ +#include <willow/IR/Value.h> +#include <willow/IR/Constant.h> +#include <ostream> + +std::ostream &operator<<(std::ostream &os, const willow::Value &v) { + using willow::ValueKind; + auto ty = v.getType(); + if (!v.isVoid()) + os << ty << " "; + + switch (v.getValueKind()) { + case ValueKind::Parameter: + [[fallthrough]]; + case ValueKind::Instruction: { + return os << "%" << v.getName(); + } + case ValueKind::BasicBlock: { + return os << "^" << v.getName(); + } + case ValueKind::Function: { + return os << "@" << v.getName(); + } + case ValueKind::Constant: { + return os << *static_cast<const willow::Constant*>(&v); + } + } +} |