[llvm] 6a9e276 - [llvm-exegesis] Analysis tests should run even without libpfm (PR51687)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 7 06:03:36 PDT 2021


Author: Simon Pilgrim
Date: 2021-09-07T13:58:05+01:00
New Revision: 6a9e2764f64ae63fd66fd15c5451de33fe3da08a

URL: https://github.com/llvm/llvm-project/commit/6a9e2764f64ae63fd66fd15c5451de33fe3da08a
DIFF: https://github.com/llvm/llvm-project/commit/6a9e2764f64ae63fd66fd15c5451de33fe3da08a.diff

LOG: [llvm-exegesis] Analysis tests should run even without libpfm (PR51687)

Move inverse_throughput, latency and uops to sub-directories (like we already do for lbr), which require libpfm, so we can relax the lit limits for analysis tests in the x86 root directory.

Differential Revision: https://reviews.llvm.org/D109353

Added: 
    llvm/test/tools/llvm-exegesis/X86/inverse_throughput/inverse_throughput-by-opcode-name.s
    llvm/test/tools/llvm-exegesis/X86/inverse_throughput/lit.local.cfg
    llvm/test/tools/llvm-exegesis/X86/latency/latency-CMOV32rr.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-IN16rr.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-LEA64_32r.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-LEA64r.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-SBB8rr.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-SETCCr-cond-codes-sweep.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-SQRTSSr.s
    llvm/test/tools/llvm-exegesis/X86/latency/latency-by-opcode-name.s
    llvm/test/tools/llvm-exegesis/X86/latency/lit.local.cfg
    llvm/test/tools/llvm-exegesis/X86/latency/max-configs.test
    llvm/test/tools/llvm-exegesis/X86/uops/lit.local.cfg
    llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32mi8.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32mr.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32rm.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD_F32m.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-BEXTR32rm.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-BSF16rm.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-BTR64mr.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-CMOV16rm-noreg.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-FLDENVm.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-LEA64r.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-POPCNT32rr.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-STD.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-VFMADDSS4rm.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-XCHG64rr.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-by-opcode-name.s
    llvm/test/tools/llvm-exegesis/X86/uops/uops-misspelled-div.s

Modified: 
    llvm/test/tools/llvm-exegesis/X86/lit.local.cfg

Removed: 
    llvm/test/tools/llvm-exegesis/X86/inverse_throughput-by-opcode-name.s
    llvm/test/tools/llvm-exegesis/X86/latency-CMOV32rr.s
    llvm/test/tools/llvm-exegesis/X86/latency-IN16rr.s
    llvm/test/tools/llvm-exegesis/X86/latency-LEA64_32r.s
    llvm/test/tools/llvm-exegesis/X86/latency-LEA64r.s
    llvm/test/tools/llvm-exegesis/X86/latency-SBB8rr.s
    llvm/test/tools/llvm-exegesis/X86/latency-SETCCr-cond-codes-sweep.s
    llvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s
    llvm/test/tools/llvm-exegesis/X86/latency-by-opcode-name.s
    llvm/test/tools/llvm-exegesis/X86/max-configs.test
    llvm/test/tools/llvm-exegesis/X86/uops-ADD32mi8.s
    llvm/test/tools/llvm-exegesis/X86/uops-ADD32mr.s
    llvm/test/tools/llvm-exegesis/X86/uops-ADD32rm.s
    llvm/test/tools/llvm-exegesis/X86/uops-ADD_F32m.s
    llvm/test/tools/llvm-exegesis/X86/uops-BEXTR32rm.s
    llvm/test/tools/llvm-exegesis/X86/uops-BSF16rm.s
    llvm/test/tools/llvm-exegesis/X86/uops-BTR64mr.s
    llvm/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s
    llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s
    llvm/test/tools/llvm-exegesis/X86/uops-LEA64r.s
    llvm/test/tools/llvm-exegesis/X86/uops-POPCNT32rr.s
    llvm/test/tools/llvm-exegesis/X86/uops-STD.s
    llvm/test/tools/llvm-exegesis/X86/uops-VFMADDSS4rm.s
    llvm/test/tools/llvm-exegesis/X86/uops-XCHG64rr.s
    llvm/test/tools/llvm-exegesis/X86/uops-by-opcode-name.s
    llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s


