1 /*========================== begin_copyright_notice ============================
2 
3 Copyright (C) 2017-2021 Intel Corporation
4 
5 SPDX-License-Identifier: MIT
6 
7 ============================= end_copyright_notice ===========================*/
8 
9 #pragma once
10 
11 #include "Compiler/CodeGenContextWrapper.hpp"
12 #include "Compiler/MetaDataUtilsWrapper.h"
13 #include "common/LLVMWarningsPush.hpp"
14 #include <llvm/Pass.h>
15 #include "common/LLVMWarningsPop.hpp"
16 
17 
18 namespace IGC
19 {
20     bool isLegalOCLVersion(int major, int minor);
21 
22     // This pass Translates SPIR metadata to IGC metadata
23     class SPIRMetaDataTranslation : public llvm::ModulePass
24     {
25     public:
26         static char ID;
27 
28         SPIRMetaDataTranslation();
29 
~SPIRMetaDataTranslation()30         ~SPIRMetaDataTranslation() {}
31 
32         void WarpFunctionMetadata(llvm::Module& M);
33         bool runOnModule(llvm::Module& M) override;
34 
getAnalysisUsage(llvm::AnalysisUsage & AU)35         virtual void getAnalysisUsage(llvm::AnalysisUsage& AU) const override
36         {
37             AU.addRequired<CodeGenContextWrapper>();
38             AU.addRequired<MetaDataUtilsWrapper>();
39         }
40 
41     };
42 
43 } // namespace IGC
44