[PR] tests/checkasm/checkasm: Map rnd to checkasm_rand_uint32, h264pred: avoid declare_func_emms (PR #23931)

mkver via ffmpeg-devel <[email protected]> Mon, 27 Jul 2026 19:51:55 -0000
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <178518191559.51.7452961147809337725@29965ddac10e>
PR #23931 opened by mkver
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23931
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23931.patch


>From aebbcab045ed56bcf630456dcc40fc96800855b0 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Mon, 27 Jul 2026 21:22:16 +0200
Subject: [PATCH 1/2] tests/checkasm/checkasm: Map rnd to checkasm_rand_uint32

Before the switch to libcheckasm, rnd returned an unsigned value;
now it only returns a signed value in the range 0..INT_MAX,
so that the sign bit is not random at all. This means that when
rnd is used to initialize four bytes at a time, one bit is not random.
Fix this by mapping rnd to checkasm_rand_uint32().

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 tests/checkasm/checkasm.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
index b473c5d711..70987b52f1 100644
--- a/tests/checkasm/checkasm.h
+++ b/tests/checkasm/checkasm.h
@@ -133,7 +133,7 @@ void checkasm_check_vvc_alf(void);
 void checkasm_check_vvc_mc(void);
 void checkasm_check_vvc_sao(void);
 
-#define rnd checkasm_rand
+#define rnd checkasm_rand_uint32
 #define declare_func_float declare_func
 #define bench(...) checkasm_bench(__VA_ARGS__)
 
-- 
2.52.0


>From 0547b93913f9f835ab7ed6244ae407f8bea47133 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Mon, 27 Jul 2026 21:37:04 +0200
Subject: [PATCH 2/2] tests/checkasm/h264pred: Avoid declare_func_emms

This is possible after the recent MMX->XMM conversions
and preferable as it makes the test stricter.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 tests/checkasm/h264pred.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/checkasm/h264pred.c b/tests/checkasm/h264pred.c
index 21ce7f4c35..1bf8357ad4 100644
--- a/tests/checkasm/h264pred.c
+++ b/tests/checkasm/h264pred.c
@@ -165,7 +165,7 @@ static void check_pred8x8(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
                           int codec, int chroma_format, int bit_depth)
 {
     int pred_mode;
-    declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *src, ptrdiff_t stride);
+    declare_func(void, uint8_t *src, ptrdiff_t stride);
 
     for (pred_mode = 0; pred_mode < 11; pred_mode++) {
         if (check_pred_func(h->pred8x8[pred_mode], (chroma_format == 2) ? "8x16" : "8x8",
@@ -185,7 +185,7 @@ static void check_pred16x16(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
 {
     if (chroma_format == 1) {
         int pred_mode;
-        declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *src, ptrdiff_t stride);
+        declare_func(void, uint8_t *src, ptrdiff_t stride);
 
         for (pred_mode = 0; pred_mode < 9; pred_mode++) {
             if (check_pred_func(h->pred16x16[pred_mode], "16x16", pred16x16_modes[codec][pred_mode])) {
@@ -205,7 +205,7 @@ static void check_pred8x8l(H264PredContext *h, uint8_t *buf0, uint8_t *buf1,
 {
     if (chroma_format == 1 && codec_ids[codec] == AV_CODEC_ID_H264) {
         int pred_mode;
-        declare_func_emms(AV_CPU_FLAG_MMXEXT, void, uint8_t *src, int topleft, int topright, ptrdiff_t stride);
+        declare_func(void, uint8_t *src, int topleft, int topright, ptrdiff_t stride);
 
         for (pred_mode = 0; pred_mode < 12; pred_mode++) {
             if (check_pred_func(h->pred8x8l[pred_mode], "8x8l", pred4x4_modes[codec][pred_mode])) {
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]