@@ -71,7 +71,10 @@ SPIRVSubtarget::SPIRVSubtarget(const Triple &TT, const std::string &CPU,
7171 break ;
7272 case Triple::SPIRVSubArch_v14:
7373 default :
74- SPIRVVersion = VersionTuple (1 , 4 );
74+ if (TT.getVendor () == Triple::AMD)
75+ SPIRVVersion = VersionTuple (1 , 6 );
76+ else
77+ SPIRVVersion = VersionTuple (1 , 4 );
7578 break ;
7679 case Triple::SPIRVSubArch_v15:
7780 SPIRVVersion = VersionTuple (1 , 5 );
@@ -85,14 +88,17 @@ SPIRVSubtarget::SPIRVSubtarget(const Triple &TT, const std::string &CPU,
8588 // Set the environment based on the target triple.
8689 if (TargetTriple.getOS () == Triple::Vulkan)
8790 Env = Shader;
88- else if (TargetTriple.getEnvironment () == Triple::OpenCL)
91+ else if (TargetTriple.getEnvironment () == Triple::OpenCL ||
92+ TargetTriple.getVendor () == Triple::AMD)
8993 Env = Kernel;
9094 else
9195 Env = Unknown;
9296
9397 // Set the default extensions based on the target triple.
9498 if (TargetTriple.getVendor () == Triple::Intel)
9599 Extensions.insert (SPIRV::Extension::SPV_INTEL_function_pointers);
100+ if (TargetTriple.getVendor () == Triple::AMD)
101+ Extensions = SPIRVExtensionsParser::getValidExtensions (TargetTriple);
96102
97103 // The order of initialization is important.
98104 initAvailableExtensions (Extensions);
0 commit comments