Skip to content

Conversation

@sjoerdmeijer
Copy link
Collaborator

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.
…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.
@llvmbot
Copy link
Member

llvmbot commented Aug 27, 2025

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

Author: Sjoerd Meijer (sjoerdmeijer)

Changes

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.

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

3 Files Affected:

  • (added) llvm/test/tools/llvm-exegesis/AArch64/loop-register.s (+17)
  • (modified) llvm/tools/llvm-exegesis/lib/AArch64/CMakeLists.txt (+1)
  • (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 new file mode 100644 index 0000000000000..62040b26c8faf --- /dev/null +++ b/llvm/test/tools/llvm-exegesis/AArch64/loop-register.s @@ -0,0 +1,17 @@ +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: str x19, [sp, #-16]! +CHECK-NEXT: movi d[[REG:[0-9]+]], #0000000000000000 +CHECK-NEXT: mov x19, #10000 +CHECK-NEXT: nop +CHECK-NEXT: nop +CHECK-NEXT: nop +CHECK-NEXT: nop +CHECK-NEXT: nop +CHECK-NEXT: addv h[[REG]], v[[REG]].4h +CHECK-NEXT: subs x19, x19, #1 +CHECK-NEXT: b.ne #-8 +CHECK-NEXT: ldr x19, [sp], #16 +CHECK-NEXT: ret diff --git a/llvm/tools/llvm-exegesis/lib/AArch64/CMakeLists.txt b/llvm/tools/llvm-exegesis/lib/AArch64/CMakeLists.txt index 42f8fd30ac2bb..091215c18632d 100644 --- a/llvm/tools/llvm-exegesis/lib/AArch64/CMakeLists.txt +++ b/llvm/tools/llvm-exegesis/lib/AArch64/CMakeLists.txt @@ -5,6 +5,7 @@ include_directories( set(LLVM_LINK_COMPONENTS AArch64 + CodeGen CodeGenTypes Core Exegesis diff --git a/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp b/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp index 3a0021e3c132d..c4ad9ae201d4e 100644 --- a/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp +++ b/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp @@ -8,6 +8,7 @@ #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 @@ -109,6 +110,10 @@ 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() @@ -141,6 +146,31 @@ 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 810ac29 into llvm:main Aug 27, 2025
11 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 27, 2025

LLVM Buildbot has detected a new failure on builder lldb-aarch64-ubuntu running on linaro-lldb-aarch64-ubuntu while building llvm at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/59/builds/23307

Here is the relevant piece of the build log for the reference
Step 6 (test) failure: build (failure) ... PASS: lldb-unit :: ValueObject/./LLDBValueObjectTests/7/12 (2301 of 2310) PASS: lldb-unit :: ValueObject/./LLDBValueObjectTests/9/12 (2302 of 2310) PASS: lldb-unit :: tools/lldb-server/tests/./LLDBServerTests/0/2 (2303 of 2310) PASS: lldb-unit :: tools/lldb-server/tests/./LLDBServerTests/1/2 (2304 of 2310) PASS: lldb-unit :: Utility/./UtilityTests/7/8 (2305 of 2310) PASS: lldb-unit :: Host/./HostTests/5/9 (2306 of 2310) PASS: lldb-unit :: Target/./TargetTests/11/14 (2307 of 2310) PASS: lldb-unit :: Host/./HostTests/8/9 (2308 of 2310) PASS: lldb-unit :: Process/gdb-remote/./ProcessGdbRemoteTests/8/9 (2309 of 2310) TIMEOUT: lldb-api :: tools/lldb-dap/module/TestDAP_module.py (2310 of 2310) ******************** TEST 'lldb-api :: tools/lldb-dap/module/TestDAP_module.py' FAILED ******************** Script: -- /usr/bin/python3.10 /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS --env LLVM_LIBS_DIR=/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./lib --env LLVM_INCLUDE_DIR=/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/include --env LLVM_TOOLS_DIR=/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin --arch aarch64 --build-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex --lldb-module-cache-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api --clang-module-cache-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-clang/lldb-api --executable /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin/lldb --compiler /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin/clang --dsymutil /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin/dsymutil --make /usr/bin/gmake --llvm-tools-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin --lldb-obj-root /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/tools/lldb --lldb-libs-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./lib --cmake-build-type Release /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/llvm-project/lldb/test/API/tools/lldb-dap/module -p TestDAP_module.py -- Exit Code: -9 Timeout: Reached timeout of 600 seconds Command Output (stdout): -- lldb version 22.0.0git (https://github.com/llvm/llvm-project.git revision 810ac29cfe81cbd8f2e97d06f0acd540f841c754) clang revision 810ac29cfe81cbd8f2e97d06f0acd540f841c754 llvm revision 810ac29cfe81cbd8f2e97d06f0acd540f841c754 -- Command Output (stderr): -- ========= DEBUG ADAPTER PROTOCOL LOGS ========= 1756295833.327889681 (stdio) --> {"command":"initialize","type":"request","arguments":{"adapterID":"lldb-native","clientID":"vscode","columnsStartAt1":true,"linesStartAt1":true,"locale":"en-us","pathFormat":"path","supportsRunInTerminalRequest":true,"supportsVariablePaging":true,"supportsVariableType":true,"supportsStartDebuggingRequest":true,"supportsProgressReporting":true,"$__lldb_sourceInitFile":false},"seq":1} 1756295833.327975988 (stdio) queued (command=initialize seq=1) 1756295833.329730988 (stdio) <-- {"body":{"$__lldb_version":"lldb version 22.0.0git (https://github.com/llvm/llvm-project.git revision 810ac29cfe81cbd8f2e97d06f0acd540f841c754)\n clang revision 810ac29cfe81cbd8f2e97d06f0acd540f841c754\n llvm revision 810ac29cfe81cbd8f2e97d06f0acd540f841c754","completionTriggerCharacters":["."," ","\t"],"exceptionBreakpointFilters":[{"description":"C++ Catch","filter":"cpp_catch","label":"C++ Catch","supportsCondition":true},{"description":"C++ Throw","filter":"cpp_throw","label":"C++ Throw","supportsCondition":true},{"description":"Objective-C Catch","filter":"objc_catch","label":"Objective-C Catch","supportsCondition":true},{"description":"Objective-C Throw","filter":"objc_throw","label":"Objective-C Throw","supportsCondition":true}],"supportTerminateDebuggee":true,"supportsBreakpointLocationsRequest":true,"supportsCancelRequest":true,"supportsCompletionsRequest":true,"supportsConditionalBreakpoints":true,"supportsConfigurationDoneRequest":true,"supportsDataBreakpoints":true,"supportsDelayedStackTraceLoading":true,"supportsDisassembleRequest":true,"supportsEvaluateForHovers":true,"supportsExceptionFilterOptions":true,"supportsExceptionInfoRequest":true,"supportsFunctionBreakpoints":true,"supportsHitConditionalBreakpoints":true,"supportsInstructionBreakpoints":true,"supportsLogPoints":true,"supportsModuleSymbolsRequest":true,"supportsModulesRequest":true,"supportsReadMemoryRequest":true,"supportsSetVariable":true,"supportsSteppingGranularity":true,"supportsValueFormattingOptions":true,"supportsWriteMemoryRequest":true},"command":"initialize","request_seq":1,"seq":0,"success":true,"type":"response"} 1756295833.329990149 (stdio) --> {"command":"launch","type":"request","arguments":{"program":"/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/tools/lldb-dap/module/TestDAP_module.test_compile_units/a.out","initCommands":["settings clear --all","settings set symbols.enable-external-lookup false","settings set target.inherit-tcc true","settings set target.disable-aslr false","settings set target.detach-on-error false","settings set target.auto-apply-fixits false","settings set plugin.process.gdb-remote.packet-timeout 60","settings set symbols.clang-modules-cache-path \"/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api\"","settings set use-color false","settings set show-statusline false"],"disableASLR":false,"enableAutoVariableSummaries":false,"enableSyntheticChildDebugging":false,"displayExtendedBacktrace":false},"seq":2} 1756295833.330017805 (stdio) queued (command=launch seq=2) 1756295833.330232620 (stdio) <-- {"body":{"category":"console","output":"Running initCommands:\n"},"event":"output","seq":0,"type":"event"} 1756295833.330259562 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings clear --all\n"},"event":"output","seq":0,"type":"event"} 1756295833.330270290 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set symbols.enable-external-lookup false\n"},"event":"output","seq":0,"type":"event"} 1756295833.330279589 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set target.inherit-tcc true\n"},"event":"output","seq":0,"type":"event"} 1756295833.330288649 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set target.disable-aslr false\n"},"event":"output","seq":0,"type":"event"} 1756295833.330297232 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set target.detach-on-error false\n"},"event":"output","seq":0,"type":"event"} 1756295833.330307007 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set target.auto-apply-fixits false\n"},"event":"output","seq":0,"type":"event"} 1756295833.330330610 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set plugin.process.gdb-remote.packet-timeout 60\n"},"event":"output","seq":0,"type":"event"} 1756295833.330340624 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set symbols.clang-modules-cache-path \"/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api\"\n"},"event":"output","seq":0,"type":"event"} 1756295833.330349922 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set use-color false\n"},"event":"output","seq":0,"type":"event"} 1756295833.330358028 (stdio) <-- {"body":{"category":"console","output":"(lldb) settings set show-statusline false\n"},"event":"output","seq":0,"type":"event"} 1756295833.404263496 (stdio) <-- {"command":"launch","request_seq":2,"seq":0,"success":true,"type":"response"} 1756295833.404288054 (stdio) <-- {"body":{"module":{"addressRange":"0xe8dfcc2c3000","id":"494A2EC6-22D7-BF35-9C22-4715AA857100-18DF74F9","name":"ld-linux-aarch64.so.1","path":"/usr/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1","symbolStatus":"Symbols not found."},"reason":"new"},"event":"module","seq":0,"type":"event"} 1756295833.404299974 (stdio) <-- {"event":"initialized","seq":0,"type":"event"} 1756295833.404323101 (stdio) <-- {"body":{"module":{"addressRange":"0xe8dfcc2fc000","id":"8A3679C5-D525-886B-4474-DEA6F3905AAC-6CA1D01D","name":"[vdso]","path":"[vdso]","symbolStatus":"Symbols not found."},"reason":"new"},"event":"module","seq":0,"type":"event"} 1756295833.404411316 (stdio) <-- {"body":{"module":{"addressRange":"0xba2d59e50000","debugInfoSize":"1009B","id":"B3E48844","name":"a.out","path":"/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/tools/lldb-dap/module/TestDAP_module.test_compile_units/a.out","symbolFilePath":"/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/tools/lldb-dap/module/TestDAP_module.test_compile_units/a.out","symbolStatus":"Symbols loaded."},"reason":"new"},"event":"module","seq":0,"type":"event"} 
@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 27, 2025

LLVM Buildbot has detected a new failure on builder clang-aarch64-quick running on linaro-clang-aarch64-quick while building llvm at step 5 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/65/builds/21839

Here is the relevant piece of the build log for the reference
Step 5 (ninja check 1) failure: stage 1 checked (failure) ******************** TEST 'lit :: timeout-hang.py' FAILED ******************** Exit Code: 1 Command Output (stdout): -- # RUN: at line 18 not env -u FILECHECK_OPTS "/usr/bin/python3.10" /home/tcwg-buildbot/worker/clang-aarch64-quick/llvm/llvm/utils/lit/lit.py -j1 --order=lexical Inputs/timeout-hang/run-nonexistent.txt --timeout=15 --param external=0 | "/usr/bin/python3.10" /home/tcwg-buildbot/worker/clang-aarch64-quick/stage1/utils/lit/tests/timeout-hang.py 5 # executed command: not env -u FILECHECK_OPTS /usr/bin/python3.10 /home/tcwg-buildbot/worker/clang-aarch64-quick/llvm/llvm/utils/lit/lit.py -j1 --order=lexical Inputs/timeout-hang/run-nonexistent.txt --timeout=15 --param external=0 # .---command stderr------------ # | lit.py: /home/tcwg-buildbot/worker/clang-aarch64-quick/llvm/llvm/utils/lit/lit/main.py:74: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 15 seconds was requested on the command line. Forcing timeout to be 15 seconds. # `----------------------------- # executed command: /usr/bin/python3.10 /home/tcwg-buildbot/worker/clang-aarch64-quick/stage1/utils/lit/tests/timeout-hang.py 5 # .---command stdout------------ # | Testing took 5.51s, which is beyond the grace period of 5.0s # `----------------------------- # error: command failed with exit status: 1 -- ******************** 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

3 participants