qemu/tests/tcg/hexagon
Marco Liebel 3fd49e2217 Hexagon (target/hexagon) Fix assignment to tmp registers
The order in which instructions are generated by gen_insn() influences
assignment to tmp registers. During generation, tmp instructions (e.g.
generate_V6_vassign_tmp) use vreg_src_off() to determine what kind of
register to use as source. If some instruction (e.g.
generate_V6_vmpyowh_64_acc) uses a tmp register but is generated prior
to the corresponding tmp instruction, the vregs_updated_tmp bit map
isn't updated in time.

Exmple:
    { v14.tmp = v16; v25 = v14 } This works properly because
    generate_V6_vassign_tmp is generated before generate_V6_vassign
    and the bit map is updated.

    { v15:14.tmp = vcombine(v21, v16); v25:24 += vmpyo(v18.w,v14.h) }
    This does not work properly because vmpyo is generated before
    vcombine and therefore the bit map does not yet know that there's
    a tmp register.

The parentheses in the decoding function were in the wrong place.
Moving them to the correct location makes shuffling of .tmp vector
registers work as expected.

Signed-off-by: Marco Liebel <quic_mliebel@quicinc.com>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Tested-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Brian Cain <bcain@quicinc.com>
Message-Id: <20230522174708.464197-1-quic_mliebel@quicinc.com>
2023-05-26 07:03:41 -07:00
..
atomics.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
brev.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
circ.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
crt.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
dual_stores.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
first.S
float_convd.ref Hexagon (tests/tcg/hexagon) reference file for float_convd 2022-07-31 16:22:09 -07:00
float_convs.ref tests/tcg/multiarch: Read fp flags before printf 2022-01-18 16:44:16 +00:00
float_madds.ref tests/tcg/multiarch: Read fp flags before printf 2022-01-18 16:44:16 +00:00
fpstuff.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
hex_sigsegv.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
hex_test.h Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
hvx_histogram_input.h Hexagon HVX (tests/tcg/hexagon) histogram test 2021-11-03 16:01:38 -05:00
hvx_histogram_row.h Hexagon HVX (tests/tcg/hexagon) histogram test 2021-11-03 16:01:38 -05:00
hvx_histogram_row.S Hexagon HVX (tests/tcg/hexagon) histogram test 2021-11-03 16:01:38 -05:00
hvx_histogram.c Hexagon HVX (tests/tcg/hexagon) histogram test 2021-11-03 16:01:38 -05:00
hvx_misc.c Hexagon (target/hexagon) Fix assignment to tmp registers 2023-05-26 07:03:41 -07:00
hvx_misc.h Hexagon (tests/tcg/hexagon) Move HVX test infra to header file 2023-04-21 09:32:52 -07:00
invalid-slots.c Hexagon (decode): look for pkts with multiple insns at the same slot 2023-05-18 12:40:52 -07:00
load_align.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
load_unpack.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
Makefile.target Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
mem_noshuf_exception.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
mem_noshuf.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
misc.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
multi_result.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
overflow.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
preg_alias.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
read_write_overlap.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
reg_mut.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
scatter_gather.c Hexagon (tests/tcg/hexagon) Remove __builtin from scatter_gather 2023-03-06 20:47:12 -08:00
signal_context.c linux-user/hexagon: fix signal context save & restore 2023-01-05 09:19:02 -08:00
test_abs.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_bitcnt.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_bitsplit.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_call.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_clobber.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_cmp.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_dotnew.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_ext.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_fibonacci.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_hl.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_hwloops.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_jmp.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_lsr.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_mpyi.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_packet.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_reorder.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_round.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vavgw.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vcmpb.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vcmpw.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vlsrw.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vmaxh.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vminh.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vpmpyh.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
test_vspliceb.S target/hexagon: import additional tests 2022-12-16 12:30:28 -08:00
usr.c Hexagon (tests/tcg/hexagon) Clean up Hexagon check-tcg tests 2023-05-26 07:03:41 -07:00
v6mpy_ref.c.inc Hexagon (tests/tcg/hexagon) Add v68 HVX tests 2023-05-18 12:40:51 -07:00
v68_hvx.c Hexagon (tests/tcg/hexagon) Add v68 HVX tests 2023-05-18 12:40:51 -07:00
v68_scalar.c Hexagon (tests/tcg/hexagon) Add v68 scalar tests 2023-05-18 12:40:51 -07:00
v69_hvx.c Hexagon (tests/tcg/hexagon) Add v69 HVX tests 2023-05-18 12:40:51 -07:00
v73_scalar.c Hexagon (tests/tcg/hexagon) Add v73 scalar tests 2023-05-18 12:40:51 -07:00
vector_add_int.c Hexagon HVX (tests/tcg/hexagon) vector_add_int test 2021-11-03 16:01:37 -05:00