diff options
author | Paul Iannetta <piannetta@kalrayinc.com> | 2024-02-14 16:36:56 +0100 |
---|---|---|
committer | Paul Iannetta <piannetta@kalrayinc.com> | 2024-02-20 12:07:57 +0100 |
commit | 9798722ef620fcfe415471167543bad8626b2fb2 (patch) | |
tree | 05b32a09cc707fb6c2a35e1c4346dfe17b437572 /opcodes | |
parent | 0593f8d6f7d818b630bbe497e9a23bb0efb361ff (diff) | |
download | gdb-9798722ef620fcfe415471167543bad8626b2fb2.zip gdb-9798722ef620fcfe415471167543bad8626b2fb2.tar.gz gdb-9798722ef620fcfe415471167543bad8626b2fb2.tar.bz2 |
kvx: enable magic immediates for integer multiply-accumulate and CMOVE*
Affected instructions:
- alu unit:
cmovewp cmovehq
- mau unit:
maddwdp madduwdp maddsuwdp mma msbfwdp msbfuwdp
msbfsuwdp mms mulwdp muluwdp mulsuwdp mm
opcodes/ChangeLog:
* kvx-opc.c (struct kvxopc): Regenerate.
gas/ChangeLog:
* config/kvx-parse.h: Regenerate.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/kvx-opc.c | 1529 |
1 files changed, 1490 insertions, 39 deletions
diff --git a/opcodes/kvx-opc.c b/opcodes/kvx-opc.c index bbefaf3..ea676ef 100644 --- a/opcodes/kvx-opc.c +++ b/opcodes/kvx-opc.c @@ -13852,6 +13852,34 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv3_v1-CMOVEHQ_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovehq", + .codewords = { + { + .opcode = 0xf8021000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_LITE_X, ((int)0 << 8) | (int)Reservation_kv3_v1_ALU_LITE_X, + .format = { + &kv3_v1_simdcond_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_registerw_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv3_v1-CMOVEWP_simdcond_registerZ_registerW_registerY_simple */ .as_op = "cmovewp", .codewords = { @@ -13874,6 +13902,34 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv3_v1-CMOVEWP_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovewp", + .codewords = { + { + .opcode = 0xf0021000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_LITE_X, ((int)0 << 8) | (int)Reservation_kv3_v1_ALU_LITE_X, + .format = { + &kv3_v1_simdcond_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_registerw_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv3_v1-CMULDT_registerM_registerZ_registerY_simple */ .as_op = "cmuldt", .codewords = { @@ -25601,6 +25657,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MADDSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "maddsuwdp", + .codewords = { + { + .opcode = 0xda000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MADDSUWD_registerW_registerZ_registerY_simple */ .as_op = "maddsuwd", .codewords = { @@ -25789,6 +25872,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MADDUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "madduwdp", + .codewords = { + { + .opcode = 0xd9000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MADDUWD_registerW_registerZ_registerY_simple */ .as_op = "madduwd", .codewords = { @@ -25956,6 +26066,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MADDWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "maddwdp", + .codewords = { + { + .opcode = 0xd8000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MADDWD_registerW_registerZ_registerY_simple */ .as_op = "maddwd", .codewords = { @@ -27405,6 +27542,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MM212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mm212w", + .codewords = { + { + .opcode = 0xd3001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MMA212W_registerM_registerZ_registerY_simple */ .as_op = "mma212w", .codewords = { @@ -27426,6 +27590,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MMA212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mma212w", + .codewords = { + { + .opcode = 0xdb000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MMA444HBD0_registerAq_registerBq_registerC_registerD_simple */ .as_op = "mma444hbd0", .codewords = { @@ -27711,6 +27902,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MMS212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mms212w", + .codewords = { + { + .opcode = 0xdf000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MOVETQ_registerAE_registerZ_registerY_simple */ .as_op = "movetq", .codewords = { @@ -27795,6 +28013,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MSBFD_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfd", + .codewords = { + { + .opcode = 0xd4000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerw_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MSBFHQ_registerW_registerZ_registerY_simple */ .as_op = "msbfhq", .codewords = { @@ -27816,6 +28061,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MSBFHQ_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfhq", + .codewords = { + { + .opcode = 0xd6000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerw_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MSBFHWQ_registerM_registerZ_registerY_simple */ .as_op = "msbfhwq", .codewords = { @@ -27900,6 +28172,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MSBFSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfsuwdp", + .codewords = { + { + .opcode = 0xde000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MSBFSUWD_registerW_registerZ_registerY_simple */ .as_op = "msbfsuwd", .codewords = { @@ -28010,6 +28309,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MSBFUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfuwdp", + .codewords = { + { + .opcode = 0xdd000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MSBFUWD_registerW_registerZ_registerY_simple */ .as_op = "msbfuwd", .codewords = { @@ -28099,6 +28425,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MSBFWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfwdp", + .codewords = { + { + .opcode = 0xdc000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MSBFWD_registerW_registerZ_registerY_simple */ .as_op = "msbfwd", .codewords = { @@ -28167,6 +28520,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MSBFWP_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfwp", + .codewords = { + { + .opcode = 0xd5000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_AUXR_X, + .format = { + &kv3_v1_registerw_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MSBFW_registerW_registerZ_registerY_simple */ .as_op = "msbfw", .codewords = { @@ -28673,6 +29053,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MULSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "mulsuwdp", + .codewords = { + { + .opcode = 0xd2001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MULSUWD_registerW_registerZ_registerY_simple */ .as_op = "mulsuwd", .codewords = { @@ -28861,6 +29268,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MULUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "muluwdp", + .codewords = { + { + .opcode = 0xd1001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MULUWD_registerW_registerZ_registerY_simple */ .as_op = "muluwd", .codewords = { @@ -29091,6 +29525,33 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v1-MULWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "mulwdp", + .codewords = { + { + .opcode = 0xd0001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v1_MAU_X, + .format = { + &kv3_v1_registerm_opnd, + &kv3_v1_registerz_opnd, + &kv3_v1_upper27_lower5_opnd, + &kv3_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v1-MULWD_registerW_registerZ_registerY_simple */ .as_op = "mulwd", .codewords = { @@ -37168,7 +37629,7 @@ struct kvxopc kvx_kv3_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, -/* Number of instructions : 1201 */ +/* Number of instructions : 1218 */ {"", { }, 0, 0, 0, 0, { }, "", ""}}; int kvx_kv3_v2_regfiles[] = { @@ -53396,6 +53857,34 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv3_v2-CMOVEBO_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovebo", + .codewords = { + { + .opcode = 0xf002d000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_TINY_X, ((int)0 << 8) | (int)Reservation_kv3_v2_ALU_TINY_X, + .format = { + &kv3_v2_simdcond_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_registerw_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv3_v2-CMOVED_scalarcond_registerZ_registerW_registerY_simple */ .as_op = "cmoved", .codewords = { @@ -53521,6 +54010,34 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv3_v2-CMOVEHQ_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovehq", + .codewords = { + { + .opcode = 0xf8021000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_TINY_X, ((int)0 << 8) | (int)Reservation_kv3_v2_ALU_TINY_X, + .format = { + &kv3_v2_simdcond_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_registerw_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv3_v2-CMOVEWP_simdcond_registerZ_registerW_registerY_simple */ .as_op = "cmovewp", .codewords = { @@ -53543,6 +54060,34 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv3_v2-CMOVEWP_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovewp", + .codewords = { + { + .opcode = 0xf0021000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_TINY_X, ((int)0 << 8) | (int)Reservation_kv3_v2_ALU_TINY_X, + .format = { + &kv3_v2_simdcond_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_registerw_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv3_v2-CMULDT_registerM_registerZ_registerY_simple */ .as_op = "cmuldt", .codewords = { @@ -61581,12 +62126,12 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv3_v2-MADDD_registerW_registerZ_w032_double */ + { /* Opcode-kv3_v2-MADDD_registerW_registerZ_w032_splat32_double */ .as_op = "maddd", .codewords = { { .opcode = 0xd0000000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -61602,10 +62147,11 @@ struct kvxopc kvx_kv3_v2_optab[] = { &kv3_v2_registerw_opnd, &kv3_v2_registerz_opnd, &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv3_v2-MADDHQ_registerW_registerZ_registerY_simple */ .as_op = "maddhq", @@ -61628,12 +62174,12 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv3_v2-MADDHQ_registerW_registerZ_w032_double */ + { /* Opcode-kv3_v2-MADDHQ_registerW_registerZ_w032_splat32_double */ .as_op = "maddhq", .codewords = { { .opcode = 0xd2000000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -61649,10 +62195,11 @@ struct kvxopc kvx_kv3_v2_optab[] = { &kv3_v2_registerw_opnd, &kv3_v2_registerz_opnd, &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv3_v2-MADDHWQ_registerM_registerZ_registerY_simple */ .as_op = "maddhwq", @@ -61780,6 +62327,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MADDSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "maddsuwdp", + .codewords = { + { + .opcode = 0xda000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MADDSUWD_registerW_registerZ_registerY_simple */ .as_op = "maddsuwd", .codewords = { @@ -61911,6 +62485,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MADDUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "madduwdp", + .codewords = { + { + .opcode = 0xd9000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MADDUWD_registerW_registerZ_registerY_simple */ .as_op = "madduwd", .codewords = { @@ -62000,6 +62601,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MADDWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "maddwdp", + .codewords = { + { + .opcode = 0xd8000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MADDWD_registerW_registerZ_registerY_simple */ .as_op = "maddwd", .codewords = { @@ -62068,12 +62696,12 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv3_v2-MADDWP_registerW_registerZ_w032_double */ + { /* Opcode-kv3_v2-MADDWP_registerW_registerZ_w032_splat32_double */ .as_op = "maddwp", .codewords = { { .opcode = 0xd1000000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -62089,10 +62717,11 @@ struct kvxopc kvx_kv3_v2_optab[] = { &kv3_v2_registerw_opnd, &kv3_v2_registerz_opnd, &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv3_v2-MADDWQ_registerM_registerP_registerO_simple */ .as_op = "maddwq", @@ -63850,6 +64479,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MM212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mm212w", + .codewords = { + { + .opcode = 0xd3001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MMA212W_registerM_registerZ_registerY_simple */ .as_op = "mma212w", .codewords = { @@ -63871,6 +64527,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MMA212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mma212w", + .codewords = { + { + .opcode = 0xdb000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MMS212W_registerM_registerZ_registerY_simple */ .as_op = "mms212w", .codewords = { @@ -63892,6 +64575,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MMS212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mms212w", + .codewords = { + { + .opcode = 0xdf000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFDT_registerM_registerZ_registerY_simple */ .as_op = "msbfdt", .codewords = { @@ -63934,6 +64644,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MSBFD_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfd", + .codewords = { + { + .opcode = 0xd4000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerw_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFHQ_registerW_registerZ_registerY_simple */ .as_op = "msbfhq", .codewords = { @@ -63955,6 +64692,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MSBFHQ_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfhq", + .codewords = { + { + .opcode = 0xd6000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerw_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFHWQ_registerM_registerZ_registerY_simple */ .as_op = "msbfhwq", .codewords = { @@ -64081,6 +64845,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MSBFSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfsuwdp", + .codewords = { + { + .opcode = 0xde000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFSUWD_registerW_registerZ_registerY_simple */ .as_op = "msbfsuwd", .codewords = { @@ -64212,6 +65003,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MSBFUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfuwdp", + .codewords = { + { + .opcode = 0xdd000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFUWD_registerW_registerZ_registerY_simple */ .as_op = "msbfuwd", .codewords = { @@ -64301,6 +65119,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MSBFWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfwdp", + .codewords = { + { + .opcode = 0xdc000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFWD_registerW_registerZ_registerY_simple */ .as_op = "msbfwd", .codewords = { @@ -64369,6 +65214,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MSBFWP_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfwp", + .codewords = { + { + .opcode = 0xd5000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_AUXR_X, + .format = { + &kv3_v2_registerw_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MSBFWQ_registerM_registerP_registerO_simple */ .as_op = "msbfwq", .codewords = { @@ -64479,12 +65351,12 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv3_v2-MULD_registerW_registerZ_w032_double */ + { /* Opcode-kv3_v2-MULD_registerW_registerZ_w032_splat32_double */ .as_op = "muld", .codewords = { { .opcode = 0xd4001000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -64500,10 +65372,11 @@ struct kvxopc kvx_kv3_v2_optab[] = { &kv3_v2_registerw_opnd, &kv3_v2_registerz_opnd, &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv3_v2-MULHQ_registerW_registerZ_registerY_simple */ .as_op = "mulhq", @@ -64526,12 +65399,12 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv3_v2-MULHQ_registerW_registerZ_w032_double */ + { /* Opcode-kv3_v2-MULHQ_registerW_registerZ_w032_splat32_double */ .as_op = "mulhq", .codewords = { { .opcode = 0xd6001000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -64547,10 +65420,11 @@ struct kvxopc kvx_kv3_v2_optab[] = { &kv3_v2_registerw_opnd, &kv3_v2_registerz_opnd, &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv3_v2-MULHWQ_registerM_registerZ_registerY_simple */ .as_op = "mulhwq", @@ -64678,6 +65552,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MULSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "mulsuwdp", + .codewords = { + { + .opcode = 0xd2001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MULSUWD_registerW_registerZ_registerY_simple */ .as_op = "mulsuwd", .codewords = { @@ -64809,6 +65710,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MULUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "muluwdp", + .codewords = { + { + .opcode = 0xd1001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MULUWD_registerW_registerZ_registerY_simple */ .as_op = "muluwd", .codewords = { @@ -64877,6 +65805,33 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv3_v2-MULWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "mulwdp", + .codewords = { + { + .opcode = 0xd0001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv3_v2_MAU_X, ((int)0 << 8) | (int)Reservation_kv3_v2_MAU_X, + .format = { + &kv3_v2_registerm_opnd, + &kv3_v2_registerz_opnd, + &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv3_v2-MULWD_registerW_registerZ_registerY_simple */ .as_op = "mulwd", .codewords = { @@ -64945,12 +65900,12 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv3_v2-MULWP_registerW_registerZ_w032_double */ + { /* Opcode-kv3_v2-MULWP_registerW_registerZ_w032_splat32_double */ .as_op = "mulwp", .codewords = { { .opcode = 0xd5001000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -64966,10 +65921,11 @@ struct kvxopc kvx_kv3_v2_optab[] = { &kv3_v2_registerw_opnd, &kv3_v2_registerz_opnd, &kv3_v2_upper27_lower5_opnd, + &kv3_v2_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv3_v2-MULWQ_registerM_registerP_registerO_simple */ .as_op = "mulwq", @@ -76152,7 +77108,7 @@ struct kvxopc kvx_kv3_v2_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, -/* Number of instructions : 1261 */ +/* Number of instructions : 1279 */ {"", { }, 0, 0, 0, 0, { }, "", ""}}; int kvx_kv4_v1_regfiles[] = { @@ -92380,6 +93336,34 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv4_v1-CMOVEBO_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovebo", + .codewords = { + { + .opcode = 0xf002d000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_TINY_X, ((int)0 << 8) | (int)Reservation_kv4_v1_ALU_TINY_X, + .format = { + &kv4_v1_simdcond_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_registerw_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv4_v1-CMOVED_scalarcond_registerZ_registerW_registerY_simple */ .as_op = "cmoved", .codewords = { @@ -92505,6 +93489,34 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv4_v1-CMOVEHQ_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovehq", + .codewords = { + { + .opcode = 0xf8021000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_TINY_X, ((int)0 << 8) | (int)Reservation_kv4_v1_ALU_TINY_X, + .format = { + &kv4_v1_simdcond_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_registerw_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv4_v1-CMOVEWP_simdcond_registerZ_registerW_registerY_simple */ .as_op = "cmovewp", .codewords = { @@ -92527,6 +93539,34 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = "%s %s? %s = %s", }, + { /* Opcode-kv4_v1-CMOVEWP_simdcond_registerZ_registerW_w032_splat32_double */ + .as_op = "cmovewp", + .codewords = { + { + .opcode = 0xf0021000, + .mask = 0xf803f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_ALU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_TINY_X, ((int)0 << 8) | (int)Reservation_kv4_v1_ALU_TINY_X, + .format = { + &kv4_v1_simdcond_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_registerw_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = "%s %s? %s = %s%s", + }, { /* Opcode-kv4_v1-CMULDT_registerM_registerZ_registerY_simple */ .as_op = "cmuldt", .codewords = { @@ -100565,12 +101605,12 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv4_v1-MADDD_registerW_registerZ_w032_double */ + { /* Opcode-kv4_v1-MADDD_registerW_registerZ_w032_splat32_double */ .as_op = "maddd", .codewords = { { .opcode = 0xd0000000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -100586,10 +101626,11 @@ struct kvxopc kvx_kv4_v1_optab[] = { &kv4_v1_registerw_opnd, &kv4_v1_registerz_opnd, &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv4_v1-MADDHQ_registerW_registerZ_registerY_simple */ .as_op = "maddhq", @@ -100612,12 +101653,12 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv4_v1-MADDHQ_registerW_registerZ_w032_double */ + { /* Opcode-kv4_v1-MADDHQ_registerW_registerZ_w032_splat32_double */ .as_op = "maddhq", .codewords = { { .opcode = 0xd2000000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -100633,10 +101674,11 @@ struct kvxopc kvx_kv4_v1_optab[] = { &kv4_v1_registerw_opnd, &kv4_v1_registerz_opnd, &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv4_v1-MADDHWQ_registerM_registerZ_registerY_simple */ .as_op = "maddhwq", @@ -100764,6 +101806,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MADDSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "maddsuwdp", + .codewords = { + { + .opcode = 0xda000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MADDSUWD_registerW_registerZ_registerY_simple */ .as_op = "maddsuwd", .codewords = { @@ -100895,6 +101964,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MADDUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "madduwdp", + .codewords = { + { + .opcode = 0xd9000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MADDUWD_registerW_registerZ_registerY_simple */ .as_op = "madduwd", .codewords = { @@ -100984,6 +102080,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MADDWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "maddwdp", + .codewords = { + { + .opcode = 0xd8000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MADDWD_registerW_registerZ_registerY_simple */ .as_op = "maddwd", .codewords = { @@ -101052,12 +102175,12 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv4_v1-MADDWP_registerW_registerZ_w032_double */ + { /* Opcode-kv4_v1-MADDWP_registerW_registerZ_w032_splat32_double */ .as_op = "maddwp", .codewords = { { .opcode = 0xd1000000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -101073,10 +102196,11 @@ struct kvxopc kvx_kv4_v1_optab[] = { &kv4_v1_registerw_opnd, &kv4_v1_registerz_opnd, &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv4_v1-MADDWQ_registerM_registerP_registerO_simple */ .as_op = "maddwq", @@ -102834,6 +103958,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MM212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mm212w", + .codewords = { + { + .opcode = 0xd3001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MMA212W_registerM_registerZ_registerY_simple */ .as_op = "mma212w", .codewords = { @@ -102855,6 +104006,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MMA212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mma212w", + .codewords = { + { + .opcode = 0xdb000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MMS212W_registerM_registerZ_registerY_simple */ .as_op = "mms212w", .codewords = { @@ -102876,6 +104054,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MMS212W_registerM_registerZ_w032_splat32_double */ + .as_op = "mms212w", + .codewords = { + { + .opcode = 0xdf000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFDT_registerM_registerZ_registerY_simple */ .as_op = "msbfdt", .codewords = { @@ -102918,6 +104123,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MSBFD_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfd", + .codewords = { + { + .opcode = 0xd4000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerw_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFHQ_registerW_registerZ_registerY_simple */ .as_op = "msbfhq", .codewords = { @@ -102939,6 +104171,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MSBFHQ_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfhq", + .codewords = { + { + .opcode = 0xd6000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerw_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFHWQ_registerM_registerZ_registerY_simple */ .as_op = "msbfhwq", .codewords = { @@ -103065,6 +104324,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MSBFSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfsuwdp", + .codewords = { + { + .opcode = 0xde000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFSUWD_registerW_registerZ_registerY_simple */ .as_op = "msbfsuwd", .codewords = { @@ -103196,6 +104482,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MSBFUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfuwdp", + .codewords = { + { + .opcode = 0xdd000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFUWD_registerW_registerZ_registerY_simple */ .as_op = "msbfuwd", .codewords = { @@ -103285,6 +104598,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MSBFWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "msbfwdp", + .codewords = { + { + .opcode = 0xdc000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFWD_registerW_registerZ_registerY_simple */ .as_op = "msbfwd", .codewords = { @@ -103353,6 +104693,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MSBFWP_registerW_registerZ_w032_splat32_double */ + .as_op = "msbfwp", + .codewords = { + { + .opcode = 0xd5000000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_AUXR_X, + .format = { + &kv4_v1_registerw_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MSBFWQ_registerM_registerP_registerO_simple */ .as_op = "msbfwq", .codewords = { @@ -103463,12 +104830,12 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv4_v1-MULD_registerW_registerZ_w032_double */ + { /* Opcode-kv4_v1-MULD_registerW_registerZ_w032_splat32_double */ .as_op = "muld", .codewords = { { .opcode = 0xd4001000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -103484,10 +104851,11 @@ struct kvxopc kvx_kv4_v1_optab[] = { &kv4_v1_registerw_opnd, &kv4_v1_registerz_opnd, &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv4_v1-MULHQ_registerW_registerZ_registerY_simple */ .as_op = "mulhq", @@ -103510,12 +104878,12 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv4_v1-MULHQ_registerW_registerZ_w032_double */ + { /* Opcode-kv4_v1-MULHQ_registerW_registerZ_w032_splat32_double */ .as_op = "mulhq", .codewords = { { .opcode = 0xd6001000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -103531,10 +104899,11 @@ struct kvxopc kvx_kv4_v1_optab[] = { &kv4_v1_registerw_opnd, &kv4_v1_registerz_opnd, &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv4_v1-MULHWQ_registerM_registerZ_registerY_simple */ .as_op = "mulhwq", @@ -103662,6 +105031,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MULSUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "mulsuwdp", + .codewords = { + { + .opcode = 0xd2001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MULSUWD_registerW_registerZ_registerY_simple */ .as_op = "mulsuwd", .codewords = { @@ -103793,6 +105189,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MULUWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "muluwdp", + .codewords = { + { + .opcode = 0xd1001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MULUWD_registerW_registerZ_registerY_simple */ .as_op = "muluwd", .codewords = { @@ -103861,6 +105284,33 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, + { /* Opcode-kv4_v1-MULWDP_registerM_registerZ_w032_splat32_double */ + .as_op = "mulwdp", + .codewords = { + { + .opcode = 0xd0001000, + .mask = 0xff03f000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 + }, + { + .opcode = 0x00000000, + .mask = 0x60000000, + .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32|kvxOPCODE_FLAG_IMMX0|kvxOPCODE_FLAG_MAU + }, + }, + .wordcount = 2, + .coding_size = 64, + .bundling = ((int)0 << 8) | (int)Bundling_kv4_v1_MAU_X, ((int)0 << 8) | (int)Reservation_kv4_v1_MAU_X, + .format = { + &kv4_v1_registerm_opnd, + &kv4_v1_registerz_opnd, + &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, + NULL + }, + .rclass = "", + .fmtstring = " %s = %s, %s%s", + }, { /* Opcode-kv4_v1-MULWD_registerW_registerZ_registerY_simple */ .as_op = "mulwd", .codewords = { @@ -103929,12 +105379,12 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, - { /* Opcode-kv4_v1-MULWP_registerW_registerZ_w032_double */ + { /* Opcode-kv4_v1-MULWP_registerW_registerZ_w032_splat32_double */ .as_op = "mulwp", .codewords = { { .opcode = 0xd5001000, - .mask = 0xff03f800, + .mask = 0xff03f000, .flags = kvxOPCODE_FLAG_MODE64|kvxOPCODE_FLAG_MODE32 }, { @@ -103950,10 +105400,11 @@ struct kvxopc kvx_kv4_v1_optab[] = { &kv4_v1_registerw_opnd, &kv4_v1_registerz_opnd, &kv4_v1_upper27_lower5_opnd, + &kv4_v1_splat32_opnd, NULL }, .rclass = "", - .fmtstring = " %s = %s, %s", + .fmtstring = " %s = %s, %s%s", }, { /* Opcode-kv4_v1-MULWQ_registerM_registerP_registerO_simple */ .as_op = "mulwq", @@ -113983,7 +115434,7 @@ struct kvxopc kvx_kv4_v1_optab[] = { .rclass = "", .fmtstring = " %s = %s, %s", }, -/* Number of instructions : 1212 */ +/* Number of instructions : 1230 */ {"", { }, 0, 0, 0, 0, { }, "", ""}}; const struct kvx_core_info *kvx_core_info_table[] = |