You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
63 lines
2.1 KiB
//===- subzero/unittest/AssemblerX8664/GPRArith.cpp -----------------------===//
|
|
//
|
|
// The Subzero Code Generator
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#include "AssemblerX8664/TestUtil.h"
|
|
|
|
namespace Ice {
|
|
namespace X8664 {
|
|
namespace Test {
|
|
namespace {
|
|
|
|
TEST_F(AssemblerX8664LowLevelTest, Nop) {
|
|
#define TestImpl(Size, ...) \
|
|
do { \
|
|
static constexpr char TestString[] = "(" #Size ", " #__VA_ARGS__ ")"; \
|
|
__ nop(Size); \
|
|
ASSERT_EQ(Size##u, codeBytesSize()) << TestString; \
|
|
ASSERT_TRUE(verifyBytes<Size>(codeBytes(), __VA_ARGS__)) << TestString; \
|
|
reset(); \
|
|
} while (0);
|
|
|
|
TestImpl(1, 0x90);
|
|
TestImpl(2, 0x66, 0x90);
|
|
TestImpl(3, 0x0F, 0x1F, 0x00);
|
|
TestImpl(4, 0x0F, 0x1F, 0x40, 0x00);
|
|
TestImpl(5, 0x0F, 0x1F, 0x44, 0x00, 0x00);
|
|
TestImpl(6, 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00);
|
|
TestImpl(7, 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00);
|
|
TestImpl(8, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00);
|
|
|
|
#undef TestImpl
|
|
}
|
|
|
|
TEST_F(AssemblerX8664LowLevelTest, Int3) {
|
|
__ int3();
|
|
static constexpr uint32_t ByteCount = 1;
|
|
ASSERT_EQ(ByteCount, codeBytesSize());
|
|
verifyBytes<ByteCount>(codeBytes(), 0xCC);
|
|
}
|
|
|
|
TEST_F(AssemblerX8664LowLevelTest, Hlt) {
|
|
__ hlt();
|
|
static constexpr uint32_t ByteCount = 1;
|
|
ASSERT_EQ(ByteCount, codeBytesSize());
|
|
verifyBytes<ByteCount>(codeBytes(), 0xF4);
|
|
}
|
|
|
|
TEST_F(AssemblerX8664LowLevelTest, Ud2) {
|
|
__ ud2();
|
|
static constexpr uint32_t ByteCount = 2;
|
|
ASSERT_EQ(ByteCount, codeBytesSize());
|
|
verifyBytes<ByteCount>(codeBytes(), 0x0F, 0x0B);
|
|
}
|
|
|
|
} // end of anonymous namespace
|
|
} // end of namespace Test
|
|
} // end of namespace X8664
|
|
} // end of namespace Ice
|