diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 0e2d289..75d52a6 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -118,12 +118,7 @@
   int mi_col_end;
 } SB_MI_BD;
 
-typedef struct {
-  int KERNEL_TL[MAX_SB_SIZE][MAX_SB_SIZE];
-  int KERNEL_TR[MAX_SB_SIZE][MAX_SB_SIZE];
-  int KERNEL_BL[MAX_SB_SIZE][MAX_SB_SIZE];
-  int KERNEL_BR[MAX_SB_SIZE][MAX_SB_SIZE];
-} NCOBMC_KERNELS;
+typedef struct { int16_t KERNEL[4][MAX_SB_SIZE][MAX_SB_SIZE]; } NCOBMC_KERNELS;
 #endif
 
 typedef struct {
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index 5174d82..5a079aa 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -3577,19 +3577,18 @@
         int i;
         for (i = 0; i < 4; ++i) tmp_p[i] = preds[i][plane];
 
-        tmp = (int64_t)knls->KERNEL_TL[k_r][k_c] * tmp_p[0][pos] +
-              (int64_t)knls->KERNEL_TR[k_r][k_c] * tmp_p[1][pos] +
-              (int64_t)knls->KERNEL_BL[k_r][k_c] * tmp_p[2][pos] +
-              (int64_t)knls->KERNEL_BR[k_r][k_c] * tmp_p[3][pos];
+        tmp = 0;
+        for (i = 0; i < 4; ++i)
+          tmp += knls->KERNEL[i][k_r][k_c] * tmp_p[i][pos];
+
       } else {
         uint16_t *tmp_p[4];
         int i;
         for (i = 0; i < 4; ++i) tmp_p[i] = CONVERT_TO_SHORTPTR(preds[i][plane]);
 
-        tmp = (int64_t)knls->KERNEL_TL[k_r][k_c] * tmp_p[0][pos] +
-              (int64_t)knls->KERNEL_TR[k_r][k_c] * tmp_p[1][pos] +
-              (int64_t)knls->KERNEL_BL[k_r][k_c] * tmp_p[2][pos] +
-              (int64_t)knls->KERNEL_BR[k_r][k_c] * tmp_p[3][pos];
+        tmp = 0;
+        for (i = 0; i < 4; ++i)
+          tmp += knls->KERNEL[i][k_r][k_c] * tmp_p[i][pos];
       }
 
       q_tmp = (tmp <= 0) ? 0 : ROUND_POWER_OF_TWO(tmp, KERNEL_SCALE_LOG);
