Skip to content

Commit 4eb0810

Browse files
authored
[llvm-objdump][AMDGPU] Pass ELF ABIVersion through disassembler (#78907)
Admittedly, its a bit ugly to pass the ABIVersion through onSymbolStart but I'm not sure what a better place for it would be.
1 parent bed3608 commit 4eb0810

File tree

16 files changed

+121
-25
lines changed

16 files changed

+121
-25
lines changed

llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ class MCDisassembler {
217217

218218
const MCSubtargetInfo& getSubtargetInfo() const { return STI; }
219219

220+
/// ELF-specific, set the ABI version from the object header.
221+
virtual void setABIVersion(unsigned Version) {}
222+
220223
// Marked mutable because we cache it inside the disassembler, rather than
221224
// having to pass it around as an argument through all the autogenerated code.
222225
mutable raw_ostream *CommentStream = nullptr;

llvm/include/llvm/Object/ELFObjectFile.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ class ELFObjectFileBase : public ObjectFile {
103103

104104
virtual uint16_t getEMachine() const = 0;
105105

106+
virtual uint8_t getEIdentABIVersion() const = 0;
107+
106108
std::vector<ELFPltEntry> getPltEntries() const;
107109

108110
/// Returns a vector containing a symbol version for each dynamic symbol.
@@ -251,6 +253,7 @@ ELFObjectFileBase::symbols() const {
251253
template <class ELFT> class ELFObjectFile : public ELFObjectFileBase {
252254
uint16_t getEMachine() const override;
253255
uint16_t getEType() const override;
256+
uint8_t getEIdentABIVersion() const override;
254257
uint64_t getSymbolSize(DataRefImpl Sym) const override;
255258

256259
public:
@@ -645,6 +648,10 @@ template <class ELFT> uint16_t ELFObjectFile<ELFT>::getEType() const {
645648
return EF.getHeader().e_type;
646649
}
647650

651+
template <class ELFT> uint8_t ELFObjectFile<ELFT>::getEIdentABIVersion() const {
652+
return EF.getHeader().e_ident[ELF::EI_ABIVERSION];
653+
}
654+
648655
template <class ELFT>
649656
uint64_t ELFObjectFile<ELFT>::getSymbolSize(DataRefImpl Sym) const {
650657
Expected<const Elf_Sym *> SymOrErr = getSymbol(Sym);

llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,17 @@ using DecodeStatus = llvm::MCDisassembler::DecodeStatus;
4747
AMDGPUDisassembler::AMDGPUDisassembler(const MCSubtargetInfo &STI,
4848
MCContext &Ctx, MCInstrInfo const *MCII)
4949
: MCDisassembler(STI, Ctx), MCII(MCII), MRI(*Ctx.getRegisterInfo()),
50-
MAI(*Ctx.getAsmInfo()), TargetMaxInstBytes(MAI.getMaxInstLength(&STI)) {
50+
MAI(*Ctx.getAsmInfo()), TargetMaxInstBytes(MAI.getMaxInstLength(&STI)),
51+
CodeObjectVersion(AMDGPU::getDefaultAMDHSACodeObjectVersion()) {
5152
// ToDo: AMDGPUDisassembler supports only VI ISA.
5253
if (!STI.hasFeature(AMDGPU::FeatureGCN3Encoding) && !isGFX10Plus())
5354
report_fatal_error("Disassembly not yet supported for subtarget");
5455
}
5556

57+
void AMDGPUDisassembler::setABIVersion(unsigned Version) {
58+
CodeObjectVersion = AMDGPU::getAMDHSACodeObjectVersion(Version);
59+
}
60+
5661
inline static MCDisassembler::DecodeStatus
5762
addOperand(MCInst &Inst, const MCOperand& Opnd) {
5863
Inst.addOperand(Opnd);
@@ -2202,8 +2207,7 @@ AMDGPUDisassembler::decodeKernelDescriptorDirective(
22022207
KERNEL_CODE_PROPERTY_ENABLE_WAVEFRONT_SIZE32);
22032208
}
22042209

2205-
// FIXME: We should be looking at the ELF header ABI version for this.
2206-
if (AMDGPU::getDefaultAMDHSACodeObjectVersion() >= AMDGPU::AMDHSA_COV5)
2210+
if (CodeObjectVersion >= AMDGPU::AMDHSA_COV5)
22072211
PRINT_DIRECTIVE(".amdhsa_uses_dynamic_stack",
22082212
KERNEL_CODE_PROPERTY_USES_DYNAMIC_STACK);
22092213

llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,15 @@ class AMDGPUDisassembler : public MCDisassembler {
100100
mutable uint64_t Literal64;
101101
mutable bool HasLiteral;
102102
mutable std::optional<bool> EnableWavefrontSize32;
103+
unsigned CodeObjectVersion;
103104

104105
public:
105106
AMDGPUDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx,
106107
MCInstrInfo const *MCII);
107108
~AMDGPUDisassembler() override = default;
108109

110+
void setABIVersion(unsigned Version) override;
111+
109112
DecodeStatus getInstruction(MCInst &MI, uint64_t &Size,
110113
ArrayRef<uint8_t> Bytes, uint64_t Address,
111114
raw_ostream &CS) const override;

llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,17 @@ unsigned getDefaultAMDHSACodeObjectVersion() {
175175
return DefaultAMDHSACodeObjectVersion;
176176
}
177177

178+
unsigned getAMDHSACodeObjectVersion(unsigned ABIVersion) {
179+
switch (ABIVersion) {
180+
case ELF::ELFABIVERSION_AMDGPU_HSA_V4:
181+
return 4;
182+
case ELF::ELFABIVERSION_AMDGPU_HSA_V5:
183+
return 5;
184+
default:
185+
return getDefaultAMDHSACodeObjectVersion();
186+
}
187+
}
188+
178189
uint8_t getELFABIVersion(const Triple &T, unsigned CodeObjectVersion) {
179190
if (T.getOS() != Triple::AMDHSA)
180191
return 0;

llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,15 @@ bool isHsaAbi(const MCSubtargetInfo &STI);
5050
/// \returns Code object version from the IR module flag.
5151
unsigned getAMDHSACodeObjectVersion(const Module &M);
5252

53+
/// \returns Code object version from ELF's e_ident[EI_ABIVERSION].
54+
unsigned getAMDHSACodeObjectVersion(unsigned ABIVersion);
55+
5356
/// \returns The default HSA code object version. This should only be used when
5457
/// we lack a more accurate CodeObjectVersion value (e.g. from the IR module
5558
/// flag or a .amdhsa_code_object_version directive)
5659
unsigned getDefaultAMDHSACodeObjectVersion();
5760

58-
/// \returns ABIVersion suitable for use in ELF's e_ident[ABIVERSION]. \param
61+
/// \returns ABIVersion suitable for use in ELF's e_ident[EI_ABIVERSION]. \param
5962
/// CodeObjectVersion is a value returned by getAMDHSACodeObjectVersion().
6063
uint8_t getELFABIVersion(const Triple &OS, unsigned CodeObjectVersion);
6164

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
; RUN: sed 's/CODE_OBJECT_VERSION/5/g' %s \
2+
; RUN: | llvm-mc --triple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=-xnack,+wavefrontsize32,-wavefrontsize64 -filetype=obj > %t.o
3+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd %t.o | FileCheck %s --check-prefixes=COV5,CHECK
4+
5+
; RUN: sed 's/CODE_OBJECT_VERSION/4/g' %s \
6+
; RUN: | llvm-mc --triple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=-xnack,+wavefrontsize32,-wavefrontsize64 -filetype=obj > %t.o
7+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd %t.o | FileCheck %s --check-prefixes=COV4,CHECK
8+
9+
;; Verify that .amdhsa_uses_dynamic_stack is only printed on COV5+.
10+
11+
; CHECK: .amdhsa_kernel kernel
12+
; COV5: .amdhsa_uses_dynamic_stack 0
13+
; COV4-NOT: .amdhsa_uses_dynamic_stack
14+
; CHECK: .end_amdhsa_kernel
15+
16+
.amdhsa_code_object_version CODE_OBJECT_VERSION
17+
18+
.amdhsa_kernel kernel
19+
.amdhsa_next_free_vgpr 32
20+
.amdhsa_next_free_sgpr 32
21+
.end_amdhsa_kernel

llvm/test/tools/llvm-objdump/ELF/AMDGPU/kd-gfx10.s

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
;--- 1.s
66
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize32,-wavefrontsize64 -filetype=obj -mcpu=gfx1010 < 1.s > 1.o
7-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee 1-disasm.s | FileCheck 1.s
7+
; RUN: echo '.amdhsa_code_object_version 5' > 1-disasm.s
8+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee -a 1-disasm.s | FileCheck 1.s
89
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize32,-wavefrontsize64 -filetype=obj -mcpu=gfx1010 < 1-disasm.s > 1-disasm.o
910
; RUN: cmp 1.o 1-disasm.o
1011
; CHECK: .amdhsa_kernel kernel
@@ -50,6 +51,7 @@
5051
; CHECK-NEXT: .amdhsa_wavefront_size32 1
5152
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
5253
; CHECK-NEXT: .end_amdhsa_kernel
54+
.amdhsa_code_object_version 5
5355
.amdhsa_kernel kernel
5456
.amdhsa_next_free_vgpr 32
5557
.amdhsa_next_free_sgpr 32
@@ -58,7 +60,8 @@
5860

5961
;--- 2.s
6062
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1010 < 2.s > 2.o
61-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee 2-disasm.s | FileCheck 2.s
63+
; RUN: echo '.amdhsa_code_object_version 5' > 2-disasm.s
64+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee -a 2-disasm.s | FileCheck 2.s
6265
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1010 < 2-disasm.s > 2-disasm.o
6366
; RUN: cmp 2.o 2-disasm.o
6467
; CHECK: .amdhsa_kernel kernel
@@ -104,6 +107,7 @@
104107
; CHECK-NEXT: .amdhsa_wavefront_size32 0
105108
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
106109
; CHECK-NEXT: .end_amdhsa_kernel
110+
.amdhsa_code_object_version 5
107111
.amdhsa_kernel kernel
108112
.amdhsa_next_free_vgpr 32
109113
.amdhsa_next_free_sgpr 32
@@ -112,7 +116,8 @@
112116

113117
;--- 3.s
114118
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1010 < 3.s > 3.o
115-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee 3-disasm.s | FileCheck 3.s
119+
; RUN: echo '.amdhsa_code_object_version 5' > 3-disasm.s
120+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee -a 3-disasm.s | FileCheck 3.s
116121
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1010 < 3-disasm.s > 3-disasm.o
117122
; RUN: cmp 3.o 3-disasm.o
118123
; CHECK: .amdhsa_kernel kernel
@@ -158,6 +163,7 @@
158163
; CHECK-NEXT: .amdhsa_wavefront_size32 0
159164
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
160165
; CHECK-NEXT: .end_amdhsa_kernel
166+
.amdhsa_code_object_version 5
161167
.amdhsa_kernel kernel
162168
.amdhsa_next_free_vgpr 32
163169
.amdhsa_next_free_sgpr 32
@@ -166,7 +172,8 @@
166172

167173
;--- 4.s
168174
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1010 < 4.s > 4.o
169-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 4.o | tail -n +7 | tee 4-disasm.s | FileCheck 4.s
175+
; RUN: echo '.amdhsa_code_object_version 5' > 4-disasm.s
176+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 4.o | tail -n +7 | tee -a 4-disasm.s | FileCheck 4.s
170177
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack,+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1010 < 4-disasm.s > 4-disasm.o
171178
; RUN: cmp 4.o 4-disasm.o
172179
; CHECK: .amdhsa_kernel kernel
@@ -212,6 +219,7 @@
212219
; CHECK-NEXT: .amdhsa_wavefront_size32 0
213220
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
214221
; CHECK-NEXT: .end_amdhsa_kernel
222+
.amdhsa_code_object_version 5
215223
.amdhsa_kernel kernel
216224
.amdhsa_next_free_vgpr 32
217225
.amdhsa_next_free_sgpr 32

llvm/test/tools/llvm-objdump/ELF/AMDGPU/kd-gfx11.s

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
;--- 1.s
66
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize32,-wavefrontsize64 -filetype=obj -mcpu=gfx1100 < 1.s > 1.o
7-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee 1-disasm.s | FileCheck 1.s
7+
; RUN: echo '.amdhsa_code_object_version 5' > 1-disasm.s
8+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee -a 1-disasm.s | FileCheck 1.s
89
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize32,-wavefrontsize64 -filetype=obj -mcpu=gfx1100 < 1-disasm.s > 1-disasm.o
910
; RUN: cmp 1.o 1-disasm.o
1011
; CHECK: .amdhsa_kernel kernel
@@ -51,6 +52,7 @@
5152
; CHECK-NEXT: .amdhsa_wavefront_size32 1
5253
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
5354
; CHECK-NEXT: .end_amdhsa_kernel
55+
.amdhsa_code_object_version 5
5456
.amdhsa_kernel kernel
5557
.amdhsa_next_free_vgpr 32
5658
.amdhsa_next_free_sgpr 32
@@ -59,7 +61,8 @@
5961

6062
;--- 2.s
6163
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1100 < 2.s > 2.o
62-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee 2-disasm.s | FileCheck 2.s
64+
; RUN: echo '.amdhsa_code_object_version 5' > 2-disasm.s
65+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee -a 2-disasm.s | FileCheck 2.s
6366
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1100 < 2-disasm.s > 2-disasm.o
6467
; RUN: cmp 2.o 2-disasm.o
6568
; CHECK: .amdhsa_kernel kernel
@@ -106,6 +109,7 @@
106109
; CHECK-NEXT: .amdhsa_wavefront_size32 0
107110
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
108111
; CHECK-NEXT: .end_amdhsa_kernel
112+
.amdhsa_code_object_version 5
109113
.amdhsa_kernel kernel
110114
.amdhsa_next_free_vgpr 32
111115
.amdhsa_next_free_sgpr 32
@@ -114,7 +118,8 @@
114118

115119
;--- 3.s
116120
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1100 < 3.s > 3.o
117-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee 3-disasm.s | FileCheck 3.s
121+
; RUN: echo '.amdhsa_code_object_version 5' > 3-disasm.s
122+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee -a 3-disasm.s | FileCheck 3.s
118123
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1100 < 3-disasm.s > 3-disasm.o
119124
; RUN: cmp 3.o 3-disasm.o
120125
; CHECK: .amdhsa_kernel kernel
@@ -161,6 +166,7 @@
161166
; CHECK-NEXT: .amdhsa_wavefront_size32 0
162167
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
163168
; CHECK-NEXT: .end_amdhsa_kernel
169+
.amdhsa_code_object_version 5
164170
.amdhsa_kernel kernel
165171
.amdhsa_next_free_vgpr 32
166172
.amdhsa_next_free_sgpr 32
@@ -169,7 +175,8 @@
169175

170176
;--- 4.s
171177
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1100 < 4.s > 4.o
172-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 4.o | tail -n +7 | tee 4-disasm.s | FileCheck 4.s
178+
; RUN: echo '.amdhsa_code_object_version 5' > 4-disasm.s
179+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 4.o | tail -n +7 | tee -a 4-disasm.s | FileCheck 4.s
173180
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize64,-wavefrontsize32 -filetype=obj -mcpu=gfx1100 < 4-disasm.s > 4-disasm.o
174181
; RUN: cmp 4.o 4-disasm.o
175182
; CHECK: .amdhsa_kernel kernel
@@ -216,6 +223,7 @@
216223
; CHECK-NEXT: .amdhsa_wavefront_size32 0
217224
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
218225
; CHECK-NEXT: .end_amdhsa_kernel
226+
.amdhsa_code_object_version 5
219227
.amdhsa_kernel kernel
220228
.amdhsa_next_free_vgpr 32
221229
.amdhsa_next_free_sgpr 32

llvm/test/tools/llvm-objdump/ELF/AMDGPU/kd-gfx12.s

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
;--- 1.s
66
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize32,-wavefrontsize64 -filetype=obj -mcpu=gfx1200 < 1.s > 1.o
7-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee 1-disasm.s | FileCheck 1.s
7+
; RUN: echo '.amdhsa_code_object_version 5' > 1-disasm.s
8+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee -a 1-disasm.s | FileCheck 1.s
89
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=+wavefrontsize32,-wavefrontsize64 -filetype=obj -mcpu=gfx1200 < 1-disasm.s > 1-disasm.o
910
; RUN: cmp 1.o 1-disasm.o
1011
; CHECK: .amdhsa_kernel kernel
@@ -48,6 +49,7 @@
4849
; CHECK-NEXT: .amdhsa_wavefront_size32 1
4950
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
5051
; CHECK-NEXT: .end_amdhsa_kernel
52+
.amdhsa_code_object_version 5
5153
.amdhsa_kernel kernel
5254
.amdhsa_next_free_vgpr 32
5355
.amdhsa_next_free_sgpr 32
@@ -56,7 +58,8 @@
5658

5759
;--- 2.s
5860
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-wavefrontsize32,+wavefrontsize64 -filetype=obj -mcpu=gfx1200 < 2.s > 2.o
59-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee 2-disasm.s | FileCheck 2.s
61+
; RUN: echo '.amdhsa_code_object_version 5' > 2-disasm.s
62+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee -a 2-disasm.s | FileCheck 2.s
6063
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-wavefrontsize32,+wavefrontsize64 -filetype=obj -mcpu=gfx1200 < 2-disasm.s > 2-disasm.o
6164
; RUN: cmp 2.o 2-disasm.o
6265
; CHECK: .amdhsa_kernel kernel
@@ -100,6 +103,7 @@
100103
; CHECK-NEXT: .amdhsa_wavefront_size32 0
101104
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
102105
; CHECK-NEXT: .end_amdhsa_kernel
106+
.amdhsa_code_object_version 5
103107
.amdhsa_kernel kernel
104108
.amdhsa_next_free_vgpr 32
105109
.amdhsa_next_free_sgpr 32

llvm/test/tools/llvm-objdump/ELF/AMDGPU/kd-gfx90a.s

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
;--- 1.s
66
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx90a < 1.s > 1.o
7-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee 1-disasm.s | FileCheck 1.s
7+
; RUN: echo '.amdhsa_code_object_version 5' > 1-disasm.s
8+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee -a 1-disasm.s | FileCheck 1.s
89
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx90a < 1-disasm.s > 1-disasm.o
910
; RUN: cmp 1.o 1-disasm.o
1011
; CHECK: .amdhsa_kernel kernel
@@ -47,6 +48,7 @@
4748
; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_size 0
4849
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
4950
; CHECK-NEXT: .end_amdhsa_kernel
51+
.amdhsa_code_object_version 5
5052
.amdhsa_kernel kernel
5153
.amdhsa_next_free_vgpr 0
5254
.amdhsa_next_free_sgpr 0
@@ -55,7 +57,8 @@
5557

5658
;--- 2.s
5759
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx90a < 2.s > 2.o
58-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee 2-disasm.s | FileCheck 2.s
60+
; RUN: echo '.amdhsa_code_object_version 5' > 2-disasm.s
61+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee -a 2-disasm.s | FileCheck 2.s
5962
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx90a < 2-disasm.s > 2-disasm.o
6063
; RUN: cmp 2.o 2-disasm.o
6164
; CHECK: .amdhsa_kernel kernel
@@ -98,6 +101,7 @@
98101
; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_size 0
99102
; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0
100103
; CHECK-NEXT: .end_amdhsa_kernel
104+
.amdhsa_code_object_version 5
101105
.amdhsa_kernel kernel
102106
.amdhsa_next_free_vgpr 32
103107
.amdhsa_next_free_sgpr 0
@@ -106,7 +110,8 @@
106110

107111
;--- 3.s
108112
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx90a < 3.s > 3.o
109-
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee 3-disasm.s | FileCheck 3.s
113+
; RUN: echo '.amdhsa_code_object_version 5' > 3-disasm.s
114+
; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee -a 3-disasm.s | FileCheck 3.s
110115
; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx90a < 3-disasm.s > 3-disasm.o
111116
; RUN: cmp 3.o 3-disasm.o
112117
; CHECK: .amdhsa_kernel kernel
@@ -151,6 +156,7 @@
151156
; CHECK-NEXT: .amdhsa_user_sgpr_kernarg_preload_length 2
152157
; CHECK-NEXT: .amdhsa_user_sgpr_kernarg_preload_offset 1
153158
; CHECK-NEXT: .end_amdhsa_kernel
159+
.amdhsa_code_object_version 5
154160
.amdhsa_kernel kernel
155161
.amdhsa_next_free_vgpr 32
156162
.amdhsa_next_free_sgpr 0

0 commit comments

Comments
 (0)