1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===-- AMDGPUCodeEmitter.h - AMDGPU Code Emitter interface -----------------===//
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//                     The LLVM Compiler Infrastructure
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This file is distributed under the University of Illinois Open Source
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// License. See LICENSE.TXT for details.
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===----------------------------------------------------------------------===//
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// CodeEmitter interface for R600 and SI codegen.
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===----------------------------------------------------------------------===//
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef AMDGPUCODEEMITTER_H
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define AMDGPUCODEEMITTER_H
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "llvm/MC/MCCodeEmitter.h"
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "llvm/Support/raw_ostream.h"
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace llvm {
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  class MCInst;
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  class MCOperand;
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  class AMDGPUMCCodeEmitter : public MCCodeEmitter {
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  public:
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    uint64_t getBinaryCodeForInstr(const MCInst &MI,
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                                   SmallVectorImpl<MCFixup> &Fixups) const;
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    virtual uint64_t getMachineOpValue(const MCInst &MI, const MCOperand &MO,
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                                       SmallVectorImpl<MCFixup> &Fixups) const {
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return 0;
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    }
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    virtual unsigned GPR4AlignEncode(const MCInst  &MI, unsigned OpNo,
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                                     SmallVectorImpl<MCFixup> &Fixups) const {
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return 0;
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    }
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    virtual unsigned GPR2AlignEncode(const MCInst &MI, unsigned OpNo,
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                                     SmallVectorImpl<MCFixup> &Fixups) const {
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return 0;
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    }
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    virtual uint64_t VOPPostEncode(const MCInst &MI, uint64_t Value) const {
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return Value;
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    }
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    virtual uint64_t i32LiteralEncode(const MCInst &MI, unsigned OpNo,
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                                     SmallVectorImpl<MCFixup> &Fixups) const {
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return 0;
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    }
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    virtual uint32_t SMRDmemriEncode(const MCInst &MI, unsigned OpNo,
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                                     SmallVectorImpl<MCFixup> &Fixups) const {
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return 0;
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    }
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  };
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} // End namespace llvm
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // AMDGPUCODEEMITTER_H
60