<div dir="ltr">Does anyone know how to instrument <b>double* to <2 x doulbe>*</b>, e.g., 2.2 --> <2.2, 2.2>?<div>For example, I want to change the following IR code </div><div><div><br></div><div>%arrayidx1 = getelementptr inbounds [100 x double]* @main.B, i32 0, i32 %i.021</div></div><div>%1 = load double* %arrayidx1, align 4, !tbaa !0<br></div><div><br></div><div>to:</div><div><br></div><div><div>%arrayidx1 = getelementptr inbounds [100 x double]* @main.B, i32 0, i32 %i.021</div><div>%1 = bitcast double* %arrayidx1 to <2 x double>*<br></div><div>%2 = load <2 x double>* %1, align 4</div></div><div><br></div><div>what I right now doing is:</div><div><b>Assume pInst is </b>%1 = load double* %arrayidx1, align 4, !tbaa !0</div><div><br></div><div><div>Value *loadValue = pInst->getOperand(0);</div></div><div><div>Type *vecTy = VectorType::get(Type::getDoublePtrTy(currF->getContext()), 2);</div><div>Value *emptyVec = UndefValue::get(vecTy);</div><div>Type* u32Ty = Type::getInt32Ty(currF->getContext());</div><div>Value *index0 =  ConstantInt::get(u32Ty, 0);</div><div>Value *index1 =  ConstantInt::get(u32Ty, 1);</div><div> </div><div>Instruction *InsertVal = InsertElementInst::Create(emptyVec, loadValue, index0, "");</div><div>InsertVal = InsertElementInst::Create(emptyVec, loadValue, index1, ""); </div><div>InsertVal->insertBefore(pInst);</div><div><br></div></div><div>It turned out that the way I am doing is not right because the output is <2 x double*>. Any help will be appreciated!</div><div><br></div><div>BTW, can I use bitcastInst (<b>if so, how?</b>) or I have to use insertelementInst? <br><div><div><br></div><div>Thanks,</div></div></div><div>Zhi</div></div>