/*========================== begin_copyright_notice ============================ Copyright (C) 2020-2021 Intel Corporation SPDX-License-Identifier: MIT ============================= end_copyright_notice ===========================*/ #pragma once #include "Compiler/CISACodeGen/WIAnalysis.hpp" #include "common/LLVMWarningsPush.hpp" #include #include #include #include "common/LLVMWarningsPop.hpp" namespace IGC { llvm::FunctionPass* createAnnotateUniformAllocasPass(); class AnnotateUniformAllocas : public llvm::FunctionPass, public llvm::InstVisitor { public: static char ID; AnnotateUniformAllocas(); virtual llvm::StringRef getPassName() const override { return "Annotate Uniform Allocas Pass"; } virtual void getAnalysisUsage(llvm::AnalysisUsage& AU) const override { AU.addRequired(); AU.setPreservesCFG(); // expect to run WIA again after this pass puts annotations on uniform alloca } virtual bool runOnFunction(llvm::Function& F) override; void visitAllocaInst(llvm::AllocaInst& I); void visitCallInst(llvm::CallInst& I); private: WIAnalysis* WI; bool m_changed = false; llvm::SmallVector AssumeToErase; }; } // namespace IGC