[LLVMdev] Load value and broadcast in LLVM

zhi chen zchenhn at gmail.com
Mon May 4 10:10:29 PDT 2015


Hi Kuperstein,

It seemed that the backend would generate a VMOVAPD and a VPERMILPD.
However, it also introduced many spills. I don't quite understand why.

Best,
Zhi

On Mon, May 4, 2015 at 1:15 AM, Kuperstein, Michael M <
michael.m.kuperstein at intel.com> wrote:

>  The canonical way to do it would be to load into a scalar, and then
> broadcast the scalar using a shufflevector.
>
> Hopefully, the backend will be smart enough to match this as a single
> load+broadcast, if the platform has such an instruction.
>
>
>
> (The trick you’re suggesting with getelementptr will probably possible
> soon, now that gather intrinsics are being introduced, but it probably will
> create worse code, not better.)
>
>
>
> Michael
>
>
>
> *From:* llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] *On
> Behalf Of *zhi chen
> *Sent:* Monday, May 04, 2015 10:59
> *To:* LLVM Dev
> *Subject:* [LLVMdev] Load value and broadcast in LLVM
>
>
>
> Is it possible to load a value into a vector register and broadcast it in
> LLVM?
>
>
>
> For example, for the following address %x
>
>
>
>  %x = getelementptr inbounds %struct._Ray* %ray, i32 0, i32 0, i32 0
>
>
>
> instead of loading the value at %x into a scalar register %0:
>
> %0 = load double* %x, align 4, !tbaa !0
>
>
>
> I want to load it into a <2 x double> vector register %1 and make both of
> the two elements in %1 be the value at %x.
>
>
>
> I guess one way to do this is to make getelementptr return a <2 x i32>*
> address, where the two addresses in <2 X 32> are the same. But I don't know
> if it is possible to do this in LLVM.
>
>
>
> Any help would be appreciated.
>
>
>
> Best,
>
> Zhi
>
>
>
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150504/66723669/attachment.html>


More information about the llvm-dev mailing list