[LLVMdev] double* to <2 x double>*

zhi chen
Thu, 16 Apr 2015 17:02:56 -0000

Thanks, Mats. But, it seems that there is no getUnqualPtr member function
in Type.

Best,
Zhi

On Thu, Apr 16, 2015 at 1:46 AM, mats petersson <mats at
planetcatfish.com>
wrote:

> The result of getelementptr is a pointer to double, you want a pointer
> to 2 x double, not a type of 2 x double *.
>
> So, you need to make a pointer to a 2 x double (writing from memory,
> so syntax may be off, but conceptually this should be right)
> vecPtrTy = Type::getUnqualPtr(VectorType:get(Type::getDoubleTy(), 2));
>
> --
> Mats
>
> On 16 April 2015 at 08:46, zhi chen <zchenhn at gmail.com> wrote:
> > Does anyone know how to instrument double* to <2 x doulbe>*,
e.g., 2.2
> -->
> > <2.2, 2.2>?
> > For example, I want to change the following IR code
> >
> > %arrayidx1 = getelementptr inbounds [100 x double]* @main.B, i32 0,
i32
> > %i.021
> > %1 = load double* %arrayidx1, align 4, !tbaa !0
> >
> > to:
> >
> > %arrayidx1 = getelementptr inbounds [100 x double]* @main.B, i32 0,
i32
> > %i.021
> > %1 = bitcast double* %arrayidx1 to <2 x double>*
> > %2 = load <2 x double>* %1, align 4
> >
> > what I right now doing is:
> > Assume pInst is %1 = load double* %arrayidx1, align 4, !tbaa !0
> >
> > Value *loadValue = pInst->getOperand(0);
> > Type *vecTy =
VectorType::get(Type::getDoublePtrTy(currF->getContext()),
> 2);
> > Value *emptyVec = UndefValue::get(vecTy);
> > Type* u32Ty = Type::getInt32Ty(currF->getContext());
> > Value *index0 =  ConstantInt::get(u32Ty, 0);
> > Value *index1 =  ConstantInt::get(u32Ty, 1);
> >
> > Instruction *InsertVal = InsertElementInst::Create(emptyVec,
loadValue,
> > index0, "");
> > InsertVal = InsertElementInst::Create(emptyVec, loadValue, index1,
"");
> > InsertVal->insertBefore(pInst);
> >
> > It turned out that the way I am doing is not right because the output
is
> <2
> > x double*>. Any help will be appreciated!
> >
> > BTW, can I use bitcastInst (if so, how?) or I have to use
> insertelementInst?
> >
> > Thanks,
> > Zhi
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20150416/bb59fa2a/attachment.html>