diff --git a/src/intel/dev/intel_device_info_test.c b/src/intel/dev/intel_device_info_test.c index 13678234f2e..b392833d341 100644 --- a/src/intel/dev/intel_device_info_test.c +++ b/src/intel/dev/intel_device_info_test.c @@ -4,6 +4,7 @@ #include #include "intel_device_info.h" +#include "intel_device_info_test.h" int main(int argc, char *argv[]) @@ -23,50 +24,7 @@ main(int argc, char *argv[]) assert(intel_get_device_info_from_pci_id(chipsets[i].pci_id, &devinfo)); - assert(devinfo.ver != 0); - assert((devinfo.verx10 / 10) == devinfo.ver); - assert(devinfo.max_eus_per_subslice != 0); - assert(devinfo.num_thread_per_eu != 0); - assert(devinfo.timestamp_frequency != 0); - assert(devinfo.cs_prefetch_size > 0); - - assert(devinfo.ver < 7 || devinfo.max_constant_urb_size_kb > 0); - assert(devinfo.ver < 8 || devinfo.max_threads_per_psd > 0); - - assert(devinfo.platform >= 1); - - assert(devinfo.num_slices <= ARRAY_SIZE(devinfo.subslice_masks)); - - assert(devinfo.num_slices <= devinfo.max_slices); - assert(intel_device_info_subslice_total(&devinfo) <= - (devinfo.max_slices * devinfo.max_subslices_per_slice)); - - for (uint32_t s = 0; s < ARRAY_SIZE(devinfo.num_subslices); s++) - assert(devinfo.num_subslices[s] <= devinfo.max_subslices_per_slice); - - assert(__builtin_popcount(devinfo.slice_masks) <= devinfo.max_slices); - - uint32_t total_subslices = 0; - for (size_t i = 0; i < ARRAY_SIZE(devinfo.subslice_masks); i++) - total_subslices += __builtin_popcount(devinfo.subslice_masks[i]); - assert(total_subslices <= - (devinfo.max_slices * devinfo.max_subslices_per_slice)); - - assert(intel_device_info_eu_total(&devinfo) > 0); - assert(intel_device_info_subslice_total(&devinfo) > 0); - - total_subslices = 0; - for (uint32_t s = 0; s < devinfo.max_slices; s++) - for (uint32_t ss = 0; ss < devinfo.max_subslices_per_slice; ss++) - total_subslices += intel_device_info_subslice_available(&devinfo, s, ss); - assert(total_subslices == intel_device_info_subslice_total(&devinfo)); - - uint32_t total_eus = 0; - for (uint32_t s = 0; s < devinfo.max_slices; s++) - for (uint32_t ss = 0; ss < devinfo.max_subslices_per_slice; ss++) - for (uint32_t eu = 0; eu < devinfo.max_eus_per_subslice; eu++) - total_eus += intel_device_info_eu_available(&devinfo, s, ss, eu); - assert(total_eus == intel_device_info_eu_total(&devinfo)); + verify_device_info(&devinfo); } return 0; diff --git a/src/intel/dev/intel_device_info_test.h b/src/intel/dev/intel_device_info_test.h new file mode 100644 index 00000000000..7d0c82c624d --- /dev/null +++ b/src/intel/dev/intel_device_info_test.h @@ -0,0 +1,54 @@ +#undef NDEBUG + +#include + +#include "intel_device_info.h" + +static void +verify_device_info(const struct intel_device_info *devinfo) +{ + assert(devinfo->ver != 0); + assert((devinfo->verx10 / 10) == devinfo->ver); + assert(devinfo->max_eus_per_subslice != 0); + assert(devinfo->num_thread_per_eu != 0); + assert(devinfo->timestamp_frequency != 0); + assert(devinfo->cs_prefetch_size > 0); + + assert(devinfo->ver < 7 || devinfo->max_constant_urb_size_kb > 0); + assert(devinfo->ver < 8 || devinfo->max_threads_per_psd > 0); + + assert(devinfo->platform >= 1); + + assert(devinfo->num_slices <= ARRAY_SIZE(devinfo->subslice_masks)); + + assert(devinfo->num_slices <= devinfo->max_slices); + assert(intel_device_info_subslice_total(devinfo) <= + (devinfo->max_slices * devinfo->max_subslices_per_slice)); + + for (uint32_t s = 0; s < ARRAY_SIZE(devinfo->num_subslices); s++) + assert(devinfo->num_subslices[s] <= devinfo->max_subslices_per_slice); + + assert(__builtin_popcount(devinfo->slice_masks) <= devinfo->max_slices); + + uint32_t total_subslices = 0; + for (size_t i = 0; i < ARRAY_SIZE(devinfo->subslice_masks); i++) + total_subslices += __builtin_popcount(devinfo->subslice_masks[i]); + assert(total_subslices <= + (devinfo->max_slices * devinfo->max_subslices_per_slice)); + + assert(intel_device_info_eu_total(devinfo) > 0); + assert(intel_device_info_subslice_total(devinfo) > 0); + + total_subslices = 0; + for (uint32_t s = 0; s < devinfo->max_slices; s++) + for (uint32_t ss = 0; ss < devinfo->max_subslices_per_slice; ss++) + total_subslices += intel_device_info_subslice_available(devinfo, s, ss); + assert(total_subslices == intel_device_info_subslice_total(devinfo)); + + uint32_t total_eus = 0; + for (uint32_t s = 0; s < devinfo->max_slices; s++) + for (uint32_t ss = 0; ss < devinfo->max_subslices_per_slice; ss++) + for (uint32_t eu = 0; eu < devinfo->max_eus_per_subslice; eu++) + total_eus += intel_device_info_eu_available(devinfo, s, ss, eu); + assert(total_eus == intel_device_info_eu_total(devinfo)); +}