summaryrefslogtreecommitdiff
path: root/willow/lib/IR/Value.cpp
diff options
context:
space:
mode:
authorStefan Weigl-Bosker <stefan@s00.xyz>2026-02-03 14:59:53 -0500
committerGitHub <noreply@github.com>2026-02-03 14:59:53 -0500
commitadd95b14f74e6dbe04a6efe98ff0f20424930b73 (patch)
tree13ce413ee4190a4c8f8743c7740aaa8d04353f14 /willow/lib/IR/Value.cpp
parentc5b2905c5a64433f8519531a77d3acc42d881f17 (diff)
downloadcompiler-add95b14f74e6dbe04a6efe98ff0f20424930b73.tar.gz
[willow]: initial frontend work, unit tests (#8)dev/stefan
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);
+ }
+ }
+}