From c68716d8464972910d454190c50a12c25d69d442 Mon Sep 17 00:00:00 2001 From: Prakalp Srivastava <prakalps@gmail.com> Date: Fri, 5 Jun 2015 15:15:45 -0500 Subject: [PATCH] Fixed sgemm compilation issue. Avoid invoke inst by using flag -fno-exceptions --- llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp | 2 ++ llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc | 4 ++-- llvm/test/VISC/parboil/common/include/visc.h | 4 ++-- llvm/test/VISC/parboil/common/mk/visc.mk | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp b/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp index de4da74835..0db9f23134 100644 --- a/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp +++ b/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp @@ -347,6 +347,7 @@ void CodeGenTraversal::initRuntimeAPI() { Function* VI = M.getFunction("llvm.visc.init"); assert(VI->getNumUses() == 1 && "__visc__init should only be used once"); + DEBUG(errs() << "Gen Code to initialize NVPTX Timer\n"); InitCall = cast<Instruction>(*VI->use_begin()); initializeTimerSet(InitCall); switchToTimer(visc_TimerID_INIT_CTX, InitCall); @@ -358,6 +359,7 @@ void CodeGenTraversal::initRuntimeAPI() { errs() << *VC << "\n"; assert(VC->getNumUses() == 1 && "__visc__clear should only be used once"); + DEBUG(errs() << "Gen Code to print NVPTX Timer\n"); CleanupCall = cast<Instruction>(*VC->use_begin()); printTimerSet(CleanupCall); diff --git a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc index b70f9e5655..81d791568b 100644 --- a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc +++ b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc @@ -73,12 +73,11 @@ __attribute__((noinline)) void basicSgemm( char transa, char transb, int m, int unsigned db[2] = {TILE_SZ,TILE_SZ}; unsigned dg[2] = {m/TILE_SZ*db[0],n/TILE_SZ*db[1]}; - void* sgemmDFG = __visc__node((void*) mysgemmNT, 2, 2, db[0], db[1], dg[0]/db[0], dg[1]/db[1], 12, A, bytesA, lda, B, bytesB, ldb, C, bytesC, ldc, k, alpha, beta, 0); + unsigned sgemmDFG = __visc__node(mysgemmNT, 2, 2, db[0], db[1], dg[0]/db[0], dg[1]/db[1], 12, A, bytesA, lda, B, bytesB, ldb, C, bytesC, ldc, k, alpha, beta, 0); __visc__wait(sgemmDFG); } int main (int argc, char *argv[]) { - __visc__init(); struct pb_Parameters *params; struct pb_TimerSet timers; @@ -89,6 +88,7 @@ int main (int argc, char *argv[]) { std::vector<float> matA, matBT; pb_InitializeTimerSet(&timers); + __visc__init(); /* Read command line. Expect 3 inputs: A, B and B^T in column-major layout*/ diff --git a/llvm/test/VISC/parboil/common/include/visc.h b/llvm/test/VISC/parboil/common/include/visc.h index 5daab54d3a..e311c73021 100644 --- a/llvm/test/VISC/parboil/common/include/visc.h +++ b/llvm/test/VISC/parboil/common/include/visc.h @@ -9,8 +9,8 @@ #ifdef __cplusplus extern "C" { void __visc__attributes(unsigned, ...); -void __visc__wait(void*); -void* __visc__node(void*, unsigned, unsigned, ...); +void __visc__wait(unsigned); +unsigned __visc__node(...); void __visc__init(); void __visc__cleanup(); #endif diff --git a/llvm/test/VISC/parboil/common/mk/visc.mk b/llvm/test/VISC/parboil/common/mk/visc.mk index bd6846a1b4..58f032a734 100644 --- a/llvm/test/VISC/parboil/common/mk/visc.mk +++ b/llvm/test/VISC/parboil/common/mk/visc.mk @@ -2,7 +2,7 @@ # Default language wide options LANG_CFLAGS=-I$(PARBOIL_ROOT)/common/include -LANG_CXXFLAGS=$(LANG_CFLAGS) +LANG_CXXFLAGS=$(LANG_CFLAGS) -fno-exceptions LANG_LDFLAGS=-lOpenCL -L$(OPENCL_LIB_PATH) -lrt CFLAGS=$(LANG_CFLAGS) $(PLATFORM_CFLAGS) $(APP_CFLAGS) -- GitLab