#include "Target.h" #include #include #include "MCTargetDesc/X86MCTargetDesc.h" #include "gmock/gmock.h" #include "gtest/gtest.h" namespace exegesis { void InitializeX86ExegesisTarget(); namespace { using testing::Gt; using testing::NotNull; using testing::SizeIs; class X86TargetTest : public ::testing::Test { protected: X86TargetTest() : Target_(ExegesisTarget::lookup(llvm::Triple("x86_64-unknown-linux"))) { EXPECT_THAT(Target_, NotNull()); } static void SetUpTestCase() { InitializeX86ExegesisTarget(); } const ExegesisTarget *const Target_; }; TEST_F(X86TargetTest, SetRegToConstantGPR) { const auto Insts = Target_->setRegToConstant(llvm::X86::EAX); EXPECT_THAT(Insts, SizeIs(1)); EXPECT_EQ(Insts[0].getOpcode(), llvm::X86::MOV32ri); EXPECT_EQ(Insts[0].getOperand(0).getReg(), llvm::X86::EAX); } TEST_F(X86TargetTest, SetRegToConstantXMM) { const auto Insts = Target_->setRegToConstant(llvm::X86::XMM1); EXPECT_THAT(Insts, SizeIs(Gt(0U))); } } // namespace } // namespace exegesis