Lines Matching full:destination
711 void CodeGeneratorARM::Move32(Location destination, Location source) {
712 if (source.Equals(destination)) {
715 if (destination.IsRegister()) {
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());
723 } else if (destination.IsFpuRegister()) {
725 __ vmovsr(destination.AsFpuRegister<SRegister>(), source.AsRegister<Register>());
727 __ vmovs(destination.AsFpuRegister<SRegister>(), source.AsFpuRegister<SRegister>());
729 __ LoadSFromOffset(destination.AsFpuRegister<SRegister>(), SP, source.GetStackIndex());
732 DCHECK(destination.IsStackSlot()) << destination;
734 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(), SP, destination.GetStackIndex());
736 __ StoreSToOffset(source.AsFpuRegister<SRegister>(), SP, destination.GetStackIndex());
740 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex());
745 void CodeGeneratorARM::Move64(Location destination, Location source) {
746 if (source.Equals(destination)) {
749 if (destination.IsRegisterPair()) {
753 Location::RegisterLocation(destination.AsRegisterPairHigh<Register>()),
756 Location::RegisterLocation(destination.AsRegisterPairLow<Register>()),
762 DCHECK(ExpectedPairLayout(destination));
763 __ LoadFromOffset(kLoadWordPair, destination.AsRegisterPairLow<Register>(),
766 } else if (destination.IsFpuRegisterPair()) {
768 __ LoadDFromOffset(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()),
775 DCHECK(destination.IsDoubleStackSlot());
780 __ StoreToOffset(kStoreWord, R1, SP, destination.GetStackIndex());
781 __ StoreToOffset(kStoreWord, R2, SP, destination.GetHighStackIndex(kArmWordSize));
784 SP, destination.GetStackIndex());
789 destination.GetStackIndex());
794 Location::StackSlot(destination.GetStackIndex()),
797 Location::StackSlot(destination.GetHighStackIndex(kArmWordSize)),
3576 Location destination = move->GetDestination();
3579 if (destination.IsRegister()) {
3580 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>());
3582 DCHECK(destination.IsStackSlot());
3584 SP, destination.GetStackIndex());
3587 if (destination.IsRegister()) {
3588 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(),
3590 } else if (destination.IsFpuRegister()) {
3591 __ LoadSFromOffset(destination.AsFpuRegister<SRegister>(), SP, source.GetStackIndex());
3593 DCHECK(destination.IsStackSlot());
3595 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex());
3598 if (destination.IsFpuRegister()) {
3599 __ vmovs(destination.AsFpuRegister<SRegister>(), source.AsFpuRegister<SRegister>());
3601 DCHECK(destination.IsStackSlot());
3602 __ StoreSToOffset(source.AsFpuRegister<SRegister>(), SP, destination.GetStackIndex());
3605 if (destination.IsDoubleStackSlot()) {
3607 __ StoreDToOffset(DTMP, SP, destination.GetStackIndex());
3608 } else if (destination.IsRegisterPair()) {
3609 DCHECK(ExpectedPairLayout(destination));
3611 kLoadWordPair, destination.AsRegisterPairLow<Register>(), SP, source.GetStackIndex());
3613 DCHECK(destination.IsFpuRegisterPair()) << destination;
3614 __ LoadDFromOffset(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()),
3619 if (destination.IsRegisterPair()) {
3620 __ Mov(destination.AsRegisterPairLow<Register>(), source.AsRegisterPairLow<Register>());
3621 __ Mov(destination.AsRegisterPairHigh<Register>(), source.AsRegisterPairHigh<Register>());
3623 DCHECK(destination.IsDoubleStackSlot()) << destination;
3626 kStoreWordPair, source.AsRegisterPairLow<Register>(), SP, destination.GetStackIndex());
3629 if (destination.IsFpuRegisterPair()) {
3630 __ vmovd(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()),
3633 DCHECK(destination.IsDoubleStackSlot()) << destination;
3636 destination.GetStackIndex());
3643 if (destination.IsRegister()) {
3644 __ LoadImmediate(destination.AsRegister<Register>(), value);
3646 DCHECK(destination.IsStackSlot());
3648 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex());
3652 if (destination.IsRegisterPair()) {
3653 __ LoadImmediate(destination.AsRegisterPairLow<Register>(), Low32Bits(value));
3654 __ LoadImmediate(destination.AsRegisterPairHigh<Register>(), High32Bits(value));
3656 DCHECK(destination.IsDoubleStackSlot()) << destination;
3658 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex());
3660 __ StoreToOffset(kStoreWord, IP, SP, destination.GetHighStackIndex(kArmWordSize));
3664 if (destination.IsFpuRegisterPair()) {
3665 __ LoadDImmediate(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), value);
3667 DCHECK(destination.IsDoubleStackSlot()) << destination;
3670 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex());
3672 __ StoreToOffset(kStoreWord, IP, SP, destination.GetHighStackIndex(kArmWordSize));
3677 if (destination.IsFpuRegister()) {
3678 __ LoadSImmediate(destination.AsFpuRegister<SRegister>(), value);
3680 DCHECK(destination.IsStackSlot());
3682 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex());
3708 Location destination = move->GetDestination();
3710 if (source.IsRegister() && destination.IsRegister()) {
3712 DCHECK_NE(destination.AsRegister<Register>(), IP);
3714 __ Mov(source.AsRegister<Register>(), destination.AsRegister<Register>());
3715 __ Mov(destination.AsRegister<Register>(), IP);
3716 } else if (source.IsRegister() && destination.IsStackSlot()) {
3717 Exchange(source.AsRegister<Register>(), destination.GetStackIndex());
3718 } else if (source.IsStackSlot() && destination.IsRegister()) {
3719 Exchange(destination.AsRegister<Register>(), source.GetStackIndex());
3720 } else if (source.IsStackSlot() && destination.IsStackSlot()) {
3721 Exchange(source.GetStackIndex(), destination.GetStackIndex());
3722 } else if (source.IsFpuRegister() && destination.IsFpuRegister()) {
3724 __ vmovs(source.AsFpuRegister<SRegister>(), destination.AsFpuRegister<SRegister>());
3725 __ vmovsr(destination.AsFpuRegister<SRegister>(), IP);
3726 } else if (source.IsRegisterPair() && destination.IsRegisterPair()) {
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>(),
3733 } else if (source.IsRegisterPair() || destination.IsRegisterPair()) {
3736 : destination.AsRegisterPairLow<Register>();
3738 ? destination.GetStackIndex()
3740 DCHECK(ExpectedPairLayout(source.IsRegisterPair() ? source : destination));
3744 } else if (source.IsFpuRegisterPair() && destination.IsFpuRegisterPair()) {
3746 DRegister second = FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>());
3750 } else if (source.IsFpuRegisterPair() || destination.IsFpuRegisterPair()) {
3753 : FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>());
3755 ? destination.GetStackIndex()
3760 } else if (source.IsFpuRegister() || destination.IsFpuRegister()) {
3762 : destination.AsFpuRegister<SRegister>();
3764 ? destination.GetStackIndex()
3770 } else if (source.IsDoubleStackSlot() && destination.IsDoubleStackSlot()) {
3771 Exchange(source.GetStackIndex(), destination.GetStackIndex());
3772 Exchange(source.GetHighStackIndex(kArmWordSize), destination.GetHighStackIndex(kArmWordSize));
3774 LOG(FATAL) << "Unimplemented" << source << " <-> " << destination;