[PATCH] Remove test_vshuff from hvx_misc tests

Marco Liebel posted 1 patch 11 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230509184231.2467626-1-quic._5Fmliebel@quicinc.com
Maintainers: Taylor Simpson <tsimpson@quicinc.com>
tests/tcg/hexagon/hvx_misc.c | 45 ------------------------------------
1 file changed, 45 deletions(-)
[PATCH] Remove test_vshuff from hvx_misc tests
Posted by Marco Liebel 11 months, 3 weeks ago
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
RE: [PATCH] Remove test_vshuff from hvx_misc tests
Posted by Brian Cain 11 months, 3 weeks ago

> -----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>
RE: [PATCH] Remove test_vshuff from hvx_misc tests
Posted by Taylor Simpson 11 months, 3 weeks ago

> -----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(-)

Let's not remove the test completely.  Just change it to use different registers.

Thanks,
Taylor
RE: [PATCH] Remove test_vshuff from hvx_misc tests
Posted by Brian Cain 11 months, 3 weeks ago

> -----Original Message-----
> From: Taylor Simpson <tsimpson@quicinc.com>
> Sent: Tuesday, May 9, 2023 2:28 PM
> To: Marco Liebel (QUIC) <quic_mliebel@quicinc.com>; qemu-
> devel@nongnu.org
> Cc: Brian Cain <bcain@quicinc.com>; Matheus Bernardino (QUIC)
> <quic_mathbern@quicinc.com>
> Subject: RE: [PATCH] Remove test_vshuff from hvx_misc tests
> 
> 
> 
> > -----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(-)
> 
> Let's not remove the test completely.  Just change it to use different registers.

I'm fine either way.  But IIRC we added this test particularly in order to verify the potentially ambiguous behavior of the same operand here.  It may be well tested otherwise.
RE: [PATCH] Remove test_vshuff from hvx_misc tests
Posted by Taylor Simpson 11 months, 3 weeks ago

> -----Original Message-----
> From: Brian Cain <bcain@quicinc.com>
> Sent: Tuesday, May 9, 2023 3:01 PM
> To: Taylor Simpson <tsimpson@quicinc.com>; Marco Liebel (QUIC)
> <quic_mliebel@quicinc.com>; qemu-devel@nongnu.org
> Cc: Matheus Bernardino (QUIC) <quic_mathbern@quicinc.com>
> Subject: RE: [PATCH] Remove test_vshuff from hvx_misc tests
> 
> 
> 
> > -----Original Message-----
> > From: Taylor Simpson <tsimpson@quicinc.com>
> > Sent: Tuesday, May 9, 2023 2:28 PM
> > To: Marco Liebel (QUIC) <quic_mliebel@quicinc.com>; qemu-
> > devel@nongnu.org
> > Cc: Brian Cain <bcain@quicinc.com>; Matheus Bernardino (QUIC)
> > <quic_mathbern@quicinc.com>
> > Subject: RE: [PATCH] Remove test_vshuff from hvx_misc tests
> >
> >
> >
> > > -----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(-)
> >
> > Let's not remove the test completely.  Just change it to use different
> registers.
> 
> I'm fine either way.  But IIRC we added this test particularly in order to verify
> the potentially ambiguous behavior of the same operand here.  It may be
> well tested otherwise.

I confirmed the hvx_histogram test executes this instruction, so
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>