History

[Common/x86] Convert McCopyWidthEq8_sse2 back to MMX

Avoid potential performance regressions on CPUs that have lower throughput for 64-bit loads to xmm registers than to mm registers. The emms instruction needed with MMX is somewhat costly on recent Intel cores and causes a slight performance reduction on such cores as such (hence the motivation for the conversion to SSE).

Sindre Aamås committed 10 years ago

Commit c06f9ec1 parent b397b393 files · +9 −8Browse files

Showing the changes to codec/common/src/mc.cpp (1 of 3 files). Show all

Unified · Split

codec/common/src/mc.cpp+2−2
@@ -440,7 +440,7 @@ static inline void McCopy_sse2 (const uint8_t* pSrc, int32_t iSrcStride, uint8_t · 439 unmodified lines
440 if (iWidth == 16)440 if (iWidth == 16)
441 McCopyWidthEq16_sse2 (pSrc, iSrcStride, pDst, iDstStride, iHeight);441 McCopyWidthEq16_sse2 (pSrc, iSrcStride, pDst, iDstStride, iHeight);
442 else if (iWidth == 8)442 else if (iWidth == 8)
443 McCopyWidthEq8_sse2 (pSrc, iSrcStride, pDst, iDstStride, iHeight);443 McCopyWidthEq8_mmx (pSrc, iSrcStride, pDst, iDstStride, iHeight);
444 else if (iWidth == 4)444 else if (iWidth == 4)
445 McCopyWidthEq4_c (pSrc, iSrcStride, pDst, iDstStride, iHeight);445 McCopyWidthEq4_c (pSrc, iSrcStride, pDst, iDstStride, iHeight);
446 else446 else
@@ -729,7 +729,7 @@ void McCopy_sse3 (const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_ · 282 unmodified lines
729 int32_t iWidth, int32_t iHeight) {729 int32_t iWidth, int32_t iHeight) {
730 switch (iWidth) {730 switch (iWidth) {
731 case 16: return McCopyWidthEq16_sse3 (pSrc, iSrcStride, pDst, iDstStride, iHeight);731 case 16: return McCopyWidthEq16_sse3 (pSrc, iSrcStride, pDst, iDstStride, iHeight);
732 case 8: return McCopyWidthEq8_sse2 (pSrc, iSrcStride, pDst, iDstStride, iHeight);732 case 8: return McCopyWidthEq8_mmx (pSrc, iSrcStride, pDst, iDstStride, iHeight);
733 case 4: return McCopyWidthEq4_c (pSrc, iSrcStride, pDst, iDstStride, iHeight);733 case 4: return McCopyWidthEq4_c (pSrc, iSrcStride, pDst, iDstStride, iHeight);
734 }734 }
735 return McCopyWidthEq2_c (pSrc, iSrcStride, pDst, iDstStride, iHeight);735 return McCopyWidthEq2_c (pSrc, iSrcStride, pDst, iDstStride, iHeight);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t