Lines Matching refs:MI

39   bool shortenIIF(MachineInstr &MI, unsigned LLIxL, unsigned LLIxH);
40 bool shortenOn0(MachineInstr &MI, unsigned Opcode);
41 bool shortenOn01(MachineInstr &MI, unsigned Opcode);
42 bool shortenOn001(MachineInstr &MI, unsigned Opcode);
43 bool shortenOn001AddCC(MachineInstr &MI, unsigned Opcode);
44 bool shortenFPConv(MachineInstr &MI, unsigned Opcode);
45 bool shortenFusedFPOp(MachineInstr &MI, unsigned Opcode);
68 static void tieOpsIfNeeded(MachineInstr &MI) { in tieOpsIfNeeded() argument
69 if (MI.getDesc().getOperandConstraint(1, MCOI::TIED_TO) == 0 && in tieOpsIfNeeded()
70 !MI.getOperand(0).isTied()) in tieOpsIfNeeded()
71 MI.tieOperands(0, 1); in tieOpsIfNeeded()
77 bool SystemZShortenInst::shortenIIF(MachineInstr &MI, unsigned LLIxL, in shortenIIF() argument
79 Register Reg = MI.getOperand(0).getReg(); in shortenIIF()
94 uint64_t Imm = MI.getOperand(1).getImm(); in shortenIIF()
96 MI.setDesc(TII->get(LLIxL)); in shortenIIF()
97 MI.getOperand(0).setReg(SystemZMC::getRegAsGR64(Reg)); in shortenIIF()
101 MI.setDesc(TII->get(LLIxH)); in shortenIIF()
102 MI.getOperand(0).setReg(SystemZMC::getRegAsGR64(Reg)); in shortenIIF()
103 MI.getOperand(1).setImm(Imm >> 16); in shortenIIF()
110 bool SystemZShortenInst::shortenOn0(MachineInstr &MI, unsigned Opcode) { in shortenOn0() argument
111 if (SystemZMC::getFirstReg(MI.getOperand(0).getReg()) < 16) { in shortenOn0()
112 MI.setDesc(TII->get(Opcode)); in shortenOn0()
120 bool SystemZShortenInst::shortenOn01(MachineInstr &MI, unsigned Opcode) { in shortenOn01() argument
121 if (SystemZMC::getFirstReg(MI.getOperand(0).getReg()) < 16 && in shortenOn01()
122 SystemZMC::getFirstReg(MI.getOperand(1).getReg()) < 16) { in shortenOn01()
123 MI.setDesc(TII->get(Opcode)); in shortenOn01()
132 bool SystemZShortenInst::shortenOn001(MachineInstr &MI, unsigned Opcode) { in shortenOn001() argument
133 if (SystemZMC::getFirstReg(MI.getOperand(0).getReg()) < 16 && in shortenOn001()
134 MI.getOperand(1).getReg() == MI.getOperand(0).getReg() && in shortenOn001()
135 SystemZMC::getFirstReg(MI.getOperand(2).getReg()) < 16) { in shortenOn001()
136 MI.setDesc(TII->get(Opcode)); in shortenOn001()
137 tieOpsIfNeeded(MI); in shortenOn001()
145 bool SystemZShortenInst::shortenOn001AddCC(MachineInstr &MI, unsigned Opcode) { in shortenOn001AddCC() argument
146 if (!LiveRegs.contains(SystemZ::CC) && shortenOn001(MI, Opcode)) { in shortenOn001AddCC()
147 MachineInstrBuilder(*MI.getParent()->getParent(), &MI) in shortenOn001AddCC()
158 bool SystemZShortenInst::shortenFPConv(MachineInstr &MI, unsigned Opcode) { in shortenFPConv() argument
159 if (SystemZMC::getFirstReg(MI.getOperand(0).getReg()) < 16 && in shortenFPConv()
160 SystemZMC::getFirstReg(MI.getOperand(1).getReg()) < 16) { in shortenFPConv()
161 MachineOperand Dest(MI.getOperand(0)); in shortenFPConv()
162 MachineOperand Src(MI.getOperand(1)); in shortenFPConv()
163 MachineOperand Suppress(MI.getOperand(2)); in shortenFPConv()
164 MachineOperand Mode(MI.getOperand(3)); in shortenFPConv()
165 MI.removeOperand(3); in shortenFPConv()
166 MI.removeOperand(2); in shortenFPConv()
167 MI.removeOperand(1); in shortenFPConv()
168 MI.removeOperand(0); in shortenFPConv()
169 MI.setDesc(TII->get(Opcode)); in shortenFPConv()
170 MachineInstrBuilder(*MI.getParent()->getParent(), &MI) in shortenFPConv()
180 bool SystemZShortenInst::shortenFusedFPOp(MachineInstr &MI, unsigned Opcode) { in shortenFusedFPOp() argument
181 MachineOperand &DstMO = MI.getOperand(0); in shortenFusedFPOp()
182 MachineOperand &LHSMO = MI.getOperand(1); in shortenFusedFPOp()
183 MachineOperand &RHSMO = MI.getOperand(2); in shortenFusedFPOp()
184 MachineOperand &AccMO = MI.getOperand(3); in shortenFusedFPOp()
193 MI.removeOperand(3); in shortenFusedFPOp()
194 MI.removeOperand(2); in shortenFusedFPOp()
195 MI.removeOperand(1); in shortenFusedFPOp()
196 MI.setDesc(TII->get(Opcode)); in shortenFusedFPOp()
197 MachineInstrBuilder(*MI.getParent()->getParent(), &MI) in shortenFusedFPOp()
215 for (MachineInstr &MI : llvm::reverse(MBB)) { in processBlock()
216 switch (MI.getOpcode()) { in processBlock()
218 Changed |= shortenIIF(MI, SystemZ::LLILL, SystemZ::LLILH); in processBlock()
222 Changed |= shortenIIF(MI, SystemZ::LLIHL, SystemZ::LLIHH); in processBlock()
226 Changed |= shortenOn001AddCC(MI, SystemZ::ADBR); in processBlock()
230 Changed |= shortenOn001AddCC(MI, SystemZ::AEBR); in processBlock()
234 Changed |= shortenOn001(MI, SystemZ::DDBR); in processBlock()
238 Changed |= shortenOn001(MI, SystemZ::DEBR); in processBlock()
242 Changed |= shortenFPConv(MI, SystemZ::FIDBRA); in processBlock()
246 Changed |= shortenFPConv(MI, SystemZ::FIEBRA); in processBlock()
250 Changed |= shortenOn01(MI, SystemZ::LDEBR); in processBlock()
254 Changed |= shortenFPConv(MI, SystemZ::LEDBRA); in processBlock()
258 Changed |= shortenOn001(MI, SystemZ::MDBR); in processBlock()
262 Changed |= shortenOn001(MI, SystemZ::MEEBR); in processBlock()
266 Changed |= shortenFusedFPOp(MI, SystemZ::MADBR); in processBlock()
270 Changed |= shortenFusedFPOp(MI, SystemZ::MAEBR); in processBlock()
274 Changed |= shortenFusedFPOp(MI, SystemZ::MSDBR); in processBlock()
278 Changed |= shortenFusedFPOp(MI, SystemZ::MSEBR); in processBlock()
282 Changed |= shortenOn01(MI, SystemZ::LCDFR); in processBlock()
286 Changed |= shortenOn01(MI, SystemZ::LCDFR_32); in processBlock()
290 Changed |= shortenOn01(MI, SystemZ::LNDFR); in processBlock()
294 Changed |= shortenOn01(MI, SystemZ::LNDFR_32); in processBlock()
298 Changed |= shortenOn01(MI, SystemZ::LPDFR); in processBlock()
302 Changed |= shortenOn01(MI, SystemZ::LPDFR_32); in processBlock()
306 Changed |= shortenOn01(MI, SystemZ::SQDBR); in processBlock()
310 Changed |= shortenOn01(MI, SystemZ::SQEBR); in processBlock()
314 Changed |= shortenOn001AddCC(MI, SystemZ::SDBR); in processBlock()
318 Changed |= shortenOn001AddCC(MI, SystemZ::SEBR); in processBlock()
322 Changed |= shortenOn01(MI, SystemZ::CDBR); in processBlock()
326 Changed |= shortenOn01(MI, SystemZ::CEBR); in processBlock()
330 Changed |= shortenOn01(MI, SystemZ::KDBR); in processBlock()
334 Changed |= shortenOn01(MI, SystemZ::KEBR); in processBlock()
339 Changed |= shortenOn0(MI, SystemZ::LDE32); in processBlock()
343 Changed |= shortenOn0(MI, SystemZ::STE); in processBlock()
347 Changed |= shortenOn0(MI, SystemZ::LD); in processBlock()
351 Changed |= shortenOn0(MI, SystemZ::STD); in processBlock()
355 int TwoOperandOpcode = SystemZ::getTwoOperandOpcode(MI.getOpcode()); in processBlock()
359 if ((MI.getOperand(0).getReg() != MI.getOperand(1).getReg()) && in processBlock()
360 (!MI.isCommutable() || in processBlock()
361 MI.getOperand(0).getReg() != MI.getOperand(2).getReg() || in processBlock()
362 !TII->commuteInstruction(MI, false, 1, 2))) in processBlock()
365 MI.setDesc(TII->get(TwoOperandOpcode)); in processBlock()
366 MI.tieOperands(0, 1); in processBlock()
372 MachineOperand &ImmMO = MI.getOperand(3); in processBlock()
380 LiveRegs.stepBackward(MI); in processBlock()