[llvm] r315812 - AMDGPU: Improve note directive verification in assembler
Konstantin Zhuravlyov via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 14 09:15:28 PDT 2017
Author: kzhuravl
Date: Sat Oct 14 09:15:28 2017
New Revision: 315812
URL: http://llvm.org/viewvc/llvm-project?rev=315812&view=rev
Log:
AMDGPU: Improve note directive verification in assembler
- Do not allow amd_amdgpu_isa directives on non-amdgcn architectures
- Do not allow amd_amdgpu_hsa_metadata on non-amdhsa OSes
- Do not allow amd_amdgpu_pal_metadata on non-amdpal OSes
Differential Revision: https://reviews.llvm.org/D38750
Added:
llvm/trunk/test/MC/AMDGPU/elf-notes-verify-amdgcn.s
llvm/trunk/test/MC/AMDGPU/elf-notes-verify-r600.s
Modified:
llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
Modified: llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp?rev=315812&r1=315811&r2=315812&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp Sat Oct 14 09:15:28 2017
@@ -2454,6 +2454,12 @@ bool AMDGPUAsmParser::ParseDirectiveAMDG
}
bool AMDGPUAsmParser::ParseDirectiveISAVersion() {
+ if (getSTI().getTargetTriple().getArch() != Triple::amdgcn) {
+ return Error(getParser().getTok().getLoc(),
+ ".amd_amdgpu_isa directive is not available on non-amdgcn "
+ "architectures");
+ }
+
auto ISAVersionStringFromASM = getLexer().getTok().getStringContents();
std::string ISAVersionStringFromSTI;
@@ -2473,6 +2479,12 @@ bool AMDGPUAsmParser::ParseDirectiveISAV
}
bool AMDGPUAsmParser::ParseDirectiveHSAMetadata() {
+ if (getSTI().getTargetTriple().getOS() != Triple::AMDHSA) {
+ return Error(getParser().getTok().getLoc(),
+ (Twine(HSAMD::AssemblerDirectiveBegin) + Twine(" directive is "
+ "not available on non-amdhsa OSes")).str());
+ }
+
std::string HSAMetadataString;
raw_string_ostream YamlStream(HSAMetadataString);
@@ -2504,7 +2516,7 @@ bool AMDGPUAsmParser::ParseDirectiveHSAM
if (getLexer().is(AsmToken::Eof) && !FoundEnd) {
return TokError(Twine("expected directive ") +
- Twine(HSAMD::AssemblerDirectiveEnd) + Twine("not found"));
+ Twine(HSAMD::AssemblerDirectiveEnd) + Twine(" not found"));
}
YamlStream.flush();
@@ -2516,6 +2528,12 @@ bool AMDGPUAsmParser::ParseDirectiveHSAM
}
bool AMDGPUAsmParser::ParseDirectivePALMetadata() {
+ if (getSTI().getTargetTriple().getOS() != Triple::AMDPAL) {
+ return Error(getParser().getTok().getLoc(),
+ (Twine(PALMD::AssemblerDirective) + Twine(" directive is "
+ "not available on non-amdpal OSes")).str());
+ }
+
PALMD::Metadata PALMetadata;
for (;;) {
uint32_t Value;
Added: llvm/trunk/test/MC/AMDGPU/elf-notes-verify-amdgcn.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AMDGPU/elf-notes-verify-amdgcn.s?rev=315812&view=auto
==============================================================================
--- llvm/trunk/test/MC/AMDGPU/elf-notes-verify-amdgcn.s (added)
+++ llvm/trunk/test/MC/AMDGPU/elf-notes-verify-amdgcn.s Sat Oct 14 09:15:28 2017
@@ -0,0 +1,7 @@
+// RUN: not llvm-mc -arch amdgcn %s 2>&1 | FileCheck --check-prefix=GCN %s
+
+// GCN: error: .amd_amdgpu_hsa_metadata directive is not available on non-amdhsa OSes
+.amd_amdgpu_hsa_metadata
+
+// GCN: error: .amd_amdgpu_pal_metadata directive is not available on non-amdpal OSes
+.amd_amdgpu_pal_metadata
Added: llvm/trunk/test/MC/AMDGPU/elf-notes-verify-r600.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AMDGPU/elf-notes-verify-r600.s?rev=315812&view=auto
==============================================================================
--- llvm/trunk/test/MC/AMDGPU/elf-notes-verify-r600.s (added)
+++ llvm/trunk/test/MC/AMDGPU/elf-notes-verify-r600.s Sat Oct 14 09:15:28 2017
@@ -0,0 +1,10 @@
+// RUN: not llvm-mc -arch r600 %s 2>&1 | FileCheck --check-prefix=R600 %s
+
+// R600: error: .amd_amdgpu_isa directive is not available on non-amdgcn architectures
+.amd_amdgpu_isa "r600"
+
+// R600: error: .amd_amdgpu_hsa_metadata directive is not available on non-amdhsa OSes
+.amd_amdgpu_hsa_metadata
+
+// R600: error: .amd_amdgpu_pal_metadata directive is not available on non-amdpal OSes
+.amd_amdgpu_pal_metadata
More information about the llvm-commits
mailing list