]> git.ipfire.org Git - thirdparty/qemu.git/log
thirdparty/qemu.git
2 years agoHexagon (target/hexagon) Improve code gen for predicated HVX instructions
Taylor Simpson [Tue, 7 Mar 2023 02:58:28 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Improve code gen for predicated HVX instructions

The following improvements are made for predicated HVX instructions
    During gen_commit_hvx, unconditionally move the "new" value into
        the dest
    Don't set slot_cancelled
    Remove runtime bookkeeping of which registers were updated
    Reduce the cases where gen_log_vreg_write[_pair] is called
        It's only needed for special operands VxxV and VyV
    Remove gen_log_qreg_write

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-15-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Reduce manipulation of slot_cancelled
Taylor Simpson [Tue, 7 Mar 2023 02:58:27 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Reduce manipulation of slot_cancelled

We only need to track slot for predicated stores and predicated HVX
instructions.

Add arguments to the probe helper functions to indicate if the slot
is predicated.

Here is a simple example of the differences in the TCG code generated:

IN:
0x00400094:  0xf900c102 {       if (P0) R2 = and(R0,R1) }

BEFORE
 ---- 00400094
 mov_i32 slot_cancelled,$0x0
 mov_i32 new_r2,r2
 and_i32 tmp0,p0,$0x1
 brcond_i32 tmp0,$0x0,eq,$L1
 and_i32 tmp0,r0,r1
 mov_i32 new_r2,tmp0
 br $L2
 set_label $L1
 or_i32 slot_cancelled,slot_cancelled,$0x8
 set_label $L2
 mov_i32 r2,new_r2

AFTER
 ---- 00400094
 mov_i32 new_r2,r2
 and_i32 tmp0,p0,$0x1
 brcond_i32 tmp0,$0x0,eq,$L1
 and_i32 tmp0,r0,r1
 mov_i32 new_r2,tmp0
 br $L2
 set_label $L1
 set_label $L2
 mov_i32 r2,new_r2

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-14-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Remove gen_log_predicated_reg_write[_pair]
Taylor Simpson [Tue, 7 Mar 2023 02:58:26 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Remove gen_log_predicated_reg_write[_pair]

We assign the instruction destination register to hex_new_value[num]
instead of a TCG temp that gets copied back to hex_new_value[num].

We introduce new functions get_result_gpr[_pair] to facilitate getting
the proper destination register.

Since we preload hex_new_value for predicated instructions, we don't
need the check for slot_cancelled.  So, we call gen_log_reg_write instead.

We update the helper function generation and gen_tcg.h to maintain the
disable-hexagon-idef-parser configuration.

Here is a simple example of the differences in the TCG code generated:

IN:
0x00400094:  0xf900c102 {       if (P0) R2 = and(R0,R1) }

BEFORE
 ---- 00400094
 mov_i32 slot_cancelled,$0x0
 mov_i32 new_r2,r2
 mov_i32 loc2,$0x0
 and_i32 tmp0,p0,$0x1
 brcond_i32 tmp0,$0x0,eq,$L1
 and_i32 tmp0,r0,r1
 mov_i32 loc2,tmp0
 br $L2
 set_label $L1
 or_i32 slot_cancelled,slot_cancelled,$0x8
 set_label $L2
 and_i32 tmp0,slot_cancelled,$0x8
 movcond_i32 new_r2,tmp0,$0x0,loc2,new_r2,eq
 mov_i32 r2,new_r2

AFTER
 ---- 00400094
 mov_i32 slot_cancelled,$0x0
 mov_i32 new_r2,r2
 and_i32 tmp0,p0,$0x1
 brcond_i32 tmp0,$0x0,eq,$L1
 and_i32 tmp0,r0,r1
 mov_i32 new_r2,tmp0
 br $L2
 set_label $L1
 or_i32 slot_cancelled,slot_cancelled,$0x8
 set_label $L2
 mov_i32 r2,new_r2

We'll remove the unnecessary manipulation of slot_cancelled in a
subsequent patch.

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-13-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Change subtract from zero to change sign
Taylor Simpson [Tue, 7 Mar 2023 02:58:25 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Change subtract from zero to change sign

The F2_sffms instruction [r0 -= sfmpy(r1, r2)] doesn't properly
handle -0.  Previously we would negate the input operand by subtracting
from zero.  Instead, we negate by changing the sign bit.

Test case added to tests/tcg/hexagon/fpstuff.c

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-12-tsimpson@quicinc.com>

2 years agoHexagon (tests/tcg/hexagon) Enable HVX tests
Taylor Simpson [Tue, 7 Mar 2023 02:58:24 +0000 (18:58 -0800)] 
Hexagon (tests/tcg/hexagon) Enable HVX tests

Made possible by new toolchain container

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-11-tsimpson@quicinc.com>

2 years agoHexagon (tests/tcg/hexagon) Remove __builtin from scatter_gather
Taylor Simpson [Tue, 7 Mar 2023 02:58:23 +0000 (18:58 -0800)] 
Hexagon (tests/tcg/hexagon) Remove __builtin from scatter_gather

Replace __builtin_* with inline assembly
    The __builtin's are subject to change with different compiler
    releases, so might break
Mark arrays as aligned when accessed as HVX vectors
Clean up comments

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-10-tsimpson@quicinc.com>

2 years agoHexagon (tests/tcg/hexagon) Update preg_alias.c
Taylor Simpson [Tue, 7 Mar 2023 02:58:22 +0000 (18:58 -0800)] 
Hexagon (tests/tcg/hexagon) Update preg_alias.c

Add control registers (c4, c5) to clobbers list
Made possible by new toolchain container

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-9-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Analyze packet for HVX
Taylor Simpson [Tue, 7 Mar 2023 02:58:21 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Analyze packet for HVX

Extend the analyze_<tag> functions for HVX vector and predicate writes
Remove calls to ctx_log_vreg_write[_pair] from gen_tcg_funcs.py
During gen_start_packet, reload the predicated HVX registers into
    fugure_VRegs and tmp_VRegs

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-8-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Don't set pkt_has_store_s1 when not needed
Taylor Simpson [Tue, 7 Mar 2023 02:58:20 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Don't set pkt_has_store_s1 when not needed

The pkt_has_store_s1 field in CPUHexagonState is only needed in generated
helpers for scalar load instructions.  See check_noshuf and mem_load[1248]
in op_helper.c.

We add logic in gen_analyze_funcs.py to set need_pkt_has_store_s1 in
DisasContext when it is needed at runtime.

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-7-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Analyze packet before generating TCG
Taylor Simpson [Tue, 7 Mar 2023 02:58:19 +0000 (18:58 -0800)] 
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>

2 years agoHexagon (target/hexagon) Add overrides for dealloc-return instructions
Taylor Simpson [Tue, 7 Mar 2023 02:58:18 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Add overrides for dealloc-return instructions

These instructions perform a deallocframe+return (jumpr r31)

Add overrides for
    L4_return
    SL2_return
    L4_return_t
    L4_return_f
    L4_return_tnew_pt
    L4_return_fnew_pt
    L4_return_tnew_pnt
    L4_return_fnew_pnt
    SL2_return_t
    SL2_return_f
    SL2_return_tnew
    SL2_return_fnew

This patch eliminates the last helper that uses write_new_pc, so we
remove it from op_helper.c

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-5-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Add overrides for endloop1/endloop01
Taylor Simpson [Tue, 7 Mar 2023 02:58:17 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Add overrides for endloop1/endloop01

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-4-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Add overrides for callr
Taylor Simpson [Tue, 7 Mar 2023 02:58:16 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Add overrides for callr

Add overrides for
    J2_callr
    J2_callrt
    J2_callrf

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-3-tsimpson@quicinc.com>

2 years agoHexagon (target/hexagon) Add overrides for jumpr31 instructions
Taylor Simpson [Tue, 7 Mar 2023 02:58:15 +0000 (18:58 -0800)] 
Hexagon (target/hexagon) Add overrides for jumpr31 instructions

Add overrides for
    SL2_jumpr31            Unconditional
    SL2_jumpr31_t          Predicated true (old value)
    SL2_jumpr31_f          Predicated false (old value)
    SL2_jumpr31_tnew       Predicated true (new value)
    SL2_jumpr31_fnew       Predicated false (new value)

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-2-tsimpson@quicinc.com>

2 years agotarget/hexagon/idef-parser: Remove unused code paths
Anton Johansson [Tue, 7 Mar 2023 03:25:56 +0000 (19:25 -0800)] 
target/hexagon/idef-parser: Remove unused code paths

Removes code paths used by COF instructions, which are no longer
processed by idef-parser.

Tested-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230131223133.8592-1-anjo@rev.ng>

2 years agotarget/hexagon/idef-parser: Elide mov in gen_pred_assign
Richard Henderson [Mon, 6 Mar 2023 22:57:24 +0000 (14:57 -0800)] 
target/hexagon/idef-parser: Elide mov in gen_pred_assign

Merge mov with andi.

Suggested-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Message-Id: <20230306225724.2105263-1-richard.henderson@linaro.org>

2 years agoHexagon (target/hexagon) Restore --disable-hexagon-idef-parser build
Taylor Simpson [Mon, 6 Mar 2023 17:25:15 +0000 (09:25 -0800)] 
Hexagon (target/hexagon) Restore --disable-hexagon-idef-parser build

The --disable-hexagon-idef-parser configuration was broken by this patch
2feacf60c23ba6 (target/hexagon: Drop tcg_temp_free from C code)

That config is not tested by CI

Fix is simple: Mark a few TCGv variables as unused

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230306172515.346813-1-tsimpson@quicinc.com>

2 years agoMerge tag 'pull-tcg-20230305' of https://gitlab.com/rth7680/qemu into staging
Peter Maydell [Mon, 6 Mar 2023 10:20:04 +0000 (10:20 +0000)] 
Merge tag 'pull-tcg-20230305' of https://gitlab.com/rth7680/qemu into staging

tcg: Merge two sequential labels
accel/tcg: Retain prot flags from tlb_fill
accel/tcg: Honor TLB_DISCARD_WRITE in atomic_mmu_lookup
accel/tcg: Honor TLB_WATCHPOINTS in atomic_mmu_lookup
target/sparc: Use tlb_set_page_full
include/qemu/cpuid: Introduce xgetbv_low
tcg/i386: Mark Win64 call-saved vector regs as reserved
tcg: Decode the operand to INDEX_op_mb in dumps

Portion of the target/ patchset which eliminates use of tcg_temp_free*
Portion of the target/ patchset which eliminates use of tcg_const*

# -----BEGIN PGP SIGNATURE-----
#
# iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmQFNegdHHJpY2hhcmQu
# aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV9WsQf+Ljs3WA5lvMPlpaSn
# Li35ay/A1f2cU6FYspl81su4/c7Ft9Q8rkPF4K1n1rwuvqR91G25WTQIrw8NFPXZ
# VU9GNGQc1qIVYO/hAH3fvgDmPxUF+tJDgT/BTNc1ldy6/v7QM3GWcEy8+O3H9S+K
# uj6vIuWke0ukq6ZGmSAZnXEaJFq3HU26mcP4KxDxfIUcezMtDVp6QevqzVxM65aa
# pUDh3qtsLGOxIYwthvu6avMQXORBhSB75awCuYH4QPJRpr3ahigcGsCr2gdVAQ8p
# R7BbpUUdK5Huos971oouJrt5FwwbVgGEx78eF27sl0H8QMoNhsfyn6PcN8nPENLJ
# MZYd+w==
# =8goQ
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon 06 Mar 2023 00:38:00 GMT
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* tag 'pull-tcg-20230305' of https://gitlab.com/rth7680/qemu: (84 commits)
  target/xtensa: Avoid tcg_const_i32
  target/xtensa: Split constant in bit shift
  target/xtensa: Use tcg_gen_subfi_i32 in translate_sll
  target/xtensa: Avoid tcg_const_i32 in translate_l32r
  target/xtensa: Tidy translate_clamps
  target/xtensa: Tidy translate_bb
  target/sparc: Avoid tcg_const_{tl,i32}
  target/s390x: Split out gen_ri2
  target/riscv: Avoid tcg_const_*
  target/microblaze: Avoid tcg_const_* throughout
  target/i386: Simplify POPF
  target/hexagon/idef-parser: Use gen_constant for gen_extend_tcg_width_op
  target/hexagon/idef-parser: Use gen_tmp for gen_rvalue_pred
  target/hexagon/idef-parser: Use gen_tmp for gen_pred_assign
  target/hexagon/idef-parser: Use gen_tmp for LPCFG
  target/hexagon: Use tcg_constant_* for gen_constant_from_imm
  docs/devel/tcg-ops: Drop recommendation to free temps
  tracing: remove transform.py
  include/exec/gen-icount: Drop tcg_temp_free in gen_tb_start
  target/tricore: Drop tcg_temp_free
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2 years agotarget/xtensa: Avoid tcg_const_i32
Richard Henderson [Sun, 26 Feb 2023 23:21:36 +0000 (13:21 -1000)] 
target/xtensa: Avoid tcg_const_i32

All remaining uses are strictly read-only.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Split constant in bit shift
Richard Henderson [Sun, 26 Feb 2023 23:21:14 +0000 (13:21 -1000)] 
target/xtensa: Split constant in bit shift

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Use tcg_gen_subfi_i32 in translate_sll
Richard Henderson [Sun, 26 Feb 2023 23:19:46 +0000 (13:19 -1000)] 
target/xtensa: Use tcg_gen_subfi_i32 in translate_sll

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Avoid tcg_const_i32 in translate_l32r
Richard Henderson [Sun, 26 Feb 2023 23:19:01 +0000 (13:19 -1000)] 
target/xtensa: Avoid tcg_const_i32 in translate_l32r

Use addi on the addition side and tcg_constant_i32 on the other.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Tidy translate_clamps
Richard Henderson [Sun, 26 Feb 2023 22:58:20 +0000 (12:58 -1000)] 
target/xtensa: Tidy translate_clamps

All writes to arg[0].out; use tcg_constant_i32.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Tidy translate_bb
Richard Henderson [Sun, 26 Feb 2023 22:56:56 +0000 (12:56 -1000)] 
target/xtensa: Tidy translate_bb

Replace ifdefs with C, tcg_const_i32 with tcg_constant_i32.
We only need a single temporary for this.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Avoid tcg_const_{tl,i32}
Richard Henderson [Sun, 26 Feb 2023 21:15:00 +0000 (11:15 -1000)] 
target/sparc: Avoid tcg_const_{tl,i32}

All remaining uses are strictly read-only.

Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/s390x: Split out gen_ri2
Richard Henderson [Mon, 27 Feb 2023 03:55:31 +0000 (17:55 -1000)] 
target/s390x: Split out gen_ri2

Use tcg_constant_i64.  Adjust in2_mri2_* to allocate a new
temporary for the output, using gen_ri2 for the address.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/riscv: Avoid tcg_const_*
Richard Henderson [Sun, 26 Feb 2023 19:15:34 +0000 (09:15 -1000)] 
target/riscv: Avoid tcg_const_*

All uses are strictly read-only.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/microblaze: Avoid tcg_const_* throughout
Richard Henderson [Sun, 26 Feb 2023 01:42:20 +0000 (15:42 -1000)] 
target/microblaze: Avoid tcg_const_* throughout

All uses are strictly read-only.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/i386: Simplify POPF
Richard Henderson [Sat, 25 Feb 2023 23:24:35 +0000 (13:24 -1000)] 
target/i386: Simplify POPF

Compute the eflags write mask separately, leaving one call
to the helper.  Use tcg_constant_i32.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon/idef-parser: Use gen_constant for gen_extend_tcg_width_op
Richard Henderson [Mon, 27 Feb 2023 03:12:05 +0000 (17:12 -1000)] 
target/hexagon/idef-parser: Use gen_constant for gen_extend_tcg_width_op

We already have a temporary, res, which we can use for the intermediate
shift result.  Simplify the constant to -1 instead of 0xf*f.
This was the last use of gen_tmp_value, so remove it.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon/idef-parser: Use gen_tmp for gen_rvalue_pred
Richard Henderson [Mon, 27 Feb 2023 03:00:35 +0000 (17:00 -1000)] 
target/hexagon/idef-parser: Use gen_tmp for gen_rvalue_pred

The allocation is immediately followed by either tcg_gen_mov_i32
or gen_read_preg (which contains tcg_gen_mov_i32), so the zero
initialization is immediately discarded.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon/idef-parser: Use gen_tmp for gen_pred_assign
Richard Henderson [Mon, 27 Feb 2023 02:58:38 +0000 (16:58 -1000)] 
target/hexagon/idef-parser: Use gen_tmp for gen_pred_assign

The allocation is immediately followed by tcg_gen_mov_i32,
so the initial assignment of zero is discarded.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon/idef-parser: Use gen_tmp for LPCFG
Richard Henderson [Mon, 27 Feb 2023 02:44:05 +0000 (16:44 -1000)] 
target/hexagon/idef-parser: Use gen_tmp for LPCFG

The GET_USR_FIELD macro initializes the output, so the initial assignment
of zero is discarded.  This is the only use of get_tmp_value outside of
parser-helper.c, so make it static.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon: Use tcg_constant_* for gen_constant_from_imm
Richard Henderson [Mon, 27 Feb 2023 02:19:36 +0000 (16:19 -1000)] 
target/hexagon: Use tcg_constant_* for gen_constant_from_imm

Rename from gen_tmp_value_from_imm to match gen_constant vs gen_tmp.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agodocs/devel/tcg-ops: Drop recommendation to free temps
Richard Henderson [Sat, 25 Feb 2023 08:48:05 +0000 (22:48 -1000)] 
docs/devel/tcg-ops: Drop recommendation to free temps

Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotracing: remove transform.py
Richard Henderson [Sat, 25 Feb 2023 09:41:12 +0000 (23:41 -1000)] 
tracing: remove transform.py

This file, and a couple of uses, got left behind when the
tcg stuff was removed from tracetool.

Fixes: 126d4123c50a ("tracing: excise the tcg related from tracetool")
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoinclude/exec/gen-icount: Drop tcg_temp_free in gen_tb_start
Richard Henderson [Sat, 25 Feb 2023 08:10:35 +0000 (22:10 -1000)] 
include/exec/gen-icount: Drop tcg_temp_free in gen_tb_start

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/tricore: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 07:50:24 +0000 (21:50 -1000)] 
target/tricore: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/mips: Fix trans_mult_acc return
Richard Henderson [Sat, 25 Feb 2023 05:35:02 +0000 (19:35 -1000)] 
target/mips: Fix trans_mult_acc return

Success from trans_* subroutines should be true.

Fixes: 5fa38eedbd ("target/mips: Convert Vr54xx MACC* opcodes to decodetree")
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/mips: Drop tcg_temp_free from mips16e_translate.c.inc
Richard Henderson [Sat, 25 Feb 2023 05:21:28 +0000 (19:21 -1000)] 
target/mips: Drop tcg_temp_free from mips16e_translate.c.inc

Translators are no longer required to free tcg temporaries.

Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/i386: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 04:56:08 +0000 (18:56 -1000)] 
target/i386: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 08:02:33 +0000 (22:02 -1000)] 
target/xtensa: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/xtensa: Drop reset_sar_tracker
Richard Henderson [Sat, 25 Feb 2023 07:53:49 +0000 (21:53 -1000)] 
target/xtensa: Drop reset_sar_tracker

Translators are no longer required to free tcg temporaries.
Remove sar_m32_allocated, as sar_m32 non-null is equivalent.

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 07:37:17 +0000 (21:37 -1000)] 
target/sparc: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Drop free_compare
Richard Henderson [Sat, 25 Feb 2023 07:32:54 +0000 (21:32 -1000)] 
target/sparc: Drop free_compare

Translators are no longer required to free tcg temporaries.
Remove the g1 and g2 members of DisasCompare, as they were
used to track which temps needed to be freed.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Remove egress label in disas_sparc_context
Richard Henderson [Sat, 25 Feb 2023 07:29:17 +0000 (21:29 -1000)] 
target/sparc: Remove egress label in disas_sparc_context

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Drop get_temp_i32
Richard Henderson [Sat, 25 Feb 2023 07:26:59 +0000 (21:26 -1000)] 
target/sparc: Drop get_temp_i32

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.
Replace the few uses with tcg_temp_new_i32.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Drop get_temp_tl
Richard Henderson [Sat, 25 Feb 2023 07:24:23 +0000 (21:24 -1000)] 
target/sparc: Drop get_temp_tl

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.
Replace the few uses with tcg_temp_new.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sh4: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 07:21:32 +0000 (21:21 -1000)] 
target/sh4: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/rx: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 06:31:26 +0000 (20:31 -1000)] 
target/rx: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/riscv: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 06:28:43 +0000 (20:28 -1000)] 
target/riscv: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/riscv: Drop temp_new
Richard Henderson [Sat, 25 Feb 2023 06:27:57 +0000 (20:27 -1000)] 
target/riscv: Drop temp_new

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.
Replace the few uses with tcg_temp_new.

Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/riscv: Drop ftemp_new
Richard Henderson [Sat, 25 Feb 2023 06:25:02 +0000 (20:25 -1000)] 
target/riscv: Drop ftemp_new

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.
Replace the few uses with tcg_temp_new_i64.

Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/ppc: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 06:16:38 +0000 (20:16 -1000)] 
target/ppc: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/openrisc: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 05:52:13 +0000 (19:52 -1000)] 
target/openrisc: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/nios2: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 05:50:43 +0000 (19:50 -1000)] 
target/nios2: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/microblaze: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 05:19:12 +0000 (19:19 -1000)] 
target/microblaze: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/m68k: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 05:16:49 +0000 (19:16 -1000)] 
target/m68k: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/m68k: Drop free_cond
Richard Henderson [Sat, 25 Feb 2023 05:12:09 +0000 (19:12 -1000)] 
target/m68k: Drop free_cond

