Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.cpp
Show All 39 Lines | if (NamedMD && NamedMD->getNumOperands()) { | ||||
if (MDN && MDN->getNumOperands()) { | if (MDN && MDN->getNumOperands()) { | ||||
if (auto MDS = dyn_cast<MDString>(MDN->getOperand(0))) | if (auto MDS = dyn_cast<MDString>(MDN->getOperand(0))) | ||||
setFromMsgPackBlob(MDS->getString()); | setFromMsgPackBlob(MDS->getString()); | ||||
} | } | ||||
return; | return; | ||||
} | } | ||||
BlobType = ELF::NT_AMD_AMDGPU_PAL_METADATA; | BlobType = ELF::NT_AMD_AMDGPU_PAL_METADATA; | ||||
NamedMD = M.getNamedMetadata("amdgpu.pal.metadata"); | NamedMD = M.getNamedMetadata("amdgpu.pal.metadata"); | ||||
if (!NamedMD || !NamedMD->getNumOperands()) | if (!NamedMD || !NamedMD->getNumOperands()) { | ||||
// Emit msgpack metadata by default | |||||
BlobType = ELF::NT_AMDGPU_METADATA; | |||||
return; | return; | ||||
} | |||||
// This is the old reg=value pair format for metadata. It is a NamedMD | // This is the old reg=value pair format for metadata. It is a NamedMD | ||||
// containing an MDTuple containing a number of MDNodes each of which is an | // containing an MDTuple containing a number of MDNodes each of which is an | ||||
// integer value, and each two integer values forms a key=value pair that we | // integer value, and each two integer values forms a key=value pair that we | ||||
// store as Registers[key]=value in the map. | // store as Registers[key]=value in the map. | ||||
auto Tuple = dyn_cast<MDTuple>(NamedMD->getOperand(0)); | auto Tuple = dyn_cast<MDTuple>(NamedMD->getOperand(0)); | ||||
if (!Tuple) | if (!Tuple) | ||||
return; | return; | ||||
for (unsigned I = 0, E = Tuple->getNumOperands() & -2; I != E; I += 2) { | for (unsigned I = 0, E = Tuple->getNumOperands() & -2; I != E; I += 2) { | ||||
▲ Show 20 Lines • Show All 724 Lines • Show Last 20 Lines |