mirror of https://github.com/lukechilds/node.git
Browse Source
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) ; storev0.9.6-release
Dean McNamee
12 years ago
committed by
Ben Noordhuis
2 changed files with 62 additions and 34 deletions
Loading…
Reference in new issue