Hi, 2015-02-02 18:23 GMT+01:00 James Almer <jamr...@gmail.com>: >>> https://github.com/OpenHEVC/FFmpeg/commit/940300945995c20f7583394ebe6907e72829b4a [...] > Tested it. Doesn't pass with avx2.
Actually, 940300945 does need to be reverted for the patch to work, as Mickael stated. It miscompiles hevc_mc.asm, more particularly the [eq]pel_hv functions. No idea why. See attached differences in output from yasm. (debug and empty lines stripped) -- Christophe
--- nok.asm 2015-02-03 12:46:52 +0100 +++ ok.asm 2015-02-03 12:45:44 +0100 @@ -27448,79 +27448,79 @@ vpackssdw ymm0, ymm7 add rdx, R8 lea rdi, [rdx-2] - vmovdqu ymm0, [rdi ] + vmovdqu ymm4, [rdi ] vmovdqu ymm7, [rdi+ 2] vmovdqu ymm2, [rdi+2*2] vmovdqu ymm1, [rdi+3*2] - vpunpckhwd ymm3, ymm0, ymm7 - vpunpcklwd ymm0, ymm7 + vpunpckhwd ymm3, ymm4, ymm7 + vpunpcklwd ymm4, ymm7 vpunpckhwd ymm7, ymm2, ymm1 vpunpcklwd ymm2, ymm1 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm4, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm4, ymm2 vpmaddwd ymm3, ymm14 vpmaddwd ymm7, ymm15 vpaddd ymm3, ymm7 vpsrad ymm3, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm3 + vpsrad ymm4, 10-8 + vpackssdw ymm4, ymm3 add rdx, R8 lea rdi, [rdx-2] - vmovdqu ymm0, [rdi ] + vmovdqu ymm5, [rdi ] vmovdqu ymm3, [rdi+ 2] vmovdqu ymm2, [rdi+2*2] vmovdqu ymm7, [rdi+3*2] - vpunpckhwd ymm1, ymm0, ymm3 - vpunpcklwd ymm0, ymm3 + vpunpckhwd ymm1, ymm5, ymm3 + vpunpcklwd ymm5, ymm3 vpunpckhwd ymm3, ymm2, ymm7 vpunpcklwd ymm2, ymm7 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm5, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm5, ymm2 vpmaddwd ymm1, ymm14 vpmaddwd ymm3, ymm15 vpaddd ymm1, ymm3 vpsrad ymm1, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm1 + vpsrad ymm5, 10-8 + vpackssdw ymm5, ymm1 add rdx, R8 .loop lea rdi, [rdx-2] - vmovdqu ymm0, [rdi ] + vmovdqu ymm6, [rdi ] vmovdqu ymm1, [rdi+ 2] vmovdqu ymm2, [rdi+2*2] vmovdqu ymm3, [rdi+3*2] - vpunpckhwd ymm7, ymm0, ymm1 - vpunpcklwd ymm0, ymm1 + vpunpckhwd ymm7, ymm6, ymm1 + vpunpcklwd ymm6, ymm1 vpunpckhwd ymm1, ymm2, ymm3 vpunpcklwd ymm2, ymm3 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm6, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm6, ymm2 vpmaddwd ymm7, ymm14 vpmaddwd ymm1, ymm15 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm7 - vpunpcklwd ymm0, ymm4, ymm5 - vpunpcklwd ymm2, ymm6, ymm3 - vpunpckhwd ymm7, ymm4, ymm5 - vpunpckhwd ymm1, ymm6, ymm3 - vpmaddwd ymm0, ymm12 + vpsrad ymm6, 10-8 + vpackssdw ymm6, ymm7 + vpunpcklwd ymm3, ymm0, ymm4 + vpunpcklwd ymm2, ymm5, ymm6 + vpunpckhwd ymm7, ymm0, ymm4 + vpunpckhwd ymm1, ymm5, ymm6 + vpmaddwd ymm3, ymm12 vpmaddwd ymm2, ymm13 - vpaddd ymm0, ymm2 + vpaddd ymm3, ymm2 vpmaddwd ymm7, ymm12 vpmaddwd ymm1, ymm13 vpaddd ymm7, ymm1 vpsrad ymm7, 14-8 - vpsrad ymm0, 14-8 - vpackssdw ymm0, ymm7 - vmovdqu [rcx], ymm0 + vpsrad ymm3, 14-8 + vpackssdw ymm3, ymm7 + vmovdqu [rcx], ymm3 + vmovdqa ymm0, ymm4 vmovdqa ymm4, ymm5 vmovdqa ymm5, ymm6 - vmovdqa ymm6, ymm3 sub rcx, -128 add rdx, R8 dec R9d @@ -27592,84 +27592,84 @@ vpackssdw ymm0, ymm7 add R8, R9 lea rsi, [R8-2] - vmovdqu ymm0, [rsi ] + vmovdqu ymm4, [rsi ] vmovdqu ymm7, [rsi+ 2] vmovdqu ymm2, [rsi+2*2] vmovdqu ymm1, [rsi+3*2] - vpunpckhwd ymm3, ymm0, ymm7 - vpunpcklwd ymm0, ymm7 + vpunpckhwd ymm3, ymm4, ymm7 + vpunpcklwd ymm4, ymm7 vpunpckhwd ymm7, ymm2, ymm1 vpunpcklwd ymm2, ymm1 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm4, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm4, ymm2 vpmaddwd ymm3, ymm14 vpmaddwd ymm7, ymm15 vpaddd ymm3, ymm7 vpsrad ymm3, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm3 + vpsrad ymm4, 10-8 + vpackssdw ymm4, ymm3 add R8, R9 lea rsi, [R8-2] - vmovdqu ymm0, [rsi ] + vmovdqu ymm5, [rsi ] vmovdqu ymm3, [rsi+ 2] vmovdqu ymm2, [rsi+2*2] vmovdqu ymm7, [rsi+3*2] - vpunpckhwd ymm1, ymm0, ymm3 - vpunpcklwd ymm0, ymm3 + vpunpckhwd ymm1, ymm5, ymm3 + vpunpcklwd ymm5, ymm3 vpunpckhwd ymm3, ymm2, ymm7 vpunpcklwd ymm2, ymm7 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm5, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm5, ymm2 vpmaddwd ymm1, ymm14 vpmaddwd ymm3, ymm15 vpaddd ymm1, ymm3 vpsrad ymm1, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm1 + vpsrad ymm5, 10-8 + vpackssdw ymm5, ymm1 add R8, R9 .loop lea rsi, [R8-2] - vmovdqu ymm0, [rsi ] + vmovdqu ymm6, [rsi ] vmovdqu ymm1, [rsi+ 2] vmovdqu ymm2, [rsi+2*2] vmovdqu ymm3, [rsi+3*2] - vpunpckhwd ymm7, ymm0, ymm1 - vpunpcklwd ymm0, ymm1 + vpunpckhwd ymm7, ymm6, ymm1 + vpunpcklwd ymm6, ymm1 vpunpckhwd ymm1, ymm2, ymm3 vpunpcklwd ymm2, ymm3 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm6, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm6, ymm2 vpmaddwd ymm7, ymm14 vpmaddwd ymm1, ymm15 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm7 - vmovdqa ymm3, ymm0 - vpunpcklwd ymm0, ymm4, ymm5 - vpunpcklwd ymm2, ymm6, ymm3 - vpunpckhwd ymm7, ymm4, ymm5 - vpunpckhwd ymm1, ymm6, ymm3 - vpmaddwd ymm0, ymm12 + vpsrad ymm6, 10-8 + vpackssdw ymm6, ymm7 + vmovdqa ymm3, ymm6 + vpunpcklwd ymm6, ymm0, ymm4 + vpunpcklwd ymm2, ymm5, ymm3 + vpunpckhwd ymm7, ymm0, ymm4 + vpunpckhwd ymm1, ymm5, ymm3 + vpmaddwd ymm6, ymm12 vpmaddwd ymm2, ymm13 - vpaddd ymm0, ymm2 + vpaddd ymm6, ymm2 vpmaddwd ymm7, ymm12 vpmaddwd ymm1, ymm13 vpaddd ymm7, ymm1 vpsrad ymm7, 14-8 - vpsrad ymm0, 14-8 - vpackssdw ymm0, ymm7 - vpmulhrsw ymm0, [pw_10] + vpsrad ymm6, 14-8 + vpackssdw ymm6, ymm7 + vpmulhrsw ymm6, [pw_10] vpmulhrsw ymm7, [pw_10] - vpminsw ymm0, [max_pixels_10] - vpmaxsw ymm0, [zero] - vmovdqu [rcx], ymm0 + vpminsw ymm6, [max_pixels_10] + vpmaxsw ymm6, [zero] + vmovdqu [rcx], ymm6 + vmovdqa ymm0, ymm4 vmovdqa ymm4, ymm5 - vmovdqa ymm5, ymm6 - vmovdqa ymm6, ymm3 + vmovdqa ymm5, ymm3 add rcx, rdx add R8, R9 dec R10d @@ -27744,86 +27744,86 @@ vpackssdw ymm0, ymm7 add R8, R9 lea rbx, [R8-2] - vmovdqu ymm0, [rbx ] + vmovdqu ymm4, [rbx ] vmovdqu ymm7, [rbx+ 2] vmovdqu ymm2, [rbx+2*2] vmovdqu ymm1, [rbx+3*2] - vpunpckhwd ymm3, ymm0, ymm7 - vpunpcklwd ymm0, ymm7 + vpunpckhwd ymm3, ymm4, ymm7 + vpunpcklwd ymm4, ymm7 vpunpckhwd ymm7, ymm2, ymm1 vpunpcklwd ymm2, ymm1 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm4, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm4, ymm2 vpmaddwd ymm3, ymm14 vpmaddwd ymm7, ymm15 vpaddd ymm3, ymm7 vpsrad ymm3, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm3 + vpsrad ymm4, 10-8 + vpackssdw ymm4, ymm3 add R8, R9 lea rbx, [R8-2] - vmovdqu ymm0, [rbx ] + vmovdqu ymm5, [rbx ] vmovdqu ymm3, [rbx+ 2] vmovdqu ymm2, [rbx+2*2] vmovdqu ymm7, [rbx+3*2] - vpunpckhwd ymm1, ymm0, ymm3 - vpunpcklwd ymm0, ymm3 + vpunpckhwd ymm1, ymm5, ymm3 + vpunpcklwd ymm5, ymm3 vpunpckhwd ymm3, ymm2, ymm7 vpunpcklwd ymm2, ymm7 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm5, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm5, ymm2 vpmaddwd ymm1, ymm14 vpmaddwd ymm3, ymm15 vpaddd ymm1, ymm3 vpsrad ymm1, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm1 + vpsrad ymm5, 10-8 + vpackssdw ymm5, ymm1 add R8, R9 .loop lea rbx, [R8-2] - vmovdqu ymm0, [rbx ] + vmovdqu ymm6, [rbx ] vmovdqu ymm1, [rbx+ 2] vmovdqu ymm2, [rbx+2*2] vmovdqu ymm3, [rbx+3*2] - vpunpckhwd ymm7, ymm0, ymm1 - vpunpcklwd ymm0, ymm1 + vpunpckhwd ymm7, ymm6, ymm1 + vpunpcklwd ymm6, ymm1 vpunpckhwd ymm1, ymm2, ymm3 vpunpcklwd ymm2, ymm3 - vpmaddwd ymm0, ymm14 + vpmaddwd ymm6, ymm14 vpmaddwd ymm2, ymm15 - vpaddd ymm0, ymm2 + vpaddd ymm6, ymm2 vpmaddwd ymm7, ymm14 vpmaddwd ymm1, ymm15 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpsrad ymm0, 10-8 - vpackssdw ymm0, ymm7 - vpunpcklwd ymm0, ymm4, ymm5 - vpunpcklwd ymm2, ymm6, ymm3 - vpunpckhwd ymm7, ymm4, ymm5 - vpunpckhwd ymm1, ymm6, ymm3 - vpmaddwd ymm0, ymm12 + vpsrad ymm6, 10-8 + vpackssdw ymm6, ymm7 + vpunpcklwd ymm3, ymm0, ymm4 + vpunpcklwd ymm2, ymm5, ymm6 + vpunpckhwd ymm7, ymm0, ymm4 + vpunpckhwd ymm1, ymm5, ymm6 + vpmaddwd ymm3, ymm12 vpmaddwd ymm2, ymm13 - vpaddd ymm0, ymm2 + vpaddd ymm3, ymm2 vpmaddwd ymm7, ymm12 vpmaddwd ymm1, ymm13 vpaddd ymm7, ymm1 vpsrad ymm7, 14-8 - vpsrad ymm0, 14-8 - vpackssdw ymm0, ymm7 + vpsrad ymm3, 14-8 + vpackssdw ymm3, ymm7 vmovdqu ymm8, [R10] - vpaddsw ymm0, ymm8 + vpaddsw ymm3, ymm8 vpaddsw ymm7, ymm9 - vpmulhrsw ymm0, [pw_bi_10] + vpmulhrsw ymm3, [pw_bi_10] vpmulhrsw ymm7, [pw_bi_10] - vpminsw ymm0, [max_pixels_10] - vpmaxsw ymm0, [zero] - vmovdqu [rcx], ymm0 + vpminsw ymm3, [max_pixels_10] + vpmaxsw ymm3, [zero] + vmovdqu [rcx], ymm3 + vmovdqa ymm0, ymm4 vmovdqa ymm4, ymm5 vmovdqa ymm5, ymm6 - vmovdqa ymm6, ymm3 add rcx, rdx add R8, R9 sub R10, -128 @@ -27893,90 +27893,90 @@ vpaddw ymm7, ymm1 add rdx, R8 lea rdi, [rdx-1] - vmovdqu ymm0, [rdi ] - vmovdqu ymm7, [rdi+ 1] + vmovdqu ymm4, [rdi ] + vmovdqu ymm8, [rdi+ 1] vmovdqu ymm2, [rdi+2*1] vmovdqu ymm1, [rdi+3*1] - vpunpckhbw ymm3, ymm0, ymm7 - vpunpcklbw ymm0, ymm7 - vpunpckhbw ymm7, ymm2, ymm1 + vpunpckhbw ymm3, ymm4, ymm8 + vpunpcklbw ymm4, ymm8 + vpunpckhbw ymm8, ymm2, ymm1 vpunpcklbw ymm2, ymm1 - vpmaddubsw ymm0, ymm14 + vpmaddubsw ymm4, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 + vpaddw ymm4, ymm2 vpmaddubsw ymm3, ymm14 - vpmaddubsw ymm7, ymm15 - vpaddw ymm3, ymm7 + vpmaddubsw ymm8, ymm15 + vpaddw ymm3, ymm8 add rdx, R8 lea rdi, [rdx-1] - vmovdqu ymm0, [rdi ] - vmovdqu ymm3, [rdi+ 1] + vmovdqu ymm5, [rdi ] + vmovdqu ymm9, [rdi+ 1] vmovdqu ymm2, [rdi+2*1] - vmovdqu ymm7, [rdi+3*1] - vpunpckhbw ymm1, ymm0, ymm3 - vpunpcklbw ymm0, ymm3 - vpunpckhbw ymm3, ymm2, ymm7 - vpunpcklbw ymm2, ymm7 - vpmaddubsw ymm0, ymm14 + vmovdqu ymm8, [rdi+3*1] + vpunpckhbw ymm1, ymm5, ymm9 + vpunpcklbw ymm5, ymm9 + vpunpckhbw ymm9, ymm2, ymm8 + vpunpcklbw ymm2, ymm8 + vpmaddubsw ymm5, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 + vpaddw ymm5, ymm2 vpmaddubsw ymm1, ymm14 - vpmaddubsw ymm3, ymm15 - vpaddw ymm1, ymm3 + vpmaddubsw ymm9, ymm15 + vpaddw ymm1, ymm9 add rdx, R8 .loop lea rdi, [rdx-1] - vmovdqu ymm0, [rdi ] - vmovdqu ymm1, [rdi+ 1] + vmovdqu ymm6, [rdi ] + vmovdqu ymm10, [rdi+ 1] vmovdqu ymm2, [rdi+2*1] - vmovdqu ymm3, [rdi+3*1] - vpunpckhbw ymm7, ymm0, ymm1 - vpunpcklbw ymm0, ymm1 - vpunpckhbw ymm1, ymm2, ymm3 - vpunpcklbw ymm2, ymm3 - vpmaddubsw ymm0, ymm14 + vmovdqu ymm9, [rdi+3*1] + vpunpckhbw ymm8, ymm6, ymm10 + vpunpcklbw ymm6, ymm10 + vpunpckhbw ymm10, ymm2, ymm9 + vpunpcklbw ymm2, ymm9 + vpmaddubsw ymm6, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 - vpmaddubsw ymm7, ymm14 - vpmaddubsw ymm1, ymm15 - vpaddw ymm7, ymm1 - vpunpcklwd ymm0, ymm4, ymm5 - vpunpcklwd ymm2, ymm6, ymm3 - vpunpckhwd ymm7, ymm4, ymm5 - vpunpckhwd ymm1, ymm6, ymm3 + vpaddw ymm6, ymm2 + vpmaddubsw ymm8, ymm14 + vpmaddubsw ymm10, ymm15 + vpaddw ymm8, ymm10 + vpunpcklwd ymm9, ymm0, ymm4 + vpunpcklwd ymm2, ymm5, ymm6 + vpunpckhwd ymm11, ymm0, ymm4 + vpunpckhwd ymm10, ymm5, ymm6 + vpmaddwd ymm9, ymm12 + vpmaddwd ymm2, ymm13 + vpaddd ymm9, ymm2 + vpmaddwd ymm11, ymm12 + vpmaddwd ymm10, ymm13 + vpaddd ymm11, ymm10 + vpsrad ymm11, 14-8 + vpsrad ymm9, 14-8 + vpackssdw ymm9, ymm11 + vpunpcklwd ymm0, ymm7, ymm3 + vpunpcklwd ymm2, ymm1, ymm8 + vpunpckhwd ymm7, ymm7, ymm3 + vpunpckhwd ymm10, ymm1, ymm8 vpmaddwd ymm0, ymm12 vpmaddwd ymm2, ymm13 vpaddd ymm0, ymm2 vpmaddwd ymm7, ymm12 - vpmaddwd ymm1, ymm13 - vpaddd ymm7, ymm1 + vpmaddwd ymm10, ymm13 + vpaddd ymm7, ymm10 vpsrad ymm7, 14-8 vpsrad ymm0, 14-8 vpackssdw ymm0, ymm7 - vpunpcklwd ymm4, ymm8, ymm9 - vpunpcklwd ymm2, ymm10, ymm11 - vpunpckhwd ymm8, ymm8, ymm9 - vpunpckhwd ymm1, ymm10, ymm11 - vpmaddwd ymm4, ymm12 - vpmaddwd ymm2, ymm13 - vpaddd ymm4, ymm2 - vpmaddwd ymm8, ymm12 - vpmaddwd ymm1, ymm13 - vpaddd ymm8, ymm1 - vpsrad ymm8, 14-8 - vpsrad ymm4, 14-8 - vpackssdw ymm4, ymm8 - vinserti128 ymm2, ymm0, xmm4, 1 - vextracti128 xmm1, ymm0, 1 - vinserti128 ymm1, ymm4, xmm1, 0 + vinserti128 ymm2, ymm9, xmm0, 1 + vextracti128 xmm10, ymm9, 1 + vinserti128 ymm10, ymm0, xmm10, 0 vmovdqu [rcx], ymm2 - vmovdqu [rcx+32], ymm1 + vmovdqu [rcx+32], ymm10 + vmovdqa ymm0, ymm4 vmovdqa ymm4, ymm5 vmovdqa ymm5, ymm6 - vmovdqa ymm6, ymm3 - vmovdqa ymm8, ymm9 - vmovdqa ymm9, ymm10 - vmovdqa ymm10, ymm11 + vmovdqa ymm7, ymm3 + vmovdqa ymm3, ymm1 + vmovdqa ymm1, ymm8 sub rcx, -128 add rdx, R8 dec R9d @@ -28045,90 +28045,90 @@ vpaddw ymm7, ymm1 add R8, R9 lea rsi, [R8-1] - vmovdqu ymm0, [rsi ] - vmovdqu ymm7, [rsi+ 1] + vmovdqu ymm4, [rsi ] + vmovdqu ymm8, [rsi+ 1] vmovdqu ymm2, [rsi+2*1] vmovdqu ymm1, [rsi+3*1] - vpunpckhbw ymm3, ymm0, ymm7 - vpunpcklbw ymm0, ymm7 - vpunpckhbw ymm7, ymm2, ymm1 + vpunpckhbw ymm3, ymm4, ymm8 + vpunpcklbw ymm4, ymm8 + vpunpckhbw ymm8, ymm2, ymm1 vpunpcklbw ymm2, ymm1 - vpmaddubsw ymm0, ymm14 + vpmaddubsw ymm4, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 + vpaddw ymm4, ymm2 vpmaddubsw ymm3, ymm14 - vpmaddubsw ymm7, ymm15 - vpaddw ymm3, ymm7 + vpmaddubsw ymm8, ymm15 + vpaddw ymm3, ymm8 add R8, R9 lea rsi, [R8-1] - vmovdqu ymm0, [rsi ] - vmovdqu ymm3, [rsi+ 1] + vmovdqu ymm5, [rsi ] + vmovdqu ymm9, [rsi+ 1] vmovdqu ymm2, [rsi+2*1] - vmovdqu ymm7, [rsi+3*1] - vpunpckhbw ymm1, ymm0, ymm3 - vpunpcklbw ymm0, ymm3 - vpunpckhbw ymm3, ymm2, ymm7 - vpunpcklbw ymm2, ymm7 - vpmaddubsw ymm0, ymm14 + vmovdqu ymm8, [rsi+3*1] + vpunpckhbw ymm1, ymm5, ymm9 + vpunpcklbw ymm5, ymm9 + vpunpckhbw ymm9, ymm2, ymm8 + vpunpcklbw ymm2, ymm8 + vpmaddubsw ymm5, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 + vpaddw ymm5, ymm2 vpmaddubsw ymm1, ymm14 - vpmaddubsw ymm3, ymm15 - vpaddw ymm1, ymm3 + vpmaddubsw ymm9, ymm15 + vpaddw ymm1, ymm9 add R8, R9 .loop lea rsi, [R8-1] - vmovdqu ymm0, [rsi ] - vmovdqu ymm1, [rsi+ 1] + vmovdqu ymm6, [rsi ] + vmovdqu ymm10, [rsi+ 1] vmovdqu ymm2, [rsi+2*1] - vmovdqu ymm3, [rsi+3*1] - vpunpckhbw ymm7, ymm0, ymm1 - vpunpcklbw ymm0, ymm1 - vpunpckhbw ymm1, ymm2, ymm3 - vpunpcklbw ymm2, ymm3 - vpmaddubsw ymm0, ymm14 + vmovdqu ymm9, [rsi+3*1] + vpunpckhbw ymm8, ymm6, ymm10 + vpunpcklbw ymm6, ymm10 + vpunpckhbw ymm10, ymm2, ymm9 + vpunpcklbw ymm2, ymm9 + vpmaddubsw ymm6, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 - vpmaddubsw ymm7, ymm14 - vpmaddubsw ymm1, ymm15 - vpaddw ymm7, ymm1 - vmovdqa ymm3, ymm0 - vpunpcklwd ymm0, ymm4, ymm5 - vpunpcklwd ymm2, ymm6, ymm3 - vpunpckhwd ymm7, ymm4, ymm5 - vpunpckhwd ymm1, ymm6, ymm3 + vpaddw ymm6, ymm2 + vpmaddubsw ymm8, ymm14 + vpmaddubsw ymm10, ymm15 + vpaddw ymm8, ymm10 + vmovdqa ymm9, ymm6 + vpunpcklwd ymm6, ymm0, ymm4 + vpunpcklwd ymm2, ymm5, ymm9 + vpunpckhwd ymm11, ymm0, ymm4 + vpunpckhwd ymm10, ymm5, ymm9 + vpmaddwd ymm6, ymm12 + vpmaddwd ymm2, ymm13 + vpaddd ymm6, ymm2 + vpmaddwd ymm11, ymm12 + vpmaddwd ymm10, ymm13 + vpaddd ymm11, ymm10 + vpsrad ymm11, 14-8 + vpsrad ymm6, 14-8 + vpackssdw ymm6, ymm11 + vpunpcklwd ymm0, ymm7, ymm3 + vpunpcklwd ymm2, ymm1, ymm8 + vpunpckhwd ymm7, ymm7, ymm3 + vpunpckhwd ymm10, ymm1, ymm8 vpmaddwd ymm0, ymm12 vpmaddwd ymm2, ymm13 vpaddd ymm0, ymm2 vpmaddwd ymm7, ymm12 - vpmaddwd ymm1, ymm13 - vpaddd ymm7, ymm1 + vpmaddwd ymm10, ymm13 + vpaddd ymm7, ymm10 vpsrad ymm7, 14-8 vpsrad ymm0, 14-8 vpackssdw ymm0, ymm7 - vpunpcklwd ymm4, ymm8, ymm9 - vpunpcklwd ymm2, ymm10, ymm11 - vpunpckhwd ymm8, ymm8, ymm9 - vpunpckhwd ymm1, ymm10, ymm11 - vpmaddwd ymm4, ymm12 - vpmaddwd ymm2, ymm13 - vpaddd ymm4, ymm2 - vpmaddwd ymm8, ymm12 - vpmaddwd ymm1, ymm13 - vpaddd ymm8, ymm1 - vpsrad ymm8, 14-8 - vpsrad ymm4, 14-8 - vpackssdw ymm4, ymm8 + vpmulhrsw ymm6, [pw_8] vpmulhrsw ymm0, [pw_8] - vpmulhrsw ymm4, [pw_8] - vpackuswb ymm0, ymm4 - vmovdqu [rcx], ymm0 + vpackuswb ymm6, ymm0 + vmovdqu [rcx], ymm6 + vmovdqa ymm0, ymm4 vmovdqa ymm4, ymm5 - vmovdqa ymm5, ymm6 - vmovdqa ymm6, ymm3 - vmovdqa ymm8, ymm9 - vmovdqa ymm9, ymm10 - vmovdqa ymm10, ymm11 + vmovdqa ymm5, ymm9 + vmovdqa ymm7, ymm3 + vmovdqa ymm3, ymm1 + vmovdqa ymm1, ymm8 add rcx, rdx add R8, R9 dec R10d @@ -28200,96 +28200,96 @@ vpaddw ymm7, ymm1 add R8, R9 lea rbx, [R8-1] - vmovdqu ymm0, [rbx ] - vmovdqu ymm7, [rbx+ 1] + vmovdqu ymm4, [rbx ] + vmovdqu ymm8, [rbx+ 1] vmovdqu ymm2, [rbx+2*1] vmovdqu ymm1, [rbx+3*1] - vpunpckhbw ymm3, ymm0, ymm7 - vpunpcklbw ymm0, ymm7 - vpunpckhbw ymm7, ymm2, ymm1 + vpunpckhbw ymm3, ymm4, ymm8 + vpunpcklbw ymm4, ymm8 + vpunpckhbw ymm8, ymm2, ymm1 vpunpcklbw ymm2, ymm1 - vpmaddubsw ymm0, ymm14 + vpmaddubsw ymm4, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 + vpaddw ymm4, ymm2 vpmaddubsw ymm3, ymm14 - vpmaddubsw ymm7, ymm15 - vpaddw ymm3, ymm7 + vpmaddubsw ymm8, ymm15 + vpaddw ymm3, ymm8 add R8, R9 lea rbx, [R8-1] - vmovdqu ymm0, [rbx ] - vmovdqu ymm3, [rbx+ 1] + vmovdqu ymm5, [rbx ] + vmovdqu ymm9, [rbx+ 1] vmovdqu ymm2, [rbx+2*1] - vmovdqu ymm7, [rbx+3*1] - vpunpckhbw ymm1, ymm0, ymm3 - vpunpcklbw ymm0, ymm3 - vpunpckhbw ymm3, ymm2, ymm7 - vpunpcklbw ymm2, ymm7 - vpmaddubsw ymm0, ymm14 + vmovdqu ymm8, [rbx+3*1] + vpunpckhbw ymm1, ymm5, ymm9 + vpunpcklbw ymm5, ymm9 + vpunpckhbw ymm9, ymm2, ymm8 + vpunpcklbw ymm2, ymm8 + vpmaddubsw ymm5, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 + vpaddw ymm5, ymm2 vpmaddubsw ymm1, ymm14 - vpmaddubsw ymm3, ymm15 - vpaddw ymm1, ymm3 + vpmaddubsw ymm9, ymm15 + vpaddw ymm1, ymm9 add R8, R9 .loop lea rbx, [R8-1] - vmovdqu ymm0, [rbx ] - vmovdqu ymm1, [rbx+ 1] + vmovdqu ymm6, [rbx ] + vmovdqu ymm10, [rbx+ 1] vmovdqu ymm2, [rbx+2*1] - vmovdqu ymm3, [rbx+3*1] - vpunpckhbw ymm7, ymm0, ymm1 - vpunpcklbw ymm0, ymm1 - vpunpckhbw ymm1, ymm2, ymm3 - vpunpcklbw ymm2, ymm3 - vpmaddubsw ymm0, ymm14 + vmovdqu ymm9, [rbx+3*1] + vpunpckhbw ymm8, ymm6, ymm10 + vpunpcklbw ymm6, ymm10 + vpunpckhbw ymm10, ymm2, ymm9 + vpunpcklbw ymm2, ymm9 + vpmaddubsw ymm6, ymm14 vpmaddubsw ymm2, ymm15 - vpaddw ymm0, ymm2 - vpmaddubsw ymm7, ymm14 - vpmaddubsw ymm1, ymm15 - vpaddw ymm7, ymm1 - vpunpcklwd ymm0, ymm4, ymm5 - vpunpcklwd ymm2, ymm6, ymm3 - vpunpckhwd ymm7, ymm4, ymm5 - vpunpckhwd ymm1, ymm6, ymm3 + vpaddw ymm6, ymm2 + vpmaddubsw ymm8, ymm14 + vpmaddubsw ymm10, ymm15 + vpaddw ymm8, ymm10 + vpunpcklwd ymm9, ymm0, ymm4 + vpunpcklwd ymm2, ymm5, ymm6 + vpunpckhwd ymm11, ymm0, ymm4 + vpunpckhwd ymm10, ymm5, ymm6 + vpmaddwd ymm9, ymm12 + vpmaddwd ymm2, ymm13 + vpaddd ymm9, ymm2 + vpmaddwd ymm11, ymm12 + vpmaddwd ymm10, ymm13 + vpaddd ymm11, ymm10 + vpsrad ymm11, 14-8 + vpsrad ymm9, 14-8 + vpackssdw ymm9, ymm11 + vpunpcklwd ymm0, ymm7, ymm3 + vpunpcklwd ymm2, ymm1, ymm8 + vpunpckhwd ymm7, ymm7, ymm3 + vpunpckhwd ymm10, ymm1, ymm8 vpmaddwd ymm0, ymm12 vpmaddwd ymm2, ymm13 vpaddd ymm0, ymm2 vpmaddwd ymm7, ymm12 - vpmaddwd ymm1, ymm13 - vpaddd ymm7, ymm1 + vpmaddwd ymm10, ymm13 + vpaddd ymm7, ymm10 vpsrad ymm7, 14-8 vpsrad ymm0, 14-8 vpackssdw ymm0, ymm7 - vpunpcklwd ymm4, ymm8, ymm9 - vpunpcklwd ymm2, ymm10, ymm11 - vpunpckhwd ymm8, ymm8, ymm9 - vpunpckhwd ymm1, ymm10, ymm11 - vpmaddwd ymm4, ymm12 - vpmaddwd ymm2, ymm13 - vpaddd ymm4, ymm2 - vpmaddwd ymm8, ymm12 - vpmaddwd ymm1, ymm13 - vpaddd ymm8, ymm1 - vpsrad ymm8, 14-8 - vpsrad ymm4, 14-8 - vpackssdw ymm4, ymm8 - vmovdqu ymm8, [R10] - vmovdqu ymm1, [R10+32] - vinserti128 ymm7, ymm8, xmm1, 1 - vextracti128 xmm8, ymm8, 1 - vinserti128 ymm2, ymm1, xmm8, 0 - vpaddsw ymm0, ymm7 - vpaddsw ymm4, ymm2 + vmovdqu ymm7, [R10] + vmovdqu ymm10, [R10+32] + vinserti128 ymm11, ymm7, xmm10, 1 + vextracti128 xmm7, ymm7, 1 + vinserti128 ymm2, ymm10, xmm7, 0 + vpaddsw ymm9, ymm11 + vpaddsw ymm0, ymm2 + vpmulhrsw ymm9, [pw_bi_8] vpmulhrsw ymm0, [pw_bi_8] - vpmulhrsw ymm4, [pw_bi_8] - vpackuswb ymm0, ymm4 - vmovdqu [rcx], ymm0 + vpackuswb ymm9, ymm0 + vmovdqu [rcx], ymm9 + vmovdqa ymm0, ymm4 vmovdqa ymm4, ymm5 vmovdqa ymm5, ymm6 - vmovdqa ymm6, ymm3 - vmovdqa ymm8, ymm9 - vmovdqa ymm9, ymm10 - vmovdqa ymm10, ymm11 + vmovdqa ymm7, ymm3 + vmovdqa ymm3, ymm1 + vmovdqa ymm1, ymm8 add rcx, rdx add R8, R9 sub R10, -128 @@ -29453,285 +29453,285 @@ vpsrad ymm15, 10-8 vpackssdw ymm0, ymm15 add rdx, R8 - vmovdqu ymm0, [rdx-3*2] - vmovdqu ymm3, [rdx-2*2] + vmovdqu ymm8, [rdx-3*2] + vmovdqu ymm15, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] vmovdqu ymm1, [rdx ] vmovdqu ymm4, [rdx+2 ] vmovdqu ymm3, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] vmovdqu ymm5, [rdx+4*2] - vpunpckhdq ymm7, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm1 + vpunpckhdq ymm7, ymm8, ymm15 + vpunpckldq ymm8, ymm15 + vpunpckhdq ymm15, ymm2, ymm1 vpunpckldq ymm2, ymm1 vpunpckhdq ymm1, ymm4, ymm3 vpunpckldq ymm4, ymm3 vpunpckhdq ymm3, ymm6, ymm5 vpunpckldq ymm6, ymm5 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm8, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm8, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm8, ymm4 + vpsrad ymm8, 10-8 vpmaddwd ymm7, [rdi + R10*8 ] - vpmaddwd ymm3, [rdi + R10*8+32] + vpmaddwd ymm15, [rdi + R10*8+32] vpmaddwd ymm1, [rdi + R10*8+2*32] vpmaddwd ymm3, [rdi + R10*8+3*32] - vpaddd ymm7, ymm3 + vpaddd ymm7, ymm15 vpaddd ymm1, ymm3 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpackssdw ymm0, ymm7 + vpackssdw ymm8, ymm7 add rdx, R8 - vmovdqu ymm0, [rdx-3*2] + vmovdqu ymm9, [rdx-3*2] vmovdqu ymm7, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] - vmovdqu ymm3, [rdx ] + vmovdqu ymm15, [rdx ] vmovdqu ymm4, [rdx+2 ] vmovdqu ymm1, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] vmovdqu ymm3, [rdx+4*2] - vpunpckhdq ymm5, ymm0, ymm7 - vpunpckldq ymm0, ymm7 - vpunpckhdq ymm7, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm1 + vpunpckhdq ymm5, ymm9, ymm7 + vpunpckldq ymm9, ymm7 + vpunpckhdq ymm7, ymm2, ymm15 + vpunpckldq ymm2, ymm15 + vpunpckhdq ymm15, ymm4, ymm1 vpunpckldq ymm4, ymm1 vpunpckhdq ymm1, ymm6, ymm3 vpunpckldq ymm6, ymm3 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm9, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm9, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm9, ymm4 + vpsrad ymm9, 10-8 vpmaddwd ymm5, [rdi + R10*8 ] vpmaddwd ymm7, [rdi + R10*8+32] - vpmaddwd ymm3, [rdi + R10*8+2*32] + vpmaddwd ymm15, [rdi + R10*8+2*32] vpmaddwd ymm1, [rdi + R10*8+3*32] vpaddd ymm5, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm5, ymm3 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 vpsrad ymm5, 10-8 - vpackssdw ymm0, ymm5 + vpackssdw ymm9, ymm5 add rdx, R8 - vmovdqu ymm0, [rdx-3*2] - vmovdqu ymm3, [rdx-2*2] + vmovdqu ymm10, [rdx-3*2] + vmovdqu ymm5, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] vmovdqu ymm7, [rdx ] vmovdqu ymm4, [rdx+2 ] - vmovdqu ymm3, [rdx+2*2] + vmovdqu ymm15, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] vmovdqu ymm1, [rdx+4*2] - vpunpckhdq ymm3, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm7 + vpunpckhdq ymm3, ymm10, ymm5 + vpunpckldq ymm10, ymm5 + vpunpckhdq ymm5, ymm2, ymm7 vpunpckldq ymm2, ymm7 - vpunpckhdq ymm7, ymm4, ymm3 - vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm1 + vpunpckhdq ymm7, ymm4, ymm15 + vpunpckldq ymm4, ymm15 + vpunpckhdq ymm15, ymm6, ymm1 vpunpckldq ymm6, ymm1 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm10, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm10, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm10, ymm4 + vpsrad ymm10, 10-8 vpmaddwd ymm3, [rdi + R10*8 ] - vpmaddwd ymm3, [rdi + R10*8+32] + vpmaddwd ymm5, [rdi + R10*8+32] vpmaddwd ymm7, [rdi + R10*8+2*32] - vpmaddwd ymm3, [rdi + R10*8+3*32] - vpaddd ymm3, ymm3 - vpaddd ymm7, ymm3 + vpmaddwd ymm15, [rdi + R10*8+3*32] + vpaddd ymm3, ymm5 + vpaddd ymm7, ymm15 vpaddd ymm3, ymm7 vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 + vpackssdw ymm10, ymm3 add rdx, R8 - vmovdqu ymm0, [rdx-3*2] + vmovdqu ymm11, [rdx-3*2] vmovdqu ymm3, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] - vmovdqu ymm3, [rdx ] + vmovdqu ymm5, [rdx ] vmovdqu ymm4, [rdx+2 ] vmovdqu ymm7, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] - vmovdqu ymm3, [rdx+4*2] - vpunpckhdq ymm1, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm7 + vmovdqu ymm15, [rdx+4*2] + vpunpckhdq ymm1, ymm11, ymm3 + vpunpckldq ymm11, ymm3 + vpunpckhdq ymm3, ymm2, ymm5 + vpunpckldq ymm2, ymm5 + vpunpckhdq ymm5, ymm4, ymm7 vpunpckldq ymm4, ymm7 - vpunpckhdq ymm7, ymm6, ymm3 - vpunpckldq ymm6, ymm3 + vpunpckhdq ymm7, ymm6, ymm15 + vpunpckldq ymm6, ymm15 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm11, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm11, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm11, ymm4 + vpsrad ymm11, 10-8 vpmaddwd ymm1, [rdi + R10*8 ] vpmaddwd ymm3, [rdi + R10*8+32] - vpmaddwd ymm3, [rdi + R10*8+2*32] + vpmaddwd ymm5, [rdi + R10*8+2*32] vpmaddwd ymm7, [rdi + R10*8+3*32] vpaddd ymm1, ymm3 - vpaddd ymm3, ymm7 - vpaddd ymm1, ymm3 + vpaddd ymm5, ymm7 + vpaddd ymm1, ymm5 vpsrad ymm1, 10-8 - vpackssdw ymm0, ymm1 + vpackssdw ymm11, ymm1 add rdx, R8 - vmovdqu ymm0, [rdx-3*2] + vmovdqu ymm12, [rdx-3*2] vmovdqu ymm1, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] vmovdqu ymm3, [rdx ] vmovdqu ymm4, [rdx+2 ] - vmovdqu ymm3, [rdx+2*2] + vmovdqu ymm5, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] vmovdqu ymm7, [rdx+4*2] - vpunpckhdq ymm3, ymm0, ymm1 - vpunpckldq ymm0, ymm1 + vpunpckhdq ymm15, ymm12, ymm1 + vpunpckldq ymm12, ymm1 vpunpckhdq ymm1, ymm2, ymm3 vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm3 - vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm7 + vpunpckhdq ymm3, ymm4, ymm5 + vpunpckldq ymm4, ymm5 + vpunpckhdq ymm5, ymm6, ymm7 vpunpckldq ymm6, ymm7 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm12, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm12, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 - vpmaddwd ymm3, [rdi + R10*8 ] + vpaddd ymm12, ymm4 + vpsrad ymm12, 10-8 + vpmaddwd ymm15, [rdi + R10*8 ] vpmaddwd ymm1, [rdi + R10*8+32] vpmaddwd ymm3, [rdi + R10*8+2*32] - vpmaddwd ymm3, [rdi + R10*8+3*32] - vpaddd ymm3, ymm1 - vpaddd ymm3, ymm3 - vpaddd ymm3, ymm3 - vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 + vpmaddwd ymm5, [rdi + R10*8+3*32] + vpaddd ymm15, ymm1 + vpaddd ymm3, ymm5 + vpaddd ymm15, ymm3 + vpsrad ymm15, 10-8 + vpackssdw ymm12, ymm15 add rdx, R8 - vmovdqu ymm0, [rdx-3*2] - vmovdqu ymm3, [rdx-2*2] + vmovdqu ymm13, [rdx-3*2] + vmovdqu ymm15, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] vmovdqu ymm1, [rdx ] vmovdqu ymm4, [rdx+2 ] vmovdqu ymm3, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] - vmovdqu ymm3, [rdx+4*2] - vpunpckhdq ymm7, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm1 + vmovdqu ymm5, [rdx+4*2] + vpunpckhdq ymm7, ymm13, ymm15 + vpunpckldq ymm13, ymm15 + vpunpckhdq ymm15, ymm2, ymm1 vpunpckldq ymm2, ymm1 vpunpckhdq ymm1, ymm4, ymm3 vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm3 - vpunpckldq ymm6, ymm3 + vpunpckhdq ymm3, ymm6, ymm5 + vpunpckldq ymm6, ymm5 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm13, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm13, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm13, ymm4 + vpsrad ymm13, 10-8 vpmaddwd ymm7, [rdi + R10*8 ] - vpmaddwd ymm3, [rdi + R10*8+32] + vpmaddwd ymm15, [rdi + R10*8+32] vpmaddwd ymm1, [rdi + R10*8+2*32] vpmaddwd ymm3, [rdi + R10*8+3*32] - vpaddd ymm7, ymm3 + vpaddd ymm7, ymm15 vpaddd ymm1, ymm3 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpackssdw ymm0, ymm7 + vpackssdw ymm13, ymm7 add rdx, R8 .loop - vmovdqu ymm0, [rdx-3*2] + vmovdqu ymm14, [rdx-3*2] vmovdqu ymm7, [rdx-2*2] vmovdqu ymm2, [rdx-2 ] - vmovdqu ymm3, [rdx ] + vmovdqu ymm15, [rdx ] vmovdqu ymm4, [rdx+2 ] vmovdqu ymm1, [rdx+2*2] vmovdqu ymm6, [rdx+3*2] vmovdqu ymm3, [rdx+4*2] - vpunpckhdq ymm3, ymm0, ymm7 - vpunpckldq ymm0, ymm7 - vpunpckhdq ymm7, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm1 + vpunpckhdq ymm5, ymm14, ymm7 + vpunpckldq ymm14, ymm7 + vpunpckhdq ymm7, ymm2, ymm15 + vpunpckldq ymm2, ymm15 + vpunpckhdq ymm15, ymm4, ymm1 vpunpckldq ymm4, ymm1 vpunpckhdq ymm1, ymm6, ymm3 vpunpckldq ymm6, ymm3 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R10*8 ] + vpmaddwd ymm14, [rdi + R10*8 ] vpmaddwd ymm2, [rdi + R10*8+32] vpmaddwd ymm4, [rdi + R10*8+2*32] vpmaddwd ymm6, [rdi + R10*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm14, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 - vpmaddwd ymm3, [rdi + R10*8 ] + vpaddd ymm14, ymm4 + vpsrad ymm14, 10-8 + vpmaddwd ymm5, [rdi + R10*8 ] vpmaddwd ymm7, [rdi + R10*8+32] - vpmaddwd ymm3, [rdi + R10*8+2*32] + vpmaddwd ymm15, [rdi + R10*8+2*32] vpmaddwd ymm1, [rdi + R10*8+3*32] - vpaddd ymm3, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm3, ymm3 - vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 - vpunpcklwd ymm0, ymm8, ymm9 - vpunpcklwd ymm2, ymm10, ymm11 - vpunpcklwd ymm4, ymm12, ymm13 - vpunpcklwd ymm6, ymm14, ymm7 - vpunpckhwd ymm3, ymm8, ymm9 - vpunpckhwd ymm7, ymm10, ymm11 - vpunpckhwd ymm3, ymm12, ymm13 - vpunpckhwd ymm1, ymm14, ymm7 + vpaddd ymm5, ymm7 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 + vpsrad ymm5, 10-8 + vpackssdw ymm14, ymm5 + vpunpcklwd ymm3, ymm0, ymm8 + vpunpcklwd ymm2, ymm9, ymm10 + vpunpcklwd ymm4, ymm11, ymm12 + vpunpcklwd ymm6, ymm13, ymm14 + vpunpckhwd ymm5, ymm0, ymm8 + vpunpckhwd ymm7, ymm9, ymm10 + vpunpckhwd ymm15, ymm11, ymm12 + vpunpckhwd ymm1, ymm13, ymm14 lea rdi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rdi + R11*8 ] + vpmaddwd ymm3, [rdi + R11*8 ] vpmaddwd ymm2, [rdi + R11*8+32] vpmaddwd ymm4, [rdi + R11*8+2*32] vpmaddwd ymm6, [rdi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm3, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 14-8 - vpmaddwd ymm3, [rdi + R11*8 ] + vpaddd ymm3, ymm4 + vpsrad ymm3, 14-8 + vpmaddwd ymm5, [rdi + R11*8 ] vpmaddwd ymm7, [rdi + R11*8+32] - vpmaddwd ymm3, [rdi + R11*8+2*32] + vpmaddwd ymm15, [rdi + R11*8+2*32] vpmaddwd ymm1, [rdi + R11*8+3*32] - vpaddd ymm3, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm3, ymm3 - vpsrad ymm3, 14-8 - vpackssdw ymm0, ymm3 - vmovdqu [rcx], ymm0 + vpaddd ymm5, ymm7 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 + vpsrad ymm5, 14-8 + vpackssdw ymm3, ymm5 + vmovdqu [rcx], ymm3 + vmovdqa ymm0, ymm8 vmovdqa ymm8, ymm9 vmovdqa ymm9, ymm10 vmovdqa ymm10, ymm11 vmovdqa ymm11, ymm12 vmovdqa ymm12, ymm13 vmovdqa ymm13, ymm14 - vmovdqa ymm14, ymm7 sub rcx, -128 add rdx, R8 dec R9d @@ -29812,289 +29812,289 @@ vpsrad ymm15, 10-8 vpackssdw ymm0, ymm15 add R8, R9 - vmovdqu ymm0, [R8-3*2] - vmovdqu ymm3, [R8-2*2] + vmovdqu ymm8, [R8-3*2] + vmovdqu ymm15, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm1, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm3, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm5, [R8+4*2] - vpunpckhdq ymm7, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm1 + vpunpckhdq ymm7, ymm8, ymm15 + vpunpckldq ymm8, ymm15 + vpunpckhdq ymm15, ymm2, ymm1 vpunpckldq ymm2, ymm1 vpunpckhdq ymm1, ymm4, ymm3 vpunpckldq ymm4, ymm3 vpunpckhdq ymm3, ymm6, ymm5 vpunpckldq ymm6, ymm5 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm8, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm8, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm8, ymm4 + vpsrad ymm8, 10-8 vpmaddwd ymm7, [rsi + R11*8 ] - vpmaddwd ymm3, [rsi + R11*8+32] + vpmaddwd ymm15, [rsi + R11*8+32] vpmaddwd ymm1, [rsi + R11*8+2*32] vpmaddwd ymm3, [rsi + R11*8+3*32] - vpaddd ymm7, ymm3 + vpaddd ymm7, ymm15 vpaddd ymm1, ymm3 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpackssdw ymm0, ymm7 + vpackssdw ymm8, ymm7 add R8, R9 - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm9, [R8-3*2] vmovdqu ymm7, [R8-2*2] vmovdqu ymm2, [R8-2 ] - vmovdqu ymm3, [R8 ] + vmovdqu ymm15, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm1, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm3, [R8+4*2] - vpunpckhdq ymm5, ymm0, ymm7 - vpunpckldq ymm0, ymm7 - vpunpckhdq ymm7, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm1 + vpunpckhdq ymm5, ymm9, ymm7 + vpunpckldq ymm9, ymm7 + vpunpckhdq ymm7, ymm2, ymm15 + vpunpckldq ymm2, ymm15 + vpunpckhdq ymm15, ymm4, ymm1 vpunpckldq ymm4, ymm1 vpunpckhdq ymm1, ymm6, ymm3 vpunpckldq ymm6, ymm3 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm9, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm9, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm9, ymm4 + vpsrad ymm9, 10-8 vpmaddwd ymm5, [rsi + R11*8 ] vpmaddwd ymm7, [rsi + R11*8+32] - vpmaddwd ymm3, [rsi + R11*8+2*32] + vpmaddwd ymm15, [rsi + R11*8+2*32] vpmaddwd ymm1, [rsi + R11*8+3*32] vpaddd ymm5, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm5, ymm3 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 vpsrad ymm5, 10-8 - vpackssdw ymm0, ymm5 + vpackssdw ymm9, ymm5 add R8, R9 - vmovdqu ymm0, [R8-3*2] - vmovdqu ymm15, [R8-2*2] + vmovdqu ymm10, [R8-3*2] + vmovdqu ymm5, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm7, [R8 ] vmovdqu ymm4, [R8+2 ] - vmovdqu ymm3, [R8+2*2] + vmovdqu ymm15, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm1, [R8+4*2] - vpunpckhdq ymm3, ymm0, ymm15 - vpunpckldq ymm0, ymm15 - vpunpckhdq ymm15, ymm2, ymm7 + vpunpckhdq ymm3, ymm10, ymm5 + vpunpckldq ymm10, ymm5 + vpunpckhdq ymm5, ymm2, ymm7 vpunpckldq ymm2, ymm7 - vpunpckhdq ymm7, ymm4, ymm3 - vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm1 + vpunpckhdq ymm7, ymm4, ymm15 + vpunpckldq ymm4, ymm15 + vpunpckhdq ymm15, ymm6, ymm1 vpunpckldq ymm6, ymm1 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm10, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm10, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm10, ymm4 + vpsrad ymm10, 10-8 vpmaddwd ymm3, [rsi + R11*8 ] - vpmaddwd ymm15, [rsi + R11*8+32] + vpmaddwd ymm5, [rsi + R11*8+32] vpmaddwd ymm7, [rsi + R11*8+2*32] - vpmaddwd ymm3, [rsi + R11*8+3*32] - vpaddd ymm3, ymm15 - vpaddd ymm7, ymm3 + vpmaddwd ymm15, [rsi + R11*8+3*32] + vpaddd ymm3, ymm5 + vpaddd ymm7, ymm15 vpaddd ymm3, ymm7 vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 + vpackssdw ymm10, ymm3 add R8, R9 - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm11, [R8-3*2] vmovdqu ymm3, [R8-2*2] vmovdqu ymm2, [R8-2 ] - vmovdqu ymm15, [R8 ] + vmovdqu ymm5, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm7, [R8+2*2] vmovdqu ymm6, [R8+3*2] - vmovdqu ymm3, [R8+4*2] - vpunpckhdq ymm1, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm15 - vpunpckldq ymm2, ymm15 - vpunpckhdq ymm15, ymm4, ymm7 + vmovdqu ymm15, [R8+4*2] + vpunpckhdq ymm1, ymm11, ymm3 + vpunpckldq ymm11, ymm3 + vpunpckhdq ymm3, ymm2, ymm5 + vpunpckldq ymm2, ymm5 + vpunpckhdq ymm5, ymm4, ymm7 vpunpckldq ymm4, ymm7 - vpunpckhdq ymm7, ymm6, ymm3 - vpunpckldq ymm6, ymm3 + vpunpckhdq ymm7, ymm6, ymm15 + vpunpckldq ymm6, ymm15 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm11, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm11, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm11, ymm4 + vpsrad ymm11, 10-8 vpmaddwd ymm1, [rsi + R11*8 ] vpmaddwd ymm3, [rsi + R11*8+32] - vpmaddwd ymm15, [rsi + R11*8+2*32] + vpmaddwd ymm5, [rsi + R11*8+2*32] vpmaddwd ymm7, [rsi + R11*8+3*32] vpaddd ymm1, ymm3 - vpaddd ymm15, ymm7 - vpaddd ymm1, ymm15 + vpaddd ymm5, ymm7 + vpaddd ymm1, ymm5 vpsrad ymm1, 10-8 - vpackssdw ymm0, ymm1 + vpackssdw ymm11, ymm1 add R8, R9 - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm12, [R8-3*2] vmovdqu ymm1, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm3, [R8 ] vmovdqu ymm4, [R8+2 ] - vmovdqu ymm15, [R8+2*2] + vmovdqu ymm5, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm7, [R8+4*2] - vpunpckhdq ymm3, ymm0, ymm1 - vpunpckldq ymm0, ymm1 + vpunpckhdq ymm15, ymm12, ymm1 + vpunpckldq ymm12, ymm1 vpunpckhdq ymm1, ymm2, ymm3 vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm15 - vpunpckldq ymm4, ymm15 - vpunpckhdq ymm15, ymm6, ymm7 + vpunpckhdq ymm3, ymm4, ymm5 + vpunpckldq ymm4, ymm5 + vpunpckhdq ymm5, ymm6, ymm7 vpunpckldq ymm6, ymm7 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm12, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm12, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 - vpmaddwd ymm3, [rsi + R11*8 ] + vpaddd ymm12, ymm4 + vpsrad ymm12, 10-8 + vpmaddwd ymm15, [rsi + R11*8 ] vpmaddwd ymm1, [rsi + R11*8+32] vpmaddwd ymm3, [rsi + R11*8+2*32] - vpmaddwd ymm15, [rsi + R11*8+3*32] - vpaddd ymm3, ymm1 - vpaddd ymm3, ymm15 - vpaddd ymm3, ymm3 - vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 + vpmaddwd ymm5, [rsi + R11*8+3*32] + vpaddd ymm15, ymm1 + vpaddd ymm3, ymm5 + vpaddd ymm15, ymm3 + vpsrad ymm15, 10-8 + vpackssdw ymm12, ymm15 add R8, R9 - vmovdqu ymm0, [R8-3*2] - vmovdqu ymm3, [R8-2*2] + vmovdqu ymm13, [R8-3*2] + vmovdqu ymm15, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm1, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm3, [R8+2*2] vmovdqu ymm6, [R8+3*2] - vmovdqu ymm15, [R8+4*2] - vpunpckhdq ymm7, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm1 + vmovdqu ymm5, [R8+4*2] + vpunpckhdq ymm7, ymm13, ymm15 + vpunpckldq ymm13, ymm15 + vpunpckhdq ymm15, ymm2, ymm1 vpunpckldq ymm2, ymm1 vpunpckhdq ymm1, ymm4, ymm3 vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm15 - vpunpckldq ymm6, ymm15 + vpunpckhdq ymm3, ymm6, ymm5 + vpunpckldq ymm6, ymm5 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm13, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm13, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm13, ymm4 + vpsrad ymm13, 10-8 vpmaddwd ymm7, [rsi + R11*8 ] - vpmaddwd ymm3, [rsi + R11*8+32] + vpmaddwd ymm15, [rsi + R11*8+32] vpmaddwd ymm1, [rsi + R11*8+2*32] vpmaddwd ymm3, [rsi + R11*8+3*32] - vpaddd ymm7, ymm3 + vpaddd ymm7, ymm15 vpaddd ymm1, ymm3 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpackssdw ymm0, ymm7 + vpackssdw ymm13, ymm7 add R8, R9 .loop - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm14, [R8-3*2] vmovdqu ymm7, [R8-2*2] vmovdqu ymm2, [R8-2 ] - vmovdqu ymm3, [R8 ] + vmovdqu ymm15, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm1, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm3, [R8+4*2] - vpunpckhdq ymm15, ymm0, ymm7 - vpunpckldq ymm0, ymm7 - vpunpckhdq ymm7, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm1 + vpunpckhdq ymm5, ymm14, ymm7 + vpunpckldq ymm14, ymm7 + vpunpckhdq ymm7, ymm2, ymm15 + vpunpckldq ymm2, ymm15 + vpunpckhdq ymm15, ymm4, ymm1 vpunpckldq ymm4, ymm1 vpunpckhdq ymm1, ymm6, ymm3 vpunpckldq ymm6, ymm3 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + R11*8 ] + vpmaddwd ymm14, [rsi + R11*8 ] vpmaddwd ymm2, [rsi + R11*8+32] vpmaddwd ymm4, [rsi + R11*8+2*32] vpmaddwd ymm6, [rsi + R11*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm14, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 - vpmaddwd ymm15, [rsi + R11*8 ] + vpaddd ymm14, ymm4 + vpsrad ymm14, 10-8 + vpmaddwd ymm5, [rsi + R11*8 ] vpmaddwd ymm7, [rsi + R11*8+32] - vpmaddwd ymm3, [rsi + R11*8+2*32] + vpmaddwd ymm15, [rsi + R11*8+2*32] vpmaddwd ymm1, [rsi + R11*8+3*32] - vpaddd ymm15, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm15, ymm3 - vpsrad ymm15, 10-8 - vpackssdw ymm0, ymm15 - vpunpcklwd ymm0, ymm8, ymm9 - vpunpcklwd ymm2, ymm10, ymm11 - vpunpcklwd ymm4, ymm12, ymm13 - vpunpcklwd ymm6, ymm14, ymm7 - vpunpckhwd ymm15, ymm8, ymm9 - vpunpckhwd ymm7, ymm10, ymm11 - vpunpckhwd ymm3, ymm12, ymm13 - vpunpckhwd ymm1, ymm14, ymm7 + vpaddd ymm5, ymm7 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 + vpsrad ymm5, 10-8 + vpackssdw ymm14, ymm5 + vpunpcklwd ymm3, ymm0, ymm8 + vpunpcklwd ymm2, ymm9, ymm10 + vpunpcklwd ymm4, ymm11, ymm12 + vpunpcklwd ymm6, ymm13, ymm14 + vpunpckhwd ymm5, ymm0, ymm8 + vpunpckhwd ymm7, ymm9, ymm10 + vpunpckhwd ymm15, ymm11, ymm12 + vpunpckhwd ymm1, ymm13, ymm14 lea rsi, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rsi + rax*8 ] + vpmaddwd ymm3, [rsi + rax*8 ] vpmaddwd ymm2, [rsi + rax*8+32] vpmaddwd ymm4, [rsi + rax*8+2*32] vpmaddwd ymm6, [rsi + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm3, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 14-8 - vpmaddwd ymm15, [rsi + rax*8 ] + vpaddd ymm3, ymm4 + vpsrad ymm3, 14-8 + vpmaddwd ymm5, [rsi + rax*8 ] vpmaddwd ymm7, [rsi + rax*8+32] - vpmaddwd ymm3, [rsi + rax*8+2*32] + vpmaddwd ymm15, [rsi + rax*8+2*32] vpmaddwd ymm1, [rsi + rax*8+3*32] - vpaddd ymm15, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm15, ymm3 - vpsrad ymm15, 14-8 - vpackusdw ymm0, ymm15 - vpmulhrsw ymm0, [pw_10] - vpmulhrsw ymm15, [pw_10] - vpminsw ymm0, [max_pixels_10] - vpmaxsw ymm0, [zero] - vmovdqu [rcx], ymm0 + vpaddd ymm5, ymm7 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 + vpsrad ymm5, 14-8 + vpackusdw ymm3, ymm5 + vpmulhrsw ymm3, [pw_10] + vpmulhrsw ymm5, [pw_10] + vpminsw ymm3, [max_pixels_10] + vpmaxsw ymm3, [zero] + vmovdqu [rcx], ymm3 + vmovdqa ymm0, ymm8 vmovdqa ymm8, ymm9 vmovdqa ymm9, ymm10 vmovdqa ymm10, ymm11 vmovdqa ymm11, ymm12 vmovdqa ymm12, ymm13 vmovdqa ymm13, ymm14 - vmovdqa ymm14, ymm7 add rcx, rdx add R8, R9 dec R10d @@ -30178,292 +30178,292 @@ vpsrad ymm15, 10-8 vpackssdw ymm0, ymm15 add R8, R9 - vmovdqu ymm0, [R8-3*2] - vmovdqu ymm3, [R8-2*2] + vmovdqu ymm8, [R8-3*2] + vmovdqu ymm15, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm1, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm3, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm5, [R8+4*2] - vpunpckhdq ymm7, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm1 + vpunpckhdq ymm7, ymm8, ymm15 + vpunpckldq ymm8, ymm15 + vpunpckhdq ymm15, ymm2, ymm1 vpunpckldq ymm2, ymm1 vpunpckhdq ymm1, ymm4, ymm3 vpunpckldq ymm4, ymm3 vpunpckhdq ymm3, ymm6, ymm5 vpunpckldq ymm6, ymm5 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm8, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm8, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm8, ymm4 + vpsrad ymm8, 10-8 vpmaddwd ymm7, [rbx + rax*8 ] - vpmaddwd ymm3, [rbx + rax*8+32] + vpmaddwd ymm15, [rbx + rax*8+32] vpmaddwd ymm1, [rbx + rax*8+2*32] vpmaddwd ymm3, [rbx + rax*8+3*32] - vpaddd ymm7, ymm3 + vpaddd ymm7, ymm15 vpaddd ymm1, ymm3 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpackssdw ymm0, ymm7 + vpackssdw ymm8, ymm7 add R8, R9 - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm9, [R8-3*2] vmovdqu ymm7, [R8-2*2] vmovdqu ymm2, [R8-2 ] - vmovdqu ymm3, [R8 ] + vmovdqu ymm15, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm1, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm3, [R8+4*2] - vpunpckhdq ymm5, ymm0, ymm7 - vpunpckldq ymm0, ymm7 - vpunpckhdq ymm7, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm1 + vpunpckhdq ymm5, ymm9, ymm7 + vpunpckldq ymm9, ymm7 + vpunpckhdq ymm7, ymm2, ymm15 + vpunpckldq ymm2, ymm15 + vpunpckhdq ymm15, ymm4, ymm1 vpunpckldq ymm4, ymm1 vpunpckhdq ymm1, ymm6, ymm3 vpunpckldq ymm6, ymm3 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm9, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm9, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm9, ymm4 + vpsrad ymm9, 10-8 vpmaddwd ymm5, [rbx + rax*8 ] vpmaddwd ymm7, [rbx + rax*8+32] - vpmaddwd ymm3, [rbx + rax*8+2*32] + vpmaddwd ymm15, [rbx + rax*8+2*32] vpmaddwd ymm1, [rbx + rax*8+3*32] vpaddd ymm5, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm5, ymm3 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 vpsrad ymm5, 10-8 - vpackssdw ymm0, ymm5 + vpackssdw ymm9, ymm5 add R8, R9 - vmovdqu ymm0, [R8-3*2] - vmovdqu ymm15, [R8-2*2] + vmovdqu ymm10, [R8-3*2] + vmovdqu ymm5, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm7, [R8 ] vmovdqu ymm4, [R8+2 ] - vmovdqu ymm3, [R8+2*2] + vmovdqu ymm15, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm1, [R8+4*2] - vpunpckhdq ymm3, ymm0, ymm15 - vpunpckldq ymm0, ymm15 - vpunpckhdq ymm15, ymm2, ymm7 + vpunpckhdq ymm3, ymm10, ymm5 + vpunpckldq ymm10, ymm5 + vpunpckhdq ymm5, ymm2, ymm7 vpunpckldq ymm2, ymm7 - vpunpckhdq ymm7, ymm4, ymm3 - vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm1 + vpunpckhdq ymm7, ymm4, ymm15 + vpunpckldq ymm4, ymm15 + vpunpckhdq ymm15, ymm6, ymm1 vpunpckldq ymm6, ymm1 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm10, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm10, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm10, ymm4 + vpsrad ymm10, 10-8 vpmaddwd ymm3, [rbx + rax*8 ] - vpmaddwd ymm15, [rbx + rax*8+32] + vpmaddwd ymm5, [rbx + rax*8+32] vpmaddwd ymm7, [rbx + rax*8+2*32] - vpmaddwd ymm3, [rbx + rax*8+3*32] - vpaddd ymm3, ymm15 - vpaddd ymm7, ymm3 + vpmaddwd ymm15, [rbx + rax*8+3*32] + vpaddd ymm3, ymm5 + vpaddd ymm7, ymm15 vpaddd ymm3, ymm7 vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 + vpackssdw ymm10, ymm3 add R8, R9 - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm11, [R8-3*2] vmovdqu ymm3, [R8-2*2] vmovdqu ymm2, [R8-2 ] - vmovdqu ymm15, [R8 ] + vmovdqu ymm5, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm7, [R8+2*2] vmovdqu ymm6, [R8+3*2] - vmovdqu ymm3, [R8+4*2] - vpunpckhdq ymm1, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm15 - vpunpckldq ymm2, ymm15 - vpunpckhdq ymm15, ymm4, ymm7 + vmovdqu ymm15, [R8+4*2] + vpunpckhdq ymm1, ymm11, ymm3 + vpunpckldq ymm11, ymm3 + vpunpckhdq ymm3, ymm2, ymm5 + vpunpckldq ymm2, ymm5 + vpunpckhdq ymm5, ymm4, ymm7 vpunpckldq ymm4, ymm7 - vpunpckhdq ymm7, ymm6, ymm3 - vpunpckldq ymm6, ymm3 + vpunpckhdq ymm7, ymm6, ymm15 + vpunpckldq ymm6, ymm15 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm11, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm11, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm11, ymm4 + vpsrad ymm11, 10-8 vpmaddwd ymm1, [rbx + rax*8 ] vpmaddwd ymm3, [rbx + rax*8+32] - vpmaddwd ymm15, [rbx + rax*8+2*32] + vpmaddwd ymm5, [rbx + rax*8+2*32] vpmaddwd ymm7, [rbx + rax*8+3*32] vpaddd ymm1, ymm3 - vpaddd ymm15, ymm7 - vpaddd ymm1, ymm15 + vpaddd ymm5, ymm7 + vpaddd ymm1, ymm5 vpsrad ymm1, 10-8 - vpackssdw ymm0, ymm1 + vpackssdw ymm11, ymm1 add R8, R9 - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm12, [R8-3*2] vmovdqu ymm1, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm3, [R8 ] vmovdqu ymm4, [R8+2 ] - vmovdqu ymm15, [R8+2*2] + vmovdqu ymm5, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm7, [R8+4*2] - vpunpckhdq ymm3, ymm0, ymm1 - vpunpckldq ymm0, ymm1 + vpunpckhdq ymm15, ymm12, ymm1 + vpunpckldq ymm12, ymm1 vpunpckhdq ymm1, ymm2, ymm3 vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm15 - vpunpckldq ymm4, ymm15 - vpunpckhdq ymm15, ymm6, ymm7 + vpunpckhdq ymm3, ymm4, ymm5 + vpunpckldq ymm4, ymm5 + vpunpckhdq ymm5, ymm6, ymm7 vpunpckldq ymm6, ymm7 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm12, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm12, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 - vpmaddwd ymm3, [rbx + rax*8 ] + vpaddd ymm12, ymm4 + vpsrad ymm12, 10-8 + vpmaddwd ymm15, [rbx + rax*8 ] vpmaddwd ymm1, [rbx + rax*8+32] vpmaddwd ymm3, [rbx + rax*8+2*32] - vpmaddwd ymm15, [rbx + rax*8+3*32] - vpaddd ymm3, ymm1 - vpaddd ymm3, ymm15 - vpaddd ymm3, ymm3 - vpsrad ymm3, 10-8 - vpackssdw ymm0, ymm3 + vpmaddwd ymm5, [rbx + rax*8+3*32] + vpaddd ymm15, ymm1 + vpaddd ymm3, ymm5 + vpaddd ymm15, ymm3 + vpsrad ymm15, 10-8 + vpackssdw ymm12, ymm15 add R8, R9 - vmovdqu ymm0, [R8-3*2] - vmovdqu ymm3, [R8-2*2] + vmovdqu ymm13, [R8-3*2] + vmovdqu ymm15, [R8-2*2] vmovdqu ymm2, [R8-2 ] vmovdqu ymm1, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm3, [R8+2*2] vmovdqu ymm6, [R8+3*2] - vmovdqu ymm15, [R8+4*2] - vpunpckhdq ymm7, ymm0, ymm3 - vpunpckldq ymm0, ymm3 - vpunpckhdq ymm3, ymm2, ymm1 + vmovdqu ymm5, [R8+4*2] + vpunpckhdq ymm7, ymm13, ymm15 + vpunpckldq ymm13, ymm15 + vpunpckhdq ymm15, ymm2, ymm1 vpunpckldq ymm2, ymm1 vpunpckhdq ymm1, ymm4, ymm3 vpunpckldq ymm4, ymm3 - vpunpckhdq ymm3, ymm6, ymm15 - vpunpckldq ymm6, ymm15 + vpunpckhdq ymm3, ymm6, ymm5 + vpunpckldq ymm6, ymm5 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm13, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm13, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 + vpaddd ymm13, ymm4 + vpsrad ymm13, 10-8 vpmaddwd ymm7, [rbx + rax*8 ] - vpmaddwd ymm3, [rbx + rax*8+32] + vpmaddwd ymm15, [rbx + rax*8+32] vpmaddwd ymm1, [rbx + rax*8+2*32] vpmaddwd ymm3, [rbx + rax*8+3*32] - vpaddd ymm7, ymm3 + vpaddd ymm7, ymm15 vpaddd ymm1, ymm3 vpaddd ymm7, ymm1 vpsrad ymm7, 10-8 - vpackssdw ymm0, ymm7 + vpackssdw ymm13, ymm7 add R8, R9 .loop - vmovdqu ymm0, [R8-3*2] + vmovdqu ymm14, [R8-3*2] vmovdqu ymm7, [R8-2*2] vmovdqu ymm2, [R8-2 ] - vmovdqu ymm3, [R8 ] + vmovdqu ymm15, [R8 ] vmovdqu ymm4, [R8+2 ] vmovdqu ymm1, [R8+2*2] vmovdqu ymm6, [R8+3*2] vmovdqu ymm3, [R8+4*2] - vpunpckhdq ymm15, ymm0, ymm7 - vpunpckldq ymm0, ymm7 - vpunpckhdq ymm7, ymm2, ymm3 - vpunpckldq ymm2, ymm3 - vpunpckhdq ymm3, ymm4, ymm1 + vpunpckhdq ymm5, ymm14, ymm7 + vpunpckldq ymm14, ymm7 + vpunpckhdq ymm7, ymm2, ymm15 + vpunpckldq ymm2, ymm15 + vpunpckhdq ymm15, ymm4, ymm1 vpunpckldq ymm4, ymm1 vpunpckhdq ymm1, ymm6, ymm3 vpunpckldq ymm6, ymm3 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rax*8 ] + vpmaddwd ymm14, [rbx + rax*8 ] vpmaddwd ymm2, [rbx + rax*8+32] vpmaddwd ymm4, [rbx + rax*8+2*32] vpmaddwd ymm6, [rbx + rax*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm14, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 10-8 - vpmaddwd ymm15, [rbx + rax*8 ] + vpaddd ymm14, ymm4 + vpsrad ymm14, 10-8 + vpmaddwd ymm5, [rbx + rax*8 ] vpmaddwd ymm7, [rbx + rax*8+32] - vpmaddwd ymm3, [rbx + rax*8+2*32] + vpmaddwd ymm15, [rbx + rax*8+2*32] vpmaddwd ymm1, [rbx + rax*8+3*32] - vpaddd ymm15, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm15, ymm3 - vpsrad ymm15, 10-8 - vpackssdw ymm0, ymm15 - vpunpcklwd ymm0, ymm8, ymm9 - vpunpcklwd ymm2, ymm10, ymm11 - vpunpcklwd ymm4, ymm12, ymm13 - vpunpcklwd ymm6, ymm14, ymm7 - vpunpckhwd ymm15, ymm8, ymm9 - vpunpckhwd ymm7, ymm10, ymm11 - vpunpckhwd ymm3, ymm12, ymm13 - vpunpckhwd ymm1, ymm14, ymm7 + vpaddd ymm5, ymm7 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 + vpsrad ymm5, 10-8 + vpackssdw ymm14, ymm5 + vpunpcklwd ymm3, ymm0, ymm8 + vpunpcklwd ymm2, ymm9, ymm10 + vpunpcklwd ymm4, ymm11, ymm12 + vpunpcklwd ymm6, ymm13, ymm14 + vpunpckhwd ymm5, ymm0, ymm8 + vpunpckhwd ymm7, ymm9, ymm10 + vpunpckhwd ymm15, ymm11, ymm12 + vpunpckhwd ymm1, ymm13, ymm14 lea rbx, [hevc_qpel_filters_avx2_10] - vpmaddwd ymm0, [rbx + rdi*8 ] + vpmaddwd ymm3, [rbx + rdi*8 ] vpmaddwd ymm2, [rbx + rdi*8+32] vpmaddwd ymm4, [rbx + rdi*8+2*32] vpmaddwd ymm6, [rbx + rdi*8+3*32] - vpaddd ymm0, ymm2 + vpaddd ymm3, ymm2 vpaddd ymm4, ymm6 - vpaddd ymm0, ymm4 - vpsrad ymm0, 14-8 - vpmaddwd ymm15, [rbx + rdi*8 ] + vpaddd ymm3, ymm4 + vpsrad ymm3, 14-8 + vpmaddwd ymm5, [rbx + rdi*8 ] vpmaddwd ymm7, [rbx + rdi*8+32] - vpmaddwd ymm3, [rbx + rdi*8+2*32] + vpmaddwd ymm15, [rbx + rdi*8+2*32] vpmaddwd ymm1, [rbx + rdi*8+3*32] - vpaddd ymm15, ymm7 - vpaddd ymm3, ymm1 - vpaddd ymm15, ymm3 - vpsrad ymm15, 14-8 - vpackssdw ymm0, ymm15 - vmovdqu ymm8, [R10] - vpaddsw ymm0, ymm8 - vpaddsw ymm15, ymm9 - vpmulhrsw ymm0, [pw_bi_10] - vpmulhrsw ymm15, [pw_bi_10] - vpminsw ymm0, [max_pixels_10] - vpmaxsw ymm0, [zero] - vmovdqu [rcx], ymm0 + vpaddd ymm5, ymm7 + vpaddd ymm15, ymm1 + vpaddd ymm5, ymm15 + vpsrad ymm5, 14-8 + vpackssdw ymm3, ymm5 + vmovdqu ymm0, [R10] + vpaddsw ymm3, ymm0 + vpaddsw ymm5, ymm8 + vpmulhrsw ymm3, [pw_bi_10] + vpmulhrsw ymm5, [pw_bi_10] + vpminsw ymm3, [max_pixels_10] + vpmaxsw ymm3, [zero] + vmovdqu [rcx], ymm3 + vmovdqa ymm0, ymm8 vmovdqa ymm8, ymm9 vmovdqa ymm9, ymm10 vmovdqa ymm10, ymm11 vmovdqa ymm11, ymm12 vmovdqa ymm12, ymm13 vmovdqa ymm13, ymm14 - vmovdqa ymm14, ymm7 add rcx, rdx add R8, R9 sub R10, -128
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel