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 863cde3b35ccc064e4c150460e36c65f9acd7fd1..3ef592e0aac9f035f605a443bc15292653774225 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 @@ -47,8 +47,8 @@ typedef struct __attribute__((__packed__)) { float *C; size_t bytesC; int ldc; int k; - int alpha; - int beta; + float alpha; + float beta; int block_x; int block_y; int grid_x; @@ -63,8 +63,8 @@ void packData(RootIn* args, float *C, size_t bytesC, int ldc, int k, - int alpha, - int beta, + float alpha, + float beta, int block_x, int block_y, int grid_x, @@ -87,18 +87,13 @@ void packData(RootIn* args, args->grid_y = grid_y; } -typedef struct __attribute__((packed)) { - void* shB; size_t bytes_shB; -} AllocationOut; - // TODO: decide between dynamic vs static allocation. Merely a convension - will // be translated. -AllocationOut Allocation(block_x, block_y) { +void Allocation(int block_x, int block_y) { // Memory shared between threadblocks - float shB[block_y][block_x]; - void* ret_shB = (void*) shB; + void* shB = __visc__malloc(block_x*block_y*sizeof(float)); - return {ret_shB, block_x*block_y*sizeof(float)}; + __visc__return(shB, block_x*block_y*sizeof(float)); } @@ -129,15 +124,16 @@ void SgemmLeaf( float* A, size_t bytesA, int lda, float* B, size_t bytesB, int l for (int i = 0; i < k; i+=TILE_TB_HEIGHT) { float a; - shB[ly][lx] = B[n+(i+ly)*ldb]; + //shB[ly][lx] = B[n+(i+ly)*ldb]; + shB[ly*dimx+lx] = B[n+(i+ly)*ldb]; __visc__barrier(); - b_base = get_group_id(1) * TILE_N + i * ldb; - for (int j = 0; j < TILE_TB_HEIGHT; j++) { a = A[m + (i+j)*lda]; - for (int kk = 0; kk < TILE_N; kk++) - c[kk] += a * shB[j][kk]; + for (int kk = 0; kk < TILE_N; kk++) { + //c[kk] += a * shB[j][kk]; + c[kk] += a * shB[j*dimx+kk]; + } } __visc__barrier(); @@ -157,8 +153,8 @@ void SgemmTB(float *A, size_t bytesA, float *C, size_t bytesC, int ldc, int k, - int alpha, - int beta, + float alpha, + float beta, int block_x, int block_y) { __visc__hint(visc::CPU_TARGET); @@ -199,8 +195,8 @@ void SgemmRoot(float *A, size_t bytesA, float *C, size_t bytesC, int ldc, int k, - int alpha, - int beta, + float alpha, + float beta, int block_x, int block_y, int grid_x,