Lines Matching refs:Register

46 static constexpr Register kCoreSavedRegisterForBaseline = R5;
47 static constexpr Register kCoreCalleeSaves[] =
350 stream << ArmManagedRegister::FromCoreRegister(Register(reg));
358 __ StoreToOffset(kStoreWord, static_cast<Register>(reg_id), SP, stack_index);
363 __ LoadFromOffset(kLoadWord, static_cast<Register>(reg_id), SP, stack_index);
517 static dwarf::Reg DWARFReg(Register reg) {
717 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>());
719 __ vmovrs(destination.AsRegister<Register>(), source.AsFpuRegister<SRegister>());
721 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(), SP, source.GetStackIndex());
725 __ vmovsr(destination.AsFpuRegister<SRegister>(), source.AsRegister<Register>());
734 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(), SP, destination.GetStackIndex());
752 Location::RegisterLocation(source.AsRegisterPairHigh<Register>()),
753 Location::RegisterLocation(destination.AsRegisterPairHigh<Register>()),
755 Location::RegisterLocation(source.AsRegisterPairLow<Register>()),
756 Location::RegisterLocation(destination.AsRegisterPairLow<Register>()),
763 __ LoadFromOffset(kLoadWordPair, destination.AsRegisterPairLow<Register>(),
778 if (source.AsRegisterPairLow<Register>() == R1) {
779 DCHECK_EQ(source.AsRegisterPairHigh<Register>(), R2);
783 __ StoreToOffset(kStoreWordPair, source.AsRegisterPairLow<Register>(),
814 __ LoadImmediate(location.AsRegister<Register>(), value);
824 __ LoadImmediate(location.AsRegisterPairLow<Register>(), Low32Bits(value));
825 __ LoadImmediate(location.AsRegisterPairHigh<Register>(), High32Bits(value));
956 __ cmp(instruction->GetLocations()->InAt(0).AsRegister<Register>(),
964 Register left = locations->InAt(0).AsRegister<Register>();
966 __ cmp(left, ShifterOperand(locations->InAt(1).AsRegister<Register>()));
975 Register temp = IP;
1043 Register left = locations->InAt(0).AsRegister<Register>();
1046 __ cmp(left, ShifterOperand(locations->InAt(1).AsRegister<Register>()));
1054 Register temp = IP;
1060 __ mov(locations->Out().AsRegister<Register>(), ShifterOperand(1),
1062 __ mov(locations->Out().AsRegister<Register>(), ShifterOperand(0),
1256 void CodeGeneratorARM::LoadCurrentMethod(Register reg) {
1279 Register temp = invoke->GetLocations()->GetTemp(0).AsRegister<Register>();
1314 Register temp = invoke->GetLocations()->GetTemp(0).AsRegister<Register>();
1325 __ LoadFromOffset(kLoadWord, temp, receiver.AsRegister<Register>(), class_offset);
1348 Register temp = invoke->GetLocations()->GetTemp(0).AsRegister<Register>();
1356 __ LoadImmediate(invoke->GetLocations()->GetTemp(1).AsRegister<Register>(),
1364 __ LoadFromOffset(kLoadWord, temp, receiver.AsRegister<Register>(), class_offset);
1412 __ rsb(out.AsRegister<Register>(), in.AsRegister<Register>(), ShifterOperand(0));
1418 __ rsbs(out.AsRegisterPairLow<Register>(),
1419 in.AsRegisterPairLow<Register>(),
1427 __ sbc(out.AsRegisterPairHigh<Register>(),
1428 out.AsRegisterPairHigh<Register>(),
1429 ShifterOperand(out.AsRegisterPairHigh<Register>()));
1431 __ sub(out.AsRegisterPairHigh<Register>(),
1432 out.AsRegisterPairHigh<Register>(),
1433 ShifterOperand(in.AsRegisterPairHigh<Register>()));
1682 __ sbfx(out.AsRegister<Register>(), in.AsRegister<Register>(), 0, 8);
1699 __ sbfx(out.AsRegister<Register>(), in.AsRegister<Register>(), 0, 16);
1714 __ Mov(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>());
1716 __ LoadFromOffset(kLoadWord, out.AsRegister<Register>(), SP, in.GetStackIndex());
1721 __ LoadImmediate(out.AsRegister<Register>(), static_cast<int32_t>(value));
1730 __ vmovrs(out.AsRegister<Register>(), temp);
1740 __ vmovrs(out.AsRegister<Register>(), temp_s);
1761 __ Mov(out.AsRegisterPairLow<Register>(), in.AsRegister<Register>());
1763 __ Asr(out.AsRegisterPairHigh<Register>(),
1764 out.AsRegisterPairLow<Register>(),
1798 __ ubfx(out.AsRegister<Register>(), in.AsRegister<Register>(), 0, 16);
1816 __ vmovsr(out.AsFpuRegister<SRegister>(), in.AsRegister<Register>());
1823 Register low = in.AsRegisterPairLow<Register>();
1824 Register high = in.AsRegisterPairHigh<Register>();
1826 Register constant_low = locations->GetTemp(0).AsRegister<Register>();
1827 Register constant_high = locations->GetTemp(1).AsRegister<Register>();
1884 __ vmovsr(out.AsFpuRegisterPairLow<SRegister>(), in.AsRegister<Register>());
1892 Register low = in.AsRegisterPairLow<Register>();
1893 Register high = in.AsRegisterPairHigh<Register>();
1896 Register constant_low = locations->GetTemp(0).AsRegister<Register>();
1897 Register constant_high = locations->GetTemp(1).AsRegister<Register>();
1979 __ add(out.AsRegister<Register>(),
1980 first.AsRegister<Register>(),
1981 ShifterOperand(second.AsRegister<Register>()));
1983 __ AddConstant(out.AsRegister<Register>(),
1984 first.AsRegister<Register>(),
1991 __ adds(out.AsRegisterPairLow<Register>(),
1992 first.AsRegisterPairLow<Register>(),
1993 ShifterOperand(second.AsRegisterPairLow<Register>()));
1994 __ adc(out.AsRegisterPairHigh<Register>(),
1995 first.AsRegisterPairHigh<Register>(),
1996 ShifterOperand(second.AsRegisterPairHigh<Register>()));
2054 __ sub(out.AsRegister<Register>(),
2055 first.AsRegister<Register>(),
2056 ShifterOperand(second.AsRegister<Register>()));
2058 __ AddConstant(out.AsRegister<Register>(),
2059 first.AsRegister<Register>(),
2067 __ subs(out.AsRegisterPairLow<Register>(),
2068 first.AsRegisterPairLow<Register>(),
2069 ShifterOperand(second.AsRegisterPairLow<Register>()));
2070 __ sbc(out.AsRegisterPairHigh<Register>(),
2071 first.AsRegisterPairHigh<Register>(),
2072 ShifterOperand(second.AsRegisterPairHigh<Register>()));
2128 __ mul(out.AsRegister<Register>(),
2129 first.AsRegister<Register>(),
2130 second.AsRegister<Register>());
2134 Register out_hi = out.AsRegisterPairHigh<Register>();
2135 Register out_lo = out.AsRegisterPairLow<Register>();
2136 Register in1_hi = first.AsRegisterPairHigh<Register>();
2137 Register in1_lo = first.AsRegisterPairLow<Register>();
2138 Register in2_hi = second.AsRegisterPairHigh<Register>();
2139 Register in2_lo = second.AsRegisterPairLow<Register>();
2243 __ sdiv(out.AsRegister<Register>(),
2244 first.AsRegister<Register>(),
2245 second.AsRegister<Register>());
2248 DCHECK_EQ(calling_convention.GetRegisterAt(0), first.AsRegister<Register>());
2249 DCHECK_EQ(calling_convention.GetRegisterAt(1), second.AsRegister<Register>());
2250 DCHECK_EQ(R0, out.AsRegister<Register>());
2259 DCHECK_EQ(calling_convention.GetRegisterAt(0), first.AsRegisterPairLow<Register>());
2260 DCHECK_EQ(calling_convention.GetRegisterAt(1), first.AsRegisterPairHigh<Register>());
2261 DCHECK_EQ(calling_convention.GetRegisterAt(2), second.AsRegisterPairLow<Register>());
2262 DCHECK_EQ(calling_convention.GetRegisterAt(3), second.AsRegisterPairHigh<Register>());
2263 DCHECK_EQ(R0, out.AsRegisterPairLow<Register>());
2264 DCHECK_EQ(R1, out.AsRegisterPairHigh<Register>());
2362 Register reg1 = first.AsRegister<Register>();
2363 Register reg2 = second.AsRegister<Register>();
2364 Register temp = locations->GetTemp(0).AsRegister<Register>();
2371 __ sub(out.AsRegister<Register>(), reg1, ShifterOperand(temp));
2374 DCHECK_EQ(calling_convention.GetRegisterAt(0), first.AsRegister<Register>());
2375 DCHECK_EQ(calling_convention.GetRegisterAt(1), second.AsRegister<Register>());
2376 DCHECK_EQ(R1, out.AsRegister<Register>());
2422 __ cmp(value.AsRegister<Register>(), ShifterOperand(0));
2435 value.AsRegisterPairLow<Register>(),
2436 ShifterOperand(value.AsRegisterPairHigh<Register>()));
2489 Register out_reg = out.AsRegister<Register>();
2490 Register first_reg = first.AsRegister<Register>();
2493 Register second_reg = second.AsRegister<Register>();
2518 Register o_h = out.AsRegisterPairHigh<Register>();
2519 Register o_l = out.AsRegisterPairLow<Register>();
2521 Register temp = locations->GetTemp(0).AsRegister<Register>();
2523 Register high = first.AsRegisterPairHigh<Register>();
2524 Register low = first.AsRegisterPairLow<Register>();
2526 Register second_reg = second.AsRegister<Register>();
2668 __ mvn(out.AsRegister<Register>(), ShifterOperand(in.AsRegister<Register>()));
2672 __ mvn(out.AsRegisterPairLow<Register>(),
2673 ShifterOperand(in.AsRegisterPairLow<Register>()));
2674 __ mvn(out.AsRegisterPairHigh<Register>(),
2675 ShifterOperand(in.AsRegisterPairHigh<Register>()));
2694 __ eor(out.AsRegister<Register>(), in.AsRegister<Register>(), ShifterOperand(1));
2722 Register out = locations->Out().AsRegister<Register>();
2730 __ cmp(left.AsRegisterPairHigh<Register>(),
2731 ShifterOperand(right.AsRegisterPairHigh<Register>())); // Signed compare.
2736 __ cmp(left.AsRegisterPairLow<Register>(),
2737 ShifterOperand(right.AsRegisterPairLow<Register>())); // Unsigned compare.
2803 void InstructionCodeGeneratorARM::GenerateWideAtomicLoad(Register addr,
2805 Register out_lo,
2806 Register out_hi) {
2815 void InstructionCodeGeneratorARM::GenerateWideAtomicStore(Register addr,
2817 Register value_lo,
2818 Register value_hi,
2819 Register temp1,
2820 Register temp2,
2884 Register base = locations->InAt(0).AsRegister<Register>();
2899 __ StoreToOffset(kStoreByte, value.AsRegister<Register>(), base, offset);
2905 __ StoreToOffset(kStoreHalfword, value.AsRegister<Register>(), base, offset);
2911 __ StoreToOffset(kStoreWord, value.AsRegister<Register>(), base, offset);
2918 value.AsRegisterPairLow<Register>(),
2919 value.AsRegisterPairHigh<Register>(),
2920 locations->GetTemp(0).AsRegister<Register>(),
2921 locations->GetTemp(1).AsRegister<Register>(),
2924 __ StoreToOffset(kStoreWordPair, value.AsRegisterPairLow<Register>(), base, offset);
2938 Register value_reg_lo = locations->GetTemp(0).AsRegister<Register>();
2939 Register value_reg_hi = locations->GetTemp(1).AsRegister<Register>();
2946 locations->GetTemp(2).AsRegister<Register>(),
2947 locations->GetTemp(3).AsRegister<Register>(),
2967 Register temp = locations->GetTemp(0).AsRegister<Register>();
2968 Register card = locations->GetTemp(1).AsRegister<Register>();
2969 codegen_->MarkGCCard(temp, card, base, value.AsRegister<Register>());
3011 Register base = locations->InAt(0).AsRegister<Register>();
3020 __ LoadFromOffset(kLoadUnsignedByte, out.AsRegister<Register>(), base, offset);
3025 __ LoadFromOffset(kLoadSignedByte, out.AsRegister<Register>(), base, offset);
3030 __ LoadFromOffset(kLoadSignedHalfword, out.AsRegister<Register>(), base, offset);
3035 __ LoadFromOffset(kLoadUnsignedHalfword, out.AsRegister<Register>(), base, offset);
3041 __ LoadFromOffset(kLoadWord, out.AsRegister<Register>(), base, offset);
3048 out.AsRegisterPairLow<Register>(),
3049 out.AsRegisterPairHigh<Register>());
3051 __ LoadFromOffset(kLoadWordPair, out.AsRegisterPairLow<Register>(), base, offset);
3064 Register lo = locations->GetTemp(0).AsRegister<Register>();
3065 Register hi = locations->GetTemp(1).AsRegister<Register>();
3138 __ LoadFromOffset(kLoadWord, IP, obj.AsRegister<Register>(), 0);
3149 __ cmp(obj.AsRegister<Register>(), ShifterOperand(0));
3175 Register obj = locations->InAt(0).AsRegister<Register>();
3181 Register out = locations->Out().AsRegister<Register>();
3187 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>()));
3195 Register out = locations->Out().AsRegister<Register>();
3201 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>()));
3209 Register out = locations->Out().AsRegister<Register>();
3215 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_2));
3223 Register out = locations->Out().AsRegister<Register>();
3229 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_2));
3239 Register out = locations->Out().AsRegister<Register>();
3245 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_4));
3257 __ LoadFromOffset(kLoadWordPair, out.AsRegisterPairLow<Register>(), obj, offset);
3259 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8));
3260 __ LoadFromOffset(kLoadWordPair, out.AsRegisterPairLow<Register>(), IP, data_offset);
3273 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_4));
3287 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8));
3333 Register obj = locations->InAt(0).AsRegister<Register>();
3344 Register value = locations->InAt(2).AsRegister<Register>();
3350 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>()));
3359 Register value = locations->InAt(2).AsRegister<Register>();
3365 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_2));
3375 Register value = locations->InAt(2).AsRegister<Register>();
3382 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_4));
3388 Register temp = locations->GetTemp(0).AsRegister<Register>();
3389 Register card = locations->GetTemp(1).AsRegister<Register>();
3408 __ StoreToOffset(kStoreWordPair, value.AsRegisterPairLow<Register>(), obj, offset);
3410 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8));
3411 __ StoreToOffset(kStoreWordPair, value.AsRegisterPairLow<Register>(), IP, data_offset);
3424 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_4));
3438 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8));
3466 Register obj = locations->InAt(0).AsRegister<Register>();
3467 Register out = locations->Out().AsRegister<Register>();
3488 Register index = locations->InAt(0).AsRegister<Register>();
3489 Register length = locations->InAt(1).AsRegister<Register>();
3495 void CodeGeneratorARM::MarkGCCard(Register temp, Register card, Register object, Register value) {
3580 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>());
3583 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(),
3588 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(),
3611 kLoadWordPair, destination.AsRegisterPairLow<Register>(), SP, source.GetStackIndex());
3620 __ Mov(destination.AsRegisterPairLow<Register>(), source.AsRegisterPairLow<Register>());
3621 __ Mov(destination.AsRegisterPairHigh<Register>(), source.AsRegisterPairHigh<Register>());
3626 kStoreWordPair, source.AsRegisterPairLow<Register>(), SP, destination.GetStackIndex());
3644 __ LoadImmediate(destination.AsRegister<Register>(), value);
3653 __ LoadImmediate(destination.AsRegisterPairLow<Register>(), Low32Bits(value));
3654 __ LoadImmediate(destination.AsRegisterPairHigh<Register>(), High32Bits(value));
3688 void ParallelMoveResolverARM::Exchange(Register reg, int mem) {
3697 __ LoadFromOffset(kLoadWord, static_cast<Register>(ensure_scratch.GetRegister()),
3700 __ StoreToOffset(kStoreWord, static_cast<Register>(ensure_scratch.GetRegister()),
3711 DCHECK_NE(source.AsRegister<Register>(), IP);
3712 DCHECK_NE(destination.AsRegister<Register>(), IP);
3713 __ Mov(IP, source.AsRegister<Register>());
3714 __ Mov(source.AsRegister<Register>(), destination.AsRegister<Register>());
3715 __ Mov(destination.AsRegister<Register>(), IP);
3717 Exchange(source.AsRegister<Register>(), destination.GetStackIndex());
3719 Exchange(destination.AsRegister<Register>(), source.GetStackIndex());
3727 __ vmovdrr(DTMP, source.AsRegisterPairLow<Register>(), source.AsRegisterPairHigh<Register>());
3728 __ Mov(source.AsRegisterPairLow<Register>(), destination.AsRegisterPairLow<Register>());
3729 __ Mov(source.AsRegisterPairHigh<Register>(), destination.AsRegisterPairHigh<Register>());
3730 __ vmovrrd(destination.AsRegisterPairLow<Register>(),
3731 destination.AsRegisterPairHigh<Register>(),
3734 Register low_reg = source.IsRegisterPair()
3735 ? source.AsRegisterPairLow<Register>()
3736 : destination.AsRegisterPairLow<Register>();
3741 __ vmovdrr(DTMP, low_reg, static_cast<Register>(low_reg + 1));
3779 __ Push(static_cast<Register>(reg));
3783 __ Pop(static_cast<Register>(reg));
3796 Register out = cls->GetLocations()->Out().AsRegister<Register>();
3837 check->GetLocations()->InAt(0).AsRegister<Register>());
3841 SlowPathCodeARM* slow_path, Register class_reg) {
3861 Register out = load->GetLocations()->Out().AsRegister<Register>();
3878 Register out = load->GetLocations()->Out().AsRegister<Register>();
3910 Register obj = locations->InAt(0).AsRegister<Register>();
3911 Register cls = locations->InAt(1).AsRegister<Register>();
3912 Register out = locations->Out().AsRegister<Register>();
3963 Register obj = locations->InAt(0).AsRegister<Register>();
3964 Register cls = locations->InAt(1).AsRegister<Register>();
3965 Register temp = locations->GetTemp(0).AsRegister<Register>();
4029 Register first = locations->InAt(0).AsRegister<Register>();
4030 Register second = locations->InAt(1).AsRegister<Register>();
4031 Register out = locations->Out().AsRegister<Register>();
4046 __ and_(out.AsRegisterPairLow<Register>(),
4047 first.AsRegisterPairLow<Register>(),
4048 ShifterOperand(second.AsRegisterPairLow<Register>()));
4049 __ and_(out.AsRegisterPairHigh<Register>(),
4050 first.AsRegisterPairHigh<Register>(),
4051 ShifterOperand(second.AsRegisterPairHigh<Register>()));
4053 __ orr(out.AsRegisterPairLow<Register>(),
4054 first.AsRegisterPairLow<Register>(),
4055 ShifterOperand(second.AsRegisterPairLow<Register>()));
4056 __ orr(out.AsRegisterPairHigh<Register>(),
4057 first.AsRegisterPairHigh<Register>(),
4058 ShifterOperand(second.AsRegisterPairHigh<Register>()));
4061 __ eor(out.AsRegisterPairLow<Register>(),
4062 first.AsRegisterPairLow<Register>(),
4063 ShifterOperand(second.AsRegisterPairLow<Register>()));
4064 __ eor(out.AsRegisterPairHigh<Register>(),
4065 first.AsRegisterPairHigh<Register>(),
4066 ShifterOperand(second.AsRegisterPairHigh<Register>()));
4071 void CodeGeneratorARM::GenerateStaticOrDirectCall(HInvokeStaticOrDirect* invoke, Register temp) {