@@ -185,7 +185,7 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts,
185185
186186 if (Opts.CUDAIsDevice || Opts.OpenMPIsTargetDevice || !HostTarget) {
187187 // Set __CUDA_ARCH__ for the GPU specified.
188- std::string CUDAArchCode = [this ] {
188+ llvm::StringRef CUDAArchCode = [this ] {
189189 switch (GPU) {
190190 case OffloadArch::GFX600:
191191 case OffloadArch::GFX601:
@@ -290,14 +290,27 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts,
290290 case OffloadArch::SM_100:
291291 case OffloadArch::SM_100a:
292292 return " 1000" ;
293+ case OffloadArch::SM_101:
294+ case OffloadArch::SM_101a:
295+ return " 1010" ;
296+ case OffloadArch::SM_120:
297+ case OffloadArch::SM_120a:
298+ return " 1200" ;
293299 }
294300 llvm_unreachable (" unhandled OffloadArch" );
295301 }();
296302 Builder.defineMacro (" __CUDA_ARCH__" , CUDAArchCode);
297- if (GPU == OffloadArch::SM_90a)
298- Builder.defineMacro (" __CUDA_ARCH_FEAT_SM90_ALL" , " 1" );
299- if (GPU == OffloadArch::SM_100a)
300- Builder.defineMacro (" __CUDA_ARCH_FEAT_SM100_ALL" , " 1" );
303+ switch (GPU) {
304+ case OffloadArch::SM_90a:
305+ case OffloadArch::SM_100a:
306+ case OffloadArch::SM_101a:
307+ case OffloadArch::SM_120a:
308+ Builder.defineMacro (" __CUDA_ARCH_FEAT_SM" + CUDAArchCode.drop_back () + " _ALL" , " 1" );
309+ break ;
310+ default :
311+ // Do nothing if this is not an enhanced architecture.
312+ break ;
313+ }
301314 }
302315}
303316
0 commit comments