Lines Matching full:mib
47 bool selectCmp(CmpConstants Helper, MachineInstrBuilder &MIB,
60 bool selectGlobal(MachineInstrBuilder &MIB, MachineRegisterInfo &MRI) const;
61 bool selectSelect(MachineInstrBuilder &MIB, MachineRegisterInfo &MRI) const;
62 bool selectShift(unsigned ShiftOpc, MachineInstrBuilder &MIB) const;
145 void renderInvertedImm(MachineInstrBuilder &MIB, const MachineInstr &MI,
233 static bool selectMergeValues(MachineInstrBuilder &MIB, in selectMergeValues() argument
242 Register VReg0 = MIB.getReg(0); in selectMergeValues()
247 Register VReg1 = MIB.getReg(1); in selectMergeValues()
252 Register VReg2 = MIB.getReg(2); in selectMergeValues()
258 MIB->setDesc(TII.get(ARM::VMOVDRR)); in selectMergeValues()
259 MIB.add(predOps(ARMCC::AL)); in selectMergeValues()
264 static bool selectUnmergeValues(MachineInstrBuilder &MIB, in selectUnmergeValues() argument
274 Register VReg0 = MIB.getReg(0); in selectUnmergeValues()
279 Register VReg1 = MIB.getReg(1); in selectUnmergeValues()
284 Register VReg2 = MIB.getReg(2); in selectUnmergeValues()
290 MIB->setDesc(TII.get(ARM::VMOVRRD)); in selectUnmergeValues()
291 MIB.add(predOps(ARMCC::AL)); in selectUnmergeValues()
485 InsertInfo(MachineInstrBuilder &MIB) in InsertInfo()
486 : MBB(*MIB->getParent()), InsertBefore(std::next(MIB->getIterator())), in InsertInfo()
487 DbgLoc(MIB->getDebugLoc()) {} in InsertInfo()
529 MachineInstrBuilder &MIB, in selectCmp() argument
531 const InsertInfo I(MIB); in selectCmp()
533 auto ResReg = MIB.getReg(0); in selectCmp()
538 static_cast<CmpInst::Predicate>(MIB->getOperand(1).getPredicate()); in selectCmp()
541 MIB->eraseFromParent(); in selectCmp()
545 auto LHSReg = MIB.getReg(2); in selectCmp()
546 auto RHSReg = MIB.getReg(3); in selectCmp()
571 MIB->eraseFromParent(); in selectCmp()
611 bool ARMInstructionSelector::selectGlobal(MachineInstrBuilder &MIB, in selectGlobal() argument
618 auto GV = MIB->getOperand(1).getGlobal(); in selectGlobal()
624 auto &MBB = *MIB->getParent(); in selectGlobal()
629 LLT PtrTy = MRI.getType(MIB->getOperand(0).getReg()); in selectGlobal()
633 MachineInstrBuilder &MIB, in selectGlobal()
635 assert((MIB->getOpcode() == ARM::LDRi12 || in selectGlobal()
636 MIB->getOpcode() == ARM::t2LDRpci) && in selectGlobal()
646 MIB.addConstantPoolIndex(CPIndex, /*Offset*/ 0, /*TargetFlags*/ 0) in selectGlobal()
650 if (MIB->getOpcode() == ARM::LDRi12) in selectGlobal()
651 MIB.addImm(0); in selectGlobal()
652 MIB.add(predOps(ARMCC::AL)); in selectGlobal()
655 auto addGOTMemOperand = [this, &MF, Alignment](MachineInstrBuilder &MIB) { in selectGlobal() argument
656 MIB.addMemOperand(MF.getMachineMemOperand( in selectGlobal()
679 MIB->setDesc(TII.get(Opc)); in selectGlobal()
686 MIB->getOperand(1).setTargetFlags(TargetFlags); in selectGlobal()
690 auto ResultReg = MIB.getReg(0); in selectGlobal()
693 MIB->getOperand(0).setReg(AddressReg); in selectGlobal()
695 auto InsertBefore = std::next(MIB->getIterator()); in selectGlobal()
696 auto MIBLoad = BuildMI(MBB, InsertBefore, MIB->getDebugLoc(), in selectGlobal()
707 addGOTMemOperand(MIB); in selectGlobal()
711 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
717 MIB->setDesc(TII.get(Opc)); in selectGlobal()
718 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
724 OffsetMIB = BuildMI(MBB, *MIB, MIB->getDebugLoc(), in selectGlobal()
729 OffsetMIB = BuildMI(MBB, *MIB, MIB->getDebugLoc(), in selectGlobal()
737 MIB->setDesc(TII.get(Opcodes.ADDrr)); in selectGlobal()
738 MIB->removeOperand(1); in selectGlobal()
739 MIB.addReg(ARM::R9) // FIXME: don't hardcode R9 in selectGlobal()
744 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
749 MIB->setDesc(TII.get(Opcodes.MOVi32imm)); in selectGlobal()
752 MIB->setDesc(TII.get(Opcodes.ConstPoolLoad)); in selectGlobal()
753 MIB->removeOperand(1); in selectGlobal()
754 addOpsForConstantPoolLoad(MIB, GV, /*IsSBREL*/ false); in selectGlobal()
758 MIB->setDesc(TII.get(Opcodes.MOVi32imm)); in selectGlobal()
760 MIB->setDesc(TII.get(Opcodes.LDRLIT_ga_abs)); in selectGlobal()
766 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
769 bool ARMInstructionSelector::selectSelect(MachineInstrBuilder &MIB, in selectSelect() argument
771 auto &MBB = *MIB->getParent(); in selectSelect()
772 auto InsertBefore = std::next(MIB->getIterator()); in selectSelect()
773 auto &DbgLoc = MIB->getDebugLoc(); in selectSelect()
776 auto CondReg = MIB.getReg(1); in selectSelect()
788 auto ResReg = MIB.getReg(0); in selectSelect()
789 auto TrueReg = MIB.getReg(2); in selectSelect()
790 auto FalseReg = MIB.getReg(3); in selectSelect()
802 MIB->eraseFromParent(); in selectSelect()
807 MachineInstrBuilder &MIB) const { in selectShift()
809 MIB->setDesc(TII.get(ARM::MOVsr)); in selectShift()
810 MIB.addImm(ShiftOpc); in selectShift()
811 MIB.add(predOps(ARMCC::AL)).add(condCodeOp()); in selectShift()
812 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectShift()
840 void ARMInstructionSelector::renderInvertedImm(MachineInstrBuilder &MIB, in renderInvertedImm() argument
846 MIB.addImm(~CVal); in renderInvertedImm()
869 MachineInstrBuilder MIB{MF, I}; in select() local
886 MIB.addImm(1).add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
914 MIB.addImm(0).add(predOps(ARMCC::AL)); in select()
954 MIB->eraseFromParent(); in select()
996 MIB.add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
1010 MIB->setDesc(TII.get(LoadOpcode)); in select()
1011 MIB->removeOperand(1); in select()
1012 MIB.addConstantPoolIndex(CPIndex, /*Offset*/ 0, /*TargetFlags*/ 0) in select()
1045 return selectSelect(MIB, MRI); in select()
1049 return selectCmp(Helper, MIB, MRI); in select()
1068 return selectCmp(Helper, MIB, MRI); in select()
1071 return selectShift(ARM_AM::ShiftOpc::lsr, MIB); in select()
1073 return selectShift(ARM_AM::ShiftOpc::asr, MIB); in select()
1075 return selectShift(ARM_AM::ShiftOpc::lsl, MIB); in select()
1079 MIB.add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
1085 MIB.addImm(0).add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
1088 return selectGlobal(MIB, MRI); in select()
1114 MIB.addReg(0); in select()
1115 MIB.addImm(0).add(predOps(ARMCC::AL)); in select()
1119 if (!selectMergeValues(MIB, TII, MRI, TRI, RBI)) in select()
1124 if (!selectUnmergeValues(MIB, TII, MRI, TRI, RBI)) in select()