Translators are no longer required to free tcg temporaries.
Remove the g1 and g2 members of DisasCompare, as they were
used to track which temps needed to be freed.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/m68k: Drop mark_to_release
Richard Henderson [Sat, 25 Feb 2023 05:09:19 +0000 (19:09 -1000)] 
target/m68k: Drop mark_to_release

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/loongarch: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 05:06:42 +0000 (19:06 -1000)] 
target/loongarch: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Song Gao <gaosong@loongson.cn>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/loongarch: Drop temp_new
Richard Henderson [Sat, 25 Feb 2023 05:05:39 +0000 (19:05 -1000)] 
target/loongarch: Drop temp_new

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.
Replace the few uses with tcg_temp_new.

Reviewed-by: Song Gao <gaosong@loongson.cn>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hppa: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 04:52:25 +0000 (18:52 -1000)] 
target/hppa: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon/idef-parser: Drop HexValue.is_manual
Richard Henderson [Sat, 25 Feb 2023 04:48:00 +0000 (18:48 -1000)] 
target/hexagon/idef-parser: Drop HexValue.is_manual

This field is no longer used.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon/idef-parser: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 04:40:56 +0000 (18:40 -1000)] 
target/hexagon/idef-parser: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.
This removes gen_rvalue_free, gen_rvalue_free_manual and
free_variables, whose only purpose was to emit tcg_temp_free.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon: Drop tcg_temp_free from gen_tcg_funcs.py
Richard Henderson [Sat, 25 Feb 2023 04:33:03 +0000 (18:33 -1000)] 
target/hexagon: Drop tcg_temp_free from gen_tcg_funcs.py

