| 215 | void registerForDataObjectV2_8(amd_comgr_data_t data_object, const void* image, kernel_names_params_map& kernel_names_params); |
| 216 | |
| 217 | static void registerForDataObject(amd_comgr_data_t data_object, const void* image, kernel_names_params_map& kernel_names_params) |
| 218 | { |
| 219 | static size_t major = GetComgrVersion().first, minor = GetComgrVersion().second; |
| 220 | // XINFO("comgr version %lu.%lu",major,minor); |
| 221 | if(major >= 3 || (major == 2 && minor >= 8)) { |
| 222 | // need handle CCOB |
| 223 | if(major >= 3) { |
| 224 | registerForDataObjectV3_0(data_object, image, kernel_names_params); |
| 225 | } else { |
| 226 | registerForDataObjectV2_8(data_object, image, kernel_names_params); |
| 227 | } |
| 228 | return; |
| 229 | } |
| 230 | // Get a list of ISAs |
| 231 | size_t isa_count; |
| 232 | ASSERT_COMGR_STATUS(CodeObjectManager::get_isa_count(&isa_count)); |
| 233 | if (isa_count == 0) XERRO("No ISAs found"); |
| 234 | |
| 235 | amd_comgr_code_object_info_t *info_list = new amd_comgr_code_object_info_t[isa_count]; |
| 236 | for (size_t i = 0; i < isa_count; i++) { |
| 237 | ASSERT_COMGR_STATUS(CodeObjectManager::get_isa_name(i, &info_list[i].isa)); |
| 238 | } |
| 239 | ASSERT_COMGR_STATUS(CodeObjectManager::lookup_code_object(data_object, info_list, isa_count)); |
| 240 | |
| 241 | // 1.4 Process each ISA |
| 242 | for (size_t i = 0; i < isa_count; i++) { |
| 243 | // XDEBG("RegisterForDataObject: ISA %s, size = %zu, offset = %zu", info_list[i].isa, info_list[i].size, info_list[i].offset); |
| 244 | if (info_list[i].size == 0) continue; |
| 245 | amd_comgr_data_t code_object; |
| 246 | ASSERT_COMGR_STATUS(CodeObjectManager::create_data(AMD_COMGR_DATA_KIND_EXECUTABLE, &code_object)); |
| 247 | ASSERT_COMGR_STATUS(CodeObjectManager::set_data(code_object, info_list[i].size, ((const char*)image+info_list[i].offset))); |
| 248 | registerForOneISA(code_object, kernel_names_params); |
| 249 | ASSERT_COMGR_STATUS(CodeObjectManager::release_data(code_object)); |
| 250 | } |
| 251 | |
| 252 | delete[] info_list; |
| 253 | return; |
| 254 | } |
| 255 | |
| 256 | void KernelParamManager::RegisterStaticCodeObject(const void* data) |
| 257 | { |
no test coverage detected