Please sign in to comment.
TypedArrays: Implement load and store swizzling operations.
This reduces an unneeded back and forth between types and additionally keeps the value in the swappable type until it is swapped. This is important for correctness when dealing with floating point, to avoid the possibility of loading the bits of a signaling NaN (because it isn't yet swapped) into the FPU. This additionally produces better code (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 movq %rax, (%r15,%r12) ; store
- Loading branch information...
Showing with 62 additions and 34 deletions.