diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index cad9e867a4427..257a85cda126c 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -892,6 +892,7 @@ StringRef SYCL::gen::resolveGenDevice(StringRef DeviceName) { .Cases("intel_gpu_acm_g11", "intel_gpu_dg2_g11", "acm_g11") .Cases("intel_gpu_acm_g12", "intel_gpu_dg2_g12", "acm_g12") .Case("intel_gpu_pvc", "pvc") + .Case("intel_gpu_pvc_vg", "pvc_vg") .Case("nvidia_gpu_sm_50", "sm_50") .Case("nvidia_gpu_sm_52", "sm_52") .Case("nvidia_gpu_sm_53", "sm_53") @@ -972,6 +973,7 @@ SmallString<64> SYCL::gen::getGenDeviceMacro(StringRef DeviceName) { .Case("acm_g11", "INTEL_GPU_ACM_G11") .Case("acm_g12", "INTEL_GPU_ACM_G12") .Case("pvc", "INTEL_GPU_PVC") + .Case("pvc_vg", "INTEL_GPU_PVC_VG") .Case("sm_50", "NVIDIA_GPU_SM_50") .Case("sm_52", "NVIDIA_GPU_SM_52") .Case("sm_53", "NVIDIA_GPU_SM_53") diff --git a/sycl/doc/UsersManual.md b/sycl/doc/UsersManual.md index 0c8b42249215c..3f929ae4d9055 100644 --- a/sycl/doc/UsersManual.md +++ b/sycl/doc/UsersManual.md @@ -48,6 +48,7 @@ and not recommended to use in production environment. support are accepted, providing a streamlined interface for AOT. Only one of these values at a time is supported. * intel_gpu_pvc - Ponte Vecchio Intel graphics architecture + * intel_gpu_pvc_vg - Ponte Vecchio VG Intel graphics architecture * intel_gpu_acm_g12, intel_gpu_dg2_g12 - Alchemist G12 Intel graphics architecture * intel_gpu_acm_g11, intel_gpu_dg2_g11 - Alchemist G11 Intel graphics architecture * intel_gpu_acm_g10, intel_gpu_dg2_g10 - Alchemist G10 Intel graphics architecture diff --git a/sycl/doc/extensions/experimental/sycl_ext_oneapi_device_architecture.asciidoc b/sycl/doc/extensions/experimental/sycl_ext_oneapi_device_architecture.asciidoc index 16a950af3151a..152b6182c0a36 100644 --- a/sycl/doc/extensions/experimental/sycl_ext_oneapi_device_architecture.asciidoc +++ b/sycl/doc/extensions/experimental/sycl_ext_oneapi_device_architecture.asciidoc @@ -331,6 +331,14 @@ intel_gpu_pvc |- |Ponte Vecchio Intel graphics architecture. +a| +[source] +---- +intel_gpu_pvc_vg +---- +|- +|Ponte Vecchio VG Intel graphics architecture. + a| [source] ---- diff --git a/sycl/include/sycl/ext/oneapi/experimental/device_architecture.hpp b/sycl/include/sycl/ext/oneapi/experimental/device_architecture.hpp index 48b417f123206..cbd76058825d9 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/device_architecture.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/device_architecture.hpp @@ -13,6 +13,17 @@ inline namespace _V1 { namespace ext::oneapi::experimental { enum class architecture { + // If new element is added to this enum: + // + // Update + // - sycl_ext_oneapi_device_architecture specification doc + // - "-fsycl-targets" description in sycl/doc/UsersManual.md + // + // Add + // - __SYCL_TARGET___ to the compiler driver and to all places below + // - the unique ID of the new architecture in SYCL RT source code to support + // querying the device architecture + // x86_64, intel_cpu_spr, intel_cpu_gnr, @@ -43,6 +54,7 @@ enum class architecture { intel_gpu_acm_g12, intel_gpu_dg2_g12 = intel_gpu_acm_g12, intel_gpu_pvc, + intel_gpu_pvc_vg, // NVIDIA architectures nvidia_gpu_sm_50, nvidia_gpu_sm_52, @@ -185,6 +197,9 @@ static constexpr ext::oneapi::experimental::architecture max_architecture = #ifndef __SYCL_TARGET_INTEL_GPU_PVC__ #define __SYCL_TARGET_INTEL_GPU_PVC__ 0 #endif +#ifndef __SYCL_TARGET_INTEL_GPU_PVC_VG__ +#define __SYCL_TARGET_INTEL_GPU_PVC_VG__ 0 +#endif #ifndef __SYCL_TARGET_NVIDIA_GPU_SM50__ #define __SYCL_TARGET_NVIDIA_GPU_SM50__ 0 #endif @@ -370,6 +385,7 @@ static constexpr bool is_allowable_aot_mode = (__SYCL_TARGET_INTEL_GPU_ACM_G11__ == 1) || (__SYCL_TARGET_INTEL_GPU_ACM_G12__ == 1) || (__SYCL_TARGET_INTEL_GPU_PVC__ == 1) || + (__SYCL_TARGET_INTEL_GPU_PVC_VG__ == 1) || (__SYCL_TARGET_NVIDIA_GPU_SM50__ == 1) || (__SYCL_TARGET_NVIDIA_GPU_SM52__ == 1) || (__SYCL_TARGET_NVIDIA_GPU_SM53__ == 1) || @@ -474,6 +490,8 @@ struct IsAOTForArchitectureClass { __SYCL_TARGET_INTEL_GPU_ACM_G12__ == 1; arr[static_cast(arch::intel_gpu_pvc)] = __SYCL_TARGET_INTEL_GPU_PVC__ == 1; + arr[static_cast(arch::intel_gpu_pvc_vg)] = + __SYCL_TARGET_INTEL_GPU_PVC_VG__ == 1; arr[static_cast(arch::nvidia_gpu_sm_50)] = __SYCL_TARGET_NVIDIA_GPU_SM50__ == 1; arr[static_cast(arch::nvidia_gpu_sm_52)] = diff --git a/sycl/source/detail/device_info.hpp b/sycl/source/detail/device_info.hpp index 8434fb79e4a88..0e205342006b7 100644 --- a/sycl/source/detail/device_info.hpp +++ b/sycl/source/detail/device_info.hpp @@ -638,6 +638,7 @@ constexpr std::pair IntelGPUArchitectures[] = { {0x030e0005, oneapi_exp_arch::intel_gpu_acm_g11}, {0x030e4000, oneapi_exp_arch::intel_gpu_acm_g12}, {0x030f0007, oneapi_exp_arch::intel_gpu_pvc}, + {0x030f4007, oneapi_exp_arch::intel_gpu_pvc_vg}, }; // Only for Intel CPU architectures