@@ -29,83 +29,138 @@ using namespace llvm::opt;
2929
3030//  Struct that relates an AOT target value with
3131//  Intel CPUs and GPUs.
32- struct  StringToOffloadArchIntelMap  {
32+ struct  StringToOffloadArchSYCLMap  {
3333  const  char  *ArchName;
34-   OffloadArchIntel  IntelArch;
34+   SYCLSupportedOffloadArchs  IntelArch;
3535};
3636
37- //  Mapping of valid --offload-arch values for Intel CPU and GPU 
38- //  AOT targets. 
39- static   const  StringToOffloadArchIntelMap StringToArchNamesMap[] = { 
40-     {" skylake-avx512"  , OffloadArchIntel ::SKYLAKEAVX512},
41-     {" core-avx2"  , OffloadArchIntel ::COREAVX2},
42-     {" corei7-avx"  , OffloadArchIntel ::COREI7AVX},
43-     {" corei7"  , OffloadArchIntel ::COREI7},
44-     {" westmere"  , OffloadArchIntel ::WESTMERE},
45-     {" sandybridge"  , OffloadArchIntel ::SANDYBRIDGE},
46-     {" ivybridge"  , OffloadArchIntel ::IVYBRIDGE},
47-     {" broadwell"  , OffloadArchIntel ::BROADWELL},
48-     {" coffeelake"  , OffloadArchIntel ::COFFEELAKE},
49-     {" alderlake"  , OffloadArchIntel ::ALDERLAKE},
50-     {" skylake"  , OffloadArchIntel ::SKYLAKE},
51-     {" skx"  , OffloadArchIntel ::SKX},
52-     {" cascadelake"  , OffloadArchIntel ::CASCADELAKE},
53-     {" icelake-client"  , OffloadArchIntel ::ICELAKECLIENT},
54-     {" icelake-server"  , OffloadArchIntel ::ICELAKESERVER},
55-     {" sapphirerapids"  , OffloadArchIntel ::SAPPHIRERAPIDS},
56-     {" graniterapids"  , OffloadArchIntel ::GRANITERAPIDS},
37+ //  Mapping of supported SYCL offloading architectures. 
38+ static   const  StringToOffloadArchSYCLMap StringToArchNamesMap[] = { 
39+      //  Intel CPU mapping. 
40+     {" skylake-avx512"  , SYCLSupportedOffloadArchs ::SKYLAKEAVX512},
41+     {" core-avx2"  , SYCLSupportedOffloadArchs ::COREAVX2},
42+     {" corei7-avx"  , SYCLSupportedOffloadArchs ::COREI7AVX},
43+     {" corei7"  , SYCLSupportedOffloadArchs ::COREI7},
44+     {" westmere"  , SYCLSupportedOffloadArchs ::WESTMERE},
45+     {" sandybridge"  , SYCLSupportedOffloadArchs ::SANDYBRIDGE},
46+     {" ivybridge"  , SYCLSupportedOffloadArchs ::IVYBRIDGE},
47+     {" broadwell"  , SYCLSupportedOffloadArchs ::BROADWELL},
48+     {" coffeelake"  , SYCLSupportedOffloadArchs ::COFFEELAKE},
49+     {" alderlake"  , SYCLSupportedOffloadArchs ::ALDERLAKE},
50+     {" skylake"  , SYCLSupportedOffloadArchs ::SKYLAKE},
51+     {" skx"  , SYCLSupportedOffloadArchs ::SKX},
52+     {" cascadelake"  , SYCLSupportedOffloadArchs ::CASCADELAKE},
53+     {" icelake-client"  , SYCLSupportedOffloadArchs ::ICELAKECLIENT},
54+     {" icelake-server"  , SYCLSupportedOffloadArchs ::ICELAKESERVER},
55+     {" sapphirerapids"  , SYCLSupportedOffloadArchs ::SAPPHIRERAPIDS},
56+     {" graniterapids"  , SYCLSupportedOffloadArchs ::GRANITERAPIDS},
5757    //  Intel GPU mapping.
58-     {" bdw"  , OffloadArchIntel::BDW},
59-     {" skl"  , OffloadArchIntel::SKL},
60-     {" kbl"  , OffloadArchIntel::KBL},
61-     {" cfl"  , OffloadArchIntel::CFL},
62-     {" apl"  , OffloadArchIntel::APL},
63-     {" bxt"  , OffloadArchIntel::BXT},
64-     {" glk"  , OffloadArchIntel::GLK},
65-     {" whl"  , OffloadArchIntel::WHL},
66-     {" aml"  , OffloadArchIntel::AML},
67-     {" cml"  , OffloadArchIntel::CML},
68-     {" icllp"  , OffloadArchIntel::ICLLP},
69-     {" icl"  , OffloadArchIntel::ICL},
70-     {" ehl"  , OffloadArchIntel::EHL},
71-     {" jsl"  , OffloadArchIntel::JSL},
72-     {" tgllp"  , OffloadArchIntel::TGLLP},
73-     {" tgl"  , OffloadArchIntel::TGL},
74-     {" rkl"  , OffloadArchIntel::RKL},
75-     {" adl_s"  , OffloadArchIntel::ADL_S},
76-     {" rpl_s"  , OffloadArchIntel::RPL_S},
77-     {" adl_p"  , OffloadArchIntel::ADL_P},
78-     {" adl_n"  , OffloadArchIntel::ADL_N},
79-     {" dg1"  , OffloadArchIntel::DG1},
80-     {" acm_g10"  , OffloadArchIntel::ACM_G10},
81-     {" dg2_g10"  , OffloadArchIntel::DG2_G10},
82-     {" acm_g11"  , OffloadArchIntel::ACM_G11},
83-     {" dg2_g10"  , OffloadArchIntel::DG2_G10},
84-     {" dg2_g11"  , OffloadArchIntel::DG2_G11},
85-     {" acm_g12"  , OffloadArchIntel::ACM_G12},
86-     {" dg2_g12"  , OffloadArchIntel::DG2_G12},
87-     {" pvc"  , OffloadArchIntel::PVC},
88-     {" pvc_vg"  , OffloadArchIntel::PVC_VG},
89-     {" mtl_u"  , OffloadArchIntel::MTL_U},
90-     {" mtl_s"  , OffloadArchIntel::MTL_S},
91-     {" arl_u"  , OffloadArchIntel::ARL_U},
92-     {" arl_s"  , OffloadArchIntel::ARL_S},
93-     {" mtl_h"  , OffloadArchIntel::MTL_H},
94-     {" arl_h"  , OffloadArchIntel::ARL_H},
95-     {" bmg_g21"  , OffloadArchIntel::BMG_G21},
96-     {" lnl_m"  , OffloadArchIntel::LNL_M}};
58+     {" bdw"  , SYCLSupportedOffloadArchs::BDW},
59+     {" skl"  , SYCLSupportedOffloadArchs::SKL},
60+     {" kbl"  , SYCLSupportedOffloadArchs::KBL},
61+     {" cfl"  , SYCLSupportedOffloadArchs::CFL},
62+     {" apl"  , SYCLSupportedOffloadArchs::APL},
63+     {" bxt"  , SYCLSupportedOffloadArchs::BXT},
64+     {" glk"  , SYCLSupportedOffloadArchs::GLK},
65+     {" whl"  , SYCLSupportedOffloadArchs::WHL},
66+     {" aml"  , SYCLSupportedOffloadArchs::AML},
67+     {" cml"  , SYCLSupportedOffloadArchs::CML},
68+     {" icllp"  , SYCLSupportedOffloadArchs::ICLLP},
69+     {" icl"  , SYCLSupportedOffloadArchs::ICL},
70+     {" ehl"  , SYCLSupportedOffloadArchs::EHL},
71+     {" jsl"  , SYCLSupportedOffloadArchs::JSL},
72+     {" tgllp"  , SYCLSupportedOffloadArchs::TGLLP},
73+     {" tgl"  , SYCLSupportedOffloadArchs::TGL},
74+     {" rkl"  , SYCLSupportedOffloadArchs::RKL},
75+     {" adl_s"  , SYCLSupportedOffloadArchs::ADL_S},
76+     {" rpl_s"  , SYCLSupportedOffloadArchs::RPL_S},
77+     {" adl_p"  , SYCLSupportedOffloadArchs::ADL_P},
78+     {" adl_n"  , SYCLSupportedOffloadArchs::ADL_N},
79+     {" dg1"  , SYCLSupportedOffloadArchs::DG1},
80+     {" acm_g10"  , SYCLSupportedOffloadArchs::ACM_G10},
81+     {" dg2_g10"  , SYCLSupportedOffloadArchs::DG2_G10},
82+     {" acm_g11"  , SYCLSupportedOffloadArchs::ACM_G11},
83+     {" dg2_g10"  , SYCLSupportedOffloadArchs::DG2_G10},
84+     {" dg2_g11"  , SYCLSupportedOffloadArchs::DG2_G11},
85+     {" acm_g12"  , SYCLSupportedOffloadArchs::ACM_G12},
86+     {" dg2_g12"  , SYCLSupportedOffloadArchs::DG2_G12},
87+     {" pvc"  , SYCLSupportedOffloadArchs::PVC},
88+     {" pvc_vg"  , SYCLSupportedOffloadArchs::PVC_VG},
89+     {" mtl_u"  , SYCLSupportedOffloadArchs::MTL_U},
90+     {" mtl_s"  , SYCLSupportedOffloadArchs::MTL_S},
91+     {" arl_u"  , SYCLSupportedOffloadArchs::ARL_U},
92+     {" arl_s"  , SYCLSupportedOffloadArchs::ARL_S},
93+     {" mtl_h"  , SYCLSupportedOffloadArchs::MTL_H},
94+     {" arl_h"  , SYCLSupportedOffloadArchs::ARL_H},
95+     {" bmg_g21"  , SYCLSupportedOffloadArchs::BMG_G21},
96+     {" lnl_m"  , SYCLSupportedOffloadArchs::LNL_M},
97+     //  AMD GPU Mapping
98+     {" gfx700"  , SYCLSupportedOffloadArchs::GFX700},
99+     {" gfx701"  , SYCLSupportedOffloadArchs::GFX701},
100+     {" gfx702"  , SYCLSupportedOffloadArchs::GFX702},
101+     {" gfx801"  , SYCLSupportedOffloadArchs::GFX801},
102+     {" gfx802"  , SYCLSupportedOffloadArchs::GFX802},
103+     {" gfx803"  , SYCLSupportedOffloadArchs::GFX803},
104+     {" gfx805"  , SYCLSupportedOffloadArchs::GFX805},
105+     {" gfx810"  , SYCLSupportedOffloadArchs::GFX810},
106+     {" gfx900"  , SYCLSupportedOffloadArchs::GFX900},
107+     {" gfx902"  , SYCLSupportedOffloadArchs::GFX902},
108+     {" gfx904"  , SYCLSupportedOffloadArchs::GFX904},
109+     {" gfx906"  , SYCLSupportedOffloadArchs::GFX906},
110+     {" gfx908"  , SYCLSupportedOffloadArchs::GFX908},
111+     {" gfx909"  , SYCLSupportedOffloadArchs::GFX909},
112+     {" gfx90a"  , SYCLSupportedOffloadArchs::GFX90A},
113+     {" gfx90c"  , SYCLSupportedOffloadArchs::GFX90C},
114+     {" gfx940"  , SYCLSupportedOffloadArchs::GFX940},
115+     {" gfx941"  , SYCLSupportedOffloadArchs::GFX941},
116+     {" gfx942"  , SYCLSupportedOffloadArchs::GFX942},
117+     {" gfx1010"  , SYCLSupportedOffloadArchs::GFX1010},
118+     {" gfx1011"  , SYCLSupportedOffloadArchs::GFX1011},
119+     {" gfx1012"  , SYCLSupportedOffloadArchs::GFX1012},
120+     {" gfx1013"  , SYCLSupportedOffloadArchs::GFX1013},
121+     {" gfx1030"  , SYCLSupportedOffloadArchs::GFX1030},
122+     {" gfx1031"  , SYCLSupportedOffloadArchs::GFX1031},
123+     {" gfx1032"  , SYCLSupportedOffloadArchs::GFX1032},
124+     {" gfx1033"  , SYCLSupportedOffloadArchs::GFX1033},
125+     {" gfx1034"  , SYCLSupportedOffloadArchs::GFX1034},
126+     {" gfx1035"  , SYCLSupportedOffloadArchs::GFX1035},
127+     {" gfx1036"  , SYCLSupportedOffloadArchs::GFX1036},
128+     {" gfx1100"  , SYCLSupportedOffloadArchs::GFX1100},
129+     {" gfx1101"  , SYCLSupportedOffloadArchs::GFX1101},
130+     {" gfx1102"  , SYCLSupportedOffloadArchs::GFX1102},
131+     {" gfx1103"  , SYCLSupportedOffloadArchs::GFX1103},
132+     {" gfx1150"  , SYCLSupportedOffloadArchs::GFX1150},
133+     {" gfx1151"  , SYCLSupportedOffloadArchs::GFX1151},
134+     {" gfx1200"  , SYCLSupportedOffloadArchs::GFX1200},
135+     {" gfx1201"  , SYCLSupportedOffloadArchs::GFX1201},
136+     //  NVidia GPU Mapping.
137+     {" sm_50"  , SYCLSupportedOffloadArchs::SM_50},
138+     {" sm_52"  , SYCLSupportedOffloadArchs::SM_52},
139+     {" sm_53"  , SYCLSupportedOffloadArchs::SM_53},
140+     {" sm_60"  , SYCLSupportedOffloadArchs::SM_60},
141+     {" sm_61"  , SYCLSupportedOffloadArchs::SM_61},
142+     {" sm_62"  , SYCLSupportedOffloadArchs::SM_62},
143+     {" sm_70"  , SYCLSupportedOffloadArchs::SM_70},
144+     {" sm_72"  , SYCLSupportedOffloadArchs::SM_72},
145+     {" sm_75"  , SYCLSupportedOffloadArchs::SM_75},
146+     {" sm_80"  , SYCLSupportedOffloadArchs::SM_80},
147+     {" sm_86"  , SYCLSupportedOffloadArchs::SM_86},
148+     {" sm_87"  , SYCLSupportedOffloadArchs::SM_87},
149+     {" sm_89"  , SYCLSupportedOffloadArchs::SM_89},
150+     {" sm_90"  , SYCLSupportedOffloadArchs::SM_90},
151+     {" sm_90a"  , SYCLSupportedOffloadArchs::SM_90A}};
97152
98153//  Check if the user provided value for --offload-arch is a valid
99154//  Intel CPU or Intel GPU target.
100- OffloadArchIntel 
101- clang::driver::StringToOffloadArchIntel  (llvm::StringRef ArchNameAsString) {
155+ SYCLSupportedOffloadArchs 
156+ clang::driver::StringToOffloadArchSYCL  (llvm::StringRef ArchNameAsString) {
102157  auto  result = std::find_if (
103158      std::begin (StringToArchNamesMap), std::end (StringToArchNamesMap),
104-       [ArchNameAsString](const  StringToOffloadArchIntelMap  &map) {
159+       [ArchNameAsString](const  StringToOffloadArchSYCLMap  &map) {
105160        return  ArchNameAsString == map.ArchName ;
106161      });
107162  if  (result == std::end (StringToArchNamesMap))
108-     return  OffloadArchIntel ::UNKNOWN;
163+     return  SYCLSupportedOffloadArchs ::UNKNOWN;
109164  return  result->IntelArch ;
110165}
111166
0 commit comments