@@ -474,7 +474,7 @@ llvm::Value* CodeGenLLVM::CreateBroadcast(llvm::Value* value, int lanes) {
474474}
475475
476476llvm::Value* CodeGenLLVM::CreateVecSlice (llvm::Value* vec, int begin, int extent) {
477- int num_elems = static_cast < int >(vec->getType ()-> getVectorNumElements () );
477+ int num_elems = llvm::cast<llvm::VectorType >(vec->getType ())-> getNumElements ( );
478478 if (extent == num_elems && begin == 0 ) return vec;
479479 CHECK (begin >= 0 && extent <= num_elems) << " Slicing out of bound!\n " ;
480480 std::vector<llvm::Constant*> indices;
@@ -490,7 +490,7 @@ llvm::Value* CodeGenLLVM::CreateVecSlice(llvm::Value* vec, int begin, int extent
490490}
491491
492492llvm::Value* CodeGenLLVM::CreateVecFlip (llvm::Value* vec) {
493- int num_elems = static_cast < int >(vec->getType ()-> getVectorNumElements () );
493+ int num_elems = llvm::cast<llvm::VectorType >(vec->getType ())-> getNumElements ( );
494494#if TVM_LLVM_VERSION >= 110
495495 std::vector<int > indices;
496496#else
@@ -505,7 +505,7 @@ llvm::Value* CodeGenLLVM::CreateVecFlip(llvm::Value* vec) {
505505llvm::Value* CodeGenLLVM::CreateVecPad (llvm::Value* vec, int target_lanes) {
506506 llvm::Value* mask = llvm::UndefValue::get (
507507 DTypeToLLVMType (DataType::Int (32 , target_lanes)));
508- int num_elems = static_cast < int >(vec->getType ()-> getVectorNumElements () );
508+ int num_elems = llvm::cast<llvm::VectorType >(vec->getType ())-> getNumElements ( );
509509 if (num_elems == target_lanes) return vec;
510510 CHECK_LT (num_elems, target_lanes);
511511 for (int i = 0 ; i < num_elems; ++i) {
@@ -519,16 +519,15 @@ llvm::Value* CodeGenLLVM::CreateVecConcat(std::vector<llvm::Value*> vecs) {
519519 int total_lanes = 0 ;
520520
521521 for (llvm::Value* v : vecs) {
522- total_lanes += static_cast <int >(
523- v->getType ()->getVectorNumElements ());
522+ total_lanes += llvm::cast<llvm::VectorType>(v->getType ())->getNumElements ();
524523 }
525524 while (vecs.size () > 1 ) {
526525 std::vector<llvm::Value*> new_vecs;
527526 for (size_t i = 0 ; i < vecs.size () - 1 ; i += 2 ) {
528527 llvm::Value* lhs = vecs[i];
529528 llvm::Value* rhs = vecs[i + 1 ];
530- const size_t lhs_lanes = lhs->getType ()-> getVectorNumElements ();
531- const size_t rhs_lanes = rhs->getType ()-> getVectorNumElements ();
529+ const size_t lhs_lanes = llvm::cast<llvm::VectorType>( lhs->getType ())-> getNumElements ();
530+ const size_t rhs_lanes = llvm::cast<llvm::VectorType>( rhs->getType ())-> getNumElements ();
532531 if (lhs_lanes < rhs_lanes) {
533532 lhs = CreateVecPad (lhs, rhs_lanes);
534533 } else if (rhs_lanes < lhs_lanes) {
@@ -870,16 +869,16 @@ llvm::Value* CodeGenLLVM::CreateIntrinsic(const CallNode* op) {
870869 return builder_->CreateFCmpUNO (a, a);
871870 } else if (op->is_intrinsic (" vectorlow" )) {
872871 llvm::Value *v = MakeValue (op->args [0 ]);
873- int l = v->getType ()-> getVectorNumElements ();
872+ int l = llvm::cast<llvm::VectorType>( v->getType ())-> getNumElements ();
874873 return CreateVecSlice (v, 0 , l/2 );
875874 } else if (op->is_intrinsic (" vectorhigh" )) {
876875 llvm::Value *v = MakeValue (op->args [0 ]);
877- int l = v->getType ()-> getVectorNumElements ();
876+ int l = llvm::cast<llvm::VectorType>( v->getType ())-> getNumElements ();
878877 return CreateVecSlice (v, l/2 , l/2 );
879878 } else if (op->is_intrinsic (" vectorcombine" )) {
880879 llvm::Value *v0 = MakeValue (op->args [0 ]);
881880 llvm::Value *v1 = MakeValue (op->args [1 ]);
882- int num_elems = static_cast < int >(v0->getType ()-> getVectorNumElements () ) * 2 ;
881+ int num_elems = llvm::cast<llvm::VectorType >(v0->getType ())-> getNumElements ( ) * 2 ;
883882#if TVM_LLVM_VERSION >= 110
884883 std::vector<int > indices;
885884#else
0 commit comments