qemu-e2k/target
Taylor Simpson 10849c2623 Hexagon (target/hexagon) Analyze packet before generating TCG
We create a new generator that creates an analyze_<tag> function for
each instruction.  Currently, these functions record the writes to
R, P, and C registers by calling ctx_log_reg_write[_pair] or
ctx_log_pred_write.

During gen_start_packet, we invoke the analyze_<tag> function for
each instruction in the packet, and we mark the implicit register
and predicate writes.

Doing the analysis up front has several advantages
- We remove calls to ctx_log_* from gen_tcg_funcs.py and genptr.c
- After the analysis is performed, we can initialize hex_new_value
  for each of the predicated assignments rather than during TCG
  generation for the instructions
- This is a stepping stone for future work where the analysis will
  include the set of registers that are read.  In cases where
  the packet doesn't have an overlap between the registers that are
  written and registers that are read, we can avoid the intermediate
  step of writing to hex_new_value.  Note that other checks will also
  be needed (e.g., no instructions can raise an exception).

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-6-tsimpson@quicinc.com>
2023-03-06 20:47:12 -08:00
..
alpha
arm target/arm: Drop tcg_temp_free from translator.h 2023-03-05 13:44:07 -08:00
avr target/avr: Drop tcg_temp_free 2023-03-05 13:44:07 -08:00
cris target/cris: Drop tcg_temp_free 2023-03-05 13:44:07 -08:00
hexagon Hexagon (target/hexagon) Analyze packet before generating TCG 2023-03-06 20:47:12 -08:00
hppa target/hppa: Drop tcg_temp_free 2023-03-05 13:44:07 -08:00
i386 target/i386: Simplify POPF 2023-03-05 13:45:31 -08:00
loongarch target/loongarch: Drop tcg_temp_free 2023-03-05 13:44:07 -08:00
m68k target/m68k: Drop tcg_temp_free 2023-03-05 13:44:07 -08:00
microblaze target/microblaze: Avoid tcg_const_* throughout 2023-03-05 13:45:44 -08:00
mips target/mips: Fix trans_mult_acc return 2023-03-05 13:44:08 -08:00
nios2 target/nios2: Drop tcg_temp_free 2023-03-05 13:44:08 -08:00
openrisc target/openrisc: Drop tcg_temp_free 2023-03-05 13:44:08 -08:00
ppc target/ppc: Drop tcg_temp_free 2023-03-05 13:44:08 -08:00
riscv target/riscv: Avoid tcg_const_* 2023-03-05 13:46:13 -08:00
rx target/rx: Drop tcg_temp_free 2023-03-05 13:44:08 -08:00
s390x target/s390x: Split out gen_ri2 2023-03-05 13:46:26 -08:00
sh4 target/sh4: Drop tcg_temp_free 2023-03-05 13:44:08 -08:00
sparc target/sparc: Avoid tcg_const_{tl,i32} 2023-03-05 13:46:39 -08:00
tricore target/tricore: Drop tcg_temp_free 2023-03-05 13:44:08 -08:00
xtensa target/xtensa: Avoid tcg_const_i32 2023-03-05 13:47:25 -08:00
Kconfig
meson.build