################################################################################
diff  --git a/llvm/test/tools/llvm-exegesis/X86/inverse_throughput-by-opcode-name.s b/llvm/test/tools/llvm-exegesis/X86/inverse_throughput/inverse_throughput-by-opcode-name.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/inverse_throughput-by-opcode-name.s
rename to llvm/test/tools/llvm-exegesis/X86/inverse_throughput/inverse_throughput-by-opcode-name.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/inverse_throughput/lit.local.cfg b/llvm/test/tools/llvm-exegesis/X86/inverse_throughput/lit.local.cfg
new file mode 100644
index 0000000000000..c11fe88e5fb98
--- /dev/null
+++ b/llvm/test/tools/llvm-exegesis/X86/inverse_throughput/lit.local.cfg
@@ -0,0 +1,29 @@
+import subprocess
+import lit.util
+
+if not ('X86' in config.root.targets):
+    # We need support for X86.
+    config.unsupported = True
+
+elif not ('x86_64' in config.root.host_triple):
+    # We need to be running on an X86 host.
+    config.unsupported = True
+
+else:
+    # We need libpfm to be installed and allow reading perf counters. We can
+    # only know that at runtime, so we try to measure the latency of an empty
+    # code snippet and bail out on error.
+    llvm_exegesis_exe = lit.util.which('llvm-exegesis', config.llvm_tools_dir)
+    if not llvm_exegesis_exe:
+        print('llvm-exegesis not found')
+        config.unsupported = True
+    else:
+      try:
+          with open(os.devnull, 'w') as quiet:
+              check_llvm_exegesis_inverse_throughput_result = subprocess.call(
+                [llvm_exegesis_exe, '-mode', 'inverse_throughput', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet)
+      except OSError:
+          print('could not exec llvm-exegesis')
+          config.unsupported = True
+      if not check_llvm_exegesis_inverse_throughput_result == 0:
+        config.unsupported = True

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-CMOV32rr.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-CMOV32rr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-CMOV32rr.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-CMOV32rr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-IN16rr.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-IN16rr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-IN16rr.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-IN16rr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-LEA64_32r.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-LEA64_32r.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-LEA64_32r.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-LEA64_32r.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-LEA64r.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-LEA64r.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-LEA64r.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-LEA64r.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-SBB8rr.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-SBB8rr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-SBB8rr.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-SBB8rr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-SETCCr-cond-codes-sweep.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-SETCCr-cond-codes-sweep.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-SETCCr-cond-codes-sweep.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-SETCCr-cond-codes-sweep.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-SQRTSSr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-SQRTSSr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency-by-opcode-name.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-by-opcode-name.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/latency-by-opcode-name.s
rename to llvm/test/tools/llvm-exegesis/X86/latency/latency-by-opcode-name.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency/lit.local.cfg b/llvm/test/tools/llvm-exegesis/X86/latency/lit.local.cfg
new file mode 100644
index 0000000000000..994810e475760
--- /dev/null
+++ b/llvm/test/tools/llvm-exegesis/X86/latency/lit.local.cfg
@@ -0,0 +1,29 @@
+import subprocess
+import lit.util
+
+if not ('X86' in config.root.targets):
+    # We need support for X86.
+    config.unsupported = True
+
+elif not ('x86_64' in config.root.host_triple):
+    # We need to be running on an X86 host.
+    config.unsupported = True
+
+else:
+    # We need libpfm to be installed and allow reading perf counters. We can
+    # only know that at runtime, so we try to measure the latency of an empty
+    # code snippet and bail out on error.
+    llvm_exegesis_exe = lit.util.which('llvm-exegesis', config.llvm_tools_dir)
+    if not llvm_exegesis_exe:
+        print('llvm-exegesis not found')
+        config.unsupported = True
+    else:
+      try:
+          with open(os.devnull, 'w') as quiet:
+              check_llvm_exegesis_latency_result = subprocess.call(
+                [llvm_exegesis_exe, '-mode', 'latency', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet)
+      except OSError:
+          print('could not exec llvm-exegesis')
+          config.unsupported = True
+      if not check_llvm_exegesis_latency_result == 0:
+        config.unsupported = True

diff  --git a/llvm/test/tools/llvm-exegesis/X86/max-configs.test b/llvm/test/tools/llvm-exegesis/X86/latency/max-configs.test
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/max-configs.test
rename to llvm/test/tools/llvm-exegesis/X86/latency/max-configs.test

diff  --git a/llvm/test/tools/llvm-exegesis/X86/lit.local.cfg b/llvm/test/tools/llvm-exegesis/X86/lit.local.cfg
index 506ba07ef5da7..c8625f4d9d248 100644
--- a/llvm/test/tools/llvm-exegesis/X86/lit.local.cfg
+++ b/llvm/test/tools/llvm-exegesis/X86/lit.local.cfg
@@ -1,33 +1,2 @@
-import subprocess
-import lit.util
-
-if not ('X86' in config.root.targets):
-    # We need support for X86.
+if not 'X86' in config.root.targets:
     config.unsupported = True
-
-elif not ('x86_64' in config.root.host_triple):
-    # We need to be running on an X86 host.
-    config.unsupported = True
-
-else:
-    # We need libpfm to be installed and allow reading perf counters. We can
-    # only know that at runtime, so we try to measure the latency of an empty
-    # code snippet and bail out on error.
-    llvm_exegesis_exe = lit.util.which('llvm-exegesis', config.llvm_tools_dir)
-    if not llvm_exegesis_exe:
-        print('llvm-exegesis not found')
-        config.unsupported = True
-    else:
-      try:
-          with open(os.devnull, 'w') as quiet:
-              check_llvm_exegesis_uops_result = subprocess.call(
-                [llvm_exegesis_exe, '-mode', 'uops', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet)
-              check_llvm_exegesis_latency_result = subprocess.call(
-                [llvm_exegesis_exe, '-mode', 'latency', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet)
-      except OSError:
-          print('could not exec llvm-exegesis')
-          config.unsupported = True
-      if not check_llvm_exegesis_uops_result == 0:
-        config.unsupported = True
-      if not check_llvm_exegesis_latency_result == 0:
-        config.unsupported = True

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops/lit.local.cfg b/llvm/test/tools/llvm-exegesis/X86/uops/lit.local.cfg
new file mode 100644
index 0000000000000..d3a8f3f8513eb
--- /dev/null
+++ b/llvm/test/tools/llvm-exegesis/X86/uops/lit.local.cfg
@@ -0,0 +1,29 @@
+import subprocess
+import lit.util
+
+if not ('X86' in config.root.targets):
+    # We need support for X86.
+    config.unsupported = True
+
+elif not ('x86_64' in config.root.host_triple):
+    # We need to be running on an X86 host.
+    config.unsupported = True
+
+else:
+    # We need libpfm to be installed and allow reading perf counters. We can
+    # only know that at runtime, so we try to measure the latency of an empty
+    # code snippet and bail out on error.
+    llvm_exegesis_exe = lit.util.which('llvm-exegesis', config.llvm_tools_dir)
+    if not llvm_exegesis_exe:
+        print('llvm-exegesis not found')
+        config.unsupported = True
+    else:
+      try:
+          with open(os.devnull, 'w') as quiet:
+              check_llvm_exegesis_uops_result = subprocess.call(
+                [llvm_exegesis_exe, '-mode', 'uops', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet)
+      except OSError:
+          print('could not exec llvm-exegesis')
+          config.unsupported = True
+      if not check_llvm_exegesis_uops_result == 0:
+        config.unsupported = True
\ No newline at end of file

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-ADD32mi8.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32mi8.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-ADD32mi8.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32mi8.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-ADD32mr.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32mr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-ADD32mr.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32mr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-ADD32rm.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32rm.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-ADD32rm.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD32rm.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-ADD_F32m.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD_F32m.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-ADD_F32m.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-ADD_F32m.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-BEXTR32rm.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-BEXTR32rm.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-BEXTR32rm.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-BEXTR32rm.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-BSF16rm.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-BSF16rm.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-BSF16rm.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-BSF16rm.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-BTR64mr.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-BTR64mr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-BTR64mr.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-BTR64mr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-CMOV16rm-noreg.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-CMOV16rm-noreg.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-FLDENVm.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-FLDENVm.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-LEA64r.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-LEA64r.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-LEA64r.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-LEA64r.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-POPCNT32rr.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-POPCNT32rr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-POPCNT32rr.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-POPCNT32rr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-STD.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-STD.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-STD.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-STD.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-VFMADDSS4rm.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-VFMADDSS4rm.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-VFMADDSS4rm.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-VFMADDSS4rm.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-XCHG64rr.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-XCHG64rr.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-XCHG64rr.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-XCHG64rr.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-by-opcode-name.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-by-opcode-name.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-by-opcode-name.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-by-opcode-name.s

diff  --git a/llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s b/llvm/test/tools/llvm-exegesis/X86/uops/uops-misspelled-div.s
similarity index 100%
rename from llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s
rename to llvm/test/tools/llvm-exegesis/X86/uops/uops-misspelled-div.s


        


More information about the llvm-commits mailing list