[Codegen] Alter the default promotion for saturating adds and subs
[llvm-complete.git] / lib / Target / AMDGPU / MCTargetDesc / AMDGPUMCCodeEmitter.h
blob62757a7078905e8f1cfc6c82cc9eea73ca6fbeb7
1 //===-- AMDGPUCodeEmitter.h - AMDGPU Code Emitter interface -----*- 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 /// \file
10 /// CodeEmitter interface for R600 and SI codegen.
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCCODEEMITTER_H
15 #define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCCODEEMITTER_H
17 #include "llvm/MC/MCCodeEmitter.h"
18 #include "llvm/Support/raw_ostream.h"
20 namespace llvm {
22 class MCInst;
23 class MCInstrInfo;
24 class MCOperand;
25 class MCSubtargetInfo;
26 class FeatureBitset;
28 class AMDGPUMCCodeEmitter : public MCCodeEmitter {
29 virtual void anchor();
31 protected:
32 const MCInstrInfo &MCII;
34 AMDGPUMCCodeEmitter(const MCInstrInfo &mcii) : MCII(mcii) {}
36 public:
38 uint64_t getBinaryCodeForInstr(const MCInst &MI,
39 SmallVectorImpl<MCFixup> &Fixups,
40 const MCSubtargetInfo &STI) const;
42 virtual uint64_t getMachineOpValue(const MCInst &MI, const MCOperand &MO,
43 SmallVectorImpl<MCFixup> &Fixups,
44 const MCSubtargetInfo &STI) const {
45 return 0;
48 virtual unsigned getSOPPBrEncoding(const MCInst &MI, unsigned OpNo,
49 SmallVectorImpl<MCFixup> &Fixups,
50 const MCSubtargetInfo &STI) const {
51 return 0;
54 virtual unsigned getSDWASrcEncoding(const MCInst &MI, unsigned OpNo,
55 SmallVectorImpl<MCFixup> &Fixups,
56 const MCSubtargetInfo &STI) const {
57 return 0;
60 virtual unsigned getSDWAVopcDstEncoding(const MCInst &MI, unsigned OpNo,
61 SmallVectorImpl<MCFixup> &Fixups,
62 const MCSubtargetInfo &STI) const {
63 return 0;
66 virtual unsigned getAVOperandEncoding(const MCInst &MI, unsigned OpNo,
67 SmallVectorImpl<MCFixup> &Fixups,
68 const MCSubtargetInfo &STI) const {
69 return 0;
72 protected:
73 FeatureBitset computeAvailableFeatures(const FeatureBitset &FB) const;
74 void
75 verifyInstructionPredicates(const MCInst &MI,
76 const FeatureBitset &AvailableFeatures) const;
79 } // End namespace llvm
81 #endif