Lines Matching defs:XCore
1 //===-- XCoreInstrInfo.cpp - XCore Instruction Information ----------------===//
9 // This file contains the XCore implementation of the TargetInstrInfo class.
14 #include "XCore.h"
30 namespace XCore {
32 // XCore Condition Codes
45 : XCoreGenInstrInfo(XCore::ADJCALLSTACKDOWN, XCore::ADJCALLSTACKUP),
61 if (Opcode == XCore::LDWFI)
81 if (Opcode == XCore::STWFI)
98 return BrOpc == XCore::BRFU_u6
99 || BrOpc == XCore::BRFU_lu6
100 || BrOpc == XCore::BRBU_u6
101 || BrOpc == XCore::BRBU_lu6;
105 return BrOpc == XCore::BRFT_ru6
106 || BrOpc == XCore::BRFT_lru6
107 || BrOpc == XCore::BRBT_ru6
108 || BrOpc == XCore::BRBT_lru6;
112 return BrOpc == XCore::BRFF_ru6
113 || BrOpc == XCore::BRFF_lru6
114 || BrOpc == XCore::BRBF_ru6
115 || BrOpc == XCore::BRBF_lru6;
123 return BrOpc == XCore::BR_JT
124 || BrOpc == XCore::BR_JT32;
127 /// GetCondFromBranchOpc - Return the XCore CC that matches
129 static XCore::CondCode GetCondFromBranchOpc(unsigned BrOpc)
132 return XCore::COND_TRUE;
134 return XCore::COND_FALSE;
136 return XCore::COND_INVALID;
142 static inline unsigned GetCondBranchFromCond(XCore::CondCode CC)
146 case XCore::COND_TRUE : return XCore::BRFT_lru6;
147 case XCore::COND_FALSE : return XCore::BRFF_lru6;
153 static inline XCore::CondCode GetOppositeBranchCondition(XCore::CondCode CC)
157 case XCore::COND_TRUE : return XCore::COND_FALSE;
158 case XCore::COND_FALSE : return XCore::COND_TRUE;
208 XCore::CondCode BranchCode = GetCondFromBranchOpc(LastInst->getOpcode());
209 if (BranchCode == XCore::COND_INVALID)
229 XCore::CondCode BranchCode = GetCondFromBranchOpc(SecondLastOpc);
233 if (BranchCode != XCore::COND_INVALID
282 BuildMI(&MBB, DL, get(XCore::BRFU_lu6)).addMBB(TBB);
285 unsigned Opc = GetCondBranchFromCond((XCore::CondCode)Cond[0].getImm());
294 unsigned Opc = GetCondBranchFromCond((XCore::CondCode)Cond[0].getImm());
297 BuildMI(&MBB, DL, get(XCore::BRFU_lu6)).addMBB(FBB);
332 bool GRDest = XCore::GRRegsRegClass.contains(DestReg);
333 bool GRSrc = XCore::GRRegsRegClass.contains(SrcReg);
336 BuildMI(MBB, I, DL, get(XCore::ADD_2rus), DestReg)
342 if (GRDest && SrcReg == XCore::SP) {
343 BuildMI(MBB, I, DL, get(XCore::LDAWSP_ru6), DestReg).addImm(0);
347 if (DestReg == XCore::SP && GRSrc) {
348 BuildMI(MBB, I, DL, get(XCore::SETSP_1r))
369 BuildMI(MBB, I, DL, get(XCore::STWFI))
392 BuildMI(MBB, I, DL, get(XCore::LDWFI), DestReg)
401 "Invalid XCore branch condition!");
402 Cond[0].setImm(GetOppositeBranchCondition((XCore::CondCode)Cond[0].getImm()));
431 return BuildMI(MBB, MI, dl, get(XCore::MKMSK_rus), Reg)
436 int Opcode = isImmU6(Value) ? XCore::LDC_ru6 : XCore::LDC_lru6;
443 return BuildMI(MBB, MI, dl, get(XCore::LDWCP_lru6), Reg)