All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] tcg/s390x vector fixes
@ 2022-03-10 20:27 Richard Henderson
  2022-03-10 20:27 ` [PATCH 1/3] tcg/s390x: Fix tcg_out_dupi_vec vs VGM Richard Henderson
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Richard Henderson @ 2022-03-10 20:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: thuth

These 3 issues were found by running risu on arm neon test cases.
In the meantime, Thomas encountered one of the same with the new
tests of vectorized sha512.


r~


Richard Henderson (3):
  tcg/s390x: Fix tcg_out_dupi_vec vs VGM
  tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL
  tcg/s390x: Fix tcg_out_dup_vec vs general registers

 tcg/s390x/tcg-target.c.inc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

-- 
2.25.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] tcg/s390x: Fix tcg_out_dupi_vec vs VGM
  2022-03-10 20:27 [PATCH 0/3] tcg/s390x vector fixes Richard Henderson
@ 2022-03-10 20:27 ` Richard Henderson
  2022-03-10 20:27 ` [PATCH 2/3] tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL Richard Henderson
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2022-03-10 20:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: thuth

The immediate operands to VGM were in the wrong order,
producing an inverse mask.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/s390x/tcg-target.c.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc
index 6e65828c09..508f1bccc7 100644
--- a/tcg/s390x/tcg-target.c.inc
+++ b/tcg/s390x/tcg-target.c.inc
@@ -2715,7 +2715,7 @@ static void tcg_out_dupi_vec(TCGContext *s, TCGType type, unsigned vece,
                 msb = clz32(val);
                 lsb = 31 - ctz32(val);
             }
-            tcg_out_insn(s, VRIb, VGM, dst, lsb, msb, MO_32);
+            tcg_out_insn(s, VRIb, VGM, dst, msb, lsb, MO_32);
             return;
         }
     } else {
@@ -2729,7 +2729,7 @@ static void tcg_out_dupi_vec(TCGContext *s, TCGType type, unsigned vece,
                 msb = clz64(val);
                 lsb = 63 - ctz64(val);
             }
-            tcg_out_insn(s, VRIb, VGM, dst, lsb, msb, MO_64);
+            tcg_out_insn(s, VRIb, VGM, dst, msb, lsb, MO_64);
             return;
         }
     }
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL
  2022-03-10 20:27 [PATCH 0/3] tcg/s390x vector fixes Richard Henderson
  2022-03-10 20:27 ` [PATCH 1/3] tcg/s390x: Fix tcg_out_dupi_vec vs VGM Richard Henderson
@ 2022-03-10 20:27 ` Richard Henderson
  2022-03-11  6:44   ` Thomas Huth
  2022-03-10 20:27 ` [PATCH 3/3] tcg/s390x: Fix tcg_out_dup_vec vs general registers Richard Henderson
  2022-03-14 12:41 ` [PATCH 0/3] tcg/s390x vector fixes Thomas Huth
  3 siblings, 1 reply; 8+ messages in thread
From: Richard Henderson @ 2022-03-10 20:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: thuth

The operands are output in the wrong order: the tcg selector
argument is first, whereas the s390x selector argument is last.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/898
Fixes: 9bca986df88 ("tcg/s390x: Implement TCG_TARGET_HAS_bitsel_vec")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/s390x/tcg-target.c.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc
index 508f1bccc7..3b185b3c96 100644
--- a/tcg/s390x/tcg-target.c.inc
+++ b/tcg/s390x/tcg-target.c.inc
@@ -2868,7 +2868,7 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc,
         break;
 
     case INDEX_op_bitsel_vec:
-        tcg_out_insn(s, VRRe, VSEL, a0, a1, a2, args[3]);
+        tcg_out_insn(s, VRRe, VSEL, a0, a2, args[3], a1);
         break;
 
     case INDEX_op_cmp_vec:
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] tcg/s390x: Fix tcg_out_dup_vec vs general registers
  2022-03-10 20:27 [PATCH 0/3] tcg/s390x vector fixes Richard Henderson
  2022-03-10 20:27 ` [PATCH 1/3] tcg/s390x: Fix tcg_out_dupi_vec vs VGM Richard Henderson
  2022-03-10 20:27 ` [PATCH 2/3] tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL Richard Henderson
@ 2022-03-10 20:27 ` Richard Henderson
  2022-03-14 12:41 ` [PATCH 0/3] tcg/s390x vector fixes Thomas Huth
  3 siblings, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2022-03-10 20:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: thuth

We copied the data from the general register input to the
vector register output, but have not yet replicated it.
We intended to fall through into the vector-vector case,
but failed to redirect the input register.

