From 95352215cd36bf70299bb66201722aef41764bff Mon Sep 17 00:00:00 2001
From: Prakalp Srivastava <psrivas2@illinois.edu>
Date: Sat, 5 Mar 2016 20:39:44 -0600
Subject: [PATCH] (1) visc-rt Added debugging code to differentiate between
 get_Output failure and request_mem failure (2) modified visc_sh version of
 sgemm

---
 llvm/projects/visc-rt/visc-rt.cpp                           | 4 ++--
 llvm/test/VISC/parboil/benchmarks/sgemm/src/visc_sh/main.cc | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/llvm/projects/visc-rt/visc-rt.cpp b/llvm/projects/visc-rt/visc-rt.cpp
index a7c87a04dd..b087ceff6a 100644
--- a/llvm/projects/visc-rt/visc-rt.cpp
+++ b/llvm/projects/visc-rt/visc-rt.cpp
@@ -199,7 +199,7 @@ void* llvm_visc_request_mem(void* ptr, size_t size) {
                                       0, NULL, NULL);
   visc_SwitchToTimer(&kernel_timer, visc_TimerID_NONE);
   DEBUG(cout << " done\n");
-  checkErr(errcode, CL_SUCCESS, "Failure to read output");
+  checkErr(errcode, CL_SUCCESS, "[request mem] Failure to read output");
   DEBUG(cout << "Free mem object on device\n");
   clReleaseMemObject((cl_mem) MTE->getAddress());
   DEBUG(cout << "Updated Table\n");
@@ -1307,7 +1307,7 @@ void* llvm_visc_ocl_getOutput(void* graphID, void* h_output, void* d_output, siz
   DFNodeContext_OCL* Context = (DFNodeContext_OCL*) graphID;
   cl_int errcode = clEnqueueReadBuffer(Context->clCommandQue, (cl_mem)d_output, CL_TRUE, 0, size,
                                 h_output, 0, NULL, NULL);
-  checkErr(errcode, CL_SUCCESS, "Failure to read output");
+  checkErr(errcode, CL_SUCCESS, "[getOutput] Failure to read output");
   return h_output;
 }
 
diff --git a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc_sh/main.cc b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc_sh/main.cc
index 3ef592e0aa..c40ce36c4b 100644
--- a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc_sh/main.cc
+++ b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc_sh/main.cc
@@ -91,9 +91,11 @@ void packData(RootIn* args,
 // be translated.
 void Allocation(int block_x, int block_y) {
   // Memory shared between threadblocks
-  void* shB = __visc__malloc(block_x*block_y*sizeof(float));
+  int bl_x = TILE_N;
+  int bl_y = TILE_TB_HEIGHT;
+  void* shB = __visc__malloc(bl_x*bl_y*sizeof(float));
   
-  __visc__return(shB, block_x*block_y*sizeof(float)); 
+  __visc__return(shB, bl_x*bl_y*sizeof(float)); 
 }
 
 
-- 
GitLab