[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH] Remove test_vshuff from hvx_misc tests
From: |
Brian Cain |
Subject: |
RE: [PATCH] Remove test_vshuff from hvx_misc tests |
Date: |
Tue, 9 May 2023 19:59:28 +0000 |
> -----Original Message-----
> From: Marco Liebel (QUIC) <quic_mliebel@quicinc.com>
> Sent: Tuesday, May 9, 2023 1:43 PM
> To: qemu-devel@nongnu.org
> Cc: Taylor Simpson <tsimpson@quicinc.com>; Brian Cain <bcain@quicinc.com>;
> Matheus Bernardino (QUIC) <quic_mathbern@quicinc.com>; Marco Liebel
> (QUIC) <quic_mliebel@quicinc.com>
> Subject: [PATCH] Remove test_vshuff from hvx_misc tests
>
> test_vshuff checks that the vshuff instruction works correctly when
> both vector registers are the same. Using vshuff in this way is
> undefined and will be rejected by the compiler in a future version of
> the toolchain.
>
> Signed-off-by: Marco Liebel <quic_mliebel@quicinc.com>
> ---
> tests/tcg/hexagon/hvx_misc.c | 45 ------------------------------------
> 1 file changed, 45 deletions(-)
>
> diff --git a/tests/tcg/hexagon/hvx_misc.c b/tests/tcg/hexagon/hvx_misc.c
> index d0e64e035f..bc4e76d7f0 100644
> --- a/tests/tcg/hexagon/hvx_misc.c
> +++ b/tests/tcg/hexagon/hvx_misc.c
> @@ -342,49 +342,6 @@ static void test_vsubuwsat_dv(void)
> check_output_w(__LINE__, 2);
> }
>
> -static void test_vshuff(void)
> -{
> - /* Test that vshuff works when the two operands are the same register */
> - const uint32_t splat = 0x089be55c;
> - const uint32_t shuff = 0x454fa926;
> - MMVector v0, v1;
> -
> - memset(expect, 0x12, sizeof(MMVector));
> - memset(output, 0x34, sizeof(MMVector));
> -
> - asm volatile("v25 = vsplat(%0)\n\t"
> - "vshuff(v25, v25, %1)\n\t"
> - "vmem(%2 + #0) = v25\n\t"
> - : /* no outputs */
> - : "r"(splat), "r"(shuff), "r"(output)
> - : "v25", "memory");
> -
> - /*
> - * The semantics of Hexagon are the operands are pass-by-value, so create
> - * two copies of the vsplat result.
> - */
> - for (int i = 0; i < MAX_VEC_SIZE_BYTES / 4; i++) {
> - v0.uw[i] = splat;
> - v1.uw[i] = splat;
> - }
> - /* Do the vshuff operation */
> - for (int offset = 1; offset < MAX_VEC_SIZE_BYTES; offset <<= 1) {
> - if (shuff & offset) {
> - for (int k = 0; k < MAX_VEC_SIZE_BYTES; k++) {
> - if (!(k & offset)) {
> - uint8_t tmp = v0.ub[k];
> - v0.ub[k] = v1.ub[k + offset];
> - v1.ub[k + offset] = tmp;
> - }
> - }
> - }
> - }
> - /* Put the result in the expect buffer for verification */
> - expect[0] = v1;
> -
> - check_output_b(__LINE__, 1);
> -}
> -
> static void test_load_tmp_predicated(void)
> {
> void *p0 = buffer0;
> @@ -489,8 +446,6 @@ int main()
> test_vadduwsat();
> test_vsubuwsat_dv();
>
> - test_vshuff();
> -
> test_load_tmp_predicated();
> test_load_cur_predicated();
>
> --
> 2.25.1
Reviewed-by: Brian Cain <bcain@quicinc.com>