[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