[clang] [Clang][SYCL] Add initial set of Intel OffloadArch values (PR #138158)
Justin Cai via cfe-commits
cfe-commits at lists.llvm.org
Thu May 1 10:50:08 PDT 2025
https://github.com/jzc updated https://github.com/llvm/llvm-project/pull/138158
>From f1b0e2cbe8229ba00956e0eac58f97d71995b0dd Mon Sep 17 00:00:00 2001
From: "Cai, Justin" <justin.cai at intel.com>
Date: Mon, 14 Apr 2025 21:30:39 +0000
Subject: [PATCH 1/2] [Clang][SYCL] Add initial set of Intel OffloadArch values
---
clang/include/clang/Basic/OffloadArch.h | 19 ++++++++++++
clang/lib/Basic/OffloadArch.cpp | 4 +++
clang/lib/Basic/Targets/NVPTX.cpp | 2 ++
clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp | 2 ++
clang/unittests/Basic/CMakeLists.txt | 1 +
clang/unittests/Basic/OffloadArchTest.cpp | 36 +++++++++++++++++++++++
6 files changed, 64 insertions(+)
create mode 100644 clang/unittests/Basic/OffloadArchTest.cpp
diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h
index c5ccd17e7a8be..c681f99f2e146 100644
--- a/clang/include/clang/Basic/OffloadArch.h
+++ b/clang/include/clang/Basic/OffloadArch.h
@@ -101,6 +101,13 @@ enum class OffloadArch {
AMDGCNSPIRV,
Generic, // A processor model named 'generic' if the target backend defines a
// public one.
+ // Note: this is an initial list of Intel GPU and GPU offloading
+ // architectures. The list will be expanded later as support for more
+ // architectures is added.
+ // Intel CPUs
+ GRANITERAPIDS,
+ // Intel GPUs
+ BMG_G21,
LAST,
CudaDefault = OffloadArch::SM_52,
@@ -116,6 +123,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));
+}
>From 4d4c901ad78a104989b328e7532fd47a61a0cad6 Mon Sep 17 00:00:00 2001
From: "Cai, Justin" <justin.cai at intel.com>
Date: Thu, 1 May 2025 17:13:00 +0000
Subject: [PATCH 2/2] Remove comment
---
clang/include/clang/Basic/OffloadArch.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h
index c681f99f2e146..99b1024b9d0d4 100644
--- a/clang/include/clang/Basic/OffloadArch.h
+++ b/clang/include/clang/Basic/OffloadArch.h
@@ -101,9 +101,6 @@ enum class OffloadArch {
AMDGCNSPIRV,
Generic, // A processor model named 'generic' if the target backend defines a
// public one.
- // Note: this is an initial list of Intel GPU and GPU offloading
- // architectures. The list will be expanded later as support for more
- // architectures is added.
// Intel CPUs
GRANITERAPIDS,
// Intel GPUs
More information about the cfe-commits
mailing list