Translators are no longer required to free tcg temporaries.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hexagon: Drop tcg_temp_free from C code
Richard Henderson [Sat, 25 Feb 2023 04:27:22 +0000 (18:27 -1000)] 
target/hexagon: Drop tcg_temp_free from C code

Translators are no longer required to free tcg temporaries.

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/cris: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 04:22:12 +0000 (18:22 -1000)] 
target/cris: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/cris: Drop addr from dec10_ind_move_m_pr
Richard Henderson [Sat, 25 Feb 2023 04:20:56 +0000 (18:20 -1000)] 
target/cris: Drop addr from dec10_ind_move_m_pr

This variable is not used, only allocated and freed.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/cris: Drop cris_alu_m_free_temps
Richard Henderson [Sat, 25 Feb 2023 04:18:10 +0000 (18:18 -1000)] 
target/cris: Drop cris_alu_m_free_temps

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/cris: Drop cris_alu_free_temps
Richard Henderson [Sat, 25 Feb 2023 04:14:58 +0000 (18:14 -1000)] 
target/cris: Drop cris_alu_free_temps

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/avr: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 04:12:28 +0000 (18:12 -1000)] 
target/avr: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/avr: Drop R from trans_COM
Richard Henderson [Sat, 25 Feb 2023 04:11:32 +0000 (18:11 -1000)] 
target/avr: Drop R from trans_COM

