xref: /aosp_15_r20/external/mesa3d/src/intel/dev/intel_device_info_test.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 #undef NDEBUG
2 
3 #include <assert.h>
4 
5 #include "intel_device_info.h"
6 
7 static void
verify_device_info(const struct intel_device_info * devinfo)8 verify_device_info(const struct intel_device_info *devinfo)
9 {
10    assert(devinfo->ver != 0);
11    assert((devinfo->verx10 / 10) == devinfo->ver);
12    assert(devinfo->max_eus_per_subslice != 0);
13    assert(devinfo->num_thread_per_eu != 0);
14    assert(devinfo->timestamp_frequency != 0);
15 
16    assert(devinfo->ver < 7 || devinfo->max_constant_urb_size_kb > 0);
17    assert(devinfo->ver < 8 || devinfo->max_threads_per_psd > 0);
18 
19    assert(devinfo->platform >= 1);
20 
21    assert(devinfo->num_slices <= ARRAY_SIZE(devinfo->subslice_masks));
22 
23    assert(devinfo->num_slices <= devinfo->max_slices);
24    assert(intel_device_info_subslice_total(devinfo) <=
25           (devinfo->max_slices * devinfo->max_subslices_per_slice));
26 
27    for (uint32_t s = 0; s < ARRAY_SIZE(devinfo->num_subslices); s++)
28       assert(devinfo->num_subslices[s] <= devinfo->max_subslices_per_slice);
29 
30    assert(__builtin_popcount(devinfo->slice_masks) <= devinfo->max_slices);
31 
32    uint32_t total_subslices = 0;
33    for (size_t i = 0; i < ARRAY_SIZE(devinfo->subslice_masks); i++)
34       total_subslices += __builtin_popcount(devinfo->subslice_masks[i]);
35    assert(total_subslices <=
36           (devinfo->max_slices * devinfo->max_subslices_per_slice));
37 
38    assert(intel_device_info_eu_total(devinfo) > 0);
39    assert(intel_device_info_subslice_total(devinfo) > 0);
40 
41    total_subslices = 0;
42    for (uint32_t s = 0; s < devinfo->max_slices; s++)
43       for (uint32_t ss = 0; ss < devinfo->max_subslices_per_slice; ss++)
44          total_subslices += intel_device_info_subslice_available(devinfo, s, ss);
45    assert(total_subslices == intel_device_info_subslice_total(devinfo));
46 
47    uint32_t total_eus = 0;
48    for (uint32_t s = 0; s < devinfo->max_slices; s++)
49       for (uint32_t ss = 0; ss < devinfo->max_subslices_per_slice; ss++)
50          for (uint32_t eu = 0; eu < devinfo->max_eus_per_subslice; eu++)
51             total_eus += intel_device_info_eu_available(devinfo, s, ss, eu);
52    assert(total_eus == intel_device_info_eu_total(devinfo));
53 }
54