Fix libmpcodecs inline asm on ICL
This is a patch to enable intel compiler on Windows to compile the libmpcodec inline asm functions. It is based of similar work previously done in FFmpeg (and in fact was initially posted there) and extends some previous patches that were applied to libmpcodecs a few months ago. This is required to compile ffmpeg under icl with asm and was previously posted (probably incorrectly) on the ffmpeg mailing list but im now posting it here in the correct location. Matt
On 14 April 2014 15:13, Matt Oliver <protogonoi@gmail.com> wrote:
This is a patch to enable intel compiler on Windows to compile the libmpcodec inline asm functions. It is based of similar work previously done in FFmpeg (and in fact was initially posted there) and extends some previous patches that were applied to libmpcodecs a few months ago. This is required to compile ffmpeg under icl with asm and was previously posted (probably incorrectly) on the ffmpeg mailing list but im now posting it here in the correct location.
Since this has been here for a few weeks without review Im going to ping Michael as he suggested. Michael if this could get applied and then pulled down to ffmpeg it would be appreciated. Matt
On Mon, Apr 14, 2014 at 03:13:22PM +1000, Matt Oliver wrote:
This is a patch to enable intel compiler on Windows to compile the libmpcodec inline asm functions. It is based of similar work previously done in FFmpeg (and in fact was initially posted there) and extends some previous patches that were applied to libmpcodecs a few months ago. This is required to compile ffmpeg under icl with asm and was previously posted (probably incorrectly) on the ffmpeg mailing list but im now posting it here in the correct location.
Matt
vf_fspp.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) b54f42435c23df435d2243e8e11f2be539ee014c 4-4-Fix-libmpcodecs-inline-asm-on-ICL-part-2.patch From 0a314fb3faa063a008e654862375e2ef8a674658 Mon Sep 17 00:00:00 2001 From: Matt Oliver <protogonoi@gmail.com> Date: Sun, 9 Feb 2014 22:25:15 +1100 Subject: [PATCH] Fix libmpcodecs inline asm on ICL.
--- libavfilter/libmpcodecs/vf_fspp.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/libavfilter/libmpcodecs/vf_fspp.c b/libavfilter/libmpcodecs/vf_fspp.c index dadfae7..65af77d 100644 --- a/libavfilter/libmpcodecs/vf_fspp.c +++ b/libavfilter/libmpcodecs/vf_fspp.c @@ -1598,6 +1598,10 @@ static void column_fidct_mmx(int16_t* thr_adr, int16_t *data, int16_t *output,
: "+S"(data), "+D"(output), "+c"(cnt), "=o"(temps) : "d"(thr_adr) + NAMED_CONSTRAINTS_ADD(ff_MM_FIX_0_707106781,MM_2,MM_FIX_1_414213562_A,MM_FIX_1_414213562,MM_FIX_0_382683433, + ff_MM_FIX_0_541196100,MM_FIX_1_306562965,MM_FIX_0_847759065) + NAMED_CONSTRAINTS_ADD(MM_FIX_0_566454497,MM_FIX_0_198912367,MM_FIX_2_613125930,MM_FIX_1_847759065, + MM_FIX_1_082392200,ff_MM_FIX_0_541196100,MM_FIX_1_306562965) : "%"REG_a ); } @@ -1867,6 +1871,8 @@ static void row_idct_mmx (int16_t* workspace,
: "+S"(workspace), "+D"(output_adr), "+c"(cnt), "=o"(temps) : "a"(output_stride*sizeof(short)) + NAMED_CONSTRAINTS_ADD(MM_FIX_1_414213562_A,MM_FIX_2_613125930,MM_FIX_1_847759065,MM_FIX_1_082392200, + MM_FIX_1_414213562,MM_DESCALE_RND) : "%"REG_d ); } @@ -1974,10 +1980,10 @@ static void row_fdct_mmx(int16_t *data, const uint8_t *pixels, int line_size, "movd (%%"REG_S",%%"REG_a",2), %%mm3 \n\t" //5 "paddw %%mm4, %%mm1 \n\t"
- "movq %%mm5, 0*8+%3 \n\t" //t7 + "movq %%mm5, %3 \n\t" //t7 "punpcklbw %%mm7, %%mm3 \n\t"
- "movq %%mm6, 1*8+%3 \n\t" //t6 + "movq %%mm6, %4 \n\t" //t6 "movq %%mm2, %%mm4 \n\t"
"movd (%%"REG_S"), %%mm5 \n\t" //3 @@ -2023,7 +2029,7 @@ static void row_fdct_mmx(int16_t *data, const uint8_t *pixels, int line_size, "psubw %%mm1, %%mm5 \n\t" //d1 "movq %%mm0, %%mm6 \n\t"
- "movq 1*8+%3, %%mm1 \n\t" + "movq %4, %%mm1 \n\t" "punpcklwd %%mm5, %%mm0 \n\t"
"punpckhwd %%mm5, %%mm6 \n\t" @@ -2047,7 +2053,7 @@ static void row_fdct_mmx(int16_t *data, const uint8_t *pixels, int line_size, "movq %%mm7, "DCTSIZE_S"*3*2(%%"REG_D") \n\t" "psllw $2, %%mm3 \n\t" //t10
- "movq 0*8+%3, %%mm2 \n\t" + "movq %3, %%mm2 \n\t" "psllw $2, %%mm4 \n\t" //t11
"pmulhw "MANGLE(ff_MM_FIX_0_707106781)", %%mm4 \n\t" //z3
@@ -2110,8 +2116,8 @@ static void row_fdct_mmx(int16_t *data, const uint8_t *pixels, int line_size, "dec %%"REG_c" \n\t" "jnz 6b \n\t"
- : "+S"(pixels), "+D"(data), "+c"(cnt), "=o"(temps) - : "a"(line_size) + : "+S"(pixels), "+D"(data), "+c"(cnt), "=o"(temps), "=o"(temps[1]) + : NAMED_CONSTRAINTS(ff_MM_FIX_0_707106781,ff_MM_FIX_0_541196100,MM_FIX_0_382683433,MM_FIX_1_306562965) : "%"REG_d);
line_size is lost here, this doesnt work make sure you test the code ... [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Asymptotically faster algorithms should always be preferred if you have asymptotical amounts of data
line_size is lost here, this doesnt work make sure you test the code ...
My apologies, I always test my code but as this was 1 patch of multiple I had another patch that corrupted my tree (line size was being used as input instead of explicit Reg_a) so the code tested correctly in my tree and I didnt catch it when I did a fresh rebase afterwards. Anyway the correction has been made in the new patch attached and im sorry I never caught that one after the rebase.
On Fri, May 02, 2014 at 06:08:30PM +1000, Matt Oliver wrote:
line_size is lost here, this doesnt work make sure you test the code ...
My apologies, I always test my code but as this was 1 patch of multiple I had another patch that corrupted my tree (line size was being used as input instead of explicit Reg_a) so the code tested correctly in my tree and I didnt catch it when I did a fresh rebase afterwards. Anyway the correction has been made in the new patch attached and im sorry I never caught that one after the rebase.
vf_fspp.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) e6eec88510e21412010740211b82b013f95d2151 Fix-libmpcodecs-inline-asm-on-ICL.patch From 9e49fb88b1e6bff2c50d73c81174eece425df2c2 Mon Sep 17 00:00:00 2001 From: Matt Oliver <protogonoi@gmail.com> Date: Fri, 2 May 2014 18:02:55 +1000 Subject: [PATCH] Fix libmpcodecs inline asm on ICL.
works applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Everything should be made as simple as possible, but not simpler. -- Albert Einstein
On 3 May 2014 04:37, Michael Niedermayer <michaelni@gmx.at> wrote:
On Fri, May 02, 2014 at 06:08:30PM +1000, Matt Oliver wrote:
line_size is lost here, this doesnt work make sure you test the code ...
My apologies, I always test my code but as this was 1 patch of multiple I had another patch that corrupted my tree (line size was being used as input instead of explicit Reg_a) so the code tested correctly in my tree and I didnt catch it when I did a fresh rebase afterwards. Anyway the correction has been made in the new patch attached and im sorry I never caught that one after the rebase.
vf_fspp.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) e6eec88510e21412010740211b82b013f95d2151 Fix-libmpcodecs-inline-asm-on-ICL.patch From 9e49fb88b1e6bff2c50d73c81174eece425df2c2 Mon Sep 17 00:00:00 2001 From: Matt Oliver <protogonoi@gmail.com> Date: Fri, 2 May 2014 18:02:55 +1000 Subject: [PATCH] Fix libmpcodecs inline asm on ICL.
works applied
thx
[...]
-- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Everything should be made as simple as possible, but not simpler. -- Albert Einstein
_______________________________________________ MPlayer-dev-eng mailing list MPlayer-dev-eng@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng
thanks, although it appears some minor fixes are needed to support the latest gcc when using lto (as found by Carl Eugen Hoyos). Patch was posted to FFmpeg devel list but Ill also list it here as its probably the more appropriate place.
participants (2)
-
Matt Oliver -
Michael Niedermayer