#ifndef TARGET_SPARC_H
#define TARGET_SPARC_H
#include "MCTargetDesc/SparcMCTargetDesc.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetMachine.h"
namespace llvm {
class FunctionPass;
class SparcTargetMachine;
class formatted_raw_ostream;
FunctionPass *createSparcISelDag(SparcTargetMachine &TM);
FunctionPass *createSparcDelaySlotFillerPass(TargetMachine &TM);
FunctionPass *createSparcFPMoverPass(TargetMachine &TM);
}
namespace llvm {
namespace SPCC {
enum CondCodes {
ICC_NE = 9 , ICC_E = 1 , ICC_G = 10 , ICC_LE = 2 , ICC_GE = 11 , ICC_L = 3 , ICC_GU = 12 , ICC_LEU = 4 , ICC_CC = 13 , ICC_CS = 5 , ICC_POS = 14 , ICC_NEG = 6 , ICC_VC = 15 , ICC_VS = 7 ,
FCC_U = 7+16, FCC_G = 6+16, FCC_UG = 5+16, FCC_L = 4+16, FCC_UL = 3+16, FCC_LG = 2+16, FCC_NE = 1+16, FCC_E = 9+16, FCC_UE = 10+16, FCC_GE = 11+16, FCC_UGE = 12+16, FCC_LE = 13+16, FCC_ULE = 14+16, FCC_O = 15+16 };
}
inline static const char *SPARCCondCodeToString(SPCC::CondCodes CC) {
switch (CC) {
case SPCC::ICC_NE: return "ne";
case SPCC::ICC_E: return "e";
case SPCC::ICC_G: return "g";
case SPCC::ICC_LE: return "le";
case SPCC::ICC_GE: return "ge";
case SPCC::ICC_L: return "l";
case SPCC::ICC_GU: return "gu";
case SPCC::ICC_LEU: return "leu";
case SPCC::ICC_CC: return "cc";
case SPCC::ICC_CS: return "cs";
case SPCC::ICC_POS: return "pos";
case SPCC::ICC_NEG: return "neg";
case SPCC::ICC_VC: return "vc";
case SPCC::ICC_VS: return "vs";
case SPCC::FCC_U: return "u";
case SPCC::FCC_G: return "g";
case SPCC::FCC_UG: return "ug";
case SPCC::FCC_L: return "l";
case SPCC::FCC_UL: return "ul";
case SPCC::FCC_LG: return "lg";
case SPCC::FCC_NE: return "ne";
case SPCC::FCC_E: return "e";
case SPCC::FCC_UE: return "ue";
case SPCC::FCC_GE: return "ge";
case SPCC::FCC_UGE: return "uge";
case SPCC::FCC_LE: return "le";
case SPCC::FCC_ULE: return "ule";
case SPCC::FCC_O: return "o";
}
llvm_unreachable("Invalid cond code");
}
} #endif