qemu-devel
[Top][All Lists]
Advanced

[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>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]