This is caught by an assertion failure in tcg_out_insn_VRIc,
which diagnosed the incorrect register class.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/s390x/tcg-target.c.inc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc
index 3b185b3c96..33becd7694 100644
--- a/tcg/s390x/tcg-target.c.inc
+++ b/tcg/s390x/tcg-target.c.inc
@@ -2675,6 +2675,7 @@ static bool tcg_out_dup_vec(TCGContext *s, TCGType type, unsigned vece,
         if (vece == MO_64) {
             return true;
         }
+        src = dst;
     }
 
     /*
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL
  2022-03-10 20:27 ` [PATCH 2/3] tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL Richard Henderson
@ 2022-03-11  6:44   ` Thomas Huth
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2022-03-11  6:44 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel

On 10/03/2022 21.27, Richard Henderson wrote:
> The operands are output in the wrong order: the tcg selector
> argument is first, whereas the s390x selector argument is last.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/898
> Fixes: 9bca986df88 ("tcg/s390x: Implement TCG_TARGET_HAS_bitsel_vec")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   tcg/s390x/tcg-target.c.inc | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc
> index 508f1bccc7..3b185b3c96 100644
> --- a/tcg/s390x/tcg-target.c.inc
> +++ b/tcg/s390x/tcg-target.c.inc
> @@ -2868,7 +2868,7 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc,
>           break;
>   
>       case INDEX_op_bitsel_vec:
> -        tcg_out_insn(s, VRRe, VSEL, a0, a1, a2, args[3]);
> +        tcg_out_insn(s, VRRe, VSEL, a0, a2, args[3], a1);
>           break;
>   
>       case INDEX_op_cmp_vec:

Thank you very much, this indeed fixes the sha512 tet for me!

Tested-by: Thomas Huth <thuth@redhat.com>



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/3] tcg/s390x vector fixes
  2022-03-10 20:27 [PATCH 0/3] tcg/s390x vector fixes Richard Henderson
                   ` (2 preceding siblings ...)
  2022-03-10 20:27 ` [PATCH 3/3] tcg/s390x: Fix tcg_out_dup_vec vs general registers Richard Henderson
@ 2022-03-14 12:41 ` Thomas Huth
  2022-03-14 17:36   ` Richard Henderson
  3 siblings, 1 reply; 8+ messages in thread
From: Thomas Huth @ 2022-03-14 12:41 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: qemu-s390x

On 10/03/2022 21.27, Richard Henderson wrote:
> These 3 issues were found by running risu on arm neon test cases.
> In the meantime, Thomas encountered one of the same with the new
> tests of vectorized sha512.

Thanks! If you don't mind (e.g. if you don't have any other TCG patches 
pending), I can take these through my s390x-next tree (I'm planning another 
pull request before the rc0 hard freeze tomorrow):

  https://gitlab.com/thuth/qemu/-/commits/s390x-next/

  Thomas



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/3] tcg/s390x vector fixes
  2022-03-14 12:41 ` [PATCH 0/3] tcg/s390x vector fixes Thomas Huth
@ 2022-03-14 17:36   ` Richard Henderson
  0 siblings, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2022-03-14 17:36 UTC (permalink / raw)
  To: Thomas Huth, qemu-devel; +Cc: qemu-s390x

On 3/14/22 05:41, Thomas Huth wrote:
> On 10/03/2022 21.27, Richard Henderson wrote:
>> These 3 issues were found by running risu on arm neon test cases.
>> In the meantime, Thomas encountered one of the same with the new
>> tests of vectorized sha512.
> 
> Thanks! If you don't mind (e.g. if you don't have any other TCG patches pending), I can 
> take these through my s390x-next tree (I'm planning another pull request before the rc0 
> hard freeze tomorrow):

I did have another tcg patch; I've just sent off the lot.  But thanks.


r~


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 3/3] tcg/s390x: Fix tcg_out_dup_vec vs general registers
  2022-03-03  3:11 [PATCH 0/3] tcg/s390x: Fixes for host vector codegen Richard Henderson
@ 2022-03-03  3:11 ` Richard Henderson
  0 siblings, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2022-03-03  3:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-s390x

We copied the data from the general register input to the
vector register output, but have not yet replicated it.
We intended to fall through into the vector-vector case,
but failed to redirect the input register.

This is caught by an assertion failure in tcg_out_insn_VRIc,
which diagnosed the incorrect register class.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/s390x/tcg-target.c.inc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc
index 3b185b3c96..33becd7694 100644
--- a/tcg/s390x/tcg-target.c.inc
+++ b/tcg/s390x/tcg-target.c.inc
@@ -2675,6 +2675,7 @@ static bool tcg_out_dup_vec(TCGContext *s, TCGType type, unsigned vece,
         if (vece == MO_64) {
             return true;
         }
+        src = dst;
     }
 
     /*
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-03-14 17:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-10 20:27 [PATCH 0/3] tcg/s390x vector fixes Richard Henderson
2022-03-10 20:27 ` [PATCH 1/3] tcg/s390x: Fix tcg_out_dupi_vec vs VGM Richard Henderson
2022-03-10 20:27 ` [PATCH 2/3] tcg/s390x: Fix INDEX_op_bitsel_vec vs VSEL Richard Henderson
2022-03-11  6:44   ` Thomas Huth
2022-03-10 20:27 ` [PATCH 3/3] tcg/s390x: Fix tcg_out_dup_vec vs general registers Richard Henderson
2022-03-14 12:41 ` [PATCH 0/3] tcg/s390x vector fixes Thomas Huth
2022-03-14 17:36   ` Richard Henderson
  -- strict thread matches above, loose matches on Subject: below --
2022-03-03  3:11 [PATCH 0/3] tcg/s390x: Fixes for host vector codegen Richard Henderson
2022-03-03  3:11 ` [PATCH 3/3] tcg/s390x: Fix tcg_out_dup_vec vs general registers Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.