Home | History | Annotate | Download | only in XCore

Lines Matching defs:XCore

1 //===-- XCoreInstrInfo.cpp - XCore Instruction Information ----------------===//
10 // This file contains the XCore implementation of the TargetInstrInfo class.
15 #include "XCore.h"
35 namespace XCore {
37 // XCore Condition Codes
50 : XCoreGenInstrInfo(XCore::ADJCALLSTACKDOWN, XCore::ADJCALLSTACKUP),
66 if (Opcode == XCore::LDWFI)
88 if (Opcode == XCore::STWFI)
106 return BrOpc == XCore::BRFU_u6
107 || BrOpc == XCore::BRFU_lu6
108 || BrOpc == XCore::BRBU_u6
109 || BrOpc == XCore::BRBU_lu6;
113 return BrOpc == XCore::BRFT_ru6
114 || BrOpc == XCore::BRFT_lru6
115 || BrOpc == XCore::BRBT_ru6
116 || BrOpc == XCore::BRBT_lru6;
120 return BrOpc == XCore::BRFF_ru6
121 || BrOpc == XCore::BRFF_lru6
122 || BrOpc == XCore::BRBF_ru6
123 || BrOpc == XCore::BRBF_lru6;
131 return BrOpc == XCore::BR_JT
132 || BrOpc == XCore::BR_JT32;
135 /// GetCondFromBranchOpc - Return the XCore CC that matches
137 static XCore::CondCode GetCondFromBranchOpc(unsigned BrOpc)
140 return XCore::COND_TRUE;
142 return XCore::COND_FALSE;
144 return XCore::COND_INVALID;
150 static inline unsigned GetCondBranchFromCond(XCore::CondCode CC)
154 case XCore::COND_TRUE : return XCore::BRFT_lru6;
155 case XCore::COND_FALSE : return XCore::BRFF_lru6;
161 static inline XCore::CondCode GetOppositeBranchCondition(XCore::CondCode CC)
165 case XCore::COND_TRUE : return XCore::COND_FALSE;
166 case XCore::COND_FALSE : return XCore::COND_TRUE;
221 XCore::CondCode BranchCode = GetCondFromBranchOpc(LastInst->getOpcode());
222 if (BranchCode == XCore::COND_INVALID)
243 XCore::CondCode BranchCode = GetCondFromBranchOpc(SecondLastOpc);
247 if (BranchCode != XCore::COND_INVALID
294 BuildMI(&MBB, DL, get(XCore::BRFU_lu6)).addMBB(TBB);
297 unsigned Opc = GetCondBranchFromCond((XCore::CondCode)Cond[0].getImm());
306 unsigned Opc = GetCondBranchFromCond((XCore::CondCode)Cond[0].getImm());
309 BuildMI(&MBB, DL, get(XCore::BRFU_lu6)).addMBB(FBB);
345 bool GRDest = XCore::GRRegsRegClass.contains(DestReg);
346 bool GRSrc = XCore::GRRegsRegClass.contains(SrcReg);
349 BuildMI(MBB, I, DL, get(XCore::ADD_2rus), DestReg)
355 if (GRDest && SrcReg == XCore::SP) {
356 BuildMI(MBB, I, DL, get(XCore::LDAWSP_ru6), DestReg).addImm(0);
360 if (DestReg == XCore::SP && GRSrc) {
361 BuildMI(MBB, I, DL, get(XCore::SETSP_1r))
385 BuildMI(MBB, I, DL, get(XCore::STWFI))
408 BuildMI(MBB, I, DL, get(XCore::LDWFI), DestReg)
419 "Invalid XCore branch condition!");
420 Cond[0].setImm(GetOppositeBranchCondition((XCore::CondCode)Cond[0].getImm()));
449 return BuildMI(MBB, MI, dl, get(XCore::MKMSK_rus), Reg).addImm(N);
452 int Opcode = isImmU6(Value) ? XCore::LDC_ru6 : XCore::LDC_lru6;
459 return BuildMI(MBB, MI, dl, get(XCore::LDWCP_lru6), Reg)