Home
last modified time | relevance | path

Searched refs:memOpnd (Results 1 - 25 of 30) sorted by relevance

12

/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/src/cg/aarch64/
H A Daarch64_obj_emitter.cpp469 const MemOperand &memOpnd = static_cast<const MemOperand &>(opnd); in GetAdrLabelOpndValue() local
470 Fixup *fixup = memPool->New<Fixup>(memOpnd.GetSymbolName(), 0, objFuncEmitInfo.GetTextDataSize(), fixupKind); in GetAdrLabelOpndValue()
556 const MemOperand &memOpnd = static_cast<const MemOperand &>(opnd);
558 if (memOpnd.GetOffsetImmediate() != nullptr) {
559 offset = static_cast<uint32>(memOpnd.GetOffsetImmediate()->GetOffsetValue());
562 memPool->New<Fixup>(memOpnd.GetSymbolName(), offset, objFuncEmitInfo.GetTextDataSize(), fixupKind);
1046 MemOperand &memOpnd = static_cast<MemOperand &>(insn.GetOperand(kInsnSecondOpnd));
1049 memPool->New<LocalFixup>(objFuncEmitInfo.GetCGFunc().GetLocalSymLabelIndex(*memOpnd.GetSymbol()),
1070 MemOperand &memOpnd = static_cast<MemOperand &>(insn.GetOperand(kInsnSecondOpnd));
1071 OfstOperand *ofstOpnd = static_cast<OfstOperand *>(memOpnd
[all...]
H A Daarch64_reg_info.cpp90 Insn *AArch64RegInfo::BuildStrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) in BuildStrInsn() argument
93 return &a64CGFunc->GetInsnBuilder()->BuildInsn(a64CGFunc->PickStInsn(regSize, stype), phyOpnd, memOpnd); in BuildStrInsn()
96 Insn *AArch64RegInfo::BuildLdrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) in BuildLdrInsn() argument
99 return &a64CGFunc->GetInsnBuilder()->BuildInsn(a64CGFunc->PickLdInsn(regSize, stype), phyOpnd, memOpnd); in BuildLdrInsn()
107 MemOperand *AArch64RegInfo::AdjustMemOperandIfOffsetOutOfRange(MemOperand *memOpnd, const RegNoPair &regNoPair, in AdjustMemOperandIfOffsetOutOfRange() argument
111 return a64CGFunc->AdjustMemOperandIfOffsetOutOfRange(memOpnd, static_cast<AArch64reg>(regNoPair.first), isDest, in AdjustMemOperandIfOffsetOutOfRange()
H A Daarch64_peep.cpp385 void EnhanceStrLdrAArch64::OptimizeAddrBOI(Insn &insn, MemOperand &memOpnd, Insn &prevInsn) in OptimizeAddrBOI() argument
387 auto *oriBase = memOpnd.GetBaseRegister(); in OptimizeAddrBOI()
388 auto *oriOffset = memOpnd.GetOffsetOperand(); in OptimizeAddrBOI()
394 auto *newOffset = GetInsnAddOrSubNewOffset(prevInsn, *memOpnd.GetOffsetOperand()); in OptimizeAddrBOI()
399 memOpnd.SetBaseRegister(*newBase); in OptimizeAddrBOI()
400 memOpnd.SetOffsetOperand(*newOffset); in OptimizeAddrBOI()
401 if (!static_cast<AArch64CGFunc &>(cgFunc).IsOperandImmValid(insn.GetMachineOpcode(), &memOpnd, kInsnSecondOpnd)) { in OptimizeAddrBOI()
403 memOpnd.SetBaseRegister(*oriBase); in OptimizeAddrBOI()
404 memOpnd.SetOffsetOperand(*oriOffset); in OptimizeAddrBOI()
407 memOpnd in OptimizeAddrBOI()
411 OptimizeAddrBOrXShiftExtend(Insn &insn, MemOperand &memOpnd, Insn &shiftExtendInsn) OptimizeAddrBOrXShiftExtend() argument
441 OptimizeAddrBOrX(Insn &insn, MemOperand &memOpnd, Insn &prevInsn) OptimizeAddrBOrX() argument
464 OptimizeWithAddrrrs(Insn &insn, MemOperand &memOpnd, Insn &addInsn) OptimizeWithAddrrrs() argument
490 auto &memOpnd = static_cast<MemOperand &>(opnd); Run() local
787 IsValidNormalLoadOrStorePattern(const Insn &insn, const Insn &prevInsn, const MemOperand &memOpnd, int64 curOfstVal, int64 prevOfstVal) IsValidNormalLoadOrStorePattern() argument
1103 auto &memOpnd = static_cast<MemOperand &>(opnd); Run() local
1685 MemOperand &memOpnd = static_cast<MemOperand &>(nextInsn->GetOperand(kInsnSecondOpnd)); Run() local
2081 auto &memOpnd = static_cast<MemOperand &>(opnd); DefInsnOfOperandInBB() local
2279 MemOperand *memOpnd = static_cast<MemOperand *>(nextInsn->GetMemOpnd()); Run() local
[all...]
H A Daarch64_isa.cpp152 auto *memOpnd = static_cast<MemOperand *>(o); in GetMemOpndOffsetValue() local
153 CHECK_FATAL(memOpnd != nullptr, "memOpnd should not be nullptr"); in GetMemOpndOffsetValue()
154 // kBOR memOpnd has no offsetvalue, so return 0 for verify. in GetMemOpndOffsetValue()
156 if (memOpnd->GetAddrMode() == MemOperand::kAddrModeBOrX) { in GetMemOpndOffsetValue()
160 OfstOperand *ofStOpnd = memOpnd->GetOffsetImmediate(); in GetMemOpndOffsetValue()
H A Daarch64_cgfunc.cpp390 MemOperand *memOpnd = static_cast<MemOperand *>(&dest); in SelectCopyRegOpnd() local
391 DEBUG_ASSERT(memOpnd != nullptr, "memOpnd should not be nullptr"); in SelectCopyRegOpnd()
392 if (memOpnd->GetAddrMode() == MemOperand::kAddrModeLo12Li) { in SelectCopyRegOpnd()
396 if (memOpnd->GetOffsetOperand() == nullptr) { in SelectCopyRegOpnd()
400 ImmOperand *immOpnd = static_cast<ImmOperand *>(memOpnd->GetOffsetOperand()); in SelectCopyRegOpnd()
403 bool isIntactIndexed = memOpnd->IsIntactIndexed(); in SelectCopyRegOpnd()
404 bool isPostIndexed = memOpnd->IsPostIndexed(); in SelectCopyRegOpnd()
405 bool isPreIndexed = memOpnd->IsPreIndexed(); in SelectCopyRegOpnd()
406 DEBUG_ASSERT(!isPostIndexed, "memOpnd shoul in SelectCopyRegOpnd()
504 IsImmediateOffsetOutOfRange(const MemOperand &memOpnd, uint32 bitLen) IsImmediateOffsetOutOfRange() argument
542 auto *memOpnd = static_cast<MemOperand *>(o); IsOperandImmValid() local
576 CheckIfSplitOffsetWithAdd(const MemOperand &memOpnd, uint32 bitLen) const CheckIfSplitOffsetWithAdd() argument
607 SplitAndGetRemained(const MemOperand &memOpnd, uint32 bitLen, RegOperand *resOpnd, int64 ofstVal, bool isDest, Insn *insn, bool forPair) SplitAndGetRemained() argument
658 SplitOffsetWithAddInstruction(const MemOperand &memOpnd, uint32 bitLen, uint32 baseRegNum, bool isDest, Insn *insn, bool forPair) SplitOffsetWithAddInstruction() argument
706 MemOperand *memOpnd = nullptr; SelectDassign() local
834 MemOperand &memOpnd = CreateMemOpnd(destType, stmt, *stmt.Opnd(0), offset); SelectIassign() local
852 MemOperand *memOpnd = nullptr; SelectDread() local
953 MemOperand *memOpnd = CreateMemOpndOrNull(memType, expr, *expr.Opnd(0), SelectIread() local
[all...]
H A Daarch64_args.cpp63 auto *memOpnd = aarFunc->CreateMemOperand(GetPrimTypeBitSize(primType), *baseOpnd, ofstOpnd, false); in MoveRegisterArgs()
66 Insn &insn = aarFunc->GetInsnBuilder()->BuildInsn(mOp, regOpnd, *memOpnd); in MoveRegisterArgs()
94 MemOperand &memOpnd = aarFunc->GetOrCreateMemOpnd(mirSym, 0, bitSize, true); in MoveLocalRefVarToRefLocals() local
104 aarFunc->GetInsnBuilder()->BuildInsn(aarFunc->PickLdInsn(GetPrimTypeBitSize(stype), stype), *regOpnd, memOpnd); in MoveLocalRefVarToRefLocals()
118 MemOperand &memOpnd = aarFunc->GetOrCreateMemOpnd(mirSym, 0, bitSize); in LoadStackArgsToVReg() local
124 memOpnd); in LoadStackArgsToVReg()
H A Daarch64_offset_adjust.cpp190 auto *memOpnd = static_cast<MemOperand *>(insn.GetMemOpnd()); in AdjustmentStackPointer() local
191 CHECK_NULL_FATAL(memOpnd); in AdjustmentStackPointer()
192 DEBUG_ASSERT(memOpnd->GetBaseRegister() != nullptr, "Unexpect, need check"); in AdjustmentStackPointer()
193 CHECK_FATAL(memOpnd->IsIntactIndexed(), "unsupport yet"); in AdjustmentStackPointer()
194 ImmOperand *ofstOpnd = memOpnd->GetOffsetOperand(); in AdjustmentStackPointer()
198 memOpnd->SetOffsetOperand(*newOfstOpnd); in AdjustmentStackPointer()
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/src/cg/x86_64/
H A Dx64_reg_info.cpp74 Insn *X64RegInfo::BuildStrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) in BuildStrInsn() argument
96 insn.AddOpndChain(phyOpnd).AddOpndChain(memOpnd); in BuildStrInsn()
100 Insn *X64RegInfo::BuildLdrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) in BuildLdrInsn() argument
122 insn.AddOpndChain(memOpnd).AddOpndChain(phyOpnd); in BuildLdrInsn()
138 MemOperand *X64RegInfo::AdjustMemOperandIfOffsetOutOfRange(MemOperand *memOpnd, const RegNoPair &regNoPair, bool isDest, in AdjustMemOperandIfOffsetOutOfRange() argument
142 return memOpnd; in AdjustMemOperandIfOffsetOutOfRange()
H A Dx64_proepilog.cpp49 MemOperand &memOpnd = cgFunc.GetOpndBuilder()->CreateMem(baseReg, offset, regSize); in GenerateCalleeSavedRegs() local
51 GeneratePushCalleeSavedRegs(calleeReg, memOpnd, regSize); in GenerateCalleeSavedRegs()
53 GeneratePopCalleeSavedRegs(calleeReg, memOpnd, regSize); in GenerateCalleeSavedRegs()
65 void X64GenProEpilog::GeneratePushCalleeSavedRegs(RegOperand &regOpnd, MemOperand &memOpnd, uint32 regSize) in GeneratePushCalleeSavedRegs() argument
69 copyInsn.AddOpndChain(regOpnd).AddOpndChain(memOpnd); in GeneratePushCalleeSavedRegs()
73 void X64GenProEpilog::GeneratePopCalleeSavedRegs(RegOperand &regOpnd, MemOperand &memOpnd, uint32 regSize) in GeneratePopCalleeSavedRegs() argument
77 copyInsn.AddOpndChain(memOpnd).AddOpndChain(regOpnd); in GeneratePopCalleeSavedRegs()
H A Dx64_cgfunc.cpp405 MemOperand *memOpnd = nullptr; in FreeSpillRegMem() local
409 memOpnd = p->second; in FreeSpillRegMem()
412 if ((memOpnd == nullptr) && IsVRegNOForPseudoRegister(vrNum)) { in FreeSpillRegMem()
415 memOpnd = pSecond->second; in FreeSpillRegMem()
419 if (memOpnd == nullptr) { in FreeSpillRegMem()
424 uint32 size = memOpnd->GetSize(); in FreeSpillRegMem()
427 iter->second->Add(*memOpnd); in FreeSpillRegMem()
430 reuseSpillLocMem[size]->Add(*memOpnd); in FreeSpillRegMem()
449 MemOperand *memOpnd = it->second->GetOne(); in GetOrCreatSpillMem() local
450 if (memOpnd ! in GetOrCreatSpillMem()
458 MemOperand *memOpnd = &GetOpndBuilder()->CreateMem(baseOpnd, offset, memBitSize); GetOrCreatSpillMem() local
[all...]
H A Dx64_args.cpp128 MemOperand *memOpnd = &x64CGFunc->GetOpndBuilder()->CreateMem(*baseOpnd, stOffset, opndSize); in GenerateMovInsn() local
144 insn.AddOpndChain(regOpnd).AddOpndChain(*memOpnd); in GenerateMovInsn()
191 MemOperand &memOpnd = x64CGFunc->GetOpndBuilder()->CreateMem(*baseOpnd, stOffset, opndSize); in LoadStackArgsToVReg() local
210 insn.AddOpndChain(memOpnd).AddOpndChain(dstRegOpnd); in LoadStackArgsToVReg()
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/src/cg/
H A Dinsn.cpp176 auto &memOpnd = static_cast<MemOperand &>(opnd); in GetDefRegs() local
177 RegOperand *base = memOpnd.GetBaseRegister(); in GetDefRegs()
179 if (memOpnd.GetAddrMode() == MemOperand::kAddrModeBOi && in GetDefRegs()
180 (memOpnd.IsPostIndexed() || memOpnd.IsPreIndexed())) { in GetDefRegs()
264 auto &memOpnd = static_cast<MemOperand &>(opnd); in ScanReg() local
265 RegOperand *base = memOpnd.GetBaseRegister(); in ScanReg()
266 RegOperand *index = memOpnd.GetIndexRegister(); in ScanReg()
H A Dreg_alloc_lsra.cpp698 auto &memOpnd = static_cast<MemOperand &>(opnd); in ComputeLiveIntervalForEachOperand() local
699 RegOperand *base = memOpnd.GetBaseRegister(); in ComputeLiveIntervalForEachOperand()
700 RegOperand *offset = memOpnd.GetIndexRegister(); in ComputeLiveIntervalForEachOperand()
1176 MemOperand *memOpnd = nullptr; in InsertCallerSave() local
1185 memOpnd = GetSpillMem(vRegNO, true, insn, tmpReg, isOutOfRange, regSize); in InsertCallerSave()
1186 Insn *stInsn = regInfo->BuildStrInsn(regSize, spType, *phyOpnd, *memOpnd); in InsertCallerSave()
1202 memOpnd = GetSpillMem(vRegNO, false, insn, tmpReg, isOutOfRange, regSize); in InsertCallerSave()
1203 Insn *ldInsn = regInfo->BuildLdrInsn(regSize, spType, *phyOpnd, *memOpnd); in InsertCallerSave()
1218 MemOperand *memOpnd = regInfo->GetOrCreatSpillMem(vRegNO, bitSize); in GetSpillMem() local
1219 return regInfo->AdjustMemOperandIfOffsetOutOfRange(memOpnd, st in GetSpillMem()
1301 MemOperand *memOpnd = nullptr; SpillOperand() local
1747 auto *memOpnd = static_cast<MemOperand*>(static_cast<MemOperand&>(opnd).Clone(*cgFunc->GetMemoryPool())); FinalizeUseRegisters() local
1987 MemOperand *memOpnd = cgFunc->GetOrCreatSpillMem(vRegNO, regOpnd.GetSize()); SolveRegOpndDeoptInfo() local
1995 SolveMemOpndDeoptInfo(const MemOperand &memOpnd, DeoptInfo &deoptInfo, int32 deoptVregNO) const SolveMemOpndDeoptInfo() argument
[all...]
H A Dpeep.cpp453 auto *memOpnd = static_cast<MemOperand *>(nextInsn.GetMemOpnd()); in IsMemOperandOptPattern() local
454 DEBUG_ASSERT(memOpnd != nullptr, "null ptr check"); in IsMemOperandOptPattern()
456 if (memOpnd->GetAddrMode() != MemOperand::kAddrModeBOi) { in IsMemOperandOptPattern()
460 if (memOpnd->GetOffsetImmediate()->GetOffsetValue() != 0) { in IsMemOperandOptPattern()
464 if (!memOpnd->IsIntactIndexed()) { in IsMemOperandOptPattern()
470 if (memOpnd->GetBaseRegister() != &oldBaseOpnd) { in IsMemOperandOptPattern()
H A Dlive.cpp303 auto &memOpnd = static_cast<MemOperand &>(opnd); in ProcessMemOpnd() local
304 Operand *base = memOpnd.GetBaseRegister(); in ProcessMemOpnd()
305 Operand *offset = memOpnd.GetIndexRegister(); in ProcessMemOpnd()
307 CollectLiveInfo(bb, *base, !memOpnd.IsIntactIndexed(), true); in ProcessMemOpnd()
H A Doptimize_common.cpp186 auto &memOpnd = static_cast<MemOperand &>(opnd); in DumpBBInstructions() local
187 found = FoundMemAccessOpndRegNum(memOpnd, *insn, vReg); in DumpBBInstructions()
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/include/cg/x86_64/
H A Dx64_proepilog.h36 void GeneratePushCalleeSavedRegs(RegOperand &regOpnd, MemOperand &memOpnd, uint32 regSize);
37 void GeneratePopCalleeSavedRegs(RegOperand &regOpnd, MemOperand &memOpnd, uint32 regSize);
H A Dx64_reg_info.h39 Insn *BuildStrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) override;
40 Insn *BuildLdrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) override;
43 MemOperand *AdjustMemOperandIfOffsetOutOfRange(MemOperand *memOpnd, const RegNoPair &regNoPair, bool isDest,
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/include/cg/aarch64/
H A Daarch64_reg_info.h137 Insn *BuildStrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) override;
138 Insn *BuildLdrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) override;
140 MemOperand *AdjustMemOperandIfOffsetOutOfRange(MemOperand *memOpnd, const RegNoPair &regNoPair, bool isDest,
H A Daarch64_mop_split.h42 inline ImmOperand &SplitGetRemained(const MemOperand &memOpnd, uint32 bitLen, int64 ofstVal, bool forPair, in SplitGetRemained() argument
79 if (memOpnd.GetOffsetImmediate()->GetVary() == kUnAdjustVary) { in SplitGetRemained()
357 inline MemOperand &MemOfstSplitWithAdd(const MemOperand &memOpnd, uint32 bitLen, bool isAfterRegAlloc, Insn *insn, in MemOfstSplitWithAdd() argument
360 DEBUG_ASSERT((memOpnd.GetAddrMode() == MemOperand::kAddrModeBOi), "expect kAddrModeBOi memOpnd"); in MemOfstSplitWithAdd()
361 DEBUG_ASSERT(memOpnd.IsIntactIndexed(), "expect intactIndexed memOpnd"); in MemOfstSplitWithAdd()
363 OfstOperand *ofstOpnd = memOpnd.GetOffsetImmediate(); in MemOfstSplitWithAdd()
366 ImmOperand &immAddend = SplitGetRemained(memOpnd, bitLen, ofstVal, forPair, opndBuilder); in MemOfstSplitWithAdd()
368 RegOperand *origBaseReg = memOpnd in MemOfstSplitWithAdd()
391 MemOperand &memOpnd = static_cast<MemOperand &>(insn->GetOperand(idx)); LoadStoreInsnSplit() local
[all...]
H A Daarch64_peep.h112 bool IsValidNormalLoadOrStorePattern(const Insn &insn, const Insn &prevInsn, const MemOperand &memOpnd,
141 void OptimizeAddrBOI(Insn &insn, MemOperand &memOpnd, Insn &prevInsn);
142 void OptimizeAddrBOrX(Insn &insn, MemOperand &memOpnd, Insn &prevInsn);
143 void OptimizeAddrBOrXShiftExtend(Insn &insn, MemOperand &memOpnd, Insn &shiftExtendInsn);
144 void OptimizeWithAddrrrs(Insn &insn, MemOperand &memOpnd, Insn &addInsn);
H A Daarch64_mop_valid.h34 MemOperand *memOpnd = static_cast<MemOperand *>(o); in StrLdr16Valid() local
35 if (memOpnd->GetAddrMode() == MemOperand::kAddrModeLo12Li) { in StrLdr16Valid()
37 const MIRSymbol *sym = memOpnd->GetSymbol(); in StrLdr16Valid()
44 return StrLdrInsnSignedOfstValid(AArch64isa::GetMemOpndOffsetValue(o), k1ByteSize, memOpnd->IsIntactIndexed()); in StrLdr16Valid()
50 MemOperand *memOpnd = static_cast<MemOperand *>(o); in StrLdr32Valid() local
51 if (memOpnd->GetAddrMode() == MemOperand::kAddrModeLo12Li) { in StrLdr32Valid()
53 const MIRSymbol *sym = memOpnd->GetSymbol(); in StrLdr32Valid()
60 return StrLdrInsnSignedOfstValid(AArch64isa::GetMemOpndOffsetValue(o), k2ByteSize, memOpnd->IsIntactIndexed()); in StrLdr32Valid()
77 MemOperand *memOpnd = static_cast<MemOperand *>(o); in StrLdr64Valid() local
78 if (memOpnd in StrLdr64Valid()
104 MemOperand *memOpnd = static_cast<MemOperand *>(o); StrLdr128Valid() local
[all...]
/arkcompiler/ets_runtime/ecmascript/compiler/assembler/aarch64/
H A Dmacro_assembler_aarch64.cpp183 void MacroAssemblerAArch64::PickLoadStoreInsn(aarch64::Register reg, aarch64::MemoryOperand memOpnd, bool isLoad) in PickLoadStoreInsn() argument
187 int64_t value = memOpnd.GetImmediate().Value(); in PickLoadStoreInsn()
197 assembler.Ldr(reg, memOpnd); in PickLoadStoreInsn()
204 assembler.Str(reg, memOpnd); in PickLoadStoreInsn()
207 assembler.Ldur(reg, memOpnd); in PickLoadStoreInsn()
210 assembler.Stur(reg, memOpnd); in PickLoadStoreInsn()
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/include/cg/
H A Doperand.h1081 explicit MemOperand(const MemOperand &memOpnd) in MemOperand() argument
1082 : OperandVisitable(Operand::kOpdMem, memOpnd.GetSize()), in MemOperand()
1083 baseOpnd(memOpnd.baseOpnd), in MemOperand()
1084 indexOpnd(memOpnd.indexOpnd), in MemOperand()
1085 offsetOpnd(memOpnd.offsetOpnd), in MemOperand()
1086 scaleOpnd(memOpnd.scaleOpnd), in MemOperand()
1087 symbol(memOpnd.symbol), in MemOperand()
1088 memoryOrder(memOpnd.memoryOrder), in MemOperand()
1089 addrMode(memOpnd.addrMode), in MemOperand()
1090 extend(memOpnd in MemOperand()
1099 MemOperand &operator=(const MemOperand &memOpnd) = default; global() variable
1106 auto *memOpnd = allocator.GetMemPool()->New<MemOperand>(*this); global() variable
[all...]
H A Dreg_info.h257 virtual Insn *BuildStrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) = 0;
258 virtual Insn *BuildLdrInsn(uint32 regSize, PrimType stype, RegOperand &phyOpnd, MemOperand &memOpnd) = 0;
260 virtual MemOperand *AdjustMemOperandIfOffsetOutOfRange(MemOperand *memOpnd, const RegNoPair &regNoPair, bool isDest,

Completed in 25 milliseconds

12