qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
@ 2020-03-24 12:22 Jiaxun Yang
  2020-03-24 14:59 ` Richard Henderson
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Jiaxun Yang @ 2020-03-24 12:22 UTC (permalink / raw)
  To: qemu-devel
  Cc: richard.henderson, Jiaxun Yang, aleksandar.qemu.devel,
	Huacai Chen, aleksandar.rikalo, aurelien

Loongson multimedia condition instructions were previously implemented as
write 0 to rd due to lack of documentation. So I just confirmed with Loongson
about their encoding and implemented them correctly.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Acked-by: Huacai Chen <chenhc@lemote.com>
---
v1: Use deposit opreations according to Richard's suggestion.
---
 target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
 1 file changed, 31 insertions(+), 4 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index d745bd2803..25b595a17d 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -5529,6 +5529,7 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
 {
     uint32_t opc, shift_max;
     TCGv_i64 t0, t1;
+    TCGCond cond;
 
     opc = MASK_LMI(ctx->opcode);
     switch (opc) {
@@ -5862,14 +5863,39 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
 
     case OPC_SEQU_CP2:
     case OPC_SEQ_CP2:
+        cond = TCG_COND_EQ;
+        goto do_cc_cond;
+        break;
     case OPC_SLTU_CP2:
+        cond = TCG_COND_LTU;
+        goto do_cc_cond;
+        break;
     case OPC_SLT_CP2:
+        cond = TCG_COND_LT;
+        goto do_cc_cond;
+        break;
     case OPC_SLEU_CP2:
+        cond = TCG_COND_LEU;
+        goto do_cc_cond;
+        break;
     case OPC_SLE_CP2:
-        /*
-         * ??? Document is unclear: Set FCC[CC].  Does that mean the
-         * FD field is the CC field?
-         */
+        cond = TCG_COND_LE;
+    do_cc_cond:
+        {
+            int cc = (ctx->opcode >> 8) & 0x7;
+            TCGv_i64 t64 = tcg_temp_new_i64();
+            TCGv_i32 t32 = tcg_temp_new_i32();
+
+            tcg_gen_setcond_i64(cond, t64, t0, t1);
+            tcg_gen_extrl_i64_i32(t32, t64);
+            tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
+                                get_fp_bit(cc), 1);
+
+            tcg_temp_free_i32(t32);
+            tcg_temp_free_i64(t64);
+        }
+        goto no_rd;
+        break;
     default:
         MIPS_INVAL("loongson_cp2");
         generate_exception_end(ctx, EXCP_RI);
@@ -5878,6 +5904,7 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
 
     gen_store_fpr64(ctx, t0, rd);
 
+no_rd:
     tcg_temp_free_i64(t0);
     tcg_temp_free_i64(t1);
 }
-- 
2.26.0.rc2




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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 12:22 [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions Jiaxun Yang
@ 2020-03-24 14:59 ` Richard Henderson
  2020-03-25 10:44   ` Aleksandar Markovic
  2020-03-24 16:56 ` Aleksandar Markovic
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 16+ messages in thread
From: Richard Henderson @ 2020-03-24 14:59 UTC (permalink / raw)
  To: Jiaxun Yang, qemu-devel
  Cc: Huacai Chen, aleksandar.qemu.devel, aleksandar.rikalo, aurelien

