diff mbox series

[FFmpeg-devel,5/5,inline,assembly] add memory to sub_median_pred_mmxext

Message ID 20200422174918.7290-5-frederic.recoules@univ-grenoble-alpes.fr
State New
Headers show
Series [FFmpeg-devel,1/5,inline,assembly] prepares for contiguous assembly statements merging | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

FRÉDÉRIC RECOULES April 22, 2020, 5:49 p.m. UTC
From: Frédéric Recoules <frederic.recoules@orange.fr>

---
 libavcodec/x86/lossless_videoencdsp_init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

FRÉDÉRIC RECOULES May 4, 2020, 7:52 p.m. UTC | #1
Hi Michael, 

I would like an update on the review process. 

The patches add missing clobbers (mmx, xmm and memory) to some assembly chunks. 
Note that looking at the commit history, some other chunks have already been patched in such a way by the past. 
Moreover, as far as I know, the patches from 1 to 14 passed the fate tests, both on my computer and on patchwork. 
Let me know if you have any remark on them. 

By the way, I have a deadline that comes and I would really appreciate to see the patches applied by wednesday night. Do you think it would be possible? 


Regards, 
Frédéric 


De: "frederic recoules" <frederic.recoules@univ-grenoble-alpes.fr> 
À: "ffmpeg-devel" <ffmpeg-devel@ffmpeg.org> 
Cc: "frederic recoules" <frederic.recoules@orange.fr> 
Envoyé: Dimanche 26 Avril 2020 21:44:24 
Objet: [FFmpeg-devel] [PATCH 14/14] [inline assembly] add mmx clobbers to cavsdsp 

From: Frédéric Recoules <frederic.recoules@orange.fr> 

--- 
libavcodec/x86/cavsdsp.c | 9 ++++++--- 
1 file changed, 6 insertions(+), 3 deletions(-) 

diff --git a/libavcodec/x86/cavsdsp.c b/libavcodec/x86/cavsdsp.c 
index becb3a4808..b1b2c7b069 100644 
--- a/libavcodec/x86/cavsdsp.c 
+++ b/libavcodec/x86/cavsdsp.c 
@@ -166,7 +166,8 @@ static void cavs_idct8_add_sse2(uint8_t *dst, int16_t *block, ptrdiff_t stride) 
: "+a"(src), "+c"(dst)\ 
: "S"((x86_reg)srcStride), "r"((x86_reg)dstStride)\ 
NAMED_CONSTRAINTS_ADD(ADD,MUL1,MUL2)\ 
- : "memory"\ 
+ : "memory" MMX_CLOBBERS(, "mm0", "mm1", "mm2", "mm3",\ 
+ "mm4", "mm5", "mm6", "mm7") \ 
);\ 
if(h==16){\ 
__asm__ volatile(\ 
@@ -182,7 +183,8 @@ static void cavs_idct8_add_sse2(uint8_t *dst, int16_t *block, ptrdiff_t stride) 
: "+a"(src), "+c"(dst)\ 
: "S"((x86_reg)srcStride), "r"((x86_reg)dstStride)\ 
NAMED_CONSTRAINTS_ADD(ADD,MUL1,MUL2)\ 
- : "memory"\ 
+ : "memory" MMX_CLOBBERS(, "mm0", "mm1", "mm2", "mm3",\ 
+ "mm4", "mm5", "mm6", "mm7") \ 
);\ 
}\ 
src += 4-(h+5)*srcStride;\ 
@@ -235,7 +237,8 @@ static void OPNAME ## cavs_qpel8_h_ ## MMX(uint8_t *dst, const uint8_t *src, ptr 
: "+a"(src), "+c"(dst), "+m"(h)\ 
: "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\ 
NAMED_CONSTRAINTS_ADD(ff_pw_4,ff_pw_5)\ 
- : "memory"\ 
+ : "memory" MMX_CLOBBERS(, "mm0", "mm1", "mm2", "mm3",\ 
+ "mm4", "mm5", "mm6", "mm7")\ 
);\ 
}\ 
\
FRÉDÉRIC RECOULES July 23, 2020, 2 p.m. UTC | #2
Hi, 

I just realized that I have been unsubscribed from the mailing list (is there a inactivity timeout?).
Thus, I do not know if there was some news about the review of the submitted patches. 
Yet, I could well imagine that some conflicts have appeared since the submission in May, so if it is the case, let me know it and I will try to update them. 

For memory, the patches try to harmonize the interface of inline assembly chunks because for some of them, the compiler miss information (like clobbers) such that it could take advantage of it to produce wrong code. The patches help to avoid unexpected behaviours which may depend on the compiler or the optimization level. 

I am looking forward to hearing from you, 

Regards, 
Frédéric Recoules 

----- Mail original ----- 
De: "FRÉDÉRIC RECOULES" <frederic.recoules@univ-grenoble-alpes.fr> 
À: "ffmpeg-devel" <ffmpeg-devel@ffmpeg.org> 
Cc: "michael" <michael@niedermayer.cc>, "frederic recoules" <frederic.recoules@orange.fr> 
Envoyé: Lundi 4 Mai 2020 21:52:44 
Objet: Re: [FFmpeg-devel] [PATCH 14/14] [inline assembly] add mmx clobbers to cavsdsp 

