Why align all pinned array payloads on 16 bytes?
alexander.kjeldaas at gmail.com
Tue Oct 16 22:50:09 UTC 2018
The SSE types require 16-byte alignment. Most of the original SSE
instructions have versions that accept non-aligned data though.
On Tue, Oct 16, 2018 at 11:18 PM Simon Marlow <marlowsd at gmail.com> wrote:
> I vaguely recall that this was because 16 byte alignment is the minimum
> you need for certain foreign types, and it's what malloc() does. Perhaps
> check the FFI spec and the guarantees that mallocForeignPtrBytes and
> friends provide?
> On Thu, 11 Oct 2018 at 18:44, Ömer Sinan Ağacan <omeragacan at gmail.com>
>> I just found out we currently align all pinned array payloads to 16 bytes
>> I'm wondering why. I don't see any comments/notes on this, and it's also
>> part of the primop documentation. We also have another primop for aligned
>> allocation: newAlignedPinnedByteArray#. Given that alignment behavior of
>> newPinnedByteArray# is not documented and we have another one for aligned
>> allocation, perhaps we can remove alignment in newPinnedByteArray#.
>> Does anyone remember what was the motivation for always aligning pinned
>> ghc-devs mailing list
>> ghc-devs at haskell.org
> ghc-devs mailing list
> ghc-devs at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the ghc-devs