1f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//==-- MSP430.h - Top-level interface for MSP430 representation --*- C++ -*-==//
2f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
3f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//                     The LLVM Compiler Infrastructure
4f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
5f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file is distributed under the University of Illinois Open Source
6f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// License. See LICENSE.TXT for details.
7f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
8f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===//
9f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
10f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file contains the entry points for global functions defined in
11f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// the LLVM MSP430 backend.
12f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
13f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===//
14f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
15f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#ifndef LLVM_TARGET_MSP430_H
16f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#define LLVM_TARGET_MSP430_H
17f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
18c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "MCTargetDesc/MSP430MCTargetDesc.h"
1960871cb40ce2df662e8361b1215f5a9431d54dd7Anton Korobeynikov#include "llvm/Target/TargetMachine.h"
2060871cb40ce2df662e8361b1215f5a9431d54dd7Anton Korobeynikov
213926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikovnamespace MSP430CC {
223926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov  // MSP430 specific condition code.
233926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov  enum CondCodes {
243926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_E  = 0,  // aka COND_Z
253926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_NE = 1,  // aka COND_NZ
263926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_HS = 2,  // aka COND_C
273926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_LO = 3,  // aka COND_NC
283926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_GE = 4,
293926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_L  = 5,
303926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov
313926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov    COND_INVALID = -1
323926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov  };
333926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov}
343926fb63c24ceeefc0215b8e14eb81c85403639eAnton Korobeynikov
35f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovnamespace llvm {
36f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  class MSP430TargetMachine;
37f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  class FunctionPass;
3871847813bc419f7a0667468136a07429c6d9f164David Greene  class formatted_raw_ostream;
39f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
4060871cb40ce2df662e8361b1215f5a9431d54dd7Anton Korobeynikov  FunctionPass *createMSP430ISelDag(MSP430TargetMachine &TM,
4160871cb40ce2df662e8361b1215f5a9431d54dd7Anton Korobeynikov                                    CodeGenOpt::Level OptLevel);
424cb1e13769856716261a4d315f8202bd918502c3Daniel Dunbar
43702adaba6d7442f180c6bc0bec3a2b19e1169ed9Anton Korobeynikov  FunctionPass *createMSP430BranchSelectionPass();
44702adaba6d7442f180c6bc0bec3a2b19e1169ed9Anton Korobeynikov
45f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov} // end namespace llvm;
46f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
47f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#endif
48