openh264/codec
Martin Storsjö 3cf52554f7 Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64
According to the Win64 ABI, these registers need to be preserved,
and compilers are allowed to rely on their content to stay
available - not only for float usage but for any usage, anywhere,
in the calling C++ code.

This adds a macro which pushes the clobbered registers onto the
stack if targeting win64 (and a matching one which restores them).
The parameter to the macro is the number of xmm registers used
(e.g. if using xmm0 - xmm7, the parameter is 8), or in other
words, the number of the highest xmm register used plus one.

This is similar to how the same issue is handled for the NEON
registers q4-q7 with the vpush instruction, except that they needed
to be preserved on all platforms, not only on one particular platform.

This allows removing the XMMREG_PROTECT_* hacks, which can
easily fail if the compiler chooses to use the callee saved
xmm registers in an unexpected spot.
2014-03-17 13:44:33 +02:00
..
api/svc fix SM_FIXEDSLCNUM_SLICE bug, add SM_AUTO_SLICE mode 2014-03-11 10:23:46 +08:00
build Remove something that looks like a personal todo note from the Android makefiles 2014-03-11 14:27:14 +02:00
common Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64 2014-03-17 13:44:33 +02:00
console fix dump file issue 2014-03-14 15:13:24 +08:00
decoder Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64 2014-03-17 13:44:33 +02:00
encoder Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64 2014-03-17 13:44:33 +02:00
processing Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64 2014-03-17 13:44:33 +02:00