From 3f489d3d5c0178fede5ad5c72d66cace624f7997 Mon Sep 17 00:00:00 2001 From: Alexander Shaposhnikov Date: Mon, 7 Jul 2025 01:21:24 +0000 Subject: [PATCH] [AsmParser][MCA] Fix handling of multicharacter comments --- llvm/lib/MC/MCParser/AsmLexer.cpp | 4 ++- .../preserve-comments-aarch64-linux.s | 11 ++++++ .../AArch64/Neoverse/llvm-mca-markers.s | 36 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s create mode 100644 llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s diff --git a/llvm/lib/MC/MCParser/AsmLexer.cpp b/llvm/lib/MC/MCParser/AsmLexer.cpp index 3db9ed3199dd8..968ccf776440b 100644 --- a/llvm/lib/MC/MCParser/AsmLexer.cpp +++ b/llvm/lib/MC/MCParser/AsmLexer.cpp @@ -834,8 +834,10 @@ AsmToken AsmLexer::LexToken() { return LexLineComment(); } - if (isAtStartOfComment(TokStart)) + if (isAtStartOfComment(TokStart)) { + CurPtr += MAI.getCommentString().size() - 1; return LexLineComment(); + } if (isAtStatementSeparator(TokStart)) { CurPtr += strlen(MAI.getSeparatorString()) - 1; diff --git a/llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s b/llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s new file mode 100644 index 0000000000000..4a83cd955e3c7 --- /dev/null +++ b/llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s @@ -0,0 +1,11 @@ + // REQUIRES: aarch64-registered-target + // llvm-mc prints leading tabs, formatting of this test follows preserve-comments.s + // RUN: llvm-mc -preserve-comments -n -triple aarch64-unknown-linux-gnu %s -o %t + // RUN: diff -b %s %t + + .text + +foo: + // comment here + nop + // comment here too diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s new file mode 100644 index 0000000000000..d5a291b1d7102 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s @@ -0,0 +1,36 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +// RUN: llvm-mca -mtriple=aarch64-unknown-linux-gnu -mcpu=neoverse-v2 -iterations=1 -resource-pressure=false < %s | FileCheck %s + +.text +// LLVM-MCA-BEGIN Empty +// Empty sequence +// LLVM-MCA-END + + mul x1, x1, x1 +// LLVM-MCA-BEGIN NotEmpty + add x0, x0, x1 +// LLVM-MCA-END + mul x2, x2, x2 + +# CHECK: [0] Code Region - NotEmpty + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 1 +# CHECK-NEXT: Total Cycles: 4 +# CHECK-NEXT: Total uOps: 1 + +# CHECK: Dispatch Width: 6 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 0.2 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 1 0.17 add x0, x0, x1