<div>Hello,</div><div><br></div><div>Say the original type is Integer i16*,  I want to create a v16i16* type to replace it.</div><div><div>static Type *getVectorPtr(Type *Ty) {</div><div>    PointerType *PointerTy = dyn_cast<PointerType>(Ty);</div><div>    assert(PointerTy && "PointerType expected");</div><div><br></div><div>    unsigned addSpace = PointerTy->getAddressSpace();</div><div>    Type *ScalarType = PointerTy->getElementType();</div><div>    VectorType *VectorType = VectorType::get(ScalarType, 16);</div><div>    return PointerType::get(VectorType, addSpace);</div><div>}</div><div><br></div><div>There's no isVectorPtr() check, so I add</div><div><br></div><div>static bool isVectorPtr(Type *Ty) {</div><div>  bool a = false;</div><div>  if(Ty->isPointerTy() ){</div><div>    PointerType *PointerTy = dyn_cast<PointerType>(Ty);</div><div>    Type *vt = PointerTy->getElementType();</div><div>    a = vt->isVectorTy();</div><div>  }</div><div>  return a;</div><div>}</div><div><br></div><div>Then meet the following error:</div><div><div>Assertion failed: ResultElementType == cast<PointerType>(getType()->getScalarType())->getElementType(), file D:\cygwin64\home\celine\clang-102\llvm\include\llvm/IR/Instructions.h, line 958</div><div><br></div></div><div>I wonder how to create vector pointer type correctly?</div><div><br></div><div>--</div><div>Best Regards,</div><div>Celine</div><div></div><div></div></div>