[clang] faf4e8a - [Clang][SYCL] Add initial set of Intel OffloadArch values (#138158)
via cfe-commits
cfe-commits at lists.llvm.org
Thu May 1 14:29:51 PDT 2025
Author: Justin Cai
Date: 2025-05-01T16:29:48-05:00
New Revision: faf4e8af74eec8dac4c7e55702227d7d9a82f93c
URL: https://github.com/llvm/llvm-project/commit/faf4e8af74eec8dac4c7e55702227d7d9a82f93c
DIFF: https://github.com/llvm/llvm-project/commit/faf4e8af74eec8dac4c7e55702227d7d9a82f93c.diff
LOG: [Clang][SYCL] Add initial set of Intel OffloadArch values (#138158)
Following #137070, this PR adds an initial set of Intel `OffloadArch`
values with corresponding predicates that will be used in SYCL
offloading. More Intel architectures will be added in a future PR.
Added:
clang/unittests/Basic/OffloadArchTest.cpp
Modified:
clang/include/clang/Basic/OffloadArch.h
clang/lib/Basic/OffloadArch.cpp
clang/lib/Basic/Targets/NVPTX.cpp
clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
clang/unittests/Basic/CMakeLists.txt
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h
index c5ccd17e7a8be..99b1024b9d0d4 100644
--- a/clang/include/clang/Basic/OffloadArch.h
+++ b/clang/include/clang/Basic/OffloadArch.h
@@ -101,6 +101,10 @@ enum class OffloadArch {
AMDGCNSPIRV,
Generic, // A processor model named 'generic' if the target backend defines a
// public one.
+ // Intel CPUs
+ GRANITERAPIDS,
+ // Intel GPUs
+ BMG_G21,
LAST,
CudaDefault = OffloadArch::SM_52,
@@ -116,6 +120,18 @@ static inline bool IsAMDOffloadArch(OffloadArch A) {
return A >= OffloadArch::GFX600 && A < OffloadArch::Generic;
}
+static inline bool IsIntelCPUOffloadArch(OffloadArch Arch) {
+ return Arch >= OffloadArch::GRANITERAPIDS && Arch < OffloadArch::BMG_G21;
+}
+
+static inline bool IsIntelGPUOffloadArch(OffloadArch Arch) {
+ return Arch >= OffloadArch::BMG_G21 && Arch < OffloadArch::LAST;
+}
+
+static inline bool IsIntelOffloadArch(OffloadArch Arch) {
+ return IsIntelCPUOffloadArch(Arch) || IsIntelGPUOffloadArch(Arch);
+}
+
const char *OffloadArchToString(OffloadArch A);
const char *OffloadArchToVirtualArchString(OffloadArch A);
diff --git a/clang/lib/Basic/OffloadArch.cpp b/clang/lib/Basic/OffloadArch.cpp
index 5e29742478b99..a019f0ac18c84 100644
--- a/clang/lib/Basic/OffloadArch.cpp
+++ b/clang/lib/Basic/OffloadArch.cpp
@@ -87,6 +87,10 @@ static const OffloadArchToStringMap ArchNames[] = {
GFX(1200), // gfx1200
GFX(1201), // gfx1201
{OffloadArch::AMDGCNSPIRV, "amdgcnspirv", "compute_amdgcn"},
+ // Intel CPUs
+ {OffloadArch::GRANITERAPIDS, "graniterapids", ""},
+ // Intel GPUS
+ {OffloadArch::BMG_G21, "bmg_g21", ""},
{OffloadArch::Generic, "generic", ""},
// clang-format on
};
diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp
index 08c8460045c6a..42b66d3559f6a 100644
--- a/clang/lib/Basic/Targets/NVPTX.cpp
+++ b/clang/lib/Basic/Targets/NVPTX.cpp
@@ -241,6 +241,8 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts,
case OffloadArch::GFX1201:
case OffloadArch::AMDGCNSPIRV:
case OffloadArch::Generic:
+ case OffloadArch::GRANITERAPIDS:
+ case OffloadArch::BMG_G21:
case OffloadArch::LAST:
break;
case OffloadArch::UNKNOWN:
diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
index 59a5f7b914ce5..aa97422d54ede 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
@@ -2334,6 +2334,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) {
case OffloadArch::GFX1201:
case OffloadArch::AMDGCNSPIRV:
case OffloadArch::Generic:
+ case OffloadArch::GRANITERAPIDS:
+ case OffloadArch::BMG_G21:
case OffloadArch::UNUSED:
case OffloadArch::UNKNOWN:
break;
diff --git a/clang/unittests/Basic/CMakeLists.txt b/clang/unittests/Basic/CMakeLists.txt
index b0e0a97168757..8c8baa57b64e7 100644
--- a/clang/unittests/Basic/CMakeLists.txt
+++ b/clang/unittests/Basic/CMakeLists.txt
@@ -7,6 +7,7 @@ add_distinct_clang_unittest(BasicTests
FileEntryTest.cpp
FileManagerTest.cpp
LineOffsetMappingTest.cpp
+ OffloadArchTest.cpp
SanitizersTest.cpp
SarifTest.cpp
SourceManagerTest.cpp
diff --git a/clang/unittests/Basic/OffloadArchTest.cpp b/clang/unittests/Basic/OffloadArchTest.cpp
new file mode 100644
index 0000000000000..c19ad0043d774
--- /dev/null
+++ b/clang/unittests/Basic/OffloadArchTest.cpp
@@ -0,0 +1,36 @@
+//===- unittests/Basic/OffloadArchTest.cpp - Test OffloadArch -------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Basic/OffloadArch.h"
+#include "gtest/gtest.h"
+
+using namespace clang;
+
+TEST(OffloadArchTest, basic) {
+ EXPECT_TRUE(IsNVIDIAOffloadArch(OffloadArch::SM_20));
+ EXPECT_TRUE(IsNVIDIAOffloadArch(OffloadArch::SM_120a));
+ EXPECT_FALSE(IsNVIDIAOffloadArch(OffloadArch::GFX600));
+
+ EXPECT_FALSE(IsAMDOffloadArch(OffloadArch::SM_120a));
+ EXPECT_TRUE(IsAMDOffloadArch(OffloadArch::GFX600));
+ EXPECT_TRUE(IsAMDOffloadArch(OffloadArch::GFX1201));
+ EXPECT_TRUE(IsAMDOffloadArch(OffloadArch::GFX12_GENERIC));
+ EXPECT_TRUE(IsAMDOffloadArch(OffloadArch::AMDGCNSPIRV));
+ EXPECT_FALSE(IsAMDOffloadArch(OffloadArch::GRANITERAPIDS));
+
+ EXPECT_TRUE(IsIntelOffloadArch(OffloadArch::GRANITERAPIDS));
+ EXPECT_TRUE(IsIntelCPUOffloadArch(OffloadArch::GRANITERAPIDS));
+ EXPECT_FALSE(IsIntelGPUOffloadArch(OffloadArch::GRANITERAPIDS));
+ EXPECT_TRUE(IsIntelOffloadArch(OffloadArch::BMG_G21));
+ EXPECT_FALSE(IsIntelCPUOffloadArch(OffloadArch::BMG_G21));
+ EXPECT_TRUE(IsIntelGPUOffloadArch(OffloadArch::BMG_G21));
+
+ EXPECT_FALSE(IsNVIDIAOffloadArch(OffloadArch::Generic));
+ EXPECT_FALSE(IsAMDOffloadArch(OffloadArch::Generic));
+ EXPECT_FALSE(IsIntelOffloadArch(OffloadArch::Generic));
+}
More information about the cfe-commits
mailing list