[PATCH] D150431: [lit] Add knob --simulator-cmd to allow developers to run LIT on a simulator when real machine is not available
Kan Shengchen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 12 01:13:00 PDT 2023
skan created this revision.
Herald added subscribers: pengfei, delcypher.
Herald added a project: All.
skan requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
https://llvm.org/docs/TestSuiteGuide.html
LLVM test-suite leverages the LIT infrastructure for testing. It's a run-time test suite but sometimes we do
not have a real machine for the test. So, I'd like to introduce a mechanism to run it on a simulator by this
patch.
According to the documentations:
Intel SDE:
https://www.intel.com/content/www/us/en/developer/articles/tool/software-development-emulator.html
QEMU:
https://www.qemu.org/docs/master/user/main.html
Here are some usage examples:
llvm-lit ./llvm/test/MC/X86/abs8.s --simulator-cmd "sde --"
llvm-lit ./llvm/test/MC/X86/abs8.s --simulator-cmd "qemu-x86_64"
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D150431
Files:
llvm/utils/lit/lit/LitConfig.py
llvm/utils/lit/lit/LitTestCase.py
llvm/utils/lit/lit/TestRunner.py
llvm/utils/lit/lit/cl_arguments.py
llvm/utils/lit/lit/formats/googletest.py
llvm/utils/lit/lit/main.py
llvm/utils/lit/tests/unit/TestRunner.py
Index: llvm/utils/lit/tests/unit/TestRunner.py
===================================================================
--- llvm/utils/lit/tests/unit/TestRunner.py
+++ llvm/utils/lit/tests/unit/TestRunner.py
@@ -30,6 +30,7 @@
useValgrind=False,
valgrindLeakCheck=False,
valgrindArgs=[],
+ simulatorCMD='',
noExecute=False,
debug=False,
isWindows=(
Index: llvm/utils/lit/lit/main.py
===================================================================
--- llvm/utils/lit/lit/main.py
+++ llvm/utils/lit/lit/main.py
@@ -34,6 +34,7 @@
useValgrind=opts.useValgrind,
valgrindLeakCheck=opts.valgrindLeakCheck,
valgrindArgs=opts.valgrindArgs,
+ simulatorCMD=opts.simulatorCMD,
noExecute=opts.noExecute,
debug=opts.debug,
isWindows=is_windows,
Index: llvm/utils/lit/lit/formats/googletest.py
===================================================================
--- llvm/utils/lit/lit/formats/googletest.py
+++ llvm/utils/lit/lit/formats/googletest.py
@@ -129,6 +129,9 @@
if litConfig.useValgrind:
cmd = litConfig.valgrindArgs + cmd
+ if litConfig.simulatorCMD:
+ cmd = litConfig.simulatorCMD.split() + cmd
+
if litConfig.noExecute:
return lit.Test.PASS, ''
Index: llvm/utils/lit/lit/cl_arguments.py
===================================================================
--- llvm/utils/lit/lit/cl_arguments.py
+++ llvm/utils/lit/lit/cl_arguments.py
@@ -108,6 +108,10 @@
help="Specify an extra argument for valgrind",
action="append",
default=[])
+ execution_group.add_argument("--simulator-cmd",
+ dest="simulatorCMD",
+ metavar="SIM",
+ help="Run test under simulator cmd")
execution_group.add_argument("--time-tests",
help="Track elapsed wall time for each test",
action="store_true")
Index: llvm/utils/lit/lit/TestRunner.py
===================================================================
--- llvm/utils/lit/lit/TestRunner.py
+++ llvm/utils/lit/lit/TestRunner.py
@@ -1058,6 +1058,9 @@
# run on clang with no real loss.
command = litConfig.valgrindArgs + command
+ if litConfig.simulatorCMD:
+ command = litConfig.simulatorCMD.split() + command
+
try:
out, err, exitCode = lit.util.executeCommand(command, cwd=cwd,
env=test.config.environment,
Index: llvm/utils/lit/lit/LitTestCase.py
===================================================================
--- llvm/utils/lit/lit/LitTestCase.py
+++ llvm/utils/lit/lit/LitTestCase.py
@@ -49,6 +49,7 @@
useValgrind=False,
valgrindLeakCheck=False,
valgrindArgs=[],
+ simulatorCMD='',
noExecute=False,
debug=False,
isWindows=windows,
Index: llvm/utils/lit/lit/LitConfig.py
===================================================================
--- llvm/utils/lit/lit/LitConfig.py
+++ llvm/utils/lit/lit/LitConfig.py
@@ -21,7 +21,7 @@
"""
def __init__(self, progname, path, quiet,
- useValgrind, valgrindLeakCheck, valgrindArgs,
+ useValgrind, valgrindLeakCheck, valgrindArgs, simulatorCMD,
noExecute, debug, isWindows, order,
params, config_prefix = None,
maxIndividualTestTime = 0,
@@ -35,6 +35,7 @@
self.useValgrind = bool(useValgrind)
self.valgrindLeakCheck = bool(valgrindLeakCheck)
self.valgrindUserArgs = list(valgrindArgs)
+ self.simulatorCMD = str(simulatorCMD)
self.noExecute = noExecute
self.debug = debug
self.isWindows = bool(isWindows)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D150431.521578.patch
Type: text/x-patch
Size: 4038 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230512/461462d2/attachment.bin>
More information about the llvm-commits
mailing list