Lines Matching defs:registers
1360 // Otherwise both inputs need to be available in registers. Synthesise them
2230 void MacroAssembler::PushCPURegList(CPURegList registers) {
2231 VIXL_ASSERT(!registers.Overlaps(*GetScratchRegisterList()));
2232 VIXL_ASSERT(!registers.Overlaps(*GetScratchVRegisterList()));
2235 int reg_size = registers.GetRegisterSizeInBytes();
2236 PrepareForPush(registers.GetCount(), reg_size);
2238 // Bump the stack pointer and store two registers at the bottom.
2239 int size = registers.GetTotalSizeInBytes();
2240 const CPURegister& bottom_0 = registers.PopLowestIndex();
2241 const CPURegister& bottom_1 = registers.PopLowestIndex();
2249 while (!registers.IsEmpty()) {
2250 const CPURegister& src0 = registers.PopLowestIndex();
2251 const CPURegister& src1 = registers.PopLowestIndex();
2262 void MacroAssembler::PopCPURegList(CPURegList registers) {
2263 VIXL_ASSERT(!registers.Overlaps(*GetScratchRegisterList()));
2264 VIXL_ASSERT(!registers.Overlaps(*GetScratchVRegisterList()));
2267 int reg_size = registers.GetRegisterSizeInBytes();
2268 PrepareForPop(registers.GetCount(), reg_size);
2271 int size = registers.GetTotalSizeInBytes();
2272 const CPURegister& bottom_0 = registers.PopLowestIndex();
2273 const CPURegister& bottom_1 = registers.PopLowestIndex();
2276 while (!registers.IsEmpty()) {
2277 const CPURegister& dst0 = registers.PopLowestIndex();
2278 const CPURegister& dst1 = registers.PopLowestIndex();
2287 // Load the two registers at the bottom and drop the stack pointer.
2301 // Push up to four registers at a time if possible because if the current
2302 // stack pointer is sp and the register size is 32, registers must be pushed
2326 // Ensure that we don't unintentionally modify scratch or debug registers.
2335 // When pushing multiple registers, the store order is chosen such that
2352 // Skip over 4 * size, then fill in the gap. This allows four W registers
2370 // Ensure that we don't unintentionally modify scratch or debug registers.
2379 // When popping multiple registers, the load order is chosen such that
2397 // the whole block in the second instruction. This allows four W registers
2412 // on entry and the total size of the specified registers must also be a
2428 // on entry and the total size of the specified registers must also be a
2495 // Ensure that the macro-assembler doesn't use any scratch registers.
2520 // Ensure that the macro-assembler doesn't use any scratch registers.
2543 void MacroAssembler::LoadCPURegList(CPURegList registers,
2545 LoadStoreCPURegListHelper(kLoad, registers, src);
2548 void MacroAssembler::StoreCPURegList(CPURegList registers,
2550 LoadStoreCPURegListHelper(kStore, registers, dst);
2555 CPURegList registers,
2560 VIXL_ASSERT(!registers.Overlaps(tmp_list_));
2562 VIXL_ASSERT(!registers.Overlaps(v_tmp_list_));
2563 VIXL_ASSERT(!registers.Overlaps(p_tmp_list_));
2564 VIXL_ASSERT(!registers.IncludesAliasOf(sp));
2568 MemOperand loc = BaseMemOperandForLoadStoreCPURegList(registers, mem, &temps);
2569 const int reg_size = registers.GetRegisterSizeInBytes();
2575 // operation, which will happen if the number of registers is even. Note that
2579 ((registers.GetCount() % 2) != 0)) {
2581 Str(registers.PopLowestIndex(), loc);
2584 Ldr(registers.PopLowestIndex(), loc);
2588 while (registers.GetCount() >= 2) {
2589 const CPURegister& dst0 = registers.PopLowestIndex();
2590 const CPURegister& dst1 = registers.PopLowestIndex();
2599 if (!registers.IsEmpty()) {
2601 Str(registers.PopLowestIndex(), loc);
2604 Ldr(registers.PopLowestIndex(), loc);
2610 const CPURegList& registers,
2620 int reg_size = registers.GetRegisterSizeInBytes();
2621 int total_size = registers.GetTotalSizeInBytes();
2625 if ((registers.GetCount() >= 2) &&
2639 // TODO: Several callers rely on this not using scratch registers, so we use
2647 // TODO(all): Fix printf for NEON and SVE registers.
2649 // This is the main Printf implementation. All callee-saved registers are
2650 // preserved, but NZCV and the caller-saved registers may be clobbered.
2660 // The provided arguments, and their proper PCS registers.
2666 // The PCS varargs registers for printf. Note that x0 is used for the printf
2673 // We can use caller-saved registers as scratch values, except for the
2674 // arguments and the PCS registers where they might need to go.
2830 // as scratch registers.
2834 // Preserve all caller-saved registers as well as NZCV.
2842 // We can use caller-saved registers as scratch values (except for argN).
2849 // caller-saved registers.