summaryrefslogtreecommitdiff
path: root/willow/lib/IR/Value.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'willow/lib/IR/Value.cpp')
-rw-r--r--willow/lib/IR/Value.cpp27
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);
+ }
+ }
+}