This variable is not used, only allocated and freed.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/avr: Drop DisasContext.free_skip_var0
Richard Henderson [Sat, 25 Feb 2023 04:05:08 +0000 (18:05 -1000)] 
target/avr: Drop DisasContext.free_skip_var0

Translators are no longer required to free tcg temporaries,
therefore there's no need to record for later freeing.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator.h
Richard Henderson [Sat, 25 Feb 2023 04:02:13 +0000 (18:02 -1000)] 
target/arm: Drop tcg_temp_free from translator.h

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-vfp.c
Richard Henderson [Sat, 25 Feb 2023 04:01:37 +0000 (18:01 -1000)] 
target/arm: Drop tcg_temp_free from translator-vfp.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-sve.c
Richard Henderson [Sat, 25 Feb 2023 03:56:09 +0000 (17:56 -1000)] 
target/arm: Drop tcg_temp_free from translator-sve.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-sme.c
Richard Henderson [Sat, 25 Feb 2023 03:51:25 +0000 (17:51 -1000)] 
target/arm: Drop tcg_temp_free from translator-sme.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-neon.c
Richard Henderson [Sat, 25 Feb 2023 03:50:17 +0000 (17:50 -1000)] 
target/arm: Drop tcg_temp_free from translator-neon.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-mve.c
Richard Henderson [Sat, 25 Feb 2023 03:46:06 +0000 (17:46 -1000)] 
target/arm: Drop tcg_temp_free from translator-mve.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-m-nocp.c
Richard Henderson [Sat, 25 Feb 2023 03:41:07 +0000 (17:41 -1000)] 
target/arm: Drop tcg_temp_free from translator-m-nocp.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator-a64.c
Richard Henderson [Sat, 25 Feb 2023 03:31:26 +0000 (17:31 -1000)] 
target/arm: Drop tcg_temp_free from translator-a64.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop new_tmp_a64_zero
Richard Henderson [Sat, 25 Feb 2023 03:18:52 +0000 (17:18 -1000)] 
target/arm: Drop new_tmp_a64_zero