On 3/24/20 5:22 AM, Jiaxun Yang wrote:
> Loongson multimedia condition instructions were previously implemented as
> write 0 to rd due to lack of documentation. So I just confirmed with Loongson
> about their encoding and implemented them correctly.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> Acked-by: Huacai Chen <chenhc@lemote.com>
> ---
> v1: Use deposit opreations according to Richard's suggestion.
> ---
>  target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
>  1 file changed, 31 insertions(+), 4 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~


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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 12:22 [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions Jiaxun Yang
  2020-03-24 14:59 ` Richard Henderson
@ 2020-03-24 16:56 ` Aleksandar Markovic
  2020-03-24 17:08   ` Jiaxun Yang
  2020-03-30 15:39 ` Philippe Mathieu-Daudé
  2020-04-01 14:36 ` Aleksandar Markovic
  3 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-24 16:56 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: Huacai Chen, aleksandar.rikalo, richard.henderson,
	QEMU Developers, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 3105 bytes --]

14:23 Uto, 24.03.2020. Jiaxun Yang <jiaxun.yang@flygoat.com> је написао/ла:
>
> Loongson multimedia condition instructions were previously implemented as
> write 0 to rd due to lack of documentation. So I just confirmed with
Loongson
> about their encoding and implemented them correctly.
>
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> Acked-by: Huacai Chen <chenhc@lemote.com>
> ---
> v1: Use deposit opreations according to Richard's suggestion.
> ---

Thanks, Jiaxun!

But, your numeration of patches is wrong. The first version of the patch
should be sent with prefix [PATCH]
and the second (this) version of the patch with prefix [PATCH v2]. This is
the second time you make the same mistake. Please make sure that you have
the correct numeration in future. But, anyhow, thanks for this version.

Yours,
Aleksandar

>  target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
>  1 file changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index d745bd2803..25b595a17d 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -5529,6 +5529,7 @@ static void gen_loongson_multimedia(DisasContext
*ctx, int rd, int rs, int rt)
>  {
>      uint32_t opc, shift_max;
>      TCGv_i64 t0, t1;
> +    TCGCond cond;
>
>      opc = MASK_LMI(ctx->opcode);
>      switch (opc) {
> @@ -5862,14 +5863,39 @@ static void gen_loongson_multimedia(DisasContext
*ctx, int rd, int rs, int rt)
>
>      case OPC_SEQU_CP2:
>      case OPC_SEQ_CP2:
> +        cond = TCG_COND_EQ;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLTU_CP2:
> +        cond = TCG_COND_LTU;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLT_CP2:
> +        cond = TCG_COND_LT;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLEU_CP2:
> +        cond = TCG_COND_LEU;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLE_CP2:
> -        /*
> -         * ??? Document is unclear: Set FCC[CC].  Does that mean the
> -         * FD field is the CC field?
> -         */
> +        cond = TCG_COND_LE;
> +    do_cc_cond:
> +        {
> +            int cc = (ctx->opcode >> 8) & 0x7;
> +            TCGv_i64 t64 = tcg_temp_new_i64();
> +            TCGv_i32 t32 = tcg_temp_new_i32();
> +
> +            tcg_gen_setcond_i64(cond, t64, t0, t1);
> +            tcg_gen_extrl_i64_i32(t32, t64);
> +            tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
> +                                get_fp_bit(cc), 1);
> +
> +            tcg_temp_free_i32(t32);
> +            tcg_temp_free_i64(t64);
> +        }
> +        goto no_rd;
> +        break;
>      default:
>          MIPS_INVAL("loongson_cp2");
>          generate_exception_end(ctx, EXCP_RI);
> @@ -5878,6 +5904,7 @@ static void gen_loongson_multimedia(DisasContext
*ctx, int rd, int rs, int rt)
>
>      gen_store_fpr64(ctx, t0, rd);
>
> +no_rd:
>      tcg_temp_free_i64(t0);
>      tcg_temp_free_i64(t1);
>  }
> --
> 2.26.0.rc2
>
>

[-- Attachment #2: Type: text/html, Size: 4165 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 16:56 ` Aleksandar Markovic
@ 2020-03-24 17:08   ` Jiaxun Yang
  2020-03-24 17:26     ` Aleksandar Markovic
  0 siblings, 1 reply; 16+ messages in thread
From: Jiaxun Yang @ 2020-03-24 17:08 UTC (permalink / raw)
  To: Aleksandar Markovic
  Cc: Huacai Chen, aleksandar.rikalo, richard.henderson,
	QEMU Developers, Aurelien Jarno



于 2020年3月25日 GMT+08:00 上午12:56:41, Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> 写到:
>14:23 Uto, 24.03.2020. Jiaxun Yang <jiaxun.yang@flygoat.com> је
>написао/ла:
>>
>> Loongson multimedia condition instructions were previously
>implemented as
>> write 0 to rd due to lack of documentation. So I just confirmed with
>Loongson
>> about their encoding and implemented them correctly.
>>
>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
>> Acked-by: Huacai Chen <chenhc@lemote.com>
>> ---
>> v1: Use deposit opreations according to Richard's suggestion.
>> ---
>
>Thanks, Jiaxun!
>
>But, your numeration of patches is wrong. The first version of the
>patch
>should be sent with prefix [PATCH]
>and the second (this) version of the patch with prefix [PATCH v2]. This
>is
>the second time you make the same mistake. Please make sure that you
>have
>the correct numeration in future. But, anyhow, thanks for this version.

Sorry for that.
I'm doing like this for years.
I promise it won't happen in future.

Thanks.

>
>Yours,
>Aleksandar
>
-- 
Jiaxun Yang


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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 17:08   ` Jiaxun Yang
@ 2020-03-24 17:26     ` Aleksandar Markovic
  0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-24 17:26 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: Huacai Chen, aleksandar.rikalo, richard.henderson,
	QEMU Developers, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 1330 bytes --]

19:09 Uto, 24.03.2020. Jiaxun Yang <jiaxun.yang@flygoat.com> је написао/ла:
>
>
>
> 于 2020年3月25日 GMT+08:00 上午12:56:41, Aleksandar Markovic <
aleksandar.qemu.devel@gmail.com> 写到:
> >14:23 Uto, 24.03.2020. Jiaxun Yang <jiaxun.yang@flygoat.com> је
> >написао/ла:
> >>
> >> Loongson multimedia condition instructions were previously
> >implemented as
> >> write 0 to rd due to lack of documentation. So I just confirmed with
> >Loongson
> >> about their encoding and implemented them correctly.
> >>
> >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> >> Acked-by: Huacai Chen <chenhc@lemote.com>
> >> ---
> >> v1: Use deposit opreations according to Richard's suggestion.
> >> ---
> >
> >Thanks, Jiaxun!
> >
> >But, your numeration of patches is wrong. The first version of the
> >patch
> >should be sent with prefix [PATCH]
> >and the second (this) version of the patch with prefix [PATCH v2]. This
> >is
> >the second time you make the same mistake. Please make sure that you
> >have
> >the correct numeration in future. But, anyhow, thanks for this version.
>
> Sorry for that.
> I'm doing like this for years.
> I promise it won't happen in future.
>

