[InstCombine] Signed saturation patterns
[llvm-complete.git] / lib / Target / X86 / MCTargetDesc / X86ATTInstPrinter.h
blob747ddd30a2d931a636a4e28df80dc591d87cb789
1 //=- X86ATTInstPrinter.h - Convert X86 MCInst to assembly syntax --*- C++ -*-=//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This class prints an X86 MCInst to AT&T style .s file syntax.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
14 #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
16 #include "X86InstPrinterCommon.h"
18 namespace llvm {
20 class X86ATTInstPrinter final : public X86InstPrinterCommon {
21 public:
22 X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
23 const MCRegisterInfo &MRI)
24 : X86InstPrinterCommon(MAI, MII, MRI), HasCustomInstComment(false) {}
26 void printRegName(raw_ostream &OS, unsigned RegNo) const override;
27 void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot,
28 const MCSubtargetInfo &STI) override;
29 bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS);
31 // Autogenerated by tblgen, returns true if we successfully printed an
32 // alias.
33 bool printAliasInstr(const MCInst *MI, raw_ostream &OS);
34 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
35 unsigned PrintMethodIdx, raw_ostream &O);
37 // Autogenerated by tblgen.
38 void printInstruction(const MCInst *MI, raw_ostream &OS);
39 static const char *getRegisterName(unsigned RegNo);
41 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS) override;
42 void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS);
43 void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
44 void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
45 void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
46 void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS);
47 void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
49 void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
50 printMemReference(MI, OpNo, O);
52 void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
53 printMemReference(MI, OpNo, O);
56 void printbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
57 printMemReference(MI, OpNo, O);
59 void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
60 printMemReference(MI, OpNo, O);
62 void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
63 printMemReference(MI, OpNo, O);
65 void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
66 printMemReference(MI, OpNo, O);
68 void printxmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
69 printMemReference(MI, OpNo, O);
71 void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
72 printMemReference(MI, OpNo, O);
74 void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
75 printMemReference(MI, OpNo, O);
77 void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
78 printMemReference(MI, OpNo, O);
81 void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
82 printSrcIdx(MI, OpNo, O);
84 void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
85 printSrcIdx(MI, OpNo, O);
87 void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
88 printSrcIdx(MI, OpNo, O);
90 void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
91 printSrcIdx(MI, OpNo, O);
93 void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
94 printDstIdx(MI, OpNo, O);
96 void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
97 printDstIdx(MI, OpNo, O);
99 void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
100 printDstIdx(MI, OpNo, O);
102 void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
103 printDstIdx(MI, OpNo, O);
105 void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
106 printMemOffset(MI, OpNo, O);
108 void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
109 printMemOffset(MI, OpNo, O);
111 void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
112 printMemOffset(MI, OpNo, O);
114 void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
115 printMemOffset(MI, OpNo, O);
118 private:
119 bool HasCustomInstComment;
122 } // end namespace llvm
124 #endif // LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H