mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[AMDGPU] Set metadata access for explicit section
Summary: This patch provides a means to set Metadata section kind for a global variable, if its explicit section name is prefixed with ".AMDGPU.metadata." This could be useful to make the global variable go to an ELF section without any section flags set. Reviewers: dstuttard, tpr, kzhuravl, nhaehnle, t-tye Reviewed By: dstuttard, kzhuravl Subscribers: llvm-commits, arsenm, jvesely, wdng, yaxunl, t-tye Differential Revision: https://reviews.llvm.org/D55267 llvm-svn: 348922
This commit is contained in:
parent
4b320e3b38
commit
9daba5888d
@ -29,3 +29,13 @@ MCSection *AMDGPUTargetObjectFile::SelectSectionForGlobal(
|
||||
|
||||
return TargetLoweringObjectFileELF::SelectSectionForGlobal(GO, Kind, TM);
|
||||
}
|
||||
|
||||
MCSection *AMDGPUTargetObjectFile::getExplicitSectionGlobal(
|
||||
const GlobalObject *GO, SectionKind SK, const TargetMachine &TM) const {
|
||||
// Set metadata access for the explicit section
|
||||
StringRef SectionName = GO->getSection();
|
||||
if (SectionName.startswith(".AMDGPU.metadata."))
|
||||
SK = SectionKind::getMetadata();
|
||||
|
||||
return TargetLoweringObjectFileELF::getExplicitSectionGlobal(GO, SK, TM);
|
||||
}
|
||||
|
@ -26,6 +26,8 @@ class AMDGPUTargetObjectFile : public TargetLoweringObjectFileELF {
|
||||
public:
|
||||
MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,
|
||||
const TargetMachine &TM) const override;
|
||||
MCSection *getExplicitSectionGlobal(const GlobalObject *GO, SectionKind Kind,
|
||||
const TargetMachine &TM) const override;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
56
test/CodeGen/AMDGPU/elf.metadata.ll
Normal file
56
test/CodeGen/AMDGPU/elf.metadata.ll
Normal file
@ -0,0 +1,56 @@
|
||||
; RUN: llc < %s -march=amdgcn -mcpu=fiji -filetype=obj | llvm-readobj -symbols -s -sd - | FileCheck %s
|
||||
|
||||
; CHECK: Section {
|
||||
; CHECK: Name: .AMDGPU.metadata.info_1
|
||||
; CHECK: Type: SHT_PROGBITS (0x1)
|
||||
; CHECK: Flags [ (0x0)
|
||||
; CHECK: Size: 16
|
||||
; CHECK: SectionData (
|
||||
; CHECK: 0000: 414D4431 414D4431 414D4431 414D4431 |AMD1AMD1AMD1AMD1|
|
||||
; CHECK: )
|
||||
; CHECK: }
|
||||
|
||||
; CHECK: Section {
|
||||
; CHECK: Name: .AMDGPU.metadata.info_2
|
||||
; CHECK: Type: SHT_PROGBITS (0x1)
|
||||
; CHECK: Flags [ (0x0)
|
||||
; CHECK: Size: 16
|
||||
; CHECK: SectionData (
|
||||
; CHECK: 0000: 414D4432 414D4432 414D4432 414D4432 |AMD2AMD2AMD2AMD2|
|
||||
; CHECK: )
|
||||
; CHECK: }
|
||||
|
||||
; CHECK: Section {
|
||||
; CHECK: Name: .AMDGPU.metadata.info_3
|
||||
; CHECK: Type: SHT_PROGBITS (0x1)
|
||||
; CHECK: Flags [ (0x0)
|
||||
; CHECK: Size: 16
|
||||
; CHECK: SectionData (
|
||||
; CHECK: 0000: 414D4433 414D4433 414D4433 414D4433 |AMD3AMD3AMD3AMD3|
|
||||
; CHECK: )
|
||||
; CHECK: }
|
||||
|
||||
; CHECK: Symbol {
|
||||
; CHECK: Name: metadata_info_var_1
|
||||
; CHECK: Size: 16
|
||||
; CHECK: Binding: Local
|
||||
; CHECK: Section: .AMDGPU.metadata.info_1
|
||||
; CHECK: }
|
||||
|
||||
; CHECK: Symbol {
|
||||
; CHECK: Name: metadata_info_var_2
|
||||
; CHECK: Size: 16
|
||||
; CHECK: Binding: Global
|
||||
; CHECK: Section: .AMDGPU.metadata.info_2
|
||||
; CHECK: }
|
||||
|
||||
; CHECK: Symbol {
|
||||
; CHECK: Name: metadata_info_var_3
|
||||
; CHECK: Size: 16
|
||||
; CHECK: Binding: Global
|
||||
; CHECK: Section: .AMDGPU.metadata.info_3
|
||||
; CHECK: }
|
||||
|
||||
@metadata_info_var_1 = internal global [4 x i32][i32 826559809, i32 826559809, i32 826559809, i32 826559809], align 1, section ".AMDGPU.metadata.info_1"
|
||||
@metadata_info_var_2 = constant [4 x i32][i32 843337025, i32 843337025, i32 843337025, i32 843337025], align 1, section ".AMDGPU.metadata.info_2"
|
||||
@metadata_info_var_3 = global [4 x i32][i32 860114241, i32 860114241, i32 860114241, i32 860114241], align 1, section ".AMDGPU.metadata.info_3"
|
Loading…
Reference in New Issue
Block a user