Lines Matching refs:llvm
64 class RSInvariantPass : public llvm::FunctionPass {
70 virtual bool doInitialization(llvm::Module &M) { in doInitialization()
71 EmptyMDNode = llvm::MDNode::get(M.getContext(), llvm::None); in doInitialization()
75 virtual bool runOnFunction(llvm::Function &F) { in runOnFunction()
78 for (llvm::Value &Arg : F.args()) { in runOnFunction()
79 const llvm::Type *ArgType = Arg.getType(); in runOnFunction()
81 const llvm::Type *ArgPtrDomainType = ArgType->getPointerElementType(); in runOnFunction()
82 if (auto ArgPtrDomainStructType = llvm::dyn_cast<llvm::StructType>(ArgPtrDomainType)) { in runOnFunction()
84 const llvm::StringRef StructName = getUnsuffixedStructName(ArgPtrDomainStructType); in runOnFunction()
110 bool markInvariantUserLoads(llvm::Value *Value) { in markInvariantUserLoads()
112 for (llvm::Use &Use : Value->uses()) { in markInvariantUserLoads()
113 llvm::Instruction *Inst = llvm::cast<llvm::Instruction>(Use.getUser()); in markInvariantUserLoads()
122 if (auto BitCast = llvm::dyn_cast<llvm::BitCastInst>(Inst)) { in markInvariantUserLoads()
124 } else if (auto GetElementPtr = llvm::dyn_cast<llvm::GetElementPtrInst>(Inst)) { in markInvariantUserLoads()
127 } else if (auto Load = llvm::dyn_cast<llvm::LoadInst>(Inst)) { in markInvariantUserLoads()
138 llvm::MDNode *EmptyMDNode;
142 llvm::RegisterPass<RSInvariantPass> X("rsinvariant", "RS Invariant Load Pass");
148 llvm::FunctionPass *