vppinfra: use unaligned non-vector load/stores in x86 memcpy

Type: fix
Change-Id: I54ef23a52f05cc95210a736f84b927dd69b8a6f7
Signed-off-by: Damjan Marion <damarion@cisco.com>
diff --git a/src/vppinfra/memcpy_avx2.h b/src/vppinfra/memcpy_avx2.h
index f7a36f0..ac29d25 100644
--- a/src/vppinfra/memcpy_avx2.h
+++ b/src/vppinfra/memcpy_avx2.h
@@ -135,19 +135,19 @@
 	}
       if (n & 0x02)
 	{
-	  *(u16 *) dstu = *(const u16 *) srcu;
-	  srcu = (uword) ((const u16 *) srcu + 1);
-	  dstu = (uword) ((u16 *) dstu + 1);
+	  *(u16u *) dstu = *(const u16u *) srcu;
+	  srcu = (uword) ((const u16u *) srcu + 1);
+	  dstu = (uword) ((u16u *) dstu + 1);
 	}
       if (n & 0x04)
 	{
-	  *(u32 *) dstu = *(const u32 *) srcu;
-	  srcu = (uword) ((const u32 *) srcu + 1);
-	  dstu = (uword) ((u32 *) dstu + 1);
+	  *(u32u *) dstu = *(const u32u *) srcu;
+	  srcu = (uword) ((const u32u *) srcu + 1);
+	  dstu = (uword) ((u32u *) dstu + 1);
 	}
       if (n & 0x08)
 	{
-	  *(u64 *) dstu = *(const u64 *) srcu;
+	  *(u64u *) dstu = *(const u64u *) srcu;
 	}
       return ret;
     }
diff --git a/src/vppinfra/memcpy_avx512.h b/src/vppinfra/memcpy_avx512.h
index 98dac75..2025070 100644
--- a/src/vppinfra/memcpy_avx512.h
+++ b/src/vppinfra/memcpy_avx512.h
@@ -165,18 +165,18 @@
 	}
       if (n & 0x02)
 	{
-	  *(u16 *) dstu = *(const u16 *) srcu;
-	  srcu = (uword) ((const u16 *) srcu + 1);
-	  dstu = (uword) ((u16 *) dstu + 1);
+	  *(u16u *) dstu = *(const u16u *) srcu;
+	  srcu = (uword) ((const u16u *) srcu + 1);
+	  dstu = (uword) ((u16u *) dstu + 1);
 	}
       if (n & 0x04)
 	{
-	  *(u32 *) dstu = *(const u32 *) srcu;
-	  srcu = (uword) ((const u32 *) srcu + 1);
-	  dstu = (uword) ((u32 *) dstu + 1);
+	  *(u32u *) dstu = *(const u32u *) srcu;
+	  srcu = (uword) ((const u32u *) srcu + 1);
+	  dstu = (uword) ((u32u *) dstu + 1);
 	}
       if (n & 0x08)
-	*(u64 *) dstu = *(const u64 *) srcu;
+	*(u64u *) dstu = *(const u64u *) srcu;
       return ret;
     }
 
diff --git a/src/vppinfra/memcpy_sse3.h b/src/vppinfra/memcpy_sse3.h
index aea2005..2ad3648 100644
--- a/src/vppinfra/memcpy_sse3.h
+++ b/src/vppinfra/memcpy_sse3.h
@@ -210,19 +210,19 @@
 	}
       if (n & 0x02)
 	{
-	  *(u16 *) dstu = *(const u16 *) srcu;
-	  srcu = (uword) ((const u16 *) srcu + 1);
-	  dstu = (uword) ((u16 *) dstu + 1);
+	  *(u16u *) dstu = *(const u16u *) srcu;
+	  srcu = (uword) ((const u16u *) srcu + 1);
+	  dstu = (uword) ((u16u *) dstu + 1);
 	}
       if (n & 0x04)
 	{
-	  *(u32 *) dstu = *(const u32 *) srcu;
-	  srcu = (uword) ((const u32 *) srcu + 1);
-	  dstu = (uword) ((u32 *) dstu + 1);
+	  *(u32u *) dstu = *(const u32u *) srcu;
+	  srcu = (uword) ((const u32u *) srcu + 1);
+	  dstu = (uword) ((u32u *) dstu + 1);
 	}
       if (n & 0x08)
 	{
-	  *(u64 *) dstu = *(const u64 *) srcu;
+	  *(u64u *) dstu = *(const u64u *) srcu;
 	}
       return ret;
     }
diff --git a/src/vppinfra/types.h b/src/vppinfra/types.h
index c5e7f09..b52d603 100644
--- a/src/vppinfra/types.h
+++ b/src/vppinfra/types.h
@@ -163,6 +163,13 @@
        __attribute__ ((aligned (align), packed));	\
     } *) (addr))->_data)
 
+typedef u16 u16u __attribute__ ((aligned (1)));
+typedef u32 u32u __attribute__ ((aligned (1)));
+typedef u64 u64u __attribute__ ((aligned (1)));
+typedef i16 i16u __attribute__ ((aligned (1)));
+typedef i32 i32u __attribute__ ((aligned (1)));
+typedef i64 i64u __attribute__ ((aligned (1)));
+
 #endif /* included_clib_types_h */
 
 /*