blob: 9720f77910ea23c8e044b7a31dc15af4b59cab51 [file] [log] [blame]
Jim Stichnothbbca7542015-02-11 16:08:31 -08001//===- subzero/src/IceThreading.cpp - Threading function definitions ------===//
2//
3// The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines threading-related functions.
11//
12//===----------------------------------------------------------------------===//
13
John Porto67f8de92015-06-25 10:14:17 -070014#include "IceThreading.h"
15
Jim Stichnothbbca7542015-02-11 16:08:31 -080016#include "IceCfg.h"
17#include "IceDefs.h"
Jim Stichnothbbca7542015-02-11 16:08:31 -080018
19namespace Ice {
20
21EmitterWorkItem::EmitterWorkItem(uint32_t Seq)
22 : Sequence(Seq), Kind(WI_Nop), GlobalInits(nullptr), Function(nullptr),
23 RawFunc(nullptr) {}
24EmitterWorkItem::EmitterWorkItem(uint32_t Seq, VariableDeclarationList *D)
25 : Sequence(Seq), Kind(WI_GlobalInits), GlobalInits(D), Function(nullptr),
26 RawFunc(nullptr) {}
27EmitterWorkItem::EmitterWorkItem(uint32_t Seq, Assembler *A)
28 : Sequence(Seq), Kind(WI_Asm), GlobalInits(nullptr), Function(A),
29 RawFunc(nullptr) {}
30EmitterWorkItem::EmitterWorkItem(uint32_t Seq, Cfg *F)
31 : Sequence(Seq), Kind(WI_Cfg), GlobalInits(nullptr), Function(nullptr),
32 RawFunc(F) {}
33
John Portof8b4cc82015-06-09 18:06:19 -070034void EmitterWorkItem::setGlobalInits(
35 std::unique_ptr<VariableDeclarationList> GloblInits) {
36 assert(getKind() == WI_Asm || getKind() == WI_Cfg);
37 GlobalInits = std::move(GloblInits);
38}
39
Jim Stichnothbbca7542015-02-11 16:08:31 -080040std::unique_ptr<VariableDeclarationList> EmitterWorkItem::getGlobalInits() {
John Portof8b4cc82015-06-09 18:06:19 -070041 assert(getKind() == WI_GlobalInits || getKind() == WI_Asm ||
42 getKind() == WI_Cfg);
Jim Stichnothbbca7542015-02-11 16:08:31 -080043 return std::move(GlobalInits);
44}
45
46std::unique_ptr<Assembler> EmitterWorkItem::getAsm() {
47 assert(getKind() == WI_Asm);
48 return std::move(Function);
49}
50
51std::unique_ptr<Cfg> EmitterWorkItem::getCfg() {
52 assert(getKind() == WI_Cfg);
53 return std::move(RawFunc);
54}
55
56} // end of namespace Ice