53 const std::string &FS,
56 PointerSize(TM.getPointerSizeInBits( 0)),
58 TLInfo(TM, *this), TargetTriple(TT) {
59 switch (TT.getSubArch()) {
60 case Triple::SPIRVSubArch_v10:
61 SPIRVVersion = VersionTuple(1, 0);
63 case Triple::SPIRVSubArch_v11:
64 SPIRVVersion = VersionTuple(1, 1);
66 case Triple::SPIRVSubArch_v12:
67 SPIRVVersion = VersionTuple(1, 2);
69 case Triple::SPIRVSubArch_v13:
70 SPIRVVersion = VersionTuple(1, 3);
72 case Triple::SPIRVSubArch_v14:
73 SPIRVVersion = VersionTuple(1, 4);
75 case Triple::SPIRVSubArch_v15:
76 SPIRVVersion = VersionTuple(1, 5);
78 case Triple::SPIRVSubArch_v16:
79 SPIRVVersion = VersionTuple(1, 6);
82 if (TT.getVendor() == Triple::AMD)
83 SPIRVVersion = VersionTuple(1, 6);
85 SPIRVVersion = VersionTuple(1, 4);
100 Extensions.insert(SPIRV::Extension::SPV_INTEL_function_pointers);
106 initAvailableExtInstSets();
108 GR = std::make_unique<SPIRVGlobalRegistry>(PointerSize);
109 CallLoweringInfo = std::make_unique<SPIRVCallLowering>(TLInfo, GR.get());
110 InlineAsmInfo = std::make_unique<SPIRVInlineAsmLowering>(TLInfo);
111 Legalizer = std::make_unique<SPIRVLegalizerInfo>(*
this);
112 RegBankInfo = std::make_unique<SPIRVRegisterBankInfo>();
static cl::opt< bool > SPVTranslatorCompat("translator-compatibility-mode", cl::desc("SPIR-V Translator compatibility mode"), cl::Optional, cl::init(false))
static cl::opt< std::set< SPIRV::Extension::Extension >, false, SPIRVExtensionsParser > Extensions("spirv-ext", cl::desc("Specify list of enabled SPIR-V extensions"))