[llvm] [libsycl] Add lit configuration files and basic test (PR #177407)

Kseniya Tikhomirova via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 10 04:51:51 PST 2026


================
@@ -0,0 +1,122 @@
+// REQUIRES: any-device
+// RUN: %clangxx %sycl_options %s -o %t.out
+// RUN: %t.out
+//
+// Tests platform::get_devices for each device type.
+
+#include <sycl.hpp>
+
+#include <algorithm>
+#include <iostream>
+
+std::string BackendToString(sycl::backend Backend) {
+  switch (Backend) {
+  case sycl::backend::opencl:
+    return "opencl";
+  case sycl::backend::level_zero:
+    return "level_zero";
+  case sycl::backend::cuda:
+    return "cuda";
+  case sycl::backend::hip:
+    return "hip";
+  default:
+    return "unknown";
+  }
+}
+
+std::string DeviceTypeToString(sycl::info::device_type DevType) {
+  switch (DevType) {
+  case sycl::info::device_type::all:
+    return "device_type::all";
+  case sycl::info::device_type::cpu:
+    return "device_type::cpu";
+  case sycl::info::device_type::gpu:
+    return "device_type::gpu";
+  case sycl::info::device_type::accelerator:
+    return "device_type::accelerator";
+  case sycl::info::device_type::custom:
+    return "device_type::custom";
+  case sycl::info::device_type::automatic:
+    return "device_type::automatic";
+  case sycl::info::device_type::host:
+    return "device_type::host";
+  default:
+    return "UNKNOWN";
+  }
+}
+
+std::string GenerateDeviceDescription(sycl::info::device_type DevType,
+                                      const sycl::platform &Platform) {
+  return std::string(DeviceTypeToString(DevType)) + " (" +
+         BackendToString(Platform.get_backend()) + ")";
+}
+
+template <typename T1, typename T2>
+int Check(const T1 &LHS, const T2 &RHS, std::string TestName) {
+  if (LHS != RHS) {
+    std::cerr << "Failed check " << LHS << " != " << RHS << ": " << TestName
+              << std::endl;
+    return 1;
+  }
+  return 0;
+}
+
+int CheckDeviceType(const sycl::platform &P, sycl::info::device_type DevType,
+                    std::vector<sycl::device> &AllDevices) {
+  assert(DevType != sycl::info::device_type::all);
+  int Failures = 0;
+
+  std::vector<sycl::device> Devices = P.get_devices(DevType);
+
+  if (DevType == sycl::info::device_type::automatic) {
+    if (AllDevices.empty()) {
+      Failures += Check(Devices.size(), 0,
+                        "No devices reported for device_type::all query, but "
+                        "device_type::automatic returns a device.");
+    } else {
+      Failures += Check(Devices.size(), 1,
+                        "Number of devices for device_type::automatic query.");
+      if (Devices.size())
+        Failures += Check(
+            std::count(AllDevices.begin(), AllDevices.end(), Devices[0]), 1,
+            "Device is in the set of device_type::all devices in the "
+            "platform.");
+    }
+    return Failures;
+  }
+
+  // Count devices with the type;
----------------
KseniyaTikhomirova wrote:

https://github.com/llvm/llvm-project/pull/177407/commits/17361e09b9b7d072e080a07f16f8c29e00f5d06d

https://github.com/llvm/llvm-project/pull/177407


More information about the llvm-commits mailing list