diff --git a/src/IceThreading.cpp b/src/IceThreading.cpp
new file mode 100644
index 0000000..5576abb
--- /dev/null
+++ b/src/IceThreading.cpp
@@ -0,0 +1,48 @@
+//===- subzero/src/IceThreading.cpp - Threading function definitions ------===//
+//
+//                        The Subzero Code Generator
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines threading-related functions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "IceCfg.h"
+#include "IceDefs.h"
+#include "IceThreading.h"
+
+namespace Ice {
+
+EmitterWorkItem::EmitterWorkItem(uint32_t Seq)
+    : Sequence(Seq), Kind(WI_Nop), GlobalInits(nullptr), Function(nullptr),
+      RawFunc(nullptr) {}
+EmitterWorkItem::EmitterWorkItem(uint32_t Seq, VariableDeclarationList *D)
+    : Sequence(Seq), Kind(WI_GlobalInits), GlobalInits(D), Function(nullptr),
+      RawFunc(nullptr) {}
+EmitterWorkItem::EmitterWorkItem(uint32_t Seq, Assembler *A)
+    : Sequence(Seq), Kind(WI_Asm), GlobalInits(nullptr), Function(A),
+      RawFunc(nullptr) {}
+EmitterWorkItem::EmitterWorkItem(uint32_t Seq, Cfg *F)
+    : Sequence(Seq), Kind(WI_Cfg), GlobalInits(nullptr), Function(nullptr),
+      RawFunc(F) {}
+
+std::unique_ptr<VariableDeclarationList> EmitterWorkItem::getGlobalInits() {
+  assert(getKind() == WI_GlobalInits);
+  return std::move(GlobalInits);
+}
+
+std::unique_ptr<Assembler> EmitterWorkItem::getAsm() {
+  assert(getKind() == WI_Asm);
+  return std::move(Function);
+}
+
+std::unique_ptr<Cfg> EmitterWorkItem::getCfg() {
+  assert(getKind() == WI_Cfg);
+  return std::move(RawFunc);
+}
+
+} // end of namespace Ice
