add_subdirectory(test)
add_subdirectory(unittests)
add_subdirectory(lit)
+ add_subdirectory(utils/lit-cpuid)
add_subdirectory(utils/lldb-dotest)
endif()
list(APPEND LLDB_TEST_DEPS
LLDBUnitTests
dsymutil
+ lit-cpuid
llc
lldb
lldb-test
# XFAIL: system-darwin
# XFAIL: system-windows
-# REQUIRES: native && (target-x86 || target-x86_64)
+# REQUIRES: native && (target-x86 || target-x86_64) && native-cpu-sse
# RUN: %clangxx %p/Inputs/x86-mm-xmm-read.cpp -o %t
# RUN: %lldb -b -s %s %t | FileCheck %s
process launch
if os.path.isdir(cachedir):
print("Deleting module cache at %s."%cachedir)
shutil.rmtree(cachedir)
+
+# If running tests natively, check for CPU features needed for some tests.
+
+if 'native' in config.available_features:
+ cpuid_exe = lit.util.which('lit-cpuid', config.lldb_tools_dir)
+ if cpuid_exe is None:
+ lit_config.warning("lit-cpuid not found, tests requiring CPU extensions will be skipped")
+ else:
+ out, err, exitcode = lit.util.executeCommand([cpuid_exe])
+ if exitcode == 0:
+ for x in out.split():
+ config.available_features.add('native-cpu-%s' % x)
+ else:
+ lit_config.warning("lit-cpuid failed: %s" % err)
--- /dev/null
+add_llvm_utility(lit-cpuid
+ lit-cpuid.cpp
+ )
+
+target_link_libraries(lit-cpuid PRIVATE LLVMSupport)
--- /dev/null
+//===- lit-cpuid.cpp - Get CPU feature flags for lit exported features ----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// lit-cpuid obtains the feature list for the currently running CPU, and outputs
+// those flags that are interesting for LLDB lit tests.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ADT/StringMap.h"
+#include "llvm/Support/Host.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+int main(int argc, char **argv) {
+#if defined(__i386__) || defined(_M_IX86) || \
+ defined(__x86_64__) || defined(_M_X64)
+ StringMap<bool> features;
+
+ if (!sys::getHostCPUFeatures(features))
+ return 1;
+
+ if (features["sse"])
+ outs() << "sse\n";
+#endif
+
+ return 0;
+}