Hi Michael, 

I would like an update on the review process. 

The patches add missing clobbers (mmx, xmm and memory) to some assembly chunks. 
Note that looking at the commit history, some other chunks have already been patched in such a way by the past. 
Moreover, as far as I know, the patches from 1 to 14 passed the fate tests, both on my computer and on patchwork. 
Let me know if you have any remark on them. 

By the way, I have a deadline that comes and I would really appreciate to see the patches applied by wednesday night. Do you think it would be possible? 


Regards, 
Frédéric 


De: "frederic recoules" <frederic.recoules@univ-grenoble-alpes.fr> 
À: "ffmpeg-devel" <ffmpeg-devel@ffmpeg.org> 
Cc: "frederic recoules" <frederic.recoules@orange.fr> 
Envoyé: Dimanche 26 Avril 2020 21:44:24 
Objet: [FFmpeg-devel] [PATCH 14/14] [inline assembly] add mmx clobbers to cavsdsp 

From: Frédéric Recoules <frederic.recoules@orange.fr> 

--- 
libavcodec/x86/cavsdsp.c | 9 ++++++--- 
1 file changed, 6 insertions(+), 3 deletions(-) 

diff --git a/libavcodec/x86/cavsdsp.c b/libavcodec/x86/cavsdsp.c 
index becb3a4808..b1b2c7b069 100644 
--- a/libavcodec/x86/cavsdsp.c 
+++ b/libavcodec/x86/cavsdsp.c 
@@ -166,7 +166,8 @@ static void cavs_idct8_add_sse2(uint8_t *dst, int16_t *block, ptrdiff_t stride) 
: "+a"(src), "+c"(dst)\ 
: "S"((x86_reg)srcStride), "r"((x86_reg)dstStride)\ 
NAMED_CONSTRAINTS_ADD(ADD,MUL1,MUL2)\ 
- : "memory"\ 
+ : "memory" MMX_CLOBBERS(, "mm0", "mm1", "mm2", "mm3",\ 
+ "mm4", "mm5", "mm6", "mm7") \ 
);\ 
if(h==16){\ 
__asm__ volatile(\ 
@@ -182,7 +183,8 @@ static void cavs_idct8_add_sse2(uint8_t *dst, int16_t *block, ptrdiff_t stride) 
: "+a"(src), "+c"(dst)\ 
: "S"((x86_reg)srcStride), "r"((x86_reg)dstStride)\ 
NAMED_CONSTRAINTS_ADD(ADD,MUL1,MUL2)\ 
- : "memory"\ 
+ : "memory" MMX_CLOBBERS(, "mm0", "mm1", "mm2", "mm3",\ 
+ "mm4", "mm5", "mm6", "mm7") \ 
);\ 
}\ 
src += 4-(h+5)*srcStride;\ 
@@ -235,7 +237,8 @@ static void OPNAME ## cavs_qpel8_h_ ## MMX(uint8_t *dst, const uint8_t *src, ptr 
: "+a"(src), "+c"(dst), "+m"(h)\ 
: "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\ 
NAMED_CONSTRAINTS_ADD(ff_pw_4,ff_pw_5)\ 
- : "memory"\ 
+ : "memory" MMX_CLOBBERS(, "mm0", "mm1", "mm2", "mm3",\ 
+ "mm4", "mm5", "mm6", "mm7")\ 
);\ 
}\ 
\
Michael Niedermayer July 23, 2020, 6 p.m. UTC | #3
On Thu, Jul 23, 2020 at 04:00:35PM +0200, FRÉDÉRIC RECOULES wrote:
> Hi, 
> 
> I just realized that I have been unsubscribed from the mailing list (is there a inactivity timeout?).

there is no inactivity timeout but occasionally something gets misclassified
as spam by some mail providers. For example GMX decided to mark all mails
from our server as spam for a few days. These things lead to bounces
the bounces cause unsubscriptions.
I did not check what happened in your case though specifically

thx

[...]
diff mbox series

Patch

diff --git a/libavcodec/x86/lossless_videoencdsp_init.c b/libavcodec/x86/lossless_videoencdsp_init.c
index fb481e66f5..feb6874f94 100644
--- a/libavcodec/x86/lossless_videoencdsp_init.c
+++ b/libavcodec/x86/lossless_videoencdsp_init.c
@@ -71,7 +71,7 @@  static void sub_median_pred_mmxext(uint8_t *dst, const uint8_t *src1,
         " jb 1b                         \n\t"
         : "+r" (i)
         : "r" (src1), "r" (src2), "r" (dst), "r" ((x86_reg) w)
-	: MMX_CLOBBERS("mm0", "mm1", "mm2", "mm3", "mm4", "mm5")
+	: MMX_CLOBBERS("mm0", "mm1", "mm2", "mm3", "mm4", "mm5",) "memory"
 	);
 
     l  = *left;