1*03ce13f7SAndroid Build Coastguard Worker //===- subzero/src/IceThreading.cpp - Threading function definitions ------===//
2*03ce13f7SAndroid Build Coastguard Worker //
3*03ce13f7SAndroid Build Coastguard Worker // The Subzero Code Generator
4*03ce13f7SAndroid Build Coastguard Worker //
5*03ce13f7SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*03ce13f7SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*03ce13f7SAndroid Build Coastguard Worker //
8*03ce13f7SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*03ce13f7SAndroid Build Coastguard Worker ///
10*03ce13f7SAndroid Build Coastguard Worker /// \file
11*03ce13f7SAndroid Build Coastguard Worker /// \brief Defines threading-related functions.
12*03ce13f7SAndroid Build Coastguard Worker ///
13*03ce13f7SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
14*03ce13f7SAndroid Build Coastguard Worker
15*03ce13f7SAndroid Build Coastguard Worker #include "IceThreading.h"
16*03ce13f7SAndroid Build Coastguard Worker
17*03ce13f7SAndroid Build Coastguard Worker #include "IceCfg.h"
18*03ce13f7SAndroid Build Coastguard Worker #include "IceDefs.h"
19*03ce13f7SAndroid Build Coastguard Worker
20*03ce13f7SAndroid Build Coastguard Worker namespace Ice {
21*03ce13f7SAndroid Build Coastguard Worker
EmitterWorkItem(uint32_t Seq)22*03ce13f7SAndroid Build Coastguard Worker EmitterWorkItem::EmitterWorkItem(uint32_t Seq)
23*03ce13f7SAndroid Build Coastguard Worker : Sequence(Seq), Kind(WI_Nop), GlobalInits(nullptr), Function(nullptr),
24*03ce13f7SAndroid Build Coastguard Worker RawFunc(nullptr) {}
EmitterWorkItem(uint32_t Seq,std::unique_ptr<VariableDeclarationList> D)25*03ce13f7SAndroid Build Coastguard Worker EmitterWorkItem::EmitterWorkItem(uint32_t Seq,
26*03ce13f7SAndroid Build Coastguard Worker std::unique_ptr<VariableDeclarationList> D)
27*03ce13f7SAndroid Build Coastguard Worker : Sequence(Seq), Kind(WI_GlobalInits), GlobalInits(std::move(D)),
28*03ce13f7SAndroid Build Coastguard Worker Function(nullptr), RawFunc(nullptr) {}
EmitterWorkItem(uint32_t Seq,std::unique_ptr<Assembler> A)29*03ce13f7SAndroid Build Coastguard Worker EmitterWorkItem::EmitterWorkItem(uint32_t Seq, std::unique_ptr<Assembler> A)
30*03ce13f7SAndroid Build Coastguard Worker : Sequence(Seq), Kind(WI_Asm), GlobalInits(nullptr), Function(std::move(A)),
31*03ce13f7SAndroid Build Coastguard Worker RawFunc(nullptr) {}
EmitterWorkItem(uint32_t Seq,std::unique_ptr<Cfg> F)32*03ce13f7SAndroid Build Coastguard Worker EmitterWorkItem::EmitterWorkItem(uint32_t Seq, std::unique_ptr<Cfg> F)
33*03ce13f7SAndroid Build Coastguard Worker : Sequence(Seq), Kind(WI_Cfg), GlobalInits(nullptr), Function(nullptr),
34*03ce13f7SAndroid Build Coastguard Worker RawFunc(std::move(F)) {}
35*03ce13f7SAndroid Build Coastguard Worker
setGlobalInits(std::unique_ptr<VariableDeclarationList> GloblInits)36*03ce13f7SAndroid Build Coastguard Worker void EmitterWorkItem::setGlobalInits(
37*03ce13f7SAndroid Build Coastguard Worker std::unique_ptr<VariableDeclarationList> GloblInits) {
38*03ce13f7SAndroid Build Coastguard Worker assert(getKind() == WI_Asm || getKind() == WI_Cfg);
39*03ce13f7SAndroid Build Coastguard Worker GlobalInits = std::move(GloblInits);
40*03ce13f7SAndroid Build Coastguard Worker }
41*03ce13f7SAndroid Build Coastguard Worker
getGlobalInits()42*03ce13f7SAndroid Build Coastguard Worker std::unique_ptr<VariableDeclarationList> EmitterWorkItem::getGlobalInits() {
43*03ce13f7SAndroid Build Coastguard Worker assert(getKind() == WI_GlobalInits || getKind() == WI_Asm ||
44*03ce13f7SAndroid Build Coastguard Worker getKind() == WI_Cfg);
45*03ce13f7SAndroid Build Coastguard Worker return std::move(GlobalInits);
46*03ce13f7SAndroid Build Coastguard Worker }
47*03ce13f7SAndroid Build Coastguard Worker
getAsm()48*03ce13f7SAndroid Build Coastguard Worker std::unique_ptr<Assembler> EmitterWorkItem::getAsm() {
49*03ce13f7SAndroid Build Coastguard Worker assert(getKind() == WI_Asm);
50*03ce13f7SAndroid Build Coastguard Worker return std::move(Function);
51*03ce13f7SAndroid Build Coastguard Worker }
52*03ce13f7SAndroid Build Coastguard Worker
getCfg()53*03ce13f7SAndroid Build Coastguard Worker std::unique_ptr<Cfg> EmitterWorkItem::getCfg() {
54*03ce13f7SAndroid Build Coastguard Worker assert(getKind() == WI_Cfg);
55*03ce13f7SAndroid Build Coastguard Worker return std::move(RawFunc);
56*03ce13f7SAndroid Build Coastguard Worker }
57*03ce13f7SAndroid Build Coastguard Worker
58*03ce13f7SAndroid Build Coastguard Worker } // end of namespace Ice
59