Only the use within cpu_reg requires a writable temp,
so inline new_tmp_a64_zero there.  All other uses are
fine with a constant temp, so use tcg_constant_i64(0).

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop new_tmp_a64
Richard Henderson [Sat, 25 Feb 2023 03:14:47 +0000 (17:14 -1000)] 
target/arm: Drop new_tmp_a64

This is now a simple wrapper for tcg_temp_new_i64.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop DisasContext.tmp_a64
Richard Henderson [Sat, 25 Feb 2023 03:10:42 +0000 (17:10 -1000)] 
target/arm: Drop DisasContext.tmp_a64

Translators are no longer required to free tcg temporaries,
therefore there's no need to record temps for later freeing.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Drop tcg_temp_free from translator.c
Richard Henderson [Sat, 25 Feb 2023 03:05:26 +0000 (17:05 -1000)] 
target/arm: Drop tcg_temp_free from translator.c

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Remove value_global from DisasCompare
Richard Henderson [Sat, 25 Feb 2023 02:55:14 +0000 (16:55 -1000)] 
target/arm: Remove value_global from DisasCompare

This field was only used to avoid freeing globals.
Since we no longer free any temps, this is dead.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/arm: Remove arm_free_cc, a64_free_cc
Richard Henderson [Sat, 25 Feb 2023 02:52:26 +0000 (16:52 -1000)] 
target/arm: Remove arm_free_cc, a64_free_cc

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/alpha: Drop tcg_temp_free
Richard Henderson [Sat, 25 Feb 2023 02:48:51 +0000 (16:48 -1000)] 
target/alpha: Drop tcg_temp_free

