1 //===- llvm/unittest/MC/MCInstPrinter.cpp ---------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #include "llvm/MC/MCInstPrinter.h"
10 #include "llvm/MC/MCAsmInfo.h"
11 #include "llvm/MC/MCInstrInfo.h"
12 #include "llvm/MC/MCRegisterInfo.h"
13 #include "llvm/MC/MCTargetOptions.h"
14 #include "llvm/MC/TargetRegistry.h"
15 #include "llvm/Support/TargetSelect.h"
16 #include "llvm/Target/TargetMachine.h"
17 #include "llvm/Target/TargetOptions.h"
18 #include "gtest/gtest.h"
23 class MCInstPrinterTest
: public ::testing::Test
{
25 std::unique_ptr
<MCRegisterInfo
> MRI
;
26 std::unique_ptr
<MCAsmInfo
> MAI
;
27 std::unique_ptr
<const MCInstrInfo
> MII
;
28 std::unique_ptr
<MCInstPrinter
> Printer
;
31 llvm::InitializeAllTargetInfos();
32 llvm::InitializeAllTargetMCs();
34 std::string TripleName
= "x86_64-pc-linux";
37 const Target
*TheTarget
=
38 TargetRegistry::lookupTarget(TripleName
, ErrorStr
);
40 // If we didn't build x86, do not run the test.
44 MRI
.reset(TheTarget
->createMCRegInfo(TripleName
));
45 MCTargetOptions MCOptions
;
46 MAI
.reset(TheTarget
->createMCAsmInfo(*MRI
, TripleName
, MCOptions
));
47 MII
.reset(TheTarget
->createMCInstrInfo());
48 Printer
.reset(TheTarget
->createMCInstPrinter(
49 Triple(TripleName
), MAI
->getAssemblerDialect(), *MAI
, *MII
, *MRI
));
52 template <typename T
> std::string
formatHex(T i
) {
54 raw_string_ostream
OS(Buffer
);
55 OS
<< Printer
->formatHex(i
);
62 TEST_F(MCInstPrinterTest
, formatHex
) {
66 EXPECT_EQ("0x1", formatHex
<int64_t>(1));
67 EXPECT_EQ("0x7fffffffffffffff",
68 formatHex(std::numeric_limits
<int64_t>::max()));
69 EXPECT_EQ("-0x8000000000000000",
70 formatHex(std::numeric_limits
<int64_t>::min()));