diff --git a/src/kernel_hydro.h b/src/kernel_hydro.h
index e16e627da1fa22e6e459648117b6384015971af4..6cfb9a8193f1cb36299e09f7bad5dafff1ad4f5a 100644
--- a/src/kernel_hydro.h
+++ b/src/kernel_hydro.h
@@ -214,6 +214,39 @@ __attribute__((always_inline)) INLINE static void kernel_eval(float u,
 
 #ifdef VECTORIZE
 
+#ifdef __MIC__ 
+#define FILL_VEC(constant) .f[0] = constant, \
+                           .f[1] = constant, \
+                           .f[2] = constant, \
+                           .f[3] = constant, \
+                           .f[4] = constant, \
+                           .f[5] = constant, \
+                           .f[6] = constant, \
+                           .f[7] = constant, \
+                           .f[8] = constant, \
+                           .f[9] = constant, \
+                           .f[10] = constant, \
+                           .f[11] = constant, \
+                           .f[12] = constant, \
+                           .f[13] = constant, \
+                           .f[14] = constant, \
+                           .f[15] = constant
+#elif defined(__AVX__) || defined (__AVX2__) 
+#define FILL_VEC(constant) .f[0] = constant, \
+                           .f[1] = constant, \
+                           .f[2] = constant, \
+                           .f[3] = constant, \
+                           .f[4] = constant, \
+                           .f[5] = constant, \
+                           .f[6] = constant, \
+                           .f[7] = constant
+#elif defined(__SSE2__)
+#define FILL_VEC(constant) .f[0] = constant, \
+                           .f[1] = constant, \
+                           .f[2] = constant, \
+                           .f[3] = constant
+#endif
+
 /**
  * @brief Computes the kernel function and its derivative (Vectorised version).
  *
@@ -224,50 +257,16 @@ __attribute__((always_inline)) INLINE static void kernel_eval(float u,
  * @param dw_dx (return) The norm of the gradient of $|\\nabla W(x,h)|$.
  */
 
-static const vector kernel_igamma_vec = {.f[0] = (float)kernel_igamma,
-                                         .f[1] = (float)kernel_igamma,
-                                         .f[2] = (float)kernel_igamma,
-                                         .f[3] = (float)kernel_igamma,
-                                         .f[4] = (float)kernel_igamma,
-                                         .f[5] = (float)kernel_igamma,
-                                         .f[6] = (float)kernel_igamma,
-                                         .f[7] = (float)kernel_igamma};
-
-static const vector kernel_ivals_vec = {.f[0] = (float)kernel_ivals,
-                                        .f[1] = (float)kernel_ivals,
-                                        .f[2] = (float)kernel_ivals,
-                                        .f[3] = (float)kernel_ivals,
-                                        .f[4] = (float)kernel_ivals,
-                                        .f[5] = (float)kernel_ivals,
-                                        .f[6] = (float)kernel_ivals,
-                                        .f[7] = (float)kernel_ivals};
-
-static const vector kernel_constant_vec = {.f[0] = (float)kernel_constant,
-                                           .f[1] = (float)kernel_constant,
-                                           .f[2] = (float)kernel_constant,
-                                           .f[3] = (float)kernel_constant,
-                                           .f[4] = (float)kernel_constant,
-                                           .f[5] = (float)kernel_constant,
-                                           .f[6] = (float)kernel_constant,
-                                           .f[7] = (float)kernel_constant};
-
-static const vector kernel_igamma3_vec = {.f[0] = (float)kernel_igamma3,
-                                          .f[1] = (float)kernel_igamma3,
-                                          .f[2] = (float)kernel_igamma3,
-                                          .f[3] = (float)kernel_igamma3,
-                                          .f[4] = (float)kernel_igamma3,
-                                          .f[5] = (float)kernel_igamma3,
-                                          .f[6] = (float)kernel_igamma3,
-                                          .f[7] = (float)kernel_igamma3};
-
-static const vector kernel_igamma4_vec = {.f[0] = (float)kernel_igamma4,
-                                          .f[1] = (float)kernel_igamma4,
-                                          .f[2] = (float)kernel_igamma4,
-                                          .f[3] = (float)kernel_igamma4,
-                                          .f[4] = (float)kernel_igamma4,
-                                          .f[5] = (float)kernel_igamma4,
-                                          .f[6] = (float)kernel_igamma4,
-                                          .f[7] = (float)kernel_igamma4};
+static const vector kernel_igamma_vec = {FILL_VEC((float)kernel_igamma)};
+
+static const vector kernel_ivals_vec = {FILL_VEC((float)kernel_ivals)};
+
+static const vector kernel_constant_vec = {FILL_VEC((float)kernel_constant)};
+
+static const vector kernel_igamma3_vec = {FILL_VEC((float)kernel_igamma3)};
+
+static const vector kernel_igamma4_vec = {FILL_VEC((float)kernel_igamma4)};
+
 __attribute__((always_inline))
     INLINE static void kernel_deval_vec(vector *u, vector *w, vector *dw_dx) {