[llvm] [Offload] Return an integer user count for AMDGPU HSA queues (PR #223335)

Kevin Sala Penades via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 10 05:29:02 PDT 2026


================
@@ -41,3 +42,53 @@ TEST_P(olCreateQueueTest, InvalidDeviceNotInContext) {
   ol_queue_handle_t Queue = nullptr;
   ASSERT_ERROR(OL_ERRC_INVALID_DEVICE, olCreateQueue(Context, Host, &Queue));
 }
+
+// AMDGPUQueueTy is defined in the AMDGPU plugin translation unit. These are
+// its user-count operations: getUserCount returns the stored integer, and
+// assignNextQueue compares those values when choosing the least-used queue.
+struct QueueUserCount {
+  uint32_t getUserCount() const { return NumUsers; }
+  void addUser() { ++NumUsers; }
+  void removeUser() { --NumUsers; }
+
+  uint32_t NumUsers = 0;
+};
+
+TEST(AMDGPUQueueUserCount, StartsAtZero) {
+  QueueUserCount Users;
+  EXPECT_EQ(Users.getUserCount(), 0u);
+}
+
+TEST(AMDGPUQueueUserCount, AddAndRemoveTrackIntegerCount) {
+  QueueUserCount Users;
+  Users.addUser();
+  Users.addUser();
+  Users.addUser();
+  EXPECT_EQ(Users.getUserCount(), 3u);
+
+  Users.removeUser();
+  EXPECT_EQ(Users.getUserCount(), 2u);
+}
+
+// A boolean return would collapse every non-zero count to 1, so 5 > 1 would
+// be false and the heavier queue would stay selected.
+TEST(AMDGPUQueueUserCount, LeastUsedBusyQueueHasTheSmallerCount) {
+  QueueUserCount Queues[2];
+  for (uint32_t I = 0; I < 5; ++I)
+    Queues[0].addUser();
+  Queues[1].addUser();
+
+  uint32_t Index = 0;
+  for (uint32_t I = 0; I < 2; ++I) {
+    if (Queues[I].getUserCount() == 0) {
+      Index = I;
+      break;
+    }
+    if (Queues[Index].getUserCount() > Queues[I].getUserCount())
+      Index = I;
+  }
+
+  EXPECT_EQ(Queues[0].getUserCount(), 5u);
+  EXPECT_EQ(Queues[1].getUserCount(), 1u);
+  EXPECT_EQ(Index, 1u);
+}
----------------
kevinsala wrote:

Please remove these new tests. These files are for testing offload API.

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


More information about the llvm-commits mailing list