Translators are no longer required to free tcg temporaries.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoaccel/tcg: Remove translator_loop_temp_check
Richard Henderson [Sat, 25 Feb 2023 02:32:11 +0000 (16:32 -1000)] 
accel/tcg: Remove translator_loop_temp_check

Finish removing tcg temp free accounting interfaces.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg: Remove tcg_check_temp_count, tcg_clear_temp_count
Richard Henderson [Sat, 25 Feb 2023 02:15:18 +0000 (16:15 -1000)] 
tcg: Remove tcg_check_temp_count, tcg_clear_temp_count

Since all temps allocated by guest front-ends are now TEMP_TB,
and we don't recycle TEMP_TB, there's no point in requiring
that the front-ends free the temps at all.  Begin by dropping
the inner-most checks that all temps have been freed.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg: Decode the operand to INDEX_op_mb in dumps
Richard Henderson [Fri, 19 Feb 2021 01:05:55 +0000 (17:05 -0800)] 
tcg: Decode the operand to INDEX_op_mb in dumps

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/i386: Mark Win64 call-saved vector regs as reserved
Richard Henderson [Mon, 7 Nov 2022 21:39:26 +0000 (08:39 +1100)] 
tcg/i386: Mark Win64 call-saved vector regs as reserved

While we do not include these in tcg_target_reg_alloc_order,
and therefore they ought never be allocated, it seems safer
to mark them reserved as well.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoinclude/qemu/cpuid: Introduce xgetbv_low
Richard Henderson [Tue, 25 Oct 2022 08:40:48 +0000 (18:40 +1000)] 
include/qemu/cpuid: Introduce xgetbv_low

