So Sandy Bridge is out, and has 16 256-bit YMM registers with AVX, Bulldozer will follow.
So far, they can only treated as vectors of 4 64-bit doubles or 8 32-bit floats, likely later extended to integer vectors.
Similar to SSE with 128-bit registers, soon followed by SSE2 for various integers. Following bitwise operations are available for doubles, as well for floats.
My question, for what are bitwise operations used with float or double, if not interpreted as integer or set? Is there an enriched double arithmetic, where modifying bits other than sign, that is the mantissa or exponent makes any sense?
Gerd Isenberg wrote:So Sandy Bridge is out, and has 16 256-bit YMM registers with AVX, Bulldozer will follow.
So far, they can only treated as vectors of 4 64-bit doubles or 8 32-bit floats, likely later extended to integer vectors.
Similar to SSE with 128-bit registers, soon followed by SSE2 for various integers. Following bitwise operations are available for doubles, as well for floats.
My question, for what are bitwise operations used with float or double, if not interpreted as integer or set? Is there an enriched double arithmetic, where modifying bits other than sign, that is the mantissa or exponent makes any sense?
Thanks,
Gerd
I would guess that's for masking with -1/0 values, and OR/XOR would be for manipulating multiple masks.
Gerd Isenberg wrote:So Sandy Bridge is out, and has 16 256-bit YMM registers with AVX, Bulldozer will follow.
So far, they can only treated as vectors of 4 64-bit doubles or 8 32-bit floats, likely later extended to integer vectors.
Similar to SSE with 128-bit registers, soon followed by SSE2 for various integers. Following bitwise operations are available for doubles, as well for floats.
My question, for what are bitwise operations used with float or double, if not interpreted as integer or set? Is there an enriched double arithmetic, where modifying bits other than sign, that is the mantissa or exponent makes any sense?
Thanks,
Gerd
Been programming in assembly language for 40+ years now. I have never seen bitwise instructions for FP. Whether those are designed to be used on 64/128/whatever values, I do not know. But using ints is dangerous in true FP mode since there are invalid configurations of bits that can make a program blow up (from experience, I did this on a sun SPARC when I first tried to get a version of Cray Blitz up on a local sparc in 1985. I used a double (double precision in FORTRAN, actually) for the hash signature and got a lot of various types of floating point exceptions.
This would therefore suggest that the FP regs can be used as integer values. Whether that gets extended to the "pseudo-vector" stuff or not I have no idea at the moment.
Gerd Isenberg wrote:So Sandy Bridge is out, and has 16 256-bit YMM registers with AVX, Bulldozer will follow.
So far, they can only treated as vectors of 4 64-bit doubles or 8 32-bit floats, likely later extended to integer vectors.
Similar to SSE with 128-bit registers, soon followed by SSE2 for various integers. Following bitwise operations are available for doubles, as well for floats.
My question, for what are bitwise operations used with float or double, if not interpreted as integer or set? Is there an enriched double arithmetic, where modifying bits other than sign, that is the mantissa or exponent makes any sense?
Thanks,
Gerd
Been programming in assembly language for 40+ years now. I have never seen bitwise instructions for FP. Whether those are designed to be used on 64/128/whatever values, I do not know. But using ints is dangerous in true FP mode since there are invalid configurations of bits that can make a program blow up (from experience, I did this on a sun SPARC when I first tried to get a version of Cray Blitz up on a local sparc in 1985. I used a double (double precision in FORTRAN, actually) for the hash signature and got a lot of various types of floating point exceptions.
This would therefore suggest that the FP regs can be used as integer values. Whether that gets extended to the "pseudo-vector" stuff or not I have no idea at the moment.
Yes, as Zach mentioned with vectors of floats or doubles you will do stuff branchless. For instance max or min and that like, where a mask selects from two sources