diff options
| author | vitalyisaev <[email protected]> | 2023-06-29 10:00:50 +0300 |
|---|---|---|
| committer | vitalyisaev <[email protected]> | 2023-06-29 10:00:50 +0300 |
| commit | 6ffe9e53658409f212834330e13564e4952558f6 (patch) | |
| tree | 85b1e00183517648b228aafa7c8fb07f5276f419 /contrib/libs/llvm16/lib/MC/MCInst.cpp | |
| parent | 726057070f9c5a91fc10fde0d5024913d10f1ab9 (diff) | |
YQ Connector: support managed ClickHouse
Со стороны dqrun можно обратиться к инстансу коннектора, который работает на streaming стенде, и извлечь данные из облачного CH.
Diffstat (limited to 'contrib/libs/llvm16/lib/MC/MCInst.cpp')
| -rw-r--r-- | contrib/libs/llvm16/lib/MC/MCInst.cpp | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/contrib/libs/llvm16/lib/MC/MCInst.cpp b/contrib/libs/llvm16/lib/MC/MCInst.cpp new file mode 100644 index 00000000000..3cc50ff4351 --- /dev/null +++ b/contrib/libs/llvm16/lib/MC/MCInst.cpp @@ -0,0 +1,108 @@ +//===- lib/MC/MCInst.cpp - MCInst implementation --------------------------===// +// +// 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/MCInst.h" +#include "llvm/Config/llvm-config.h" +#include "llvm/MC/MCExpr.h" +#include "llvm/MC/MCInstPrinter.h" +#include "llvm/MC/MCRegisterInfo.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/raw_ostream.h" + +using namespace llvm; + +void MCOperand::print(raw_ostream &OS, const MCRegisterInfo *RegInfo) const { + OS << "<MCOperand "; + if (!isValid()) + OS << "INVALID"; + else if (isReg()) { + OS << "Reg:"; + if (RegInfo) + OS << RegInfo->getName(getReg()); + else + OS << getReg(); + } else if (isImm()) + OS << "Imm:" << getImm(); + else if (isSFPImm()) + OS << "SFPImm:" << bit_cast<float>(getSFPImm()); + else if (isDFPImm()) + OS << "DFPImm:" << bit_cast<double>(getDFPImm()); + else if (isExpr()) { + OS << "Expr:(" << *getExpr() << ")"; + } else if (isInst()) { + OS << "Inst:("; + getInst()->print(OS, RegInfo); + OS << ")"; + } else + OS << "UNDEFINED"; + OS << ">"; +} + +bool MCOperand::evaluateAsConstantImm(int64_t &Imm) const { + if (isImm()) { + Imm = getImm(); + return true; + } + return false; +} + +bool MCOperand::isBareSymbolRef() const { + assert(isExpr() && + "isBareSymbolRef expects only expressions"); + const MCExpr *Expr = getExpr(); + MCExpr::ExprKind Kind = getExpr()->getKind(); + return Kind == MCExpr::SymbolRef && + cast<MCSymbolRefExpr>(Expr)->getKind() == MCSymbolRefExpr::VK_None; +} + +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) +LLVM_DUMP_METHOD void MCOperand::dump() const { + print(dbgs()); + dbgs() << "\n"; +} +#endif + +void MCInst::print(raw_ostream &OS, const MCRegisterInfo *RegInfo) const { + OS << "<MCInst " << getOpcode(); + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) { + OS << " "; + getOperand(i).print(OS, RegInfo); + } + OS << ">"; +} + +void MCInst::dump_pretty(raw_ostream &OS, const MCInstPrinter *Printer, + StringRef Separator, + const MCRegisterInfo *RegInfo) const { + StringRef InstName = Printer ? Printer->getOpcodeName(getOpcode()) : ""; + dump_pretty(OS, InstName, Separator, RegInfo); +} + +void MCInst::dump_pretty(raw_ostream &OS, StringRef Name, StringRef Separator, + const MCRegisterInfo *RegInfo) const { + OS << "<MCInst #" << getOpcode(); + + // Show the instruction opcode name if we have it. + if (!Name.empty()) + OS << ' ' << Name; + + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) { + OS << Separator; + getOperand(i).print(OS, RegInfo); + } + OS << ">"; +} + +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) +LLVM_DUMP_METHOD void MCInst::dump() const { + print(dbgs()); + dbgs() << "\n"; +} +#endif |
