LGTM, will push latter. thanks.
On Thu, Nov 07, 2013 at 03:32:56PM +0800, Homer Hsing wrote: > call llvm multithread function instead of using a semaphore. > also exit llvm multithread mode at the end of life. > > v2: not call llvm::shutdown() if llvm is older than 3.4 > Signed-off-by: Homer Hsing <homer.x...@intel.com> > --- > backend/src/backend/gen_program.cpp | 7 ------- > backend/src/backend/gen_program.h | 2 -- > backend/src/backend/program.cpp | 13 ++++++++++--- > 3 files changed, 10 insertions(+), 12 deletions(-) > > diff --git a/backend/src/backend/gen_program.cpp > b/backend/src/backend/gen_program.cpp > index 781152d..40ab176 100644 > --- a/backend/src/backend/gen_program.cpp > +++ b/backend/src/backend/gen_program.cpp > @@ -159,10 +159,3 @@ void genSetupCallBacks(void) > gbe_program_new_from_binary = gbe::genProgramNewFromBinary; > gbe_program_new_from_llvm = gbe::genProgramNewFromLLVM; > } > - > -sem_t llvm_semaphore; > - > -void genSetupLLVMSemaphore(void) > -{ > - sem_init(&llvm_semaphore, 0, 1); > -} > diff --git a/backend/src/backend/gen_program.h > b/backend/src/backend/gen_program.h > index a498a5d..8d37a70 100644 > --- a/backend/src/backend/gen_program.h > +++ b/backend/src/backend/gen_program.h > @@ -33,8 +33,6 @@ > > /*! This will make the compiler output Gen ISA code */ > extern void genSetupCallBacks(void); > -extern sem_t llvm_semaphore; > -extern void genSetupLLVMSemaphore(void); > > #endif /* __GBE_GEN_PROGRAM_H__ */ > > diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp > index 937f95b..25be484 100644 > --- a/backend/src/backend/program.cpp > +++ b/backend/src/backend/program.cpp > @@ -32,6 +32,8 @@ > #include "ir/unit.hpp" > #include "llvm/llvm_to_gen.hpp" > #include "llvm/Config/config.h" > +#include "llvm/Support/Threading.h" > +#include "llvm/Support/ManagedStatic.h" > #include <cstring> > #include <algorithm> > #include <fstream> > @@ -557,9 +559,7 @@ namespace gbe { > > // Create an action and make the compiler instance carry it out > llvm::OwningPtr<clang::CodeGenAction> Act(new > clang::EmitLLVMOnlyAction()); > - sem_wait(&llvm_semaphore); > auto retVal = Clang.ExecuteAction(*Act); > - sem_post(&llvm_semaphore); > if (!retVal) > return; > > @@ -854,7 +854,14 @@ namespace gbe > gbe_get_image_base_index = gbe::getImageBaseIndex; > gbe_set_image_base_index = gbe::setImageBaseIndex; > genSetupCallBacks(); > - genSetupLLVMSemaphore(); > + llvm::llvm_start_multithreaded(); > + } > + > + ~CallBackInitializer() { > + llvm::llvm_stop_multithreaded(); > +#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR > 3) > + llvm::llvm_shutdown(); > +#endif > } > }; > > -- > 1.8.3.2 > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet