add vpadd{b,w,d,q,sb,sw,usb,usw}
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 08f36a5..e462d94 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -1050,16 +1050,16 @@
 			{ 0x67, "packuswb", T_0F | T_66 | T_YMM | T_EVEX, false, true },
 			{ 0x2B, "packusdw", T_0F38 | T_66 | T_YMM | T_EVEX | T_EW0 | T_B32, false, true },
 
-			{ 0xFC, "paddb", T_0F | T_66 | T_YMM, false, true },
-			{ 0xFD, "paddw", T_0F | T_66 | T_YMM, false, true },
-			{ 0xFE, "paddd", T_0F | T_66 | T_YMM, false, true },
-			{ 0xD4, "paddq", T_0F | T_66 | T_YMM, false, true },
+			{ 0xFC, "paddb", T_0F | T_66 | T_YMM | T_EVEX, false, true },
+			{ 0xFD, "paddw", T_0F | T_66 | T_YMM | T_EVEX, false, true },
+			{ 0xFE, "paddd", T_0F | T_66 | T_YMM | T_EVEX | T_EW0 | T_B32, false, true },
+			{ 0xD4, "paddq", T_0F | T_66 | T_YMM | T_EVEX | T_EW1 | T_B64, false, true },
 
-			{ 0xEC, "paddsb", T_0F | T_66 | T_YMM, false, true },
-			{ 0xED, "paddsw", T_0F | T_66 | T_YMM, false, true },
+			{ 0xEC, "paddsb", T_0F | T_66 | T_YMM | T_EVEX, false, true },
+			{ 0xED, "paddsw", T_0F | T_66 | T_YMM | T_EVEX, false, true },
 
-			{ 0xDC, "paddusb", T_0F | T_66 | T_YMM, false, true },
-			{ 0xDD, "paddusw", T_0F | T_66 | T_YMM, false, true },
+			{ 0xDC, "paddusb", T_0F | T_66 | T_YMM | T_EVEX, false, true },
+			{ 0xDD, "paddusw", T_0F | T_66 | T_YMM | T_EVEX, false, true },
 
 			{ 0x0F, "palignr", T_0F3A | T_66 | T_YMM | T_EVEX, true, true },
 
diff --git a/test/make_nm.cpp b/test/make_nm.cpp
index 9fa919c..ab15a6d 100644
--- a/test/make_nm.cpp
+++ b/test/make_nm.cpp
@@ -2750,6 +2750,22 @@
 			{ "vpackuswb", XMM_KZ, _XMM, _XMM | _MEM },
 			{ "vpackuswb", YMM_KZ, _YMM, _YMM | _MEM },
 			{ "vpackuswb", ZMM_KZ, _ZMM, _ZMM | _MEM },
+
+			{ "vpaddb", XMM_KZ, _XMM, _XMM | _MEM },
+			{ "vpaddw", XMM_KZ, _XMM, _XMM | _MEM },
+			{ "vpaddd", XMM_KZ, _XMM, _XMM | M_1to4 },
+
+			{ "vpaddsb", XMM_KZ, _XMM, _XMM | _MEM },
+			{ "vpaddsb", ZMM_KZ, _ZMM, _ZMM | _MEM },
+
+			{ "vpaddsw", XMM_KZ, _XMM, _XMM | _MEM },
+			{ "vpaddsw", ZMM_KZ, _ZMM, _ZMM | _MEM },
+
+			{ "vpaddusb", XMM_KZ, _XMM, _XMM | MEM },
+			{ "vpaddusb", ZMM_KZ, _ZMM, _ZMM | MEM },
+
+			{ "vpaddusw", XMM_KZ, _XMM, _XMM | MEM },
+			{ "vpaddusw", ZMM_KZ, _ZMM, _ZMM | MEM },
 		};
 		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl& p = tbl[i];
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 55a221f..90a9bcd 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -785,21 +785,21 @@
 void vpackuswb(const Xmm& x, const Operand& op) { vpackuswb(x, x, op); }
 void vpackusdw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F38 | T_66 | T_EW0 | T_YMM | T_EVEX | T_B32, 0x2B); }
 void vpackusdw(const Xmm& x, const Operand& op) { vpackusdw(x, x, op); }
-void vpaddb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xFC); }
+void vpaddb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM | T_EVEX, 0xFC); }
 void vpaddb(const Xmm& x, const Operand& op) { vpaddb(x, x, op); }
-void vpaddw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xFD); }
+void vpaddw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM | T_EVEX, 0xFD); }
 void vpaddw(const Xmm& x, const Operand& op) { vpaddw(x, x, op); }
-void vpaddd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xFE); }
+void vpaddd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_EW0 | T_YMM | T_EVEX | T_B32, 0xFE); }
 void vpaddd(const Xmm& x, const Operand& op) { vpaddd(x, x, op); }
-void vpaddq(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xD4); }
+void vpaddq(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_EW1 | T_YMM | T_EVEX | T_B64, 0xD4); }
 void vpaddq(const Xmm& x, const Operand& op) { vpaddq(x, x, op); }
-void vpaddsb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xEC); }
+void vpaddsb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM | T_EVEX, 0xEC); }
 void vpaddsb(const Xmm& x, const Operand& op) { vpaddsb(x, x, op); }
-void vpaddsw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xED); }
+void vpaddsw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM | T_EVEX, 0xED); }
 void vpaddsw(const Xmm& x, const Operand& op) { vpaddsw(x, x, op); }
-void vpaddusb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xDC); }
+void vpaddusb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM | T_EVEX, 0xDC); }
 void vpaddusb(const Xmm& x, const Operand& op) { vpaddusb(x, x, op); }
-void vpaddusw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xDD); }
+void vpaddusw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM | T_EVEX, 0xDD); }
 void vpaddusw(const Xmm& x, const Operand& op) { vpaddusw(x, x, op); }
 void vpalignr(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { opAVX_X_X_XM(x1, x2, op, T_0F3A | T_66 | T_YMM | T_EVEX, 0x0F, imm); }
 void vpalignr(const Xmm& x, const Operand& op, uint8 imm) { vpalignr(x, x, op, imm); }