Closed Bug 569812 Opened 14 years ago Closed 14 years ago

VP8 asm may conflict with win64 ABI when SSE is enabled.

Categories

(Core :: Audio/Video, defect)

x86_64
All
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
blocking2.0 --- -

People

(Reporter: derf, Assigned: m_kato)

References

Details

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071216 SeaMonkey/1.1.7
Build Identifier: 

The win64 ABI requires xmm6...xmm15 to be callee-saved: http://msdn.microsoft.com/en-us/library/9z1stfyw(v=VS.90).aspx

MSVC stores temporary floating-point values in these registers, and expects them to survive function calls. VP8's SSE2 asm optimizations currently clobber these registers. This causes at least one problem in the 0.9 release of libvpx, which was fixed by commit c15652bce127b3967ec34a95b0cfaa366daddfb3:
http://review.webmproject.org/gitweb?p=libvpx.git;a=commit;h=c15652bce127b3967ec34a95b0cfaa366daddfb3

However, that commit just moves a local floating-point value used internally by VP8 to after the offending asm routine. It still does not preserve the registers as required by the ABI, and thus may cause breakage in application code that calls libvpx.

ASM is currently not enabled for win64 builds, so this does not cause any known breakage. This is simply a tracking bug to ensure this issue does not get forgotten.

Reproducible: Didn't try
blocking2.0: --- → ?
Depends on: 566247
Version: unspecified → Trunk
Status: UNCONFIRMED → NEW
Ever confirmed: true
Bug 570882 appears to have enabled the ASM on Win64 and landed on trunk. Is this an issue?
Assignee: nobody → m_kato
I cannot meet crash even if turned on SSE2.

But XMM6 and XMM7 is non-valtile.  So I create a patch for upstream code.
https://review.webmproject.org/#change,130
fixed by libvpx 0.9.1
Sounds like we're not planning to block the release on Win64 issues.  However, it sounds like this one is well on its way to being fixed anyway.
blocking2.0: ? → -
Depends on: 593753
Fixed by bug 593753.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.