1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //===- llvm/unittest/MC/MCInstPrinter.cpp ---------------------------------===//
- //
- // 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
- //
- //===----------------------------------------------------------------------===//
- #include "llvm/MC/MCInstPrinter.h"
- #include "llvm/MC/MCAsmInfo.h"
- #include "llvm/MC/MCInstrInfo.h"
- #include "llvm/Support/TargetRegistry.h"
- #include "llvm/Support/TargetSelect.h"
- #include "llvm/Target/TargetMachine.h"
- #include "llvm/Target/TargetOptions.h"
- #include "gtest/gtest.h"
- using namespace llvm;
- namespace {
- class MCInstPrinterTest : public ::testing::Test {
- public:
- std::unique_ptr<MCRegisterInfo> MRI;
- std::unique_ptr<MCAsmInfo> MAI;
- std::unique_ptr<const MCInstrInfo> MII;
- std::unique_ptr<MCInstPrinter> Printer;
- MCInstPrinterTest() {
- llvm::InitializeAllTargetInfos();
- llvm::InitializeAllTargetMCs();
- std::string TripleName = "x86_64-pc-linux";
- std::string ErrorStr;
- const Target *TheTarget =
- TargetRegistry::lookupTarget(TripleName, ErrorStr);
- // If we didn't build x86, do not run the test.
- if (!TheTarget)
- return;
- MRI.reset(TheTarget->createMCRegInfo(TripleName));
- MAI.reset(TheTarget->createMCAsmInfo(*MRI, TripleName));
- MII.reset(TheTarget->createMCInstrInfo());
- Printer.reset(TheTarget->createMCInstPrinter(
- Triple(TripleName), MAI->getAssemblerDialect(), *MAI, *MII, *MRI));
- }
- template <typename T> std::string formatHex(T i) {
- std::string Buffer;
- raw_string_ostream OS(Buffer);
- OS << Printer->formatHex(i);
- OS.flush();
- return Buffer;
- }
- };
- } // namespace
- TEST_F(MCInstPrinterTest, formatHex) {
- if (!Printer)
- return;
- EXPECT_EQ("0x1", formatHex<int64_t>(1));
- EXPECT_EQ("0x7fffffffffffffff",
- formatHex(std::numeric_limits<int64_t>::max()));
- EXPECT_EQ("-0x8000000000000000",
- formatHex(std::numeric_limits<int64_t>::min()));
- }
|