Replace the two uses of asm to expand xgetbv with an inline function.
Since one of the two has been using the mnemonic, assume that the
comment about "older versions of the assember" is obsolete, as even
that is 4 years old.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoaccel/tcg: Trigger watchpoints from atomic_mmu_lookup
Richard Henderson [Thu, 23 Feb 2023 08:41:01 +0000 (22:41 -1000)] 
accel/tcg: Trigger watchpoints from atomic_mmu_lookup

Fixes a bug in that we weren't reporting these changes.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agosoftmmu: Check watchpoints for read+write at once
Richard Henderson [Thu, 23 Feb 2023 08:16:51 +0000 (22:16 -1000)] 
softmmu: Check watchpoints for read+write at once

Atomic operations are read-modify-write, and we'd like to
be able to test both read and write with one call.  This is
easy enough, with BP_MEM_READ | BP_MEM_WRITE.

Add BP_HIT_SHIFT to make it easy to set BP_WATCHPOINT_HIT_*.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoaccel/tcg: Honor TLB_DISCARD_WRITE in atomic_mmu_lookup
Richard Henderson [Thu, 23 Feb 2023 09:05:01 +0000 (23:05 -1000)] 
accel/tcg: Honor TLB_DISCARD_WRITE in atomic_mmu_lookup

Using an atomic write or read-write insn on ROM is basically
a happens-never case.  Handle it via stop-the-world, which
will generate non-atomic serial code, where we can correctly
ignore the write while producing the correct read result.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoaccel/tcg: Retain prot flags from tlb_fill
Richard Henderson [Thu, 23 Feb 2023 03:08:51 +0000 (17:08 -1000)] 
accel/tcg: Retain prot flags from tlb_fill

While changes are made to prot within tlb_set_page_full, they are
an implementation detail of softmmu.  Retain the original for any
target use of probe_access_full.

Fixes: 4047368938f6 ("accel/tcg: Introduce tlb_set_page_full")
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/sparc: Use tlb_set_page_full
Richard Henderson [Thu, 23 Feb 2023 00:31:40 +0000 (14:31 -1000)] 
target/sparc: Use tlb_set_page_full

Pass CPUTLBEntryFull to get_physical_address instead
of a collection of pointers.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg: Merge two sequential labels
Richard Henderson [Fri, 3 Mar 2023 22:22:02 +0000 (14:22 -0800)] 
tcg: Merge two sequential labels

Remove the first label and redirect all uses to the second.

Tested-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>