Skip to content

Conversation

@sjoerdmeijer
Copy link
Collaborator

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-tools-llvm-exegesis

Author: Sjoerd Meijer (sjoerdmeijer)

Changes

I see some build bot failures:

Reverts llvm/llvm-project#154751 while I investigate this.


Full diff: https://github.com/llvm/llvm-project/pull/155423.diff

2 Files Affected:

  • (removed) llvm/test/tools/llvm-exegesis/AArch64/loop-register.s (-17)
  • (modified) llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp (-30)
diff --git a/llvm/test/tools/llvm-exegesis/AArch64/loop-register.s b/llvm/test/tools/llvm-exegesis/AArch64/loop-register.s
deleted file mode 100644
index e1ffe462b50c1..0000000000000
--- a/llvm/test/tools/llvm-exegesis/AArch64/loop-register.s
+++ /dev/null
@@ -1,17 +0,0 @@
-REQUIRES: aarch64-registered-target, asserts
-
-RUN: llvm-exegesis -mcpu=neoverse-v2 --use-dummy-perf-counters --mode=latency --debug-only=print-gen-assembly --opcode-name=ADDVv4i16v -repetition-mode=loop 2>&1 | FileCheck %s
-
-CHECK:        0:  {{.*}}  str     x19, [sp, #-16]!
-CHECK-NEXT:   4:  {{.*}}  movi    d[[REG:[0-9]+]], #0000000000000000
-CHECK-NEXT:   8:  {{.*}}  mov     x19, #10000
-CHECK-NEXT:   c:  {{.*}}  nop
-CHECK-NEXT:   10: {{.*}}  nop
-CHECK-NEXT:   14: {{.*}}  nop
-CHECK-NEXT:   18: {{.*}}  nop
-CHECK-NEXT:   1c: {{.*}}  nop
-CHECK-NEXT:   20: {{.*}}  addv    h[[REG]], v[[REG]].4h
-CHECK-NEXT:   24: {{.*}}  subs    x19, x19, #1
-CHECK-NEXT:   28: {{.*}}  b.ne    #-8
-CHECK-NEXT:   2c: {{.*}}  ldr     x19, [sp], #16
-CHECK-NEXT:   30: {{.*}}  ret
diff --git a/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp b/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
index c4ad9ae201d4e..3a0021e3c132d 100644
--- a/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
+++ b/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
@@ -8,7 +8,6 @@
 #include "../Target.h"
 #include "AArch64.h"
 #include "AArch64RegisterInfo.h"
-#include "llvm/CodeGen/MachineInstrBuilder.h"
 
 #if defined(__aarch64__) && defined(__linux__)
 #include <sys/prctl.h> // For PR_PAC_* constants
@@ -110,10 +109,6 @@ static MCInst loadFPImmediate(MCRegister Reg, unsigned RegBitWidth,
 
 namespace {
 
-// Use X19 as the loop counter register since it's a callee-saved register
-// that's available for temporary use.
-constexpr const MCPhysReg kDefaultLoopCounterReg = AArch64::X19;
-
 class ExegesisAArch64Target : public ExegesisTarget {
 public:
   ExegesisAArch64Target()
@@ -146,31 +141,6 @@ class ExegesisAArch64Target : public ExegesisTarget {
     errs() << "setRegTo is not implemented, results will be unreliable\n";
     return {};
   }
-  MCRegister getDefaultLoopCounterRegister(const Triple &) const override {
-    return kDefaultLoopCounterReg;
-  }
-
-  void decrementLoopCounterAndJump(MachineBasicBlock &MBB,
-                                   MachineBasicBlock &TargetMBB,
-                                   const MCInstrInfo &MII,
-                                   MCRegister LoopRegister) const override {
-    // subs LoopRegister, LoopRegister, #1
-    BuildMI(&MBB, DebugLoc(), MII.get(AArch64::SUBSXri))
-        .addDef(LoopRegister)
-        .addUse(LoopRegister)
-        .addImm(1)  // Subtract 1
-        .addImm(0); // No shift amount
-    // b.ne TargetMBB
-    BuildMI(&MBB, DebugLoc(), MII.get(AArch64::Bcc))
-        .addImm(AArch64CC::NE)
-        .addMBB(&TargetMBB);
-  }
-
-  // Registers that should not be selected for use in snippets.
-  const MCPhysReg UnavailableRegisters[1] = {kDefaultLoopCounterReg};
-  ArrayRef<MCPhysReg> getUnavailableRegisters() const override {
-    return UnavailableRegisters;
-  }
 
   bool matchesArch(Triple::ArchType Arch) const override {
     return Arch == Triple::aarch64 || Arch == Triple::aarch64_be;

@sjoerdmeijer sjoerdmeijer merged commit 9e8761f into main Aug 26, 2025
9 of 11 checks passed
@sjoerdmeijer sjoerdmeijer deleted the revert-154751-exegesis-loop-mode branch August 26, 2025 14:30
sjoerdmeijer added a commit to sjoerdmeijer/llvm-project that referenced this pull request Aug 27, 2025
…64" (llvm#155423)

This includes two minor fixes:
- "Codegen" has been added to the LLVM_LINK_COMPONENTS for AArch64 to
  prevent a link error,
- the test case has been made less strict or fragile by not checking the
  addresses.
sjoerdmeijer added a commit that referenced this pull request Aug 27, 2025
…64" (#155423) (#155589)

This includes two minor fixes:
- "Codegen" has been added to the LLVM_LINK_COMPONENTS for AArch64 to
prevent a link error,
- the test case has been made less strict or fragile by not checking the
addresses.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants