@@ -17,6 +17,24 @@ struct urContextGetInfoTestWithInfoParam
1717 {UR_CONTEXT_INFO_REFERENCE_COUNT, sizeof (uint32_t )},
1818 {UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, sizeof (bool )},
1919 {UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, sizeof (bool )},
20+ {UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES,
21+ sizeof (ur_memory_order_capability_flags_t )},
22+ {UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES,
23+ sizeof (ur_memory_order_capability_flags_t )},
24+ {UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES,
25+ sizeof (ur_memory_order_capability_flags_t )},
26+ {UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES,
27+ sizeof (ur_memory_order_capability_flags_t )}};
28+
29+ ctx_info_mem_flags_map = {
30+ {UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES,
31+ UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK},
32+ {UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES,
33+ UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK},
34+ {UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES,
35+ UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK},
36+ {UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES,
37+ UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK},
2038 };
2139 }
2240
@@ -26,24 +44,34 @@ struct urContextGetInfoTestWithInfoParam
2644 }
2745
2846 std::unordered_map<ur_context_info_t , size_t > ctx_info_size_map;
47+ std::unordered_map<ur_context_info_t , ur_memory_order_capability_flags_t >
48+ ctx_info_mem_flags_map;
2949};
3050
3151UUR_TEST_SUITE_P (urContextGetInfoTestWithInfoParam,
3252 ::testing::Values (
3353
34- UR_CONTEXT_INFO_NUM_DEVICES, //
35- UR_CONTEXT_INFO_DEVICES, //
36- UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, //
37- UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, //
38- UR_CONTEXT_INFO_REFERENCE_COUNT //
39-
54+ UR_CONTEXT_INFO_NUM_DEVICES, //
55+ UR_CONTEXT_INFO_DEVICES, //
56+ UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, //
57+ UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, //
58+ UR_CONTEXT_INFO_REFERENCE_COUNT, //
59+ UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES, //
60+ UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES, //
61+ UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES, //
62+ UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES //
4063 ),
4164 uur::deviceTestWithParamPrinter<ur_context_info_t>);
4265
4366TEST_P (urContextGetInfoTestWithInfoParam, Success) {
4467 ur_context_info_t info = getParam ();
4568 size_t info_size = 0 ;
46- ASSERT_SUCCESS (urContextGetInfo (context, info, 0 , nullptr , &info_size));
69+ ur_result_t result =
70+ urContextGetInfo (context, info, 0 , nullptr , &info_size);
71+ if (result != UR_RESULT_SUCCESS) {
72+ ASSERT_EQ (result, UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION);
73+ return ; // exit before further checks fail because this type is unsupported
74+ }
4775 ASSERT_NE (info_size, 0 );
4876
4977 if (const auto expected_size = ctx_info_size_map.find (info);
@@ -83,6 +111,17 @@ TEST_P(urContextGetInfoTestWithInfoParam, Success) {
83111 ASSERT_GT (*returned_reference_count, 0U );
84112 break ;
85113 }
114+ case UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES:
115+ case UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES:
116+ case UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES:
117+ case UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES: {
118+ if (const auto flags = ctx_info_mem_flags_map.find (info);
119+ flags != ctx_info_mem_flags_map.end ()) {
120+ auto value = reinterpret_cast <uint32_t *>(info_data.data ());
121+ ASSERT_EQ (*value & flags->second , 0 );
122+ }
123+ break ;
124+ }
86125 default :
87126 break ;
88127 }
0 commit comments