diff options
Diffstat (limited to 'unittests/tools/llvm-exegesis/AArch64/TargetTest.cpp')
-rw-r--r-- | unittests/tools/llvm-exegesis/AArch64/TargetTest.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/unittests/tools/llvm-exegesis/AArch64/TargetTest.cpp b/unittests/tools/llvm-exegesis/AArch64/TargetTest.cpp new file mode 100644 index 000000000000..cf3c11a9fdef --- /dev/null +++ b/unittests/tools/llvm-exegesis/AArch64/TargetTest.cpp @@ -0,0 +1,53 @@ +#include "Target.h" + +#include <cassert> +#include <memory> + +#include "MCTargetDesc/AArch64MCTargetDesc.h" +#include "llvm/Support/TargetRegistry.h" +#include "llvm/Support/TargetSelect.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +namespace exegesis { + +void InitializeAArch64ExegesisTarget(); + +namespace { + +using testing::Gt; +using testing::NotNull; +using testing::SizeIs; + +constexpr const char kTriple[] = "aarch64-unknown-linux"; + +class AArch64TargetTest : public ::testing::Test { +protected: + AArch64TargetTest() + : ExegesisTarget_(ExegesisTarget::lookup(llvm::Triple(kTriple))) { + EXPECT_THAT(ExegesisTarget_, NotNull()); + std::string error; + Target_ = llvm::TargetRegistry::lookupTarget(kTriple, error); + EXPECT_THAT(Target_, NotNull()); + } + static void SetUpTestCase() { + LLVMInitializeAArch64TargetInfo(); + LLVMInitializeAArch64Target(); + LLVMInitializeAArch64TargetMC(); + InitializeAArch64ExegesisTarget(); + } + + const llvm::Target *Target_; + const ExegesisTarget *const ExegesisTarget_; +}; + +TEST_F(AArch64TargetTest, SetRegToConstant) { + const std::unique_ptr<llvm::MCSubtargetInfo> STI( + Target_->createMCSubtargetInfo(kTriple, "generic", "")); + // The AArch64 target currently doesn't know how to set register values + const auto Insts = ExegesisTarget_->setRegToConstant(*STI, llvm::AArch64::X0); + EXPECT_THAT(Insts, SizeIs(0)); +} + +} // namespace +} // namespace exegesis |