Subzero: fix calling C functions on Windows x64
This change addresses the following issues:
* Microsoft x64 ABI assigns registers to the first four arguments by
argument position, not by type count.
* Microsoft x64 ABI expects caller to allocate space to copy 4 register
arguments to stack, called the Shadow Store or Home Space.
* Fix bug where preserved register area size was not computed correctly
when Xmm registers were being preserved, as it was assuming all
preserved registers were 8 bytes large.
Bug: b/142132927
Change-Id: Ibc2d82ab117c062eed2e7f66109c9d6bbdc09a8b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/37272Reviewed-by:
Ben Clayton <bclayton@google.com>
Reviewed-by:
Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by:
Antonio Maiorano <amaiorano@google.com>
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment