xref: /aosp_15_r20/external/swiftshader/third_party/subzero/src/IceThreading.cpp (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
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