Cool, thanks again!

> Thanks.
>
> >
> >Yours,
> >Aleksandar
> >
> --
> Jiaxun Yang

[-- Attachment #2: Type: text/html, Size: 2077 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 14:59 ` Richard Henderson
@ 2020-03-25 10:44   ` Aleksandar Markovic
  2020-03-25 10:47     ` Aleksandar Markovic
  2020-03-26  1:30     ` Richard Henderson
  0 siblings, 2 replies; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-25 10:44 UTC (permalink / raw)
  To: Richard Henderson
  Cc: aurelien, aleksandar.rikalo, QEMU Developers, Jiaxun Yang, Huacai Chen

[-- Attachment #1: Type: text/plain, Size: 1207 bytes --]

16:59 Uto, 24.03.2020. Richard Henderson <richard.henderson@linaro.org> је
написао/ла:
>
> On 3/24/20 5:22 AM, Jiaxun Yang wrote:
> > Loongson multimedia condition instructions were previously implemented
as
> > write 0 to rd due to lack of documentation. So I just confirmed with
Loongson
> > about their encoding and implemented them correctly.
> >
> > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > Acked-by: Huacai Chen <chenhc@lemote.com>
> > ---
> > v1: Use deposit opreations according to Richard's suggestion.
> > ---
> >  target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
> >  1 file changed, 31 insertions(+), 4 deletions(-)
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>

I just have a couple of mon-essential suggestions wrt coding style, but
since all that is really of very insignificant nauture, I wouldn't even
mention them.

Reviewed-by: Aleksandar Markovic <aleksandar.qemi.devel@gmail.com>

May I ask you, Richard, to select this patch for your next TCG-for-5.0
queue, so that I don't go through a MIPS queue process for just a single
patch?

Thanks to all involved people!

Aleksandar

>
> r~

[-- Attachment #2: Type: text/html, Size: 1769 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-25 10:44   ` Aleksandar Markovic
@ 2020-03-25 10:47     ` Aleksandar Markovic
  2020-03-25 11:13       ` Aleksandar Markovic
  2020-03-26  1:30     ` Richard Henderson
  1 sibling, 1 reply; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-25 10:47 UTC (permalink / raw)
  To: Richard Henderson
  Cc: aurelien, aleksandar.rikalo, QEMU Developers, Jiaxun Yang, Huacai Chen

[-- Attachment #1: Type: text/plain, Size: 1518 bytes --]

12:44 Sre, 25.03.2020. Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
је написао/ла:
>
> 16:59 Uto, 24.03.2020. Richard Henderson <richard.henderson@linaro.org>
је написао/ла:
> >
> > On 3/24/20 5:22 AM, Jiaxun Yang wrote:
> > > Loongson multimedia condition instructions were previously
implemented as
> > > write 0 to rd due to lack of documentation. So I just confirmed with
Loongson
> > > about their encoding and implemented them correctly.
> > >
> > > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > > Acked-by: Huacai Chen <chenhc@lemote.com>
> > > ---
> > > v1: Use deposit opreations according to Richard's suggestion.
> > > ---
> > >  target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
> > >  1 file changed, 31 insertions(+), 4 deletions(-)
> >
> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> >
>
> I just have a couple of mon-essential suggestions wrt coding style, but
since all that is really of very insignificant nauture, I wouldn't even
mention them.
>
> Reviewed-by: Aleksandar Markovic <aleksandar.qemi.devel@gmail.com>
>

Sorry, there was a typo. It should be:

Reviewed-by: Aleksandar Markovic <aleksandar.qem u.devel@gmail.com>

("u" instead of "i" in "qemi")

> May I ask you, Richard, to select this patch for your next TCG-for-5.0
queue, so that I don't go through a MIPS queue process for just a single
patch?
>
> Thanks to all involved people!
>
> Aleksandar
>
> >
> > r~

[-- Attachment #2: Type: text/html, Size: 2328 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-25 10:47     ` Aleksandar Markovic
@ 2020-03-25 11:13       ` Aleksandar Markovic
  0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-25 11:13 UTC (permalink / raw)
  To: Richard Henderson
  Cc: aurelien, aleksandar.rikalo, QEMU Developers, Jiaxun Yang, Huacai Chen

[-- Attachment #1: Type: text/plain, Size: 1901 bytes --]

12:47 Sre, 25.03.2020. Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
је написао/ла:
>
> 12:44 Sre, 25.03.2020. Aleksandar Markovic <
aleksandar.qemu.devel@gmail.com> је написао/ла:
> >
> > 16:59 Uto, 24.03.2020. Richard Henderson <richard.henderson@linaro.org>
је написао/ла:
> > >
> > > On 3/24/20 5:22 AM, Jiaxun Yang wrote:
> > > > Loongson multimedia condition instructions were previously
implemented as
> > > > write 0 to rd due to lack of documentation. So I just confirmed
with Loongson
> > > > about their encoding and implemented them correctly.
> > > >
> > > > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > > > Acked-by: Huacai Chen <chenhc@lemote.com>
> > > > ---
> > > > v1: Use deposit opreations according to Richard's suggestion.
> > > > ---
> > > >  target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
> > > >  1 file changed, 31 insertions(+), 4 deletions(-)
> > >
> > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> > >
> >
> > I just have a couple of mon-essential suggestions wrt coding style, but
since all that is really of very insignificant nauture, I wouldn't even
mention them.
> >
> > Reviewed-by: Aleksandar Markovic <aleksandar.qemi.devel@gmail.com>
> >
>
> Sorry, there was a typo. It should be:
>
> Reviewed-by: Aleksandar Markovic <aleksandar.qem u.devel@gmail.com>
>
> ("u" instead of "i" in "qemi")
>

Another problem with text formatting on mobile phones, this line should be:

Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>

Hope this all right now.

Sorry about that.

> > May I ask you, Richard, to select this patch for your next TCG-for-5.0
queue, so that I don't go through a MIPS queue process for just a single
patch?
> >
> > Thanks to all involved people!
> >
> > Aleksandar
> >
> > >
> > > r~

[-- Attachment #2: Type: text/html, Size: 3002 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-25 10:44   ` Aleksandar Markovic
  2020-03-25 10:47     ` Aleksandar Markovic
@ 2020-03-26  1:30     ` Richard Henderson
  2020-03-27 12:46       ` Aleksandar Markovic
  1 sibling, 1 reply; 16+ messages in thread
From: Richard Henderson @ 2020-03-26  1:30 UTC (permalink / raw)
  To: Aleksandar Markovic
  Cc: aurelien, aleksandar.rikalo, QEMU Developers, Jiaxun Yang, Huacai Chen

On 3/25/20 3:44 AM, Aleksandar Markovic wrote:
> May I ask you, Richard, to select this patch for your next TCG-for-5.0 queue,
> so that I don't go through a MIPS queue process for just a single patch?
> 

I suppose I could, but at present I have nothing in the tcg queue, so it would
be just the single patch.


r~


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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-26  1:30     ` Richard Henderson
@ 2020-03-27 12:46       ` Aleksandar Markovic
  0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-27 12:46 UTC (permalink / raw)
  To: Richard Henderson
  Cc: aurelien, aleksandar.rikalo, QEMU Developers, Jiaxun Yang, Huacai Chen

[-- Attachment #1: Type: text/plain, Size: 921 bytes --]

03:30 Čet, 26.03.2020. Richard Henderson <richard.henderson@linaro.org> је
написао/ла:
>
> On 3/25/20 3:44 AM, Aleksandar Markovic wrote:
> > May I ask you, Richard, to select this patch for your next TCG-for-5.0
queue,
> > so that I don't go through a MIPS queue process for just a single patch?
> >
>
> I suppose I could, but at present I have nothing in the tcg queue, so it
would
> be just the single patch.
>

Yes, Richard, even if it is just a single pending patch to you at the
moment, I would prefer you sending the pull request - in a way it
represents the final completion touch of LMI module that was authored by
you, but unclear docs prevented us from getting these last bits and pieces.
Please go ahead with the pull request at any time convenient to you - at
least it symbolically belongs to you (and I am sure you are glad about the
patch).

Yours, Aleksansar

>
> r~

[-- Attachment #2: Type: text/html, Size: 1142 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 12:22 [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions Jiaxun Yang
  2020-03-24 14:59 ` Richard Henderson
  2020-03-24 16:56 ` Aleksandar Markovic
@ 2020-03-30 15:39 ` Philippe Mathieu-Daudé
  2020-03-30 16:18   ` Jiaxun Yang
  2020-04-01 14:36 ` Aleksandar Markovic
  3 siblings, 1 reply; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-30 15:39 UTC (permalink / raw)
  To: Jiaxun Yang, qemu-devel
  Cc: Huacai Chen, aleksandar.qemu.devel, richard.henderson,
	aleksandar.rikalo, aurelien

Hi Jiaxun Yang,

On 3/24/20 1:22 PM, Jiaxun Yang wrote:
> Loongson multimedia condition instructions were previously implemented as
> write 0 to rd due to lack of documentation. So I just confirmed with Loongson
> about their encoding and implemented them correctly.

If you have a binary using loongson multimedia instructions, can you add 
a test? So this code won't bitrot.

I'm in particular interested by a test covering the MAC2008 
instructions. You can look at examples in the tests/tcg/mips/ directory, 
Aleksandar added a lot of tests there.

Thanks,

Phil.

> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> Acked-by: Huacai Chen <chenhc@lemote.com>
> ---
> v1: Use deposit opreations according to Richard's suggestion.
> ---
>   target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
>   1 file changed, 31 insertions(+), 4 deletions(-)
> 
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index d745bd2803..25b595a17d 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -5529,6 +5529,7 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>   {
>       uint32_t opc, shift_max;
>       TCGv_i64 t0, t1;
> +    TCGCond cond;
>   
>       opc = MASK_LMI(ctx->opcode);
>       switch (opc) {
> @@ -5862,14 +5863,39 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>   
>       case OPC_SEQU_CP2:
>       case OPC_SEQ_CP2:
> +        cond = TCG_COND_EQ;
> +        goto do_cc_cond;
> +        break;
>       case OPC_SLTU_CP2:
> +        cond = TCG_COND_LTU;
> +        goto do_cc_cond;
> +        break;
>       case OPC_SLT_CP2:
> +        cond = TCG_COND_LT;
> +        goto do_cc_cond;
> +        break;
>       case OPC_SLEU_CP2:
> +        cond = TCG_COND_LEU;
> +        goto do_cc_cond;
> +        break;
>       case OPC_SLE_CP2:
> -        /*
> -         * ??? Document is unclear: Set FCC[CC].  Does that mean the
> -         * FD field is the CC field?
> -         */
> +        cond = TCG_COND_LE;
> +    do_cc_cond:
> +        {
> +            int cc = (ctx->opcode >> 8) & 0x7;
> +            TCGv_i64 t64 = tcg_temp_new_i64();
> +            TCGv_i32 t32 = tcg_temp_new_i32();
> +
> +            tcg_gen_setcond_i64(cond, t64, t0, t1);
> +            tcg_gen_extrl_i64_i32(t32, t64);
> +            tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
> +                                get_fp_bit(cc), 1);
> +
> +            tcg_temp_free_i32(t32);
> +            tcg_temp_free_i64(t64);
> +        }
> +        goto no_rd;
> +        break;
>       default:
>           MIPS_INVAL("loongson_cp2");
>           generate_exception_end(ctx, EXCP_RI);
> @@ -5878,6 +5904,7 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>   
>       gen_store_fpr64(ctx, t0, rd);
>   
> +no_rd:
>       tcg_temp_free_i64(t0);
>       tcg_temp_free_i64(t1);
>   }
> 



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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-30 15:39 ` Philippe Mathieu-Daudé
@ 2020-03-30 16:18   ` Jiaxun Yang
  2020-03-30 16:22     ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 16+ messages in thread
From: Jiaxun Yang @ 2020-03-30 16:18 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Huacai Chen, aleksandar.qemu.devel, richard.henderson,
	aleksandar.rikalo, aurelien



于 2020年3月30日 GMT+08:00 下午11:39:44, "Philippe Mathieu-Daudé" <philmd@redhat.com> 写到:
>Hi Jiaxun Yang,
>
>On 3/24/20 1:22 PM, Jiaxun Yang wrote:
>> Loongson multimedia condition instructions were previously
>implemented as
>> write 0 to rd due to lack of documentation. So I just confirmed with
>Loongson
>> about their encoding and implemented them correctly.
>
>If you have a binary using loongson multimedia instructions, can you
>add 
>a test? So this code won't bitrot.

I know ffmpeg uses it.
But I think that's too fat.

>
>I'm in particular interested by a test covering the MAC2008 
>instructions. You can look at examples in the tests/tcg/mips/
>directory, 
>Aleksandar added a lot of tests there.

I'm going to try that.

Thanks.

>
>Thanks,
>
>Phil.
>
>> 
>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
>> Acked-by: Huacai Chen <chenhc@lemote.com>
>> ---
>> v1: Use deposit opreations according to Richard's suggestion.
>> ---
>>   target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
>>   1 file changed, 31 insertions(+), 4 deletions(-)
>> 
>> diff --git a/target/mips/translate.c b/target/mips/translate.c
>> index d745bd2803..25b595a17d 100644
>> --- a/target/mips/translate.c
>> +++ b/target/mips/translate.c
>> @@ -5529,6 +5529,7 @@ static void
>gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>>   {
>>       uint32_t opc, shift_max;
>>       TCGv_i64 t0, t1;
>> +    TCGCond cond;
>>   
>>       opc = MASK_LMI(ctx->opcode);
>>       switch (opc) {
>> @@ -5862,14 +5863,39 @@ static void
>gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>>   
>>       case OPC_SEQU_CP2:
>>       case OPC_SEQ_CP2:
>> +        cond = TCG_COND_EQ;
>> +        goto do_cc_cond;
>> +        break;
>>       case OPC_SLTU_CP2:
>> +        cond = TCG_COND_LTU;
>> +        goto do_cc_cond;
>> +        break;
>>       case OPC_SLT_CP2:
>> +        cond = TCG_COND_LT;
>> +        goto do_cc_cond;
>> +        break;
>>       case OPC_SLEU_CP2:
>> +        cond = TCG_COND_LEU;
>> +        goto do_cc_cond;
>> +        break;
>>       case OPC_SLE_CP2:
>> -        /*
>> -         * ??? Document is unclear: Set FCC[CC].  Does that mean the
>> -         * FD field is the CC field?
>> -         */
>> +        cond = TCG_COND_LE;
>> +    do_cc_cond:
>> +        {
>> +            int cc = (ctx->opcode >> 8) & 0x7;
>> +            TCGv_i64 t64 = tcg_temp_new_i64();
>> +            TCGv_i32 t32 = tcg_temp_new_i32();
>> +
>> +            tcg_gen_setcond_i64(cond, t64, t0, t1);
>> +            tcg_gen_extrl_i64_i32(t32, t64);
>> +            tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
>> +                                get_fp_bit(cc), 1);
>> +
>> +            tcg_temp_free_i32(t32);
>> +            tcg_temp_free_i64(t64);
>> +        }
>> +        goto no_rd;
>> +        break;
>>       default:
>>           MIPS_INVAL("loongson_cp2");
>>           generate_exception_end(ctx, EXCP_RI);
>> @@ -5878,6 +5904,7 @@ static void
>gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>>   
>>       gen_store_fpr64(ctx, t0, rd);
>>   
>> +no_rd:
>>       tcg_temp_free_i64(t0);
>>       tcg_temp_free_i64(t1);
>>   }
>> 

-- 
Jiaxun Yang


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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-30 16:18   ` Jiaxun Yang
@ 2020-03-30 16:22     ` Philippe Mathieu-Daudé
  2020-03-30 16:30       ` Jiaxun Yang
  0 siblings, 1 reply; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-30 16:22 UTC (permalink / raw)
  To: Jiaxun Yang, qemu-devel
  Cc: Huacai Chen, aleksandar.qemu.devel, richard.henderson,
	aleksandar.rikalo, aurelien

On 3/30/20 6:18 PM, Jiaxun Yang wrote:
> 
> 
> 于 2020年3月30日 GMT+08:00 下午11:39:44, "Philippe Mathieu-Daudé" <philmd@redhat.com> 写到:
>> Hi Jiaxun Yang,
>>
>> On 3/24/20 1:22 PM, Jiaxun Yang wrote:
>>> Loongson multimedia condition instructions were previously
>> implemented as
>>> write 0 to rd due to lack of documentation. So I just confirmed with
>> Loongson
>>> about their encoding and implemented them correctly.
>>
>> If you have a binary using loongson multimedia instructions, can you
>> add
>> a test? So this code won't bitrot.
> 
> I know ffmpeg uses it.
> But I think that's too fat.

Looks perfect to me!

It'll be simpler if you use a pre-build binary from a known distribution.

> 
>>
>> I'm in particular interested by a test covering the MAC2008
>> instructions. You can look at examples in the tests/tcg/mips/
>> directory,
>> Aleksandar added a lot of tests there.
> 
> I'm going to try that.
> 
> Thanks.
> 
>>
>> Thanks,
>>
>> Phil.
>>
>>>
>>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
>>> Acked-by: Huacai Chen <chenhc@lemote.com>
>>> ---
>>> v1: Use deposit opreations according to Richard's suggestion.
>>> ---
>>>    target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
>>>    1 file changed, 31 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/target/mips/translate.c b/target/mips/translate.c
>>> index d745bd2803..25b595a17d 100644
>>> --- a/target/mips/translate.c
>>> +++ b/target/mips/translate.c
>>> @@ -5529,6 +5529,7 @@ static void
>> gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>>>    {
>>>        uint32_t opc, shift_max;
>>>        TCGv_i64 t0, t1;
>>> +    TCGCond cond;
>>>    
>>>        opc = MASK_LMI(ctx->opcode);
>>>        switch (opc) {
>>> @@ -5862,14 +5863,39 @@ static void
>> gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>>>    
>>>        case OPC_SEQU_CP2:
>>>        case OPC_SEQ_CP2:
>>> +        cond = TCG_COND_EQ;
>>> +        goto do_cc_cond;
>>> +        break;
>>>        case OPC_SLTU_CP2:
>>> +        cond = TCG_COND_LTU;
>>> +        goto do_cc_cond;
>>> +        break;
>>>        case OPC_SLT_CP2:
>>> +        cond = TCG_COND_LT;
>>> +        goto do_cc_cond;
>>> +        break;
>>>        case OPC_SLEU_CP2:
>>> +        cond = TCG_COND_LEU;
>>> +        goto do_cc_cond;
>>> +        break;
>>>        case OPC_SLE_CP2:
>>> -        /*
>>> -         * ??? Document is unclear: Set FCC[CC].  Does that mean the
>>> -         * FD field is the CC field?
>>> -         */
>>> +        cond = TCG_COND_LE;
>>> +    do_cc_cond:
>>> +        {
>>> +            int cc = (ctx->opcode >> 8) & 0x7;
>>> +            TCGv_i64 t64 = tcg_temp_new_i64();
>>> +            TCGv_i32 t32 = tcg_temp_new_i32();
>>> +
>>> +            tcg_gen_setcond_i64(cond, t64, t0, t1);
>>> +            tcg_gen_extrl_i64_i32(t32, t64);
>>> +            tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
>>> +                                get_fp_bit(cc), 1);
>>> +
>>> +            tcg_temp_free_i32(t32);
>>> +            tcg_temp_free_i64(t64);
>>> +        }
>>> +        goto no_rd;
>>> +        break;
>>>        default:
>>>            MIPS_INVAL("loongson_cp2");
>>>            generate_exception_end(ctx, EXCP_RI);
>>> @@ -5878,6 +5904,7 @@ static void
>> gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
>>>    
>>>        gen_store_fpr64(ctx, t0, rd);
>>>    
>>> +no_rd:
>>>        tcg_temp_free_i64(t0);
>>>        tcg_temp_free_i64(t1);
>>>    }
>>>
> 



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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-30 16:22     ` Philippe Mathieu-Daudé
@ 2020-03-30 16:30       ` Jiaxun Yang
  2020-03-30 19:01         ` Aleksandar Markovic
  0 siblings, 1 reply; 16+ messages in thread
From: Jiaxun Yang @ 2020-03-30 16:30 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Huacai Chen, aleksandar.qemu.devel, richard.henderson,
	aleksandar.rikalo, aurelien



于 2020年3月31日 GMT+08:00 上午12:22:43, "Philippe Mathieu-Daudé" <philmd@redhat.com> 写到:
>On 3/30/20 6:18 PM, Jiaxun Yang wrote:
>> 
>> 
>> 于 2020年3月30日 GMT+08:00 下午11:39:44, "Philippe Mathieu-Daudé"
><philmd@redhat.com> 写到:
>>> Hi Jiaxun Yang,
>>>
>>> On 3/24/20 1:22 PM, Jiaxun Yang wrote:
>>>> Loongson multimedia condition instructions were previously
>>> implemented as
>>>> write 0 to rd due to lack of documentation. So I just confirmed
>with
>>> Loongson
>>>> about their encoding and implemented them correctly.
>>>
>>> If you have a binary using loongson multimedia instructions, can you
>>> add
>>> a test? So this code won't bitrot.
>> 
>> I know ffmpeg uses it.
>> But I think that's too fat.
>
>Looks perfect to me!
>
>It'll be simpler if you use a pre-build binary from a known
>distribution.

Unfortunately none of the distribution built ffmpeg with loongson insns enabled,
as it can't be enabled at runtime.

I'll try that after fulfill Loongson Extensions in  QEMU.

FFmpeg do use some other Loongson insns despite mmi. 

There are still 15+ instructions for me to work.

Thanks
-- 
Jiaxun Yang


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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-30 16:30       ` Jiaxun Yang
@ 2020-03-30 19:01         ` Aleksandar Markovic
  0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Markovic @ 2020-03-30 19:01 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: richard.henderson, QEMU Developers, Huacai Chen,
	aleksandar.rikalo, Philippe Mathieu-Daudé,
	aurelien

[-- Attachment #1: Type: text/plain, Size: 2780 bytes --]

18:31 Pon, 30.03.2020. Jiaxun Yang <jiaxun.yang@flygoat.com> је написао/ла:
>
>
>
> 于 2020年3月31日 GMT+08:00 上午12:22:43, "Philippe Mathieu-Daudé" <
philmd@redhat.com> 写到:
> >On 3/30/20 6:18 PM, Jiaxun Yang wrote:
> >>
> >>
> >> 于 2020年3月30日 GMT+08:00 下午11:39:44, "Philippe Mathieu-Daudé"
> ><philmd@redhat.com> 写到:
> >>> Hi Jiaxun Yang,
> >>>
> >>> On 3/24/20 1:22 PM, Jiaxun Yang wrote:
> >>>> Loongson multimedia condition instructions were previously
> >>> implemented as
> >>>> write 0 to rd due to lack of documentation. So I just confirmed
> >with
> >>> Loongson
> >>>> about their encoding and implemented them correctly.
> >>>
> >>> If you have a binary using loongson multimedia instructions, can you
> >>> add
> >>> a test? So this code won't bitrot.
> >>
> >> I know ffmpeg uses it.
> >> But I think that's too fat.
> >
> >Looks perfect to me!
> >
> >It'll be simpler if you use a pre-build binary from a known
> >distribution.
>
> Unfortunately none of the distribution built ffmpeg with loongson insns
enabled,
> as it can't be enabled at runtime.
>
> I'll try that after fulfill Loongson Extensions in  QEMU.
>
> FFmpeg do use some other Loongson insns despite mmi.
>
> There are still 15+ instructions for me to work.
>

Jiaxun, hi.

My advice is to think about integrating Loongson-relared test into QEMU "in
background", with the intention that you possibly develop them later on.

Let's focus first on the code you want to add to enhance core
Loongson-related QEMU features, and we'll help you later on about Loongton
tests that could also be added to QEMU upstream.

I am sure you have some informal tests for all code you develop, but there
is a long way from these tests to the test that can be integrated in QEMU
upetream.

Just for reference, and something for you to think about in breaks between
real coding:

Basically, in QEMU, there are several kind of tests you could have in mind:

1) Unit tests yhat typically test emulation of just a single instruction
(see /tests/tcg/mips/user/ase/msa for example);

2) Acceptance test that test boot/shutdown and possibly other features of
virtual machines prepared in advance (kernel, rootfs, etc.), residing in
test/acceptance;

