Lines Matching refs: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;
231 static bool selectMergeValues(MachineInstrBuilder &MIB, in selectMergeValues() argument
240 Register VReg0 = MIB.getReg(0); in selectMergeValues()
245 Register VReg1 = MIB.getReg(1); in selectMergeValues()
250 Register VReg2 = MIB.getReg(2); in selectMergeValues()
256 MIB->setDesc(TII.get(ARM::VMOVDRR)); in selectMergeValues()
257 MIB.add(predOps(ARMCC::AL)); in selectMergeValues()
262 static bool selectUnmergeValues(MachineInstrBuilder &MIB, in selectUnmergeValues() argument
272 Register VReg0 = MIB.getReg(0); in selectUnmergeValues()
277 Register VReg1 = MIB.getReg(1); in selectUnmergeValues()
282 Register VReg2 = MIB.getReg(2); in selectUnmergeValues()
288 MIB->setDesc(TII.get(ARM::VMOVRRD)); in selectUnmergeValues()
289 MIB.add(predOps(ARMCC::AL)); in selectUnmergeValues()
483 InsertInfo(MachineInstrBuilder &MIB) in InsertInfo()
484 : MBB(*MIB->getParent()), InsertBefore(std::next(MIB->getIterator())), in InsertInfo()
485 DbgLoc(MIB->getDebugLoc()) {} in InsertInfo()
527 MachineInstrBuilder &MIB, in selectCmp() argument
529 const InsertInfo I(MIB); in selectCmp()
531 auto ResReg = MIB.getReg(0); in selectCmp()
536 static_cast<CmpInst::Predicate>(MIB->getOperand(1).getPredicate()); in selectCmp()
539 MIB->eraseFromParent(); in selectCmp()
543 auto LHSReg = MIB.getReg(2); in selectCmp()
544 auto RHSReg = MIB.getReg(3); in selectCmp()
569 MIB->eraseFromParent(); in selectCmp()
609 bool ARMInstructionSelector::selectGlobal(MachineInstrBuilder &MIB, in selectGlobal() argument
616 auto GV = MIB->getOperand(1).getGlobal(); in selectGlobal()
622 auto &MBB = *MIB->getParent(); in selectGlobal()
627 LLT PtrTy = MRI.getType(MIB->getOperand(0).getReg()); in selectGlobal()
631 MachineInstrBuilder &MIB, in selectGlobal()
633 assert((MIB->getOpcode() == ARM::LDRi12 || in selectGlobal()
634 MIB->getOpcode() == ARM::t2LDRpci) && in selectGlobal()
644 MIB.addConstantPoolIndex(CPIndex, /*Offset*/ 0, /*TargetFlags*/ 0) in selectGlobal()
648 if (MIB->getOpcode() == ARM::LDRi12) in selectGlobal()
649 MIB.addImm(0); in selectGlobal()
650 MIB.add(predOps(ARMCC::AL)); in selectGlobal()
653 auto addGOTMemOperand = [this, &MF, Alignment](MachineInstrBuilder &MIB) { in selectGlobal() argument
654 MIB.addMemOperand(MF.getMachineMemOperand( in selectGlobal()
677 MIB->setDesc(TII.get(Opc)); in selectGlobal()
684 MIB->getOperand(1).setTargetFlags(TargetFlags); in selectGlobal()
688 auto ResultReg = MIB.getReg(0); in selectGlobal()
691 MIB->getOperand(0).setReg(AddressReg); in selectGlobal()
693 auto InsertBefore = std::next(MIB->getIterator()); in selectGlobal()
694 auto MIBLoad = BuildMI(MBB, InsertBefore, MIB->getDebugLoc(), in selectGlobal()
705 addGOTMemOperand(MIB); in selectGlobal()
709 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
715 MIB->setDesc(TII.get(Opc)); in selectGlobal()
716 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
722 OffsetMIB = BuildMI(MBB, *MIB, MIB->getDebugLoc(), in selectGlobal()
727 OffsetMIB = BuildMI(MBB, *MIB, MIB->getDebugLoc(), in selectGlobal()
735 MIB->setDesc(TII.get(Opcodes.ADDrr)); in selectGlobal()
736 MIB->removeOperand(1); in selectGlobal()
737 MIB.addReg(ARM::R9) // FIXME: don't hardcode R9 in selectGlobal()
742 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
747 MIB->setDesc(TII.get(Opcodes.MOVi32imm)); in selectGlobal()
750 MIB->setDesc(TII.get(Opcodes.ConstPoolLoad)); in selectGlobal()
751 MIB->removeOperand(1); in selectGlobal()
752 addOpsForConstantPoolLoad(MIB, GV, /*IsSBREL*/ false); in selectGlobal()
756 MIB->setDesc(TII.get(Opcodes.MOVi32imm)); in selectGlobal()
758 MIB->setDesc(TII.get(Opcodes.LDRLIT_ga_abs)); in selectGlobal()
764 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectGlobal()
767 bool ARMInstructionSelector::selectSelect(MachineInstrBuilder &MIB, in selectSelect() argument
769 auto &MBB = *MIB->getParent(); in selectSelect()
770 auto InsertBefore = std::next(MIB->getIterator()); in selectSelect()
771 auto &DbgLoc = MIB->getDebugLoc(); in selectSelect()
774 auto CondReg = MIB.getReg(1); in selectSelect()
786 auto ResReg = MIB.getReg(0); in selectSelect()
787 auto TrueReg = MIB.getReg(2); in selectSelect()
788 auto FalseReg = MIB.getReg(3); in selectSelect()
800 MIB->eraseFromParent(); in selectSelect()
805 MachineInstrBuilder &MIB) const { in selectShift()
807 MIB->setDesc(TII.get(ARM::MOVsr)); in selectShift()
808 MIB.addImm(ShiftOpc); in selectShift()
809 MIB.add(predOps(ARMCC::AL)).add(condCodeOp()); in selectShift()
810 return constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI); in selectShift()
858 MachineInstrBuilder MIB{MF, I}; in select() local
875 MIB.addImm(1).add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
903 MIB.addImm(0).add(predOps(ARMCC::AL)); in select()
943 MIB->eraseFromParent(); in select()
985 MIB.add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
999 MIB->setDesc(TII.get(LoadOpcode)); in select()
1000 MIB->removeOperand(1); in select()
1001 MIB.addConstantPoolIndex(CPIndex, /*Offset*/ 0, /*TargetFlags*/ 0) in select()
1034 return selectSelect(MIB, MRI); in select()
1038 return selectCmp(Helper, MIB, MRI); in select()
1057 return selectCmp(Helper, MIB, MRI); in select()
1060 return selectShift(ARM_AM::ShiftOpc::lsr, MIB); in select()
1062 return selectShift(ARM_AM::ShiftOpc::asr, MIB); in select()
1064 return selectShift(ARM_AM::ShiftOpc::lsl, MIB); in select()
1068 MIB.add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
1074 MIB.addImm(0).add(predOps(ARMCC::AL)).add(condCodeOp()); in select()
1077 return selectGlobal(MIB, MRI); in select()
1103 MIB.addReg(0); in select()
1104 MIB.addImm(0).add(predOps(ARMCC::AL)); in select()
1108 if (!selectMergeValues(MIB, TII, MRI, TRI, RBI)) in select()
1113 if (!selectUnmergeValues(MIB, TII, MRI, TRI, RBI)) in select()