On Tue, Mar 30, 2010 at 11:17 AM, Darren J Moffat
<darr...@opensolaris.org> wrote:
> On 30/03/2010 04:21, Jason King wrote:
>>>>
>>>> I don't know of any... they're awkward to use in most cases; coding
>>>> some higher level routines may help.
>>>
>>> IIRC, this is *precisely* how ddi_get16 and friends work when they are
>>> used
>>> with a handle that indicates little-endian device order.  Of course, this
>>> is
>>> only useful in the kernel...
>>
>> Even in the kernel, zfs at the very least could benefit (since it does
>> endian conversion as needed), though there might be other areas as
>> well.
>
> For ZFS see $SRC/common/fs/zfs/dmu.c  the following routines in particular:
>
> byteswap_uint64_array()
> byteswap_uint32_array()
> byteswap_uint16_array()
> byteswap_uint8_array().
>
> Note that in the implementation of those to swap the elements the
> corresponding BSWAP_XX() macro is used.
>
> Those macros are defined in <sys/byteswap.h>
>
> For x86 they use hton[s,l,ll]() which are implemented in asm.
> For everything else (ie SPARC) they use & < | to do with swapping.
>
> If there is a way to use VIS (or any other SPARC instructions for that
> mater) to make byteswapping faster then please implement them as sparc
> versions of hton[s,l,ll]() and fixup <sys/byteswap.h>.  Doing it that way
> means that ZFS, Crypto, Networking and a whole lot of other code gets to
> take advantage of it.
>
> --
> Darren J Moffat



They already do exist (and they are not VIS instructions)   :
So perhaps ZFS could already benefit from them.


http://www.mail-archive.com/opensolaris-disc...@opensolaris.org/msg14429.html

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/common/crypto/md5/sparc/sun4v/byteswap.il




%mab
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to