#include "stdlib.h"

#include "util.h"

#include "dataset.h"
void __attribute__((noinline)) matmul(const int coreid, const int ncores, const int lda,  const data_t A[], const data_t B[], data_t C[] )
{
   
   // ***************************** //
   // **** ADD YOUR CODE HERE ***** //
   // ***************************** //
   //
   // feel free to make a separate function for MI and MSI versions.
   int j, k, i;
   data_t temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7;
   data_t temp8, temp9, temp10, temp11, temp12, temp13, temp14, temp15;
   if(coreid == 0)   {
      for(j = 0; j < 32; j++) {
         temp0  = 0; //C[j*lda];
         temp1  = 0; //C[1  + j*lda];
         temp2  = 0; //C[2  + j*lda];
         temp3  = 0; //C[3  + j*lda];
         temp4  = 0; //C[4  + j*lda];
         temp5  = 0; //C[5  + j*lda];
         temp6  = 0; //C[6  + j*lda];
         temp7  = 0; //C[7  + j*lda];
         temp8  = 0; //C[8  + j*lda];
         temp9  = 0; //C[9  + j*lda];
         temp10 = 0; //C[10 + j*lda];
         temp11 = 0; //C[11 + j*lda];
         temp12 = 0; //C[12 + j*lda];
         temp13 = 0; //C[13 + j*lda];
         temp14 = 0; //C[14 + j*lda];
         temp15 = 0; //C[15 + j*lda];
         for(k = 0; k < 32; k++) {
            temp0  += A[j*lda + k] * B[k*lda];
            temp1  += A[j*lda + k] * B[1+k*lda];
            temp2  += A[j*lda + k] * B[2+k*lda];
            temp3  += A[j*lda + k] * B[3+k*lda];
            temp4  += A[j*lda + k] * B[4+k*lda];
            temp5  += A[j*lda + k] * B[5+k*lda];
            temp6  += A[j*lda + k] * B[6+k*lda];
            temp7  += A[j*lda + k] * B[7+k*lda];
            temp8  += A[j*lda + k] * B[8+k*lda];
            temp9  += A[j*lda + k] * B[9+k*lda];
            temp10 += A[j*lda + k] * B[10+k*lda];
            temp11 += A[j*lda + k] * B[11+k*lda];
            temp12 += A[j*lda + k] * B[12+k*lda];
            temp13 += A[j*lda + k] * B[13+k*lda];
            temp14 += A[j*lda + k] * B[14+k*lda];
            temp15 += A[j*lda + k] * B[15+k*lda];
         }
         C[j*lda] = temp0;
         C[1  + j*lda] = temp1;
         C[2  + j*lda] = temp2;
         C[3  + j*lda] = temp3;
         C[4  + j*lda] = temp4;
         C[5  + j*lda] = temp5;
         C[6  + j*lda] = temp6;
         C[7  + j*lda] = temp7;
         C[8  + j*lda] = temp8;
         C[9  + j*lda] = temp9;
         C[10 + j*lda] = temp10;
         C[11 + j*lda] = temp11;
         C[12 + j*lda] = temp12;
         C[13 + j*lda] = temp13;
         C[14 + j*lda] = temp14;
         C[15 + j*lda] = temp15;
      }
   }

   if(coreid == 1 || ncores == 1)  {
      for(j = 0; j < 32; j++) {
         temp0  = 0; //C[16+j*lda];
         temp1  = 0; //C[17+j*lda];
         temp2  = 0; //C[18+j*lda];
         temp3  = 0; //C[19+j*lda];
         temp4  = 0; //C[20+j*lda];
         temp5  = 0; //C[21+j*lda];
         temp6  = 0; //C[22+j*lda];
         temp7  = 0; //C[23+j*lda];
         temp8  = 0; //C[24+j*lda];
         temp9  = 0; //C[25+j*lda];
         temp10 = 0; //C[26+j*lda];
         temp11 = 0; //C[27+j*lda];
         temp12 = 0; //C[28+j*lda];
         temp13 = 0; //C[29+j*lda];
         temp14 = 0; //C[30+j*lda];
         temp15 = 0; //C[31+j*lda];
         for(k = 0; k < 32; k++) {
            temp0  += A[j*lda + k] * B[16+k*lda];
            temp1  += A[j*lda + k] * B[17+k*lda];
            temp2  += A[j*lda + k] * B[18+k*lda];
            temp3  += A[j*lda + k] * B[19+k*lda];
            temp4  += A[j*lda + k] * B[20+k*lda];
            temp5  += A[j*lda + k] * B[21+k*lda];
            temp6  += A[j*lda + k] * B[22+k*lda];
            temp7  += A[j*lda + k] * B[23+k*lda];
            temp8  += A[j*lda + k] * B[24+k*lda];
            temp9  += A[j*lda + k] * B[25+k*lda];
            temp10 += A[j*lda + k] * B[26+k*lda];
            temp11 += A[j*lda + k] * B[27+k*lda];
            temp12 += A[j*lda + k] * B[28+k*lda];
            temp13 += A[j*lda + k] * B[29+k*lda];
            temp14 += A[j*lda + k] * B[30+k*lda];
            temp15 += A[j*lda + k] * B[31+k*lda];
         }
         C[16 + j*lda] = temp0;
         C[17 + j*lda] = temp1;
         C[18 + j*lda] = temp2;
         C[19 + j*lda] = temp3;
         C[20 + j*lda] = temp4;
         C[21 + j*lda] = temp5;
         C[22 + j*lda] = temp6;
         C[23 + j*lda] = temp7;
         C[24 + j*lda] = temp8;
         C[25 + j*lda] = temp9;
         C[26 + j*lda] = temp10;
         C[27 + j*lda] = temp11;
         C[28 + j*lda] = temp12;
         C[29 + j*lda] = temp13;
         C[30 + j*lda] = temp14;
         C[31 + j*lda] = temp15;
      }
   }
 
}
