* [PULL 4/9] Hexagon (target/hexagon) Introduce tag_rev_info.c.inc
2026-04-24 2:35 [PULL 0/9] hex queue Brian Cain
` (2 preceding siblings ...)
2026-04-24 2:36 ` [PULL 3/9] Hexagon (target/hexagon) Add Hexagon definition field to DisasContext Brian Cain
@ 2026-04-24 2:36 ` Brian Cain
2026-04-24 2:36 ` [PULL 5/9] Hexagon (target/hexagon) Check each opcode against current CPU definition Brian Cain
` (5 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Brian Cain @ 2026-04-24 2:36 UTC (permalink / raw)
To: qemu-devel, stefanha
Cc: brian.cain, Matheus Tavares Bernardino, Taylor Simpson,
Anton Johansson, Pierrick Bouvier
From: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>
Table that records which CPU revision introduced or removed
for each opcode
Co-authored-by: Brian Cain <brian.cain@oss.qualcomm.com>
Co-authored-by: Taylor Simpson <ltaylorsimpson@gmail.com>
Signed-off-by: Taylor Simpson <ltaylorsimpson@gmail.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
target/hexagon/tag_rev_info.c.inc | 613 ++++++++++++++++++++++++++++++
1 file changed, 613 insertions(+)
create mode 100644 target/hexagon/tag_rev_info.c.inc
diff --git a/target/hexagon/tag_rev_info.c.inc b/target/hexagon/tag_rev_info.c.inc
new file mode 100644
index 00000000000..11c90f86ad1
--- /dev/null
+++ b/target/hexagon/tag_rev_info.c.inc
@@ -0,0 +1,613 @@
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef HEXAGON_TAG_ARCH_TABLE_H
+#define HEXAGON_TAG_ARCH_TABLE_H
+
+struct tag_rev_info { HexagonVersion introduced, removed; };
+
+static const struct tag_rev_info tag_rev_info[XX_LAST_OPCODE] = {
+ [A5_ACS] = { .introduced = HEX_VER_V55, .removed = HEX_VER_NONE },
+
+ [J2_jumpfpt] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [J2_jumprfpt] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [J2_jumprtpt] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [J2_jumptpt] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_p] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_p_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_p_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_p_nac] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_p_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_p_xacc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_r] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_r_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_r_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_r_nac] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_r_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [S6_rol_i_r_xacc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_extractw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_lvsplatw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_and_n] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_not] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_or_n] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_scalar2] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_pred_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32Ub_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32Ub_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32Ub_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_npred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_npred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_npred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_pred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_pred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32Ub_pred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_npred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_npred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_npred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_pred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_pred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_new_pred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_npred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_npred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_npred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nqpred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nqpred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nqpred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_npred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_npred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_npred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_pred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_pred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_new_pred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_npred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_npred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_npred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_nqpred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_nqpred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_nqpred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_pred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_pred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_pred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_qpred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_qpred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_nt_qpred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_pred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_pred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_pred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_qpred_ai] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_qpred_pi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vS32b_qpred_ppu] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsdiffh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsdiffub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsdiffuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsdiffw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsh_sat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vabsw_sat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddb_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddbnq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddbq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddh_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddhnq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddhq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddhsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddhw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddubh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddubsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddubsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vadduhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vadduhsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vadduhw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddw_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddwnq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddwq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddwsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaddwsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_valignb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_valignbi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vand] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vandqrt] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vandqrt_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vandvrt] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vandvrt_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaslh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaslhv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaslw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaslw_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vaslwv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrhbrndsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrhubrndsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrhubsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrhv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrw_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrwh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrwhrndsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrwhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrwuhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vasrwv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vassign] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavgh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavghrnd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavgub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavgubrnd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavguh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavguhrnd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavgw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vavgwrnd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vccombine] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vcl0h] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vcl0w] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vcmov] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vcombine] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdeal] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdealb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdealb4w] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdealh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdealvdd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdelta] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpybus] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpybus_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpybus_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpybus_dv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhb_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhb_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhb_dv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhisat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhisat_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhsat_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhsuisat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhsuisat_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhsusat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhsusat_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhvsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdmpyhvsat_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdsaduh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vdsaduh_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqb_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqb_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqb_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqh_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqh_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqh_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqw_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqw_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_veqw_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtb_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtb_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtb_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgth] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgth_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgth_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgth_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtub_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtub_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtub_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuh_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuh_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuh_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuw_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuw_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtuw_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtw_and] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtw_or] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vgtw_xor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vhist] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vhistq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vinsertwr] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlalignb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlalignbi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlsrh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlsrhv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlsrw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlsrwv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlutvvb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlutvvb_oracc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlutvwh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vlutvwh_oracc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmaxh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmaxub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmaxuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmaxw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vminh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vminub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vminuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vminw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpabus] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpabus_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpabusv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpabuuv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpahb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpahb_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpybus] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpybus_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpybusv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpybusv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpybv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpybv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyewuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhsat_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhsrs] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhss] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhus] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhus_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyhvsrs] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyieoh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiewh_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiewuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiewuh_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyih] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyih_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyihb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyihb_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiowh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiwb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiwb_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiwh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyiwh_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyowh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyowh_rnd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyowh_rnd_sacc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyowh_sacc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyub_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyubv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyubv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyuh_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyuhv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmpyuhv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vmux] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnavgh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnavgub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnavgw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnccombine] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vncmov] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnormamth] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnormamtw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vnot] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackeb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackeh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackhb_sat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackhub_sat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackob] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackoh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackwh_sat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpackwuh_sat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vpopcounth] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrdelta] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybus] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybus_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybusi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybusi_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybusv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybusv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpybv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpyub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpyub_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpyubi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpyubi_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpyubv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrmpyubv_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vror] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vroundhb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vroundhub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vroundwh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vroundwuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrsadubi] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vrsadubi_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsathub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsatwh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshufeh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshuff] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshuffb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshuffeb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshuffh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshuffob] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshuffvdd] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshufoeb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshufoeh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vshufoh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubb_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubbnq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubbq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubh_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubhnq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubhq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubhsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubhw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsububh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsububsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsububsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubuhsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubuhsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubuhw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubw] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubw_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubwnq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubwq] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubwsat] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vsubwsat_dv] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vswap] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vtmpyb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vtmpyb_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vtmpybus] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vtmpybus_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vtmpyhb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vtmpyhb_acc] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vunpackb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vunpackh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vunpackob] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vunpackoh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vunpackub] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vunpackuh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vxor] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vzb] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+ [V6_vzh] = { .introduced = HEX_VER_V60, .removed = HEX_VER_NONE },
+
+ [A6_vminub_RdP] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [M6_vabsdiffb] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [M6_vabsdiffub] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [S6_vsplatrbp] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [S6_vtrunehb_ppp] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [S6_vtrunohb_ppp] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_lvsplatb] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_lvsplath] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_pred_scalar2v2] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_shuffeqh] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_shuffeqw] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_npred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_npred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_npred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_pred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_pred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_cur_pred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_npred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_npred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_npred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_npred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_npred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_npred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_pred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_pred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_cur_pred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_npred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_npred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_npred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_pred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_pred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_pred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_npred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_npred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_npred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_pred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_pred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_nt_tmp_pred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_pred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_pred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_pred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_npred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_npred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_npred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_pred_ai] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_pred_pi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vL32b_tmp_pred_ppu] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddbsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddbsat_dv] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddcarry] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddclbh] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddclbw] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddhw_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddubh_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vaddububb_sat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vadduhw_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vadduwsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vadduwsat_dv] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vandnqrt] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vandnqrt_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vandvnqv] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vandvqv] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vasrhbsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vasruwuhrndsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vasrwuhrndsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlsrb] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlutvvb_nm] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlutvvb_oracci] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlutvvbi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlutvwh_nm] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlutvwh_oracci] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vlutvwhi] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmaxb] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vminb] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmpauhb] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmpauhb_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmpyewuh_64] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmpyiwub] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmpyiwub_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vmpyowh_64_acc] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vrounduhub] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vrounduwuh] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsatuwuh] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsubbsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsubbsat_dv] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsubcarry] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsubububb_sat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsubuwsat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vsubuwsat_dv] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist128] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist128m] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist128q] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist128qm] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist256] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist256_sat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist256q] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+ [V6_vwhist256q_sat] = { .introduced = HEX_VER_V62, .removed = HEX_VER_NONE },
+
+ [A6_vcmpbeq_notany] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vS32b_srls_ai] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vS32b_srls_pi] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vS32b_srls_ppu] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vabsb] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vabsb_sat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vaslh_acc] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vasrh_acc] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vasruhubrndsat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vasruhubsat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vasruwuhsat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vavgb] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vavgbrnd] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vavguw] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vavguwrnd] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vgathermh] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vgathermhq] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vgathermhw] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vgathermhwq] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vgathermw] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vgathermwq] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vlut4] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpabuu] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpabuu_acc] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpahhsat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpauhuhsat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpsuhuhsat] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpyh_acc] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpyuhe] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vmpyuhe_acc] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vnavgb] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vprefixqb] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vprefixqh] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vprefixqw] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermh] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermh_add] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermhq] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermhw] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermhw_add] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermhwq] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermw] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermw_add] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+ [V6_vscattermwq] = { .introduced = HEX_VER_V65, .removed = HEX_VER_NONE },
+
+ [F2_dfadd] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [F2_dfsub] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [M2_mnaci] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [S2_mask] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [V6_vaddcarryo] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [V6_vaddcarrysat] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [V6_vasr_into] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [V6_vrotr] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [V6_vsatdw] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+ [V6_vsubcarryo] = { .introduced = HEX_VER_V66, .removed = HEX_VER_NONE },
+
+ [A7_clip] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [A7_croundd_ri] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [A7_croundd_rr] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [A7_vclip] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [F2_dfmax] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [F2_dfmin] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [F2_dfmpyfix] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [F2_dfmpyhh] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [F2_dfmpylh] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [F2_dfmpyll] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [J2_callrh] = { .introduced = 0x73, .removed = HEX_VER_NONE },
+ [J2_jumprh] = { .introduced = 0x73, .removed = HEX_VER_NONE },
+ [L2_loadw_aq] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [L4_loadd_aq] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [M7_dcmpyiw] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyiw_acc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyiwc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyiwc_acc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyrw] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyrw_acc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyrwc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_dcmpyrwc_acc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyiw] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyiw_rnd] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyiwc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyiwc_rnd] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyrw] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyrw_rnd] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyrwc] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [M7_wcmpyrwc_rnd] = { .introduced = HEX_VER_V67, .removed = HEX_VER_NONE },
+ [R6_release_at_vi] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [R6_release_st_vi] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [S2_storew_rl_at_vi] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [S2_storew_rl_st_vi] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [S4_stored_rl_at_vi] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [S4_stored_rl_st_vi] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [V6_v6mpyhubs10] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [V6_v6mpyhubs10_vxx] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [V6_v6mpyvubs10] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [V6_v6mpyvubs10_vxx] = { .introduced = HEX_VER_V68, .removed = HEX_VER_NONE },
+ [V6_vasrvuhubrndsat] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+ [V6_vasrvuhubsat] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+ [V6_vasrvwuhrndsat] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+ [V6_vasrvwuhsat] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+ [V6_vassign_tmp] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+ [V6_vcombine_tmp] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+ [V6_vmpyuhvs] = { .introduced = HEX_VER_V69, .removed = HEX_VER_NONE },
+};
+
+#endif /* HEXAGON_TAG_ARCH_TABLE_H */
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PULL 9/9] target/hexagon: Change DisasContext packet type
2026-04-24 2:35 [PULL 0/9] hex queue Brian Cain
` (7 preceding siblings ...)
2026-04-24 2:36 ` [PULL 8/9] Hexagon (target/hexagon) Remove snprint_a_pkt_debug Brian Cain
@ 2026-04-24 2:36 ` Brian Cain
2026-04-25 16:59 ` [PULL 0/9] hex queue Stefan Hajnoczi
9 siblings, 0 replies; 13+ messages in thread
From: Brian Cain @ 2026-04-24 2:36 UTC (permalink / raw)
To: qemu-devel, stefanha; +Cc: brian.cain, Marco Liebel, Pierrick Bouvier
From: Marco Liebel <marco.liebel@oss.qualcomm.com>
The pkt variable inside DisasContext is of type Packet * and gets
assigned to a local variable in decode_and_translate_packet. Right now
there seems to be no problem with it but future changes to e.g.
hexagon_tr_transalte_packet are potentially dangerous if pkt is accessed
after the local variable goes out of scope.
Since packets are being translated one at a time, the type of pkt can be
changed to just Packet to avoid risk of having a dangling pointer.
Signed-off-by: Marco Liebel <marco.liebel@oss.qualcomm.com>
Reviewed-by: Brian Cain <brian.cain@oss.qualcomm.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
target/hexagon/gen_tcg.h | 2 +-
target/hexagon/macros.h | 6 +-
target/hexagon/translate.h | 2 +-
target/hexagon/decode.c | 8 +--
target/hexagon/genptr.c | 14 ++--
target/hexagon/translate.c | 113 ++++++++++++++------------------
target/hexagon/gen_tcg_funcs.py | 2 +-
target/hexagon/hex_common.py | 4 +-
8 files changed, 66 insertions(+), 85 deletions(-)
diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h
index 1e0cc3b29a8..0159e5c2d5f 100644
--- a/target/hexagon/gen_tcg.h
+++ b/target/hexagon/gen_tcg.h
@@ -1343,7 +1343,7 @@
#define fGEN_TCG_J2_trap0(SHORTCODE) \
do { \
uiV = uiV; \
- tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], ctx->pkt->pc); \
+ tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], ctx->pkt.pc); \
TCGv excp = tcg_constant_tl(HEX_EVENT_TRAP0); \
gen_helper_raise_exception(tcg_env, excp); \
} while (0)
diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h
index 6c2862a2320..eebfe1e5ed9 100644
--- a/target/hexagon/macros.h
+++ b/target/hexagon/macros.h
@@ -83,7 +83,7 @@
*/
#define CHECK_NOSHUF(VA, SIZE) \
do { \
- if (insn->slot == 0 && ctx->pkt->pkt_has_scalar_store_s1) { \
+ if (insn->slot == 0 && ctx->pkt.pkt_has_scalar_store_s1) { \
probe_noshuf_load(VA, SIZE, ctx->mem_idx); \
process_store(ctx, 1); \
} \
@@ -94,11 +94,11 @@
TCGLabel *noshuf_label = gen_new_label(); \
tcg_gen_brcondi_tl(TCG_COND_EQ, PRED, 0, noshuf_label); \
GET_EA; \
- if (insn->slot == 0 && ctx->pkt->pkt_has_scalar_store_s1) { \
+ if (insn->slot == 0 && ctx->pkt.pkt_has_scalar_store_s1) { \
probe_noshuf_load(EA, SIZE, ctx->mem_idx); \
} \
gen_set_label(noshuf_label); \
- if (insn->slot == 0 && ctx->pkt->pkt_has_scalar_store_s1) { \
+ if (insn->slot == 0 && ctx->pkt.pkt_has_scalar_store_s1) { \
process_store(ctx, 1); \
} \
} while (0)
diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h
index 9cdcbd64164..1fc185e3edd 100644
--- a/target/hexagon/translate.h
+++ b/target/hexagon/translate.h
@@ -28,7 +28,7 @@
typedef struct DisasContext {
DisasContextBase base;
- Packet *pkt;
+ Packet pkt;
Insn *insn;
const HexagonCPUDef *hex_def;
uint32_t next_PC;
diff --git a/target/hexagon/decode.c b/target/hexagon/decode.c
index c4cf430e5a2..15954518b83 100644
--- a/target/hexagon/decode.c
+++ b/target/hexagon/decode.c
@@ -834,15 +834,13 @@ int disassemble_hexagon(uint32_t *words, int nwords, bfd_vma pc,
.hex_version = HEX_VER_ANY, /* Allow decode to accept anything */
};
DisasContext ctx;
- Packet pkt;
memset(&ctx, 0, sizeof(DisasContext));
ctx.hex_def = &any_def;
- ctx.pkt = &pkt;
- if (decode_packet(&ctx, nwords, words, &pkt, true) > 0) {
- snprint_a_pkt_disas(buf, &pkt, words, pc, hex_def);
- return pkt.encod_pkt_size_in_bytes;
+ if (decode_packet(&ctx, nwords, words, &ctx.pkt, true) > 0) {
+ snprint_a_pkt_disas(buf, &ctx.pkt, words, pc, hex_def);
+ return ctx.pkt.encod_pkt_size_in_bytes;
} else {
for (int i = 0; i < nwords; i++) {
g_string_append_printf(buf, "0x" TARGET_FMT_lx "\t", words[i]);
diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c
index c7b9436c8d4..5d5adace4b3 100644
--- a/target/hexagon/genptr.c
+++ b/target/hexagon/genptr.c
@@ -382,7 +382,7 @@ static inline void gen_store_conditional8(DisasContext *ctx,
static TCGv gen_slotval(DisasContext *ctx)
{
int slotval =
- (ctx->pkt->pkt_has_scalar_store_s1 & 1) | (ctx->insn->slot << 1);
+ (ctx->pkt.pkt_has_scalar_store_s1 & 1) | (ctx->insn->slot << 1);
return tcg_constant_tl(slotval);
}
#endif
@@ -458,7 +458,7 @@ static void gen_write_new_pc_addr(DisasContext *ctx, TCGv addr,
tcg_gen_brcondi_tl(cond, pred, 1, pred_false);
}
- if (ctx->pkt->pkt_has_multi_cof) {
+ if (ctx->pkt.pkt_has_multi_cof) {
/* If there are multiple branches in a packet, ignore the second one */
tcg_gen_movcond_tl(TCG_COND_NE, hex_gpr[HEX_REG_PC],
ctx->branch_taken, tcg_constant_tl(0),
@@ -476,8 +476,8 @@ static void gen_write_new_pc_addr(DisasContext *ctx, TCGv addr,
static void gen_write_new_pc_pcrel(DisasContext *ctx, int pc_off,
TCGCond cond, TCGv pred)
{
- target_ulong dest = ctx->pkt->pc + pc_off;
- if (ctx->pkt->pkt_has_multi_cof) {
+ target_ulong dest = ctx->pkt.pc + pc_off;
+ if (ctx->pkt.pkt_has_multi_cof) {
gen_write_new_pc_addr(ctx, tcg_constant_tl(dest), cond, pred);
} else {
/* Defer this jump to the end of the TB */
@@ -528,7 +528,7 @@ static inline void gen_loop0r(DisasContext *ctx, TCGv RsV, int riV)
fIMMEXT(riV);
fPCALIGN(riV);
tcg_gen_mov_tl(get_result_gpr(ctx, HEX_REG_LC0), RsV);
- tcg_gen_movi_tl(get_result_gpr(ctx, HEX_REG_SA0), ctx->pkt->pc + riV);
+ tcg_gen_movi_tl(get_result_gpr(ctx, HEX_REG_SA0), ctx->pkt.pc + riV);
gen_set_usr_fieldi(ctx, USR_LPCFG, 0);
}
@@ -542,7 +542,7 @@ static inline void gen_loop1r(DisasContext *ctx, TCGv RsV, int riV)
fIMMEXT(riV);
fPCALIGN(riV);
tcg_gen_mov_tl(get_result_gpr(ctx, HEX_REG_LC1), RsV);
- tcg_gen_movi_tl(get_result_gpr(ctx, HEX_REG_SA1), ctx->pkt->pc + riV);
+ tcg_gen_movi_tl(get_result_gpr(ctx, HEX_REG_SA1), ctx->pkt.pc + riV);
}
static void gen_loop1i(DisasContext *ctx, int count, int riV)
@@ -555,7 +555,7 @@ static void gen_ploopNsr(DisasContext *ctx, int N, TCGv RsV, int riV)
fIMMEXT(riV);
fPCALIGN(riV);
tcg_gen_mov_tl(get_result_gpr(ctx, HEX_REG_LC0), RsV);
- tcg_gen_movi_tl(get_result_gpr(ctx, HEX_REG_SA0), ctx->pkt->pc + riV);
+ tcg_gen_movi_tl(get_result_gpr(ctx, HEX_REG_SA0), ctx->pkt.pc + riV);
gen_set_usr_fieldi(ctx, USR_LPCFG, N);
gen_pred_write(ctx, 3, tcg_constant_tl(0));
}
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
index 12c82fd6c5a..f26281e6711 100644
--- a/target/hexagon/translate.c
+++ b/target/hexagon/translate.c
@@ -156,8 +156,6 @@ static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
static void gen_end_tb(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
-
gen_exec_counters(ctx);
if (ctx->branch_cond != TCG_COND_NEVER) {
@@ -171,7 +169,7 @@ static void gen_end_tb(DisasContext *ctx)
gen_goto_tb(ctx, 0, ctx->branch_dest, true);
}
} else if (ctx->is_tight_loop &&
- pkt->insn[pkt->num_insns - 1].opcode == J2_endloop0) {
+ ctx->pkt.insn[ctx->pkt.num_insns - 1].opcode == J2_endloop0) {
/*
* When we're in a tight loop, we defer the endloop0 processing
* to take advantage of direct block chaining
@@ -266,11 +264,9 @@ static bool need_slot_cancelled(Packet *pkt)
static bool need_next_PC(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
-
/* Check for conditional control flow or HW loop end */
- for (int i = 0; i < pkt->num_insns; i++) {
- uint16_t opcode = pkt->insn[i].opcode;
+ for (int i = 0; i < ctx->pkt.num_insns; i++) {
+ uint16_t opcode = ctx->pkt.insn[i].opcode;
if (GET_ATTRIB(opcode, A_CONDEXEC) && GET_ATTRIB(opcode, A_COF)) {
return true;
}
@@ -353,8 +349,6 @@ static bool pkt_raises_exception(Packet *pkt)
static bool need_commit(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
-
/*
* If the short-circuit property is set to false, we'll always do the commit
*/
@@ -362,7 +356,7 @@ static bool need_commit(DisasContext *ctx)
return true;
}
- if (pkt_raises_exception(pkt)) {
+ if (pkt_raises_exception(&ctx->pkt)) {
return true;
}
@@ -409,11 +403,10 @@ static void mark_implicit_writes(DisasContext *ctx)
static void analyze_packet(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
ctx->read_after_write = false;
ctx->has_hvx_overlap = false;
- for (int i = 0; i < pkt->num_insns; i++) {
- Insn *insn = &pkt->insn[i];
+ for (int i = 0; i < ctx->pkt.num_insns; i++) {
+ Insn *insn = &ctx->pkt.insn[i];
ctx->insn = insn;
if (opcode_analyze[insn->opcode]) {
opcode_analyze[insn->opcode](ctx);
@@ -425,8 +418,7 @@ static void analyze_packet(DisasContext *ctx)
static void gen_start_packet(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
- target_ulong next_PC = ctx->base.pc_next + pkt->encod_pkt_size_in_bytes;
+ target_ulong next_PC = ctx->base.pc_next + ctx->pkt.encod_pkt_size_in_bytes;
int i;
/* Clear out the disassembly context */
@@ -468,13 +460,13 @@ static void gen_start_packet(DisasContext *ctx)
bitmap_zero(ctx->pregs_written, NUM_PREGS);
/* Initialize the runtime state for packet semantics */
- if (need_slot_cancelled(pkt)) {
+ if (need_slot_cancelled(&ctx->pkt)) {
tcg_gen_movi_tl(hex_slot_cancelled, 0);
}
ctx->branch_taken = NULL;
- if (pkt->pkt_has_cof) {
+ if (ctx->pkt.pkt_has_cof) {
ctx->branch_taken = tcg_temp_new();
- if (pkt->pkt_has_multi_cof) {
+ if (ctx->pkt.pkt_has_multi_cof) {
tcg_gen_movi_tl(ctx->branch_taken, 0);
}
if (need_next_PC(ctx)) {
@@ -503,7 +495,7 @@ static void gen_start_packet(DisasContext *ctx)
* Preload the predicated pred registers into ctx->new_pred_value[pred_num]
* Only endloop instructions conditionally write to pred registers
*/
- if (ctx->need_commit && pkt->pkt_has_endloop) {
+ if (ctx->need_commit && ctx->pkt.pkt_has_endloop) {
for (i = 0; i < ctx->preg_log_idx; i++) {
int pred_num = ctx->preg_log[i];
ctx->new_pred_value[pred_num] = tcg_temp_new();
@@ -542,13 +534,11 @@ static void gen_start_packet(DisasContext *ctx)
bool is_gather_store_insn(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
- Insn *insn = ctx->insn;
- if (GET_ATTRIB(insn->opcode, A_CVI_NEW) &&
- insn->new_value_producer_slot == 1) {
+ if (GET_ATTRIB(ctx->insn->opcode, A_CVI_NEW) &&
+ ctx->insn->new_value_producer_slot == 1) {
/* Look for gather instruction */
- for (int i = 0; i < pkt->num_insns; i++) {
- Insn *in = &pkt->insn[i];
+ for (int i = 0; i < ctx->pkt.num_insns; i++) {
+ Insn *in = &ctx->pkt.insn[i];
if (GET_ATTRIB(in->opcode, A_CVI_GATHER) && in->slot == 1) {
return true;
}
@@ -651,7 +641,7 @@ static bool slot_is_predicated(Packet *pkt, int slot_num)
void process_store(DisasContext *ctx, int slot_num)
{
- bool is_predicated = slot_is_predicated(ctx->pkt, slot_num);
+ bool is_predicated = slot_is_predicated(&ctx->pkt, slot_num);
TCGLabel *label_end = NULL;
/*
@@ -728,13 +718,12 @@ static void process_store_log(DisasContext *ctx)
* slot 1 and then slot 0. This will be important when
* the memory accesses overlap.
*/
- Packet *pkt = ctx->pkt;
- if (pkt->pkt_has_scalar_store_s1) {
- g_assert(!pkt->pkt_has_dczeroa);
+ if (ctx->pkt.pkt_has_scalar_store_s1) {
+ g_assert(!ctx->pkt.pkt_has_dczeroa);
process_store(ctx, 1);
}
- if (pkt->pkt_has_scalar_store_s0) {
- g_assert(!pkt->pkt_has_dczeroa);
+ if (ctx->pkt.pkt_has_scalar_store_s0) {
+ g_assert(!ctx->pkt.pkt_has_dczeroa);
process_store(ctx, 0);
}
}
@@ -742,7 +731,7 @@ static void process_store_log(DisasContext *ctx)
/* Zero out a 32-bit cache line */
static void process_dczeroa(DisasContext *ctx)
{
- if (ctx->pkt->pkt_has_dczeroa) {
+ if (ctx->pkt.pkt_has_dczeroa) {
/* Store 32 bytes of zero starting at (addr & ~0x1f) */
TCGv addr = tcg_temp_new();
TCGv_i64 zero = tcg_constant_i64(0);
@@ -776,7 +765,7 @@ static void gen_commit_hvx(DisasContext *ctx)
/* Early exit if not needed */
if (!ctx->need_commit) {
- g_assert(!pkt_has_hvx_store(ctx->pkt));
+ g_assert(!pkt_has_hvx_store(&ctx->pkt));
return;
}
@@ -810,25 +799,23 @@ static void gen_commit_hvx(DisasContext *ctx)
tcg_gen_gvec_mov(MO_64, dstoff, srcoff, size, size);
}
- if (pkt_has_hvx_store(ctx->pkt)) {
+ if (pkt_has_hvx_store(&ctx->pkt)) {
gen_helper_commit_hvx_stores(tcg_env);
}
}
static void update_exec_counters(DisasContext *ctx)
{
- Packet *pkt = ctx->pkt;
- int num_insns = pkt->num_insns;
int num_real_insns = 0;
int num_hvx_insns = 0;
- for (int i = 0; i < num_insns; i++) {
- if (!pkt->insn[i].is_endloop &&
- !pkt->insn[i].part1 &&
- !GET_ATTRIB(pkt->insn[i].opcode, A_IT_NOP)) {
+ for (int i = 0; i < ctx->pkt.num_insns; i++) {
+ if (!ctx->pkt.insn[i].is_endloop &&
+ !ctx->pkt.insn[i].part1 &&
+ !GET_ATTRIB(ctx->pkt.insn[i].opcode, A_IT_NOP)) {
num_real_insns++;
}
- if (GET_ATTRIB(pkt->insn[i].opcode, A_CVI)) {
+ if (GET_ATTRIB(ctx->pkt.insn[i].opcode, A_CVI)) {
num_hvx_insns++;
}
}
@@ -857,12 +844,11 @@ static void gen_commit_packet(DisasContext *ctx)
* store. Therefore, we call process_store_log before anything else
* involved in committing the packet.
*/
- Packet *pkt = ctx->pkt;
- bool has_store_s0 = pkt->pkt_has_scalar_store_s0;
+ bool has_store_s0 = ctx->pkt.pkt_has_scalar_store_s0;
bool has_store_s1 =
- (pkt->pkt_has_scalar_store_s1 && !ctx->s1_store_processed);
- bool has_hvx_store = pkt_has_hvx_store(pkt);
- if (pkt->pkt_has_dczeroa) {
+ (ctx->pkt.pkt_has_scalar_store_s1 && !ctx->s1_store_processed);
+ bool has_hvx_store = pkt_has_hvx_store(&ctx->pkt);
+ if (ctx->pkt.pkt_has_dczeroa) {
/*
* The dczeroa will be the store in slot 0, check that we don't have
* a store in slot 1 or an HVX store.
@@ -889,12 +875,11 @@ static void gen_commit_packet(DisasContext *ctx)
FIELD_DP32(mask, PROBE_PKT_SCALAR_HVX_STORES,
HAS_HVX_STORES, 1);
}
- if (has_store_s0 && slot_is_predicated(pkt, 0)) {
- mask =
- FIELD_DP32(mask, PROBE_PKT_SCALAR_HVX_STORES,
- S0_IS_PRED, 1);
+ if (has_store_s0 && slot_is_predicated(&ctx->pkt, 0)) {
+ mask = FIELD_DP32(mask, PROBE_PKT_SCALAR_HVX_STORES, S0_IS_PRED,
+ 1);
}
- if (has_store_s1 && slot_is_predicated(pkt, 1)) {
+ if (has_store_s1 && slot_is_predicated(&ctx->pkt, 1)) {
mask =
FIELD_DP32(mask, PROBE_PKT_SCALAR_HVX_STORES,
S1_IS_PRED, 1);
@@ -912,7 +897,7 @@ static void gen_commit_packet(DisasContext *ctx)
int args = 0;
args =
FIELD_DP32(args, PROBE_PKT_SCALAR_STORE_S0, MMU_IDX, ctx->mem_idx);
- if (slot_is_predicated(pkt, 0)) {
+ if (slot_is_predicated(&ctx->pkt, 0)) {
args =
FIELD_DP32(args, PROBE_PKT_SCALAR_STORE_S0, IS_PREDICATED, 1);
}
@@ -924,18 +909,18 @@ static void gen_commit_packet(DisasContext *ctx)
gen_reg_writes(ctx);
gen_pred_writes(ctx);
- if (pkt->pkt_has_hvx) {
+ if (ctx->pkt.pkt_has_hvx) {
gen_commit_hvx(ctx);
}
update_exec_counters(ctx);
- if (pkt->vhist_insn != NULL) {
+ if (ctx->pkt.vhist_insn != NULL) {
ctx->pre_commit = false;
- ctx->insn = pkt->vhist_insn;
- pkt->vhist_insn->generate(ctx);
+ ctx->insn = ctx->pkt.vhist_insn;
+ ctx->pkt.vhist_insn->generate(ctx);
}
- if (pkt->pkt_has_cof) {
+ if (ctx->pkt.pkt_has_cof) {
gen_end_tb(ctx);
}
}
@@ -944,7 +929,6 @@ static void decode_and_translate_packet(CPUHexagonState *env, DisasContext *ctx)
{
uint32_t words[PACKET_WORDS_MAX];
int nwords, words_read;
- Packet pkt;
int i;
nwords = read_packet_words(env, ctx, words);
@@ -953,22 +937,21 @@ static void decode_and_translate_packet(CPUHexagonState *env, DisasContext *ctx)
return;
}
- ctx->pkt = &pkt;
- words_read = decode_packet(ctx, nwords, words, &pkt, false);
+ words_read = decode_packet(ctx, nwords, words, &ctx->pkt, false);
if (words_read > 0) {
- pkt.pc = ctx->base.pc_next;
- if (pkt.pkt_has_write_conflict) {
+ ctx->pkt.pc = ctx->base.pc_next;
+ if (ctx->pkt.pkt_has_write_conflict) {
gen_exception_decode_fail(ctx, words_read,
HEX_CAUSE_REG_WRITE_CONFLICT);
return;
}
gen_start_packet(ctx);
- for (i = 0; i < pkt.num_insns; i++) {
- ctx->insn = &pkt.insn[i];
+ for (i = 0; i < ctx->pkt.num_insns; i++) {
+ ctx->insn = &ctx->pkt.insn[i];
gen_insn(ctx);
}
gen_commit_packet(ctx);
- ctx->base.pc_next += pkt.encod_pkt_size_in_bytes;
+ ctx->base.pc_next += ctx->pkt.encod_pkt_size_in_bytes;
} else {
gen_exception_decode_fail(ctx, nwords, HEX_CAUSE_INVALID_PACKET);
}
diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py
index 87b7f10d7fd..e7f90a0da11 100755
--- a/target/hexagon/gen_tcg_funcs.py
+++ b/target/hexagon/gen_tcg_funcs.py
@@ -72,7 +72,7 @@ def gen_tcg_func(f, tag, regs, imms):
for immlett, bits, immshift in imms:
declared.append(hex_common.imm_name(immlett))
- arguments = ", ".join(["ctx", "ctx->insn", "ctx->pkt"] + declared)
+ arguments = ", ".join(["ctx", "ctx->insn", "&ctx->pkt"] + declared)
f.write(f" emit_{tag}({arguments});\n")
elif hex_common.skip_qemu_helper(tag):
diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py
index c0e9f26aebe..e37d5a514f0 100755
--- a/target/hexagon/hex_common.py
+++ b/target/hexagon/hex_common.py
@@ -1144,7 +1144,7 @@ def helper_args(tag, regs, imms):
if need_pkt_has_multi_cof(tag):
args.append(HelperArg(
"i32",
- "tcg_constant_tl(ctx->pkt->pkt_has_multi_cof)",
+ "tcg_constant_tl(ctx->pkt.pkt_has_multi_cof)",
"uint32_t pkt_has_multi_cof"
))
if need_pkt_need_commit(tag):
@@ -1156,7 +1156,7 @@ def helper_args(tag, regs, imms):
if need_PC(tag):
args.append(HelperArg(
"i32",
- "tcg_constant_tl(ctx->pkt->pc)",
+ "tcg_constant_tl(ctx->pkt.pc)",
"target_ulong PC"
))
if need_next_PC(tag):
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread