forked from OSchip/llvm-project
AMDHSA/NFC: Code object v3 updates (additional):
- Move section selection and alignment to AMDGPUAsmPrinter llvm-svn: 334521
This commit is contained in:
parent
b2d3f2e5da
commit
ce25bc3e82
|
@ -220,10 +220,26 @@ void AMDGPUAsmPrinter::EmitFunctionBodyEnd() {
|
|||
TM.getTargetTriple().getOS() != Triple::AMDHSA)
|
||||
return;
|
||||
|
||||
auto &Streamer = getTargetStreamer()->getStreamer();
|
||||
auto &Context = Streamer.getContext();
|
||||
auto &ObjectFileInfo = *Context.getObjectFileInfo();
|
||||
auto &ReadOnlySection = *ObjectFileInfo.getReadOnlySection();
|
||||
|
||||
Streamer.PushSection();
|
||||
Streamer.SwitchSection(&ReadOnlySection);
|
||||
|
||||
// CP microcode requires the kernel descriptor to be allocated on 64 byte
|
||||
// alignment.
|
||||
Streamer.EmitValueToAlignment(64, 0, 1, 0);
|
||||
if (ReadOnlySection.getAlignment() < 64)
|
||||
ReadOnlySection.setAlignment(64);
|
||||
|
||||
SmallString<128> KernelName;
|
||||
getNameWithPrefix(KernelName, &MF->getFunction());
|
||||
getTargetStreamer()->EmitAmdhsaKernelDescriptor(
|
||||
KernelName, getAmdhsaKernelDescriptor(*MF, CurrentProgramInfo));
|
||||
|
||||
Streamer.PopSection();
|
||||
}
|
||||
|
||||
void AMDGPUAsmPrinter::EmitFunctionEntryLabel() {
|
||||
|
|
|
@ -374,17 +374,6 @@ void AMDGPUTargetELFStreamer::EmitAmdhsaKernelDescriptor(
|
|||
const amdhsa::kernel_descriptor_t &KernelDescriptor) {
|
||||
auto &Streamer = getStreamer();
|
||||
auto &Context = Streamer.getContext();
|
||||
auto &ObjectFileInfo = *Context.getObjectFileInfo();
|
||||
auto &ReadOnlySection = *ObjectFileInfo.getReadOnlySection();
|
||||
|
||||
Streamer.PushSection();
|
||||
Streamer.SwitchSection(&ReadOnlySection);
|
||||
|
||||
// CP microcode requires the kernel descriptor to be allocated on 64 byte
|
||||
// alignment.
|
||||
Streamer.EmitValueToAlignment(64, 0, 1, 0);
|
||||
if (ReadOnlySection.getAlignment() < 64)
|
||||
ReadOnlySection.setAlignment(64);
|
||||
|
||||
MCSymbolELF *KernelDescriptorSymbol = cast<MCSymbolELF>(
|
||||
Context.getOrCreateSymbol(Twine(KernelName) + Twine(".kd")));
|
||||
|
@ -419,6 +408,4 @@ void AMDGPUTargetELFStreamer::EmitAmdhsaKernelDescriptor(
|
|||
sizeof(KernelDescriptor) -
|
||||
offsetof(amdhsa::kernel_descriptor_t, kernel_code_entry_byte_offset) -
|
||||
sizeof(KernelDescriptor.kernel_code_entry_byte_offset)));
|
||||
|
||||
Streamer.PopSection();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,16 @@
|
|||
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=ALL-ASM,OSABI-AMDHSA-ASM %s
|
||||
; RUN: llc -filetype=obj -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -mattr=+code-object-v3 < %s | llvm-readobj -elf-output-style=GNU -notes -relocations -sections -symbols | FileCheck --check-prefixes=ALL-ELF,OSABI-AMDHSA-ELF %s
|
||||
|
||||
; ALL-ASM-LABEL: {{^}}fadd:
|
||||
; OSABI-AMDHSA-ASM: s_endpgm
|
||||
; OSABI-AMDHSA-ASM: .section .rodata,#alloc
|
||||
; OSABI-AMDHSA-ASM: .p2align 6
|
||||
|
||||
; ALL-ASM-LABEL: {{^}}fsub:
|
||||
; OSABI-AMDHSA-ASM: s_endpgm
|
||||
; OSABI-AMDHSA-ASM: .section .rodata,#alloc
|
||||
; OSABI-AMDHSA-ASM: .p2align 6
|
||||
|
||||
; OSABI-AMDHSA-ASM-NOT: .hsa_code_object_version
|
||||
; OSABI-AMDHSA-ASM-NOT: .hsa_code_object_isa
|
||||
; OSABI-AMDHSA-ASM-NOT: .amd_amdgpu_isa
|
||||
|
|
Loading…
Reference in New Issue