IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp:156:35: error: no member named 'getVectorElementType' in 'llvm::Type'; did you mean 'getPointerElementType'?
                ldmcs->getType()->getVectorElementType() == m_builder->getInt32Ty())
                                  ^~~~~~~~~~~~~~~~~~~~
                                  getPointerElementType
/usr/local/llvm11/include/llvm/IR/Type.h:370:9: note: 'getPointerElementType' declared here
  Type *getPointerElementType() const {
        ^
IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp:160:61: error: no member named 'getVectorNumElements' in 'llvm::Type'
                uint ldmcsNumOfElements = ldmcs->getType()->getVectorNumElements();
                                          ~~~~~~~~~~~~~~~~  ^
IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp:161:71: error: no member named 'getVectorNumElements' in 'llvm::Type'
                uint newLdmcsNumOfElements = new_mcs_call->getType()->getVectorNumElements();
                                             ~~~~~~~~~~~~~~~~~~~~~~~  ^

IGC/Compiler/Legalizer/InstPromoter.cpp:402:42: error: no member named 'getVectorNumElements' in 'llvm::Type'
        for (unsigned i = 0; i < DestTy->getVectorNumElements(); i++)
                                 ~~~~~~  ^

IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp:308:27: error: no member named 'getVectorNumElements' in 'llvm::Type'
        Size *= DataType->getVectorNumElements();
                ~~~~~~~~  ^

IGC/VectorCompiler/lib/GenXCodeGen/GenXDebugInfo.cpp:528:33: error: no viable conversion from 'llvm::StringRef' to 'const std::string' (aka 'const basic_string<char, char_traits<char>, allocator<char>>')
    auto *VF = VB.GetVISAKernel(F->getName());
                                ^~~~~~~~~~~~
IGC/VectorCompiler/lib/GenXCodeGen/GenXPatternMatch.cpp:2203:5: error: no matching function for call to 'RecursivelyDeleteTriviallyDeadInstructions'
    RecursivelyDeleteTriviallyDeadInstructions(ToErase);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/llvm11/include/llvm/Transforms/Utils/Local.h:161:6: note: candidate function not viable: no known conversion from 'SmallVector<llvm::Instruction *, 8>' to 'llvm::Value *' for 1st argument
bool RecursivelyDeleteTriviallyDeadInstructions(
     ^
/usr/local/llvm11/include/llvm/Transforms/Utils/Local.h:173:6: note: candidate function not viable: no known conversion from 'SmallVector<llvm::Instruction *, 8>' to 'SmallVectorImpl<llvm::WeakTrackingVH> &' for 1st argument
void RecursivelyDeleteTriviallyDeadInstructions(
     ^

--- IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp.orig	2021-03-22 09:55:24 UTC
+++ IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp
@@ -153,12 +153,21 @@ void ConvertMSAAPayloadTo16Bit::visitCallInst(CallInst
             // There are uses of ldmcs other then ldms, using vector of int32 type.
             // Fix them to use newly created 16bit ldmcs.
             if (ldmcs->getType()->isVectorTy() &&
+#if LLVM_VERSION_MAJOR < 11
                 ldmcs->getType()->getVectorElementType() == m_builder->getInt32Ty())
+#else
+                cast<llvm::VectorType>(ldmcs->getType())->getElementType() == m_builder->getInt32Ty())
+#endif
             {
                 m_builder->SetInsertPoint(ldmcs);
 
+#if LLVM_VERSION_MAJOR < 11
                 uint ldmcsNumOfElements = ldmcs->getType()->getVectorNumElements();
                 uint newLdmcsNumOfElements = new_mcs_call->getType()->getVectorNumElements();
+#else
+                uint ldmcsNumOfElements = cast<llvm::VectorType>(ldmcs->getType())->getNumElements();
+                uint newLdmcsNumOfElements = cast<llvm::VectorType>(new_mcs_call->getType())->getNumElements();
+#endif
 
                 // vec of 16bit ints to vec of 32bit ints
                 Type* newLdmcsVecType = VectorType::get(m_builder->getInt32Ty(), newLdmcsNumOfElements);
--- IGC/Compiler/Legalizer/InstPromoter.cpp.orig	2021-02-08 08:48:29 UTC
+++ IGC/Compiler/Legalizer/InstPromoter.cpp
@@ -399,7 +399,11 @@ bool InstPromoter::visitBitCastInst(BitCastInst& I) {
             IRB->CreateBitCast(Val, VectorType::get(DestTy->getScalarType(), N));
 
         std::vector<Constant*> Vals;
+#if LLVM_VERSION_MAJOR < 11
         for (unsigned i = 0; i < DestTy->getVectorNumElements(); i++)
+#else
+        for (unsigned i = 0; i < cast<llvm::VectorType>(DestTy)->getNumElements(); i++)
+#endif
             Vals.push_back(IRB->getInt32(i));
 
         Value* Mask = ConstantVector::get(Vals);
--- IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp.orig	2021-02-07 09:58:11 UTC
+++ IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp
@@ -305,7 +305,11 @@ static Value* BuildLoadInst(CallInst& CI, unsigned int
     auto Size = ElemByteSize;
     if (DataType->isVectorTy())
     {
+#if LLVM_VERSION_MAJOR < 11
         Size *= DataType->getVectorNumElements();
+#else
+        Size *= cast<llvm::VectorType>(DataType)->getNumElements();
+#endif
     }
     unsigned int AlignedOffset = (Offset / ElemByteSize) * ElemByteSize;
     unsigned int LoadByteSize = (Offset == AlignedOffset) ? Size : Size * 2;
--- IGC/VectorCompiler/lib/GenXCodeGen/GenXDebugInfo.cpp.orig	2021-03-28 09:45:11 UTC
+++ IGC/VectorCompiler/lib/GenXCodeGen/GenXDebugInfo.cpp
@@ -525,7 +525,11 @@ void GenXDebugInfo::processFunctionGroup(GenXModule &G
   for (auto *F : IndirectlyCalledFunctions) {
     LLVM_DEBUG(dbgs() << "  F: " << F->getName() << " called indirectly!\n");
     // Each indirectly-called function is compiled into a separate vISA kernel
+#if LLVM_VERSION_MAJOR < 11
     auto *VF = VB.GetVISAKernel(F->getName());
+#else
+    auto *VF = VB.GetVISAKernel(F->getName().str());
+#endif
     processKernel(ProgramInfo{{BuildFunctionInfo(VF, F)}});
   }
   std::vector<ProgramInfo::FunctionInfo> PrimaryFIs;
--- IGC/VectorCompiler/lib/GenXCodeGen/GenXPatternMatch.cpp.orig	2021-02-15 09:29:30 UTC
+++ IGC/VectorCompiler/lib/GenXCodeGen/GenXPatternMatch.cpp
@@ -2194,7 +2194,11 @@ bool GenXPatternMatch::simplifySelect(Function *F) {
 
 bool GenXPatternMatch::clearDeadInstructions(Function &F) {
   bool Changed = false;
+#if LLVM_VERSION_MAJOR < 11
   SmallVector<Instruction *, 8> ToErase;
+#else
+  SmallVector<WeakTrackingVH, 8> ToErase;
+#endif
   for (auto &Inst : instructions(F))
     if (isInstructionTriviallyDead(&Inst))
       ToErase.push_back(&Inst);
