diff options
author | MITSUNARI Shigeo <[email protected]> | 2023-08-07 09:42:16 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2023-08-07 09:42:16 +0900 |
commit | e1c4c360b7e26eb8dbc7adb90ca6c177cfc64a12 (patch) | |
tree | da3962b6aec1306f91726d0f81ddffb82d956cbc | |
parent | d79717dbebf343c134d3b0608f98031b5dd652f3 (diff) | |
download | xbyak-e1c4c360b7e26eb8dbc7adb90ca6c177cfc64a12.tar.gz xbyak-e1c4c360b7e26eb8dbc7adb90ca6c177cfc64a12.zip |
add SM4
-rw-r--r-- | gen/gen_code.cpp | 2 | ||||
-rw-r--r-- | xbyak/xbyak_mnemonic.h | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 5e41aa5..2ce4034 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -211,6 +211,8 @@ void putX_X_XM(bool omitOnly) { 0xDA, "sm3msg1", T_0F38 | T_W0 | T_EVEX | T_EW0, false, false, 2 }, { 0xDA, "sm3msg2", T_66 | T_0F38 | T_W0 | T_EVEX | T_EW0, false, false, 2 }, { 0xDE, "sm3rnds2", T_66 | T_0F3A | T_W0 | T_EVEX | T_EW0, true, false, 2 }, + { 0xDA, "sm4key4", T_F3 | T_0F38 | T_W0 | T_EVEX | T_EW0, false, false, 2 }, + { 0xDA, "sm4rnds4", T_F2 | T_0F38 | T_W0 | T_EVEX | T_EW0, false, false, 2 }, }; 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 99050bd..59f6d1a 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1356,6 +1356,8 @@ void vshufps(const Xmm& x1, const Xmm& x2, const Operand& op, uint8_t imm) { opA void vsm3msg1(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F38 | T_W0 | T_EW0 | T_EVEX, 0xDA); } void vsm3msg2(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F38 | T_W0 | T_EW0 | T_EVEX, 0xDA); } void vsm3rnds2(const Xmm& x1, const Xmm& x2, const Operand& op, uint8_t imm) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F3A | T_W0 | T_EW0 | T_EVEX, 0xDE, imm); } +void vsm4key4(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_F3 | T_0F38 | T_W0 | T_EW0 | T_EVEX, 0xDA); } +void vsm4rnds4(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_F2 | T_0F38 | T_W0 | T_EW0 | T_EVEX, 0xDA); } void vsqrtpd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, T_66 | T_0F | T_EW1 | T_YMM | T_EVEX | T_ER_Z | T_B64, 0x51); } void vsqrtps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, T_0F | T_EW0 | T_YMM | T_EVEX | T_ER_Z | T_B32, 0x51); } void vsqrtsd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_N8 | T_F2 | T_0F | T_EW1 | T_EVEX | T_ER_X, 0x51); } |