3) Tests that may use tests made for libraries and applicstions that use
the functionality of your newly-added features;

4) Other test that you may devise by your own and think are usefull and
make sense.

But again, let's focus and show us the main body of your code (as you
already started doing), let's start from there, and see how is it going and
what happens.

Thanks again for your work so far!

Yours,
Aleksandar

> Thanks
> --
> Jiaxun Yang

[-- Attachment #2: Type: text/html, Size: 3707 bytes --]

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

* Re: [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions
  2020-03-24 12:22 [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions Jiaxun Yang
                   ` (2 preceding siblings ...)
  2020-03-30 15:39 ` Philippe Mathieu-Daudé
@ 2020-04-01 14:36 ` Aleksandar Markovic
  3 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Markovic @ 2020-04-01 14:36 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: Peter Maydell, Richard Henderson, QEMU Developers, Huacai Chen,
	Aleksandar Rikalo, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 3249 bytes --]

13:23 Uto, 24.03.2020. Jiaxun Yang <jiaxun.yang@flygoat.com> је написао/ла:
>
> Loongson multimedia condition instructions were previously implemented as
> write 0 to rd due to lack of documentation. So I just confirmed with
Loongson
> about their encoding and implemented them correctly.
>

Hi, Jiaxun,

Richard Henderson selected your patch to be in his pull request, and the
main maintainer, Peter Maydell, accepted it and integrated it into main
tree:

https://github.com/qemu/qemu/commit/84878f4c00a7beca1d1460e2f77a6c833b8d0393#diff-b06d6b84c7a82caf0f5e4645f4b80540

I gather this is your first patch merged in QEMU upstream.

Congratulations!!

There is a place for you in QEMU community.

Hope we hear from you soon, with more fixes, improvements, and new features.

Yours,
Aleksandar

> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> Acked-by: Huacai Chen <chenhc@lemote.com>
> ---
> v1: Use deposit opreations according to Richard's suggestion.
> ---
>  target/mips/translate.c | 35 +++++++++++++++++++++++++++++++----
>  1 file changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index d745bd2803..25b595a17d 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -5529,6 +5529,7 @@ static void gen_loongson_multimedia(DisasContext
*ctx, int rd, int rs, int rt)
>  {
>      uint32_t opc, shift_max;
>      TCGv_i64 t0, t1;
> +    TCGCond cond;
>
>      opc = MASK_LMI(ctx->opcode);
>      switch (opc) {
> @@ -5862,14 +5863,39 @@ static void gen_loongson_multimedia(DisasContext
*ctx, int rd, int rs, int rt)
>
>      case OPC_SEQU_CP2:
>      case OPC_SEQ_CP2:
> +        cond = TCG_COND_EQ;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLTU_CP2:
> +        cond = TCG_COND_LTU;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLT_CP2:
> +        cond = TCG_COND_LT;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLEU_CP2:
> +        cond = TCG_COND_LEU;
> +        goto do_cc_cond;
> +        break;
>      case OPC_SLE_CP2:
> -        /*
> -         * ??? Document is unclear: Set FCC[CC].  Does that mean the
> -         * FD field is the CC field?
> -         */
> +        cond = TCG_COND_LE;
> +    do_cc_cond:
> +        {
> +            int cc = (ctx->opcode >> 8) & 0x7;
> +            TCGv_i64 t64 = tcg_temp_new_i64();
> +            TCGv_i32 t32 = tcg_temp_new_i32();
> +
> +            tcg_gen_setcond_i64(cond, t64, t0, t1);
> +            tcg_gen_extrl_i64_i32(t32, t64);
> +            tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
> +                                get_fp_bit(cc), 1);
> +
> +            tcg_temp_free_i32(t32);
> +            tcg_temp_free_i64(t64);
> +        }
> +        goto no_rd;
> +        break;
>      default:
>          MIPS_INVAL("loongson_cp2");
>          generate_exception_end(ctx, EXCP_RI);
> @@ -5878,6 +5904,7 @@ static void gen_loongson_multimedia(DisasContext
*ctx, int rd, int rs, int rt)
>
>      gen_store_fpr64(ctx, t0, rd);
>
> +no_rd:
>      tcg_temp_free_i64(t0);
>      tcg_temp_free_i64(t1);
>  }
> --
> 2.26.0.rc2
>
>

[-- Attachment #2: Type: text/html, Size: 4510 bytes --]

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

end of thread, other threads:[~2020-04-01 14:38 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-24 12:22 [PATCH for-5.0, v1] target/mips: Fix loongson multimedia condition instructions Jiaxun Yang
2020-03-24 14:59 ` Richard Henderson
2020-03-25 10:44   ` Aleksandar Markovic
2020-03-25 10:47     ` Aleksandar Markovic
2020-03-25 11:13       ` Aleksandar Markovic
2020-03-26  1:30     ` Richard Henderson
2020-03-27 12:46       ` Aleksandar Markovic
2020-03-24 16:56 ` Aleksandar Markovic
2020-03-24 17:08   ` Jiaxun Yang
2020-03-24 17:26     ` Aleksandar Markovic
2020-03-30 15:39 ` Philippe Mathieu-Daudé
2020-03-30 16:18   ` Jiaxun Yang
2020-03-30 16:22     ` Philippe Mathieu-Daudé
2020-03-30 16:30       ` Jiaxun Yang
2020-03-30 19:01         ` Aleksandar Markovic
2020-04-01 14:36 ` Aleksandar Markovic

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).