5d61cd0de62aa756044daedfd784da69ad3d782b
[oota-llvm.git] / lib / Target / R600 / AMDGPUCodeEmitter.h
1 //===-- AMDGPUCodeEmitter.h - AMDGPU Code Emitter interface -----------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 /// \file
11 /// \brief CodeEmitter interface for R600 and SI codegen.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef AMDGPUCODEEMITTER_H
16 #define AMDGPUCODEEMITTER_H
17
18 namespace llvm {
19
20 class AMDGPUCodeEmitter {
21 public:
22   uint64_t getBinaryCodeForInstr(const MachineInstr &MI) const;
23   virtual uint64_t getMachineOpValue(const MachineInstr &MI,
24                                    const MachineOperand &MO) const { return 0; }
25   virtual unsigned GPR4AlignEncode(const MachineInstr  &MI,
26                                      unsigned OpNo) const {
27     return 0;
28   }
29   virtual unsigned GPR2AlignEncode(const MachineInstr &MI,
30                                    unsigned OpNo) const {
31     return 0;
32   }
33   virtual uint64_t VOPPostEncode(const MachineInstr &MI,
34                                  uint64_t Value) const {
35     return Value;
36   }
37   virtual uint64_t i32LiteralEncode(const MachineInstr &MI,
38                                     unsigned OpNo) const {
39     return 0;
40   }
41 };
42
43 } // End namespace llvm
44
45 #endif // AMDGPUCODEEMITTER_H