• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Target/X86/

Lines Matching refs:AM

87   bool X86FastEmitLoad(MVT VT, X86AddressMode &AM, MachineMemOperand *MMO,
90 bool X86FastEmitStore(EVT VT, const Value *Val, X86AddressMode &AM,
93 X86AddressMode &AM,
99 bool X86SelectAddress(const Value *V, X86AddressMode &AM);
100 bool X86SelectCallAddress(const Value *V, X86AddressMode &AM);
146 bool handleConstantAddresses(const Value *V, X86AddressMode &AM);
175 X86AddressMode &AM);
227 X86AddressMode &AM) {
229 AM.IndexReg = constrainOperandRegClass(MIB->getDesc(), AM.IndexReg,
232 return ::addFullAddress(MIB, AM);
317 bool X86FastISel::X86FastEmitLoad(MVT VT, X86AddressMode &AM,
472 addFullAddress(MIB, AM);
483 X86AddressMode &AM,
649 addFullAddress(MIB, AM).addReg(ValReg, getKillRegState(ValIsKill));
657 X86AddressMode &AM,
685 addFullAddress(MIB, AM).addImm(Signed ? (uint64_t) CI->getSExtValue()
698 return X86FastEmitStore(VT, ValReg, ValKill, AM, MMO, Aligned);
716 bool X86FastISel::handleConstantAddresses(const Value *V, X86AddressMode &AM) {
735 (AM.Base.Reg == 0 && AM.IndexReg == 0)) {
737 AM.GV = GV;
745 AM.Base.Reg = getInstrInfo()->getGlobalBaseReg(FuncInfo.MF);
754 assert(AM.Base.Reg == 0 && AM.IndexReg == 0);
755 AM.Base.Reg = X86::RIP;
757 AM.GVOpFlags = GVFlags;
772 StubAM.Base.Reg = AM.Base.Reg;
804 AM.Base.Reg = LoadReg;
805 AM.GV = nullptr;
811 if (!AM.GV || !Subtarget->isPICStyleRIPRel()) {
812 if (AM.Base.Reg == 0) {
813 AM.Base.Reg = getRegForValue(V);
814 return AM.Base.Reg != 0;
816 if (AM.IndexReg == 0) {
817 assert(AM.Scale == 1 && "Scale with no index!");
818 AM.IndexReg = getRegForValue(V);
819 return AM.IndexReg != 0;
828 bool X86FastISel::X86SelectAddress(const Value *V, X86AddressMode &AM) {
857 return X86SelectAddress(U->getOperand(0), AM);
863 return X86SelectAddress(U->getOperand(0), AM);
869 return X86SelectAddress(U->getOperand(0), AM);
878 AM.BaseType = X86AddressMode::FrameIndexBase;
879 AM.Base.FrameIndex = SI->second;
888 uint64_t Disp = (int32_t)AM.Disp + (uint64_t)CI->getSExtValue();
891 AM.Disp = (uint32_t)Disp;
892 return X86SelectAddress(U->getOperand(0), AM);
899 X86AddressMode SavedAM = AM;
902 uint64_t Disp = (int32_t)AM.Disp;
903 unsigned IndexReg = AM.IndexReg;
904 unsigned Scale = AM.Scale;
936 (!AM.GV || !Subtarget->isPICStyleRIPRel()) &&
954 AM.IndexReg = IndexReg;
955 AM.Scale = Scale;
956 AM.Disp = (uint32_t)Disp;
965 } else if (X86SelectAddress(U->getOperand(0), AM)) {
971 AM = SavedAM;
974 if (handleConstantAddresses(I, AM))
984 return handleConstantAddresses(V, AM);
989 bool X86FastISel::X86SelectCallAddress(const Value *V, X86AddressMode &AM) {
1031 return X86SelectCallAddress(U->getOperand(0), AM);
1039 return X86SelectCallAddress(U->getOperand(0), AM);
1045 return X86SelectCallAddress(U->getOperand(0), AM);
1057 (AM.Base.Reg != 0 || AM.IndexReg != 0))
1066 AM.GV = GV;
1074 assert(AM.Base.Reg == 0 && AM.IndexReg == 0);
1075 AM.Base.Reg = X86::RIP;
1077 AM.GVOpFlags = Subtarget->classifyLocalReference(nullptr);
1084 if (!AM.GV || !Subtarget->isPICStyleRIPRel()) {
1085 if (AM.Base.Reg == 0) {
1086 AM.Base.Reg = getRegForValue(V);
1087 return AM.Base.Reg != 0;
1089 if (AM.IndexReg == 0) {
1090 assert(AM.Scale == 1 && "Scale with no index!");
1091 AM.IndexReg = getRegForValue(V);
1092 return AM.IndexReg != 0;
1134 X86AddressMode AM;
1135 if (!X86SelectAddress(Ptr, AM))
1138 return X86FastEmitStore(VT, Val, AM, createMachineMemOperandFor(I), Aligned);
1318 X86AddressMode AM;
1319 if (!X86SelectAddress(Ptr, AM))
1323 if (!X86FastEmitLoad(VT, AM, createMachineMemOperandFor(LI), ResultReg,
2775 X86AddressMode AM;
2776 if (!X86SelectAddress(Slot, AM)) return false;
2777 if (!X86FastEmitStore(PtrTy, Op1, AM)) return false;
2782 X86AddressMode AM;
2784 if (!X86SelectAddress(DI->getAddress(), AM))
2791 addFullAddress(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, II), AM)
3411 X86AddressMode AM;
3412 AM.Base.Reg = RegInfo->getStackRegister();
3413 AM.Disp = LocMemOffset;
3422 if (!TryEmitSmallMemcpy(AM, SrcAM, Flags.getByValSize()))
3428 if (!X86FastEmitStore(ArgVT, ArgVal, AM, MMO))
3432 if (!X86FastEmitStore(ArgVT, ArgReg, ValIsKill, AM, MMO))
3816 X86AddressMode AM;
3817 if (X86SelectAddress(GV, AM)) {
3820 if (AM.BaseType == X86AddressMode::RegBase &&
3821 AM.IndexReg == 0 && AM.Disp == 0 && AM.GV == nullptr)
3822 return AM.Base.Reg;
3838 TII.get(Opc), ResultReg), AM);
3875 X86AddressMode AM;
3876 if (!X86SelectAddress(C, AM))
3885 TII.get(Opc), ResultReg), AM);
3925 X86AddressMode AM;
3926 if (!X86SelectAddress(Ptr, AM))
3934 AM.getFullAddress(AddrOps);
3951 if (!MO.isReg() || MO.isDef() || MO.getReg() != AM.IndexReg)