[llvm] 7849862 - [AArch64] Output the pseudo SPACE in asm and object files
Momchil Velikov via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 1 08:02:01 PDT 2019
Author: Momchil Velikov
Date: 2019-11-01T15:01:53Z
New Revision: 7849862f46933306454342b0e8ee05e4e6806646
URL: https://github.com/llvm/llvm-project/commit/7849862f46933306454342b0e8ee05e4e6806646
DIFF: https://github.com/llvm/llvm-project/commit/7849862f46933306454342b0e8ee05e4e6806646.diff
LOG: [AArch64] Output the pseudo SPACE in asm and object files
Summary: It outputs nothing, but is useful for writing tests, checking asm output.
Reviewers: t.p.northover, ostannard, tellenbach
Reviewed By: tellenbach
Subscribers: tellenbach, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69185
Change-Id: I6b58310e9e5632f0976d2000ce975ee28df90ebe
Added:
llvm/test/CodeGen/AArch64/space.ll
Modified:
llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
index 1a16468484ad..00d80319a830 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
@@ -282,6 +282,12 @@ void AArch64InstPrinter::printInst(const MCInst *MI, raw_ostream &O,
return;
}
+ if (Opcode == AArch64::SPACE) {
+ O << '\t' << MAI.getCommentString() << " SPACE";
+ printAnnotation(O, Annot);
+ return;
+ }
+
// Instruction TSB is specified as a one operand instruction, but 'csync' is
// not encoded, so for printing it is treated as a special case here:
if (Opcode == AArch64::TSB) {
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
index 8cb7a1672983..8f4d9cb94d60 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
@@ -601,8 +601,12 @@ void AArch64MCCodeEmitter::encodeInstruction(const MCInst &MI, raw_ostream &OS,
MCFixupKind Fixup = MCFixupKind(AArch64::fixup_aarch64_tlsdesc_call);
Fixups.push_back(MCFixup::create(0, MI.getOperand(0).getExpr(), Fixup));
return;
- } else if (MI.getOpcode() == AArch64::CompilerBarrier) {
- // This just prevents the compiler from reordering accesses, no actual code.
+ }
+
+ if (MI.getOpcode() == AArch64::CompilerBarrier ||
+ MI.getOpcode() == AArch64::SPACE) {
+ // CompilerBarrier just prevents the compiler from reordering accesses, and
+ // SPACE just increases basic block size, in both cases no actual code.
return;
}
diff --git a/llvm/test/CodeGen/AArch64/space.ll b/llvm/test/CodeGen/AArch64/space.ll
new file mode 100644
index 000000000000..746d0377200d
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/space.ll
@@ -0,0 +1,16 @@
+; RUN: llc -mtriple aarch64 %s -o - | FileCheck %s
+; RUN: llc -mtriple aarch64 -filetype=obj %s -o - | llvm-objdump --arch=aarch64 -d - | FileCheck %s --check-prefix=DUMP
+
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+
+define dso_local void @f(i64 %v) {
+entry:
+ %dummy = tail call i64 @llvm.aarch64.space(i32 32684, i64 %v)
+ ret void
+}
+; CHECK: // SPACE
+; CHECK-NEXT: ret
+; DUMP-LABEL: f:
+; DUMP-NEXT: ret
+
+declare dso_local i64 @llvm.aarch64.space(i32, i64) local_unnamed_addr #0
More information about the llvm-commits
mailing list