[LLVMdev] Making use of SSE intrinsics

Nicolas Capens nicolas at capens.net
Wed May 21 01:54:20 PDT 2008


Thanks a lot Eli, works like a charm!

-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Eli Friedman
Sent: Tuesday, 20 May, 2008 14:45
To: LLVM Developers Mailing List
Subject: Re: [LLVMdev] Making use of SSE intrinsics

On Tue, May 20, 2008 at 5:03 AM, Nicolas Capens <nicolas at capens.net> wrote:
> LoadInst *x = new LoadInst(ptr_x, "", false, basicBlock);
>
> // y = rcpps(x)   // FIXME
> StoreInst *storeResult = new StoreInst(y, ptr_y, false, basicBlock);

Using an IRBuilder, something like the following (uncompiled, but it's
at least approximately right):
Value* x = Builder.CreateLoad(ptr_x);
Function* rcpps = Intrinsic::getDeclaration(Module,
Intrinsic::x86_sse_rcp_ps);
Value* y = Builder.CreateCall(rcpps, x);
Builder.CreateStore(y, ptr_y);

> 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.

Use the bitcast instruction (see http://llvm.org/docs/LangRef.html).

-Eli
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list