Home | History | Annotate | Download | only in optimizing

Lines Matching defs:source

2  * Copyright (C) 2014 The Android Open Source Project
2244 void CodeGeneratorARM::Move32(Location destination, Location source) {
2245 if (source.Equals(destination)) {
2249 if (source.IsRegister()) {
2250 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>());
2251 } else if (source.IsFpuRegister()) {
2252 __ vmovrs(destination.AsRegister<Register>(), source.AsFpuRegister<SRegister>());
2254 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(), SP, source.GetStackIndex());
2257 if (source.IsRegister()) {
2258 __ vmovsr(destination.AsFpuRegister<SRegister>(), source.AsRegister<Register>());
2259 } else if (source.IsFpuRegister()) {
2260 __ vmovs(destination.AsFpuRegister<SRegister>(), source.AsFpuRegister<SRegister>());
2262 __ LoadSFromOffset(destination.AsFpuRegister<SRegister>(), SP, source.GetStackIndex());
2266 if (source.IsRegister()) {
2267 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(), SP, destination.GetStackIndex());
2268 } else if (source.IsFpuRegister()) {
2269 __ StoreSToOffset(source.AsFpuRegister<SRegister>(), SP, destination.GetStackIndex());
2271 DCHECK(source.IsStackSlot()) << source;
2272 __ LoadFromOffset(kLoadWord, IP, SP, source.GetStackIndex());
2278 void CodeGeneratorARM::Move64(Location destination, Location source) {
2279 if (source.Equals(destination)) {
2283 if (source.IsRegisterPair()) {
2285 Location::RegisterLocation(source.AsRegisterPairHigh<Register>()),
2288 Location::RegisterLocation(source.AsRegisterPairLow<Register>()),
2291 } else if (source.IsFpuRegister()) {
2293 } else if (source.IsFpuRegisterPair()) {
2296 FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()));
2298 DCHECK(source.IsDoubleStackSlot());
2301 SP, source.GetStackIndex());
2304 if (source.IsDoubleStackSlot()) {
2307 source.GetStackIndex());
2308 } else if (source.IsRegisterPair()) {
2310 source.AsRegisterPairLow<Register>(),
2311 source.AsRegisterPairHigh<Register>());
2317 if (source.IsRegisterPair()) {
2319 if (source.AsRegisterPairLow<Register>() == R1) {
2320 DCHECK_EQ(source.AsRegisterPairHigh<Register>(), R2);
2324 __ StoreToOffset(kStoreWordPair, source.AsRegisterPairLow<Register>(),
2327 } else if (source.IsFpuRegisterPair()) {
2328 __ StoreDToOffset(FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()),
2332 DCHECK(source.IsDoubleStackSlot());
2334 Location::StackSlot(source.GetStackIndex()),
2337 Location::StackSlot(source.GetHighStackIndex(kArmWordSize)),
6139 Register source = value;
6147 source = temp1;
6153 __ StoreToOffset(kStoreWord, source, array, offset);
6159 Location::RegisterLocation(source),
6417 Location source = move->GetSource();
6420 if (source.IsRegister()) {
6422 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>());
6424 __ vmovsr(destination.AsFpuRegister<SRegister>(), source.AsRegister<Register>());
6427 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(),
6430 } else if (source.IsStackSlot()) {
6433 SP, source.GetStackIndex());
6435 __ LoadSFromOffset(destination.AsFpuRegister<SRegister>(), SP, source.GetStackIndex());
6438 __ LoadFromOffset(kLoadWord, IP, SP, source.GetStackIndex());
6441 } else if (source.IsFpuRegister()) {
6443 __ vmovrs(destination.AsRegister<Register>(), source.AsFpuRegister<SRegister>());
6445 __ vmovs(destination.AsFpuRegister<SRegister>(), source.AsFpuRegister<SRegister>());
6448 __ StoreSToOffset(source.AsFpuRegister<SRegister>(), SP, destination.GetStackIndex());
6450 } else if (source.IsDoubleStackSlot()) {
6452 __ LoadDFromOffset(DTMP, SP, source.GetStackIndex());
6457 kLoadWordPair, destination.AsRegisterPairLow<Register>(), SP, source.GetStackIndex());
6462 source.GetStackIndex());
6464 } else if (source.IsRegisterPair()) {
6466 __ Mov(destination.AsRegisterPairLow<Register>(), source.AsRegisterPairLow<Register>());
6467 __ Mov(destination.AsRegisterPairHigh<Register>(), source.AsRegisterPairHigh<Register>());
6470 source.AsRegisterPairLow<Register>(),
6471 source.AsRegisterPairHigh<Register>());
6474 DCHECK(ExpectedPairLayout(source));
6476 kStoreWordPair, source.AsRegisterPairLow<Register>(), SP, destination.GetStackIndex());
6478 } else if (source.IsFpuRegisterPair()) {
6482 FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()));
6485 FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()));
6488 __ StoreDToOffset(FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()),
6493 DCHECK(source.IsConstant()) << source;
6494 HConstant* constant = source.GetConstant();
6561 Location source = move->GetSource();
6564 if (source.IsRegister() && destination.IsRegister()) {
6565 DCHECK_NE(source.AsRegister<Register>(), IP);
6567 __ Mov(IP, source.AsRegister<Register>());
6568 __ Mov(source.AsRegister<Register>(), destination.AsRegister<Register>());
6570 } else if (source.IsRegister() && destination.IsStackSlot()) {
6571 Exchange(source.AsRegister<Register>(), destination.GetStackIndex());
6572 } else if (source.IsStackSlot() && destination.IsRegister()) {
6573 Exchange(destination.AsRegister<Register>(), source.GetStackIndex());
6574 } else if (source.IsStackSlot() && destination.IsStackSlot()) {
6575 Exchange(source.GetStackIndex(), destination.GetStackIndex());
6576 } else if (source.IsFpuRegister() && destination.IsFpuRegister()) {
6577 __ vmovrs(IP, source.AsFpuRegister<SRegister>());
6578 __ vmovs(source.AsFpuRegister<SRegister>(), destination.AsFpuRegister<SRegister>());
6580 } else if (source.IsRegisterPair() && destination.IsRegisterPair()) {
6581 __ vmovdrr(DTMP, source.AsRegisterPairLow<Register>(), source.AsRegisterPairHigh<Register>());
6582 __ Mov(source.AsRegisterPairLow<Register>(), destination.AsRegisterPairLow<Register>());
6583 __ Mov(source.AsRegisterPairHigh<Register>(), destination.AsRegisterPairHigh<Register>());
6587 } else if (source.IsRegisterPair() || destination.IsRegisterPair()) {
6588 Register low_reg = source.IsRegisterPair()
6589 ? source.AsRegisterPairLow<Register>()
6591 int mem = source.IsRegisterPair()
6593 : source.GetStackIndex();
6594 DCHECK(ExpectedPairLayout(source.IsRegisterPair() ? source : destination));
6598 } else if (source.IsFpuRegisterPair() && destination.IsFpuRegisterPair()) {
6599 DRegister first = FromLowSToD(source.AsFpuRegisterPairLow<SRegister>());
6604 } else if (source.IsFpuRegisterPair() || destination.IsFpuRegisterPair()) {
6605 DRegister reg = source.IsFpuRegisterPair()
6606 ? FromLowSToD(source.AsFpuRegisterPairLow<SRegister>())
6608 int mem = source.IsFpuRegisterPair()
6610 : source.GetStackIndex();
6614 } else if (source.IsFpuRegister() || destination.IsFpuRegister()) {
6615 SRegister reg = source.IsFpuRegister() ? source.AsFpuRegister<SRegister>()
6617 int mem = source.IsFpuRegister()
6619 : source.GetStackIndex();
6624 } else if (source.IsDoubleStackSlot() && destination.IsDoubleStackSlot()) {
6625 Exchange(source.GetStackIndex(), destination.GetStackIndex());
6626 Exchange(source.GetHighStackIndex(kArmWordSize), destination.GetHighStackIndex(kArmWordSize));
6628 LOG(FATAL) << "Unimplemented" << source << " <-> " << destination;