diff options
author | Yaxun Liu <Yaxun.Liu@amd.com> | 2016-09-01 18:46:49 +0000 |
---|---|---|
committer | Yaxun Liu <Yaxun.Liu@amd.com> | 2016-09-01 18:46:49 +0000 |
commit | add05a8d958a73874a0e7c48a1538837fc598e06 (patch) | |
tree | 58fabedbd50dcc1d80cbc6bfb44cec76d27cc077 /llvm/lib | |
parent | d2fb1e4a6cf19e7fd267f4e725fde324087679f4 (diff) | |
download | bcm5719-llvm-add05a8d958a73874a0e7c48a1538837fc598e06.tar.gz bcm5719-llvm-add05a8d958a73874a0e7c48a1538837fc598e06.zip |
AMDGPU: Add runtime metadata for pointee alignment of argument.
Add runtime metdata for pointee alignment of pointer type kernel argument. The key is KeyArgPointeeAlign and the value is a 32 bit unsigned integer.
Differential Revision: https://reviews.llvm.org/D24145
llvm-svn: 280399
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPURuntimeMetadata.h | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp index c0ecae849bd..176708951d0 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -886,13 +886,19 @@ void AMDGPUAsmPrinter::emitRuntimeMetadata(const Function &F) { unsigned I = Arg.getArgNo(); OutStreamer->EmitIntValue(RuntimeMD::KeyArgBegin, 1); - // Emit KeyArgSize and KeyArgAlign. + // Emit KeyArgSize, KeyArgAlign and KeyArgPointeeAlign. Type *T = Arg.getType(); const DataLayout &DL = F.getParent()->getDataLayout(); emitRuntimeMDIntValue(*OutStreamer, RuntimeMD::KeyArgSize, DL.getTypeAllocSize(T), 4); emitRuntimeMDIntValue(*OutStreamer, RuntimeMD::KeyArgAlign, DL.getABITypeAlignment(T), 4); + if (auto PT = dyn_cast<PointerType>(T)) { + auto ET = PT->getElementType(); + if (ET->isSized()) + emitRuntimeMDIntValue(*OutStreamer, RuntimeMD::KeyArgPointeeAlign, + DL.getABITypeAlignment(ET), 4); + } // Emit KeyArgTypeName. auto TypeName = dyn_cast<MDString>(F.getMetadata( diff --git a/llvm/lib/Target/AMDGPU/AMDGPURuntimeMetadata.h b/llvm/lib/Target/AMDGPU/AMDGPURuntimeMetadata.h index ed0e77c48be..9050b442b3b 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURuntimeMetadata.h +++ b/llvm/lib/Target/AMDGPU/AMDGPURuntimeMetadata.h @@ -84,6 +84,7 @@ namespace RuntimeMD { KeyFlatWorkGroupSizeLimits = 29, // Flat work group size limits KeyMaxWorkGroupSize = 30, // Maximum work group size KeyNoPartialWorkGroups = 31, // No partial work groups + KeyArgPointeeAlign = 32, // Alignment of pointee type }; enum Language : uint8_t { |