diff mbox series

[FFmpeg-devel,1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test

Message ID CAEa-L+tRzusOY2bC+tm+LXE6-n4dK__hLL59yqRHSPbXKEMNcA@mail.gmail.com
State New
Headers show
Series [FFmpeg-devel,1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 fail Make fate failed

Commit Message

flow gg Jan. 31, 2024, noon UTC

Comments

Michael Niedermayer Feb. 1, 2024, 11:42 p.m. UTC | #1
On Wed, Jan 31, 2024 at 08:00:18PM +0800, flow gg wrote:
> 

>  checkasm/Makefile   |    1 
>  checkasm/checkasm.c |    3 ++
>  checkasm/checkasm.h |    1 
>  checkasm/rv34dsp.c  |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  fate/checkasm.mak   |    1 
>  5 files changed, 71 insertions(+)
> e7eed6e25de9f313ddb3c0f3066f02f0671d3271  0001-checkasm-rv34dsp-add-rv34_inv_transform_dc-test.patch
> From 46a81051f49f6b4032815d5f123be8ff614033e2 Mon Sep 17 00:00:00 2001
> From: sunyuechi <sunyuechi@iscas.ac.cn>
> Date: Wed, 31 Jan 2024 19:00:23 +0800
> Subject: [PATCH 1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test

seems to fail here

checkasm: using random seed 2653668129
MMXEXT:
   rv34_inv_transform_dc_mmxext (failed to issue emms)
 - rv34dsp.rv34_inv_transform_dc [FAILED]
checkasm: 1 of 1 tests have failed
threads=1
tests/Makefile:318: recipe for target 'fate-checkasm-rv34dsp' failed
make: *** [fate-checkasm-rv34dsp] Error 1


[...]
flow gg Feb. 2, 2024, 12:47 a.m. UTC | #2
It seems to be caused by movd m0, r1d in libavcodec/x86/rv34dsp.asm? I'm
not quite sure.

Michael Niedermayer <michael@niedermayer.cc> 于2024年2月2日周五 07:42写道:

> On Wed, Jan 31, 2024 at 08:00:18PM +0800, flow gg wrote:
> >
>
> >  checkasm/Makefile   |    1
> >  checkasm/checkasm.c |    3 ++
> >  checkasm/checkasm.h |    1
> >  checkasm/rv34dsp.c  |   65
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  fate/checkasm.mak   |    1
> >  5 files changed, 71 insertions(+)
> > e7eed6e25de9f313ddb3c0f3066f02f0671d3271
> 0001-checkasm-rv34dsp-add-rv34_inv_transform_dc-test.patch
> > From 46a81051f49f6b4032815d5f123be8ff614033e2 Mon Sep 17 00:00:00 2001
> > From: sunyuechi <sunyuechi@iscas.ac.cn>
> > Date: Wed, 31 Jan 2024 19:00:23 +0800
> > Subject: [PATCH 1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test
>
> seems to fail here
>
> checkasm: using random seed 2653668129
> MMXEXT:
>    rv34_inv_transform_dc_mmxext (failed to issue emms)
>  - rv34dsp.rv34_inv_transform_dc [FAILED]
> checkasm: 1 of 1 tests have failed
> threads=1
> tests/Makefile:318: recipe for target 'fate-checkasm-rv34dsp' failed
> make: *** [fate-checkasm-rv34dsp] Error 1
>
>
> [...]
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> I do not agree with what you have to say, but I'll defend to the death your
> right to say it. -- Voltaire
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
Rémi Denis-Courmont Feb. 2, 2024, 12:08 p.m. UTC | #3
Le 2 février 2024 01:42:20 GMT+02:00, Michael Niedermayer <michael@niedermayer.cc> a écrit :
>On Wed, Jan 31, 2024 at 08:00:18PM +0800, flow gg wrote:
>> 
>
>>  checkasm/Makefile   |    1 
>>  checkasm/checkasm.c |    3 ++
>>  checkasm/checkasm.h |    1 
>>  checkasm/rv34dsp.c  |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  fate/checkasm.mak   |    1 
>>  5 files changed, 71 insertions(+)
>> e7eed6e25de9f313ddb3c0f3066f02f0671d3271  0001-checkasm-rv34dsp-add-rv34_inv_transform_dc-test.patch
>> From 46a81051f49f6b4032815d5f123be8ff614033e2 Mon Sep 17 00:00:00 2001
>> From: sunyuechi <sunyuechi@iscas.ac.cn>
>> Date: Wed, 31 Jan 2024 19:00:23 +0800
>> Subject: [PATCH 1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test
>
>seems to fail here

Do you mean that the test is wrong or that it exposes a bug in the x86 optimisations (which wouldn't be the first occurrence)?

It's painful enough that RVV optimisations need to add checkasm tests for existing code. We can't be expected to fix x86 bugs on top.
Michael Niedermayer Feb. 2, 2024, 1:26 p.m. UTC | #4
On Fri, Feb 02, 2024 at 02:08:29PM +0200, Rémi Denis-Courmont wrote:
> 
> 
> Le 2 février 2024 01:42:20 GMT+02:00, Michael Niedermayer <michael@niedermayer.cc> a écrit :
> >On Wed, Jan 31, 2024 at 08:00:18PM +0800, flow gg wrote:
> >> 
> >
> >>  checkasm/Makefile   |    1 
> >>  checkasm/checkasm.c |    3 ++
> >>  checkasm/checkasm.h |    1 
> >>  checkasm/rv34dsp.c  |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> >>  fate/checkasm.mak   |    1 
> >>  5 files changed, 71 insertions(+)
> >> e7eed6e25de9f313ddb3c0f3066f02f0671d3271  0001-checkasm-rv34dsp-add-rv34_inv_transform_dc-test.patch
> >> From 46a81051f49f6b4032815d5f123be8ff614033e2 Mon Sep 17 00:00:00 2001
> >> From: sunyuechi <sunyuechi@iscas.ac.cn>
> >> Date: Wed, 31 Jan 2024 19:00:23 +0800
> >> Subject: [PATCH 1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test
> >
> >seems to fail here
> 
> Do you mean that the test is wrong or that it exposes a bug in the x86 optimisations (which wouldn't be the first occurrence)?
> 
> It's painful enough that RVV optimisations need to add checkasm tests for existing code. We can't be expected to fix x86 bugs on top.

i would assume theres some bug in the x86 side but i did not look
iam not suggesting flow gg needs to fix that just that before this test is
enabled on x86, the bug needs to be fixed

thx

[...]
Rémi Denis-Courmont Feb. 12, 2024, 7:36 p.m. UTC | #5
Le perjantaina 2. helmikuuta 2024, 2.47.16 EET flow gg a écrit :
> It seems to be caused by movd m0, r1d in libavcodec/x86/rv34dsp.asm? I'm
> not quite sure.

If it affects only MMX and neither SSE nor AVX, add a patch to remove the 
offending code altogether.

It's ridiculous to hold checkasm tests off because of broken legacy code.
flow gg Feb. 13, 2024, 2:37 a.m. UTC | #6
I sended  "[FFmpeg-devel] [PATCH] x86: Remove MMX assembly
rv34_inv_transform_dc in rv34dsp"

Rémi Denis-Courmont <remi@remlab.net> 于2024年2月13日周二 03:37写道:

> Le perjantaina 2. helmikuuta 2024, 2.47.16 EET flow gg a écrit :
> > It seems to be caused by movd m0, r1d in libavcodec/x86/rv34dsp.asm? I'm
> > not quite sure.
>
> If it affects only MMX and neither SSE nor AVX, add a patch to remove the
> offending code altogether.
>
> It's ridiculous to hold checkasm tests off because of broken legacy code.
>
> --
> Rémi Denis-Courmont
> http://www.remlab.net/
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
flow gg Feb. 13, 2024, 9:58 a.m. UTC | #7
it was due to a testing , not MMX. fixed it in this reply.

flow gg <hlefthleft@gmail.com> 于2024年2月13日周二 10:37写道:

> I sended  "[FFmpeg-devel] [PATCH] x86: Remove MMX assembly
> rv34_inv_transform_dc in rv34dsp"
>
> Rémi Denis-Courmont <remi@remlab.net> 于2024年2月13日周二 03:37写道:
>
>> Le perjantaina 2. helmikuuta 2024, 2.47.16 EET flow gg a écrit :
>> > It seems to be caused by movd m0, r1d in libavcodec/x86/rv34dsp.asm? I'm
>> > not quite sure.
>>
>> If it affects only MMX and neither SSE nor AVX, add a patch to remove the
>> offending code altogether.
>>
>> It's ridiculous to hold checkasm tests off because of broken legacy code.
>>
>> --
>> Rémi Denis-Courmont
>> http://www.remlab.net/
>>
>>
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>>
>
diff mbox series

Patch

From 46a81051f49f6b4032815d5f123be8ff614033e2 Mon Sep 17 00:00:00 2001
From: sunyuechi <sunyuechi@iscas.ac.cn>
Date: Wed, 31 Jan 2024 19:00:23 +0800
Subject: [PATCH 1/4] checkasm/rv34dsp: add rv34_inv_transform_dc test

---
 tests/checkasm/Makefile   |  1 +
 tests/checkasm/checkasm.c |  3 ++
 tests/checkasm/checkasm.h |  1 +
 tests/checkasm/rv34dsp.c  | 65 +++++++++++++++++++++++++++++++++++++++
 tests/fate/checkasm.mak   |  1 +
 5 files changed, 71 insertions(+)
 create mode 100644 tests/checkasm/rv34dsp.c

diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile
index f507e99993..e4c1ff7d79 100644
--- a/tests/checkasm/Makefile
+++ b/tests/checkasm/Makefile
@@ -34,6 +34,7 @@  AVCODECOBJS-$(CONFIG_JPEG2000_DECODER)  += jpeg2000dsp.o
 AVCODECOBJS-$(CONFIG_OPUS_DECODER)      += opusdsp.o
 AVCODECOBJS-$(CONFIG_PIXBLOCKDSP)       += pixblockdsp.o
 AVCODECOBJS-$(CONFIG_HEVC_DECODER)      += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o
+AVCODECOBJS-$(CONFIG_RV34DSP)           += rv34dsp.o
 AVCODECOBJS-$(CONFIG_SVQ1_ENCODER)      += svq1enc.o
 AVCODECOBJS-$(CONFIG_TAK_DECODER)       += takdsp.o
 AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER)   += utvideodsp.o
diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
index ed9f7f3d7b..ed9bd5e248 100644
--- a/tests/checkasm/checkasm.c
+++ b/tests/checkasm/checkasm.c
@@ -167,6 +167,9 @@  static const struct {
     #if CONFIG_PIXBLOCKDSP
         { "pixblockdsp", checkasm_check_pixblockdsp },
     #endif
+    #if CONFIG_RV34DSP
+        { "rv34dsp", checkasm_check_rv34dsp },
+    #endif
     #if CONFIG_SVQ1_ENCODER
         { "svq1enc", checkasm_check_svq1enc },
     #endif
diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
index bb74c0cc4b..1022bbbac7 100644
--- a/tests/checkasm/checkasm.h
+++ b/tests/checkasm/checkasm.h
@@ -112,6 +112,7 @@  void checkasm_check_nlmeans(void);
 void checkasm_check_opusdsp(void);
 void checkasm_check_pixblockdsp(void);
 void checkasm_check_sbrdsp(void);
+void checkasm_check_rv34dsp(void);
 void checkasm_check_svq1enc(void);
 void checkasm_check_synth_filter(void);
 void checkasm_check_sw_gbrp(void);
diff --git a/tests/checkasm/rv34dsp.c b/tests/checkasm/rv34dsp.c
new file mode 100644
index 0000000000..56167d2569
--- /dev/null
+++ b/tests/checkasm/rv34dsp.c
@@ -0,0 +1,65 @@ 
+/*
+ * Copyright (c) 2024 Institue of Software Chinese Academy of Sciences (ISCAS).
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "libavutil/mem.h"
+#include "libavutil/mem_internal.h"
+
+#include "libavcodec/rv34dsp.h"
+
+#include "checkasm.h"
+
+#define BUF_SIZE 1024
+
+#define randomize(buf, len) \
+    do { \
+        for (int i = 0; i < len; i++) \
+            buf[i] = rnd(); \
+    } while (0)
+
+static void test_rv34_inv_transform_dc(RV34DSPContext *s) {
+    declare_func(void, int16_t *block);
+
+    if (check_func(s->rv34_inv_transform_dc, "rv34_inv_transform_dc")) {
+        LOCAL_ALIGNED_16(int16_t, p1, [BUF_SIZE]);
+        LOCAL_ALIGNED_16(int16_t, p2, [BUF_SIZE]);
+
+        randomize(p1, BUF_SIZE);
+        memcpy(p2, p1, BUF_SIZE * sizeof(*p1));
+
+        call_ref(p1);
+        call_new(p2);
+
+        if (memcmp(p1,  p2,  BUF_SIZE * sizeof (*p1)) != 0) {
+            fail();
+        }
+
+        bench_new(p1);
+    }
+
+    report("rv34_inv_transform_dc");
+}
+
+void checkasm_check_rv34dsp(void)
+{
+    RV34DSPContext s = { 0 };
+    ff_rv34dsp_init(&s);
+
+    test_rv34_inv_transform_dc(&s);
+}
diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak
index 3d775549ee..086493c4bd 100644
--- a/tests/fate/checkasm.mak
+++ b/tests/fate/checkasm.mak
@@ -34,6 +34,7 @@  FATE_CHECKASM = fate-checkasm-aacencdsp                                 \
                 fate-checkasm-opusdsp                                   \
                 fate-checkasm-pixblockdsp                               \
                 fate-checkasm-sbrdsp                                    \
+                fate-checkasm-rv34dsp                                   \
                 fate-checkasm-svq1enc                                   \
                 fate-checkasm-synth_filter                              \
                 fate-checkasm-sw_gbrp                                   \
-- 
2.43.0