Hi all,
I’d like to make use of some specific x86 Streaming SIMD Extension instructions, but I don’t know where to start. For instance the ‘rcpps’ instructions computes a low precision but fast reciprocal. I’ve noticed that LLVM supports intrinsics, but I couldn’t find any information on how to use them. I’ve tried digging through the LLVM-GCC code but it’s just too complex for me. I would be very grateful if someone could complete this code:
LoadInst *x = new LoadInst(ptr_x, “”, false, basicBlock);
// y = rcpps(x) // FIXME
StoreInst *storeResult = new StoreInst(y, ptr_y, false, basicBlock);
Somewhat related to this, I’d also like to know how to ‘reinterpret_cast’ values. It can be quite useful to sometimes interpret a vector of floating-point values as a vector of integers (for instance to extract the sign, exponent and/or mantissa bits). Any information on how to do that would be much appreciated.
Thanks,
Nicolas Capens