« Previous | Next » 

Revision 46a489be

ID46a489be73fd87fa3e17dd929c53d9e90860f80a
Parent 7d66a9d0
Child c207d400

Added by Dean McNamee over 11 years ago

typed arrays: swizzle with compiler intrinsics

Implement swizzling with compiler intrinsics and be aware of the native
endianness to correctly swap on big endian machines.

This introduces a template function to swap the bytes of a value,
and macros for the low level swap (taking advantage of gcc and msvc
intrinsics). This produces code like the following (comments are mine):

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

setValue<double>:
movd %xmm0, %rax ; fp reg -> gen reg
bswapq %rax ; 64-bit byte swap
movd %rax, %xmm0 ; gen reg -> fp reg
movq %xmm0, (%r15,%r12) ; store

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences