Lines Matching refs:__
73 #define __ down_cast<X86Assembler*>(codegen->GetAssembler())-> // NOLINT macro
82 __ Bind(GetEntryLabel()); in EmitNativeCode()
108 __ Bind(GetEntryLabel()); in EmitNativeCode()
127 __ Bind(GetEntryLabel()); in EmitNativeCode()
129 __ negl(reg_); in EmitNativeCode()
131 __ movl(reg_, Immediate(0)); in EmitNativeCode()
133 __ jmp(GetExitLabel()); in EmitNativeCode()
151 __ Bind(GetEntryLabel()); in EmitNativeCode()
175 __ movl(length_loc.AsRegister<Register>(), array_len); in EmitNativeCode()
177 __ shrl(length_loc.AsRegister<Register>(), Immediate(1)); in EmitNativeCode()
211 __ Bind(GetEntryLabel()); in EmitNativeCode()
217 __ jmp(GetReturnLabel()); in EmitNativeCode()
219 __ jmp(x86_codegen->GetLabelOf(successor_)); in EmitNativeCode()
250 __ Bind(GetEntryLabel()); in EmitNativeCode()
255 __ movl(calling_convention.GetRegisterAt(0), Immediate(string_index.index_)); in EmitNativeCode()
261 __ jmp(GetExitLabel()); in EmitNativeCode()
286 __ Bind(GetEntryLabel()); in EmitNativeCode()
293 __ movl(calling_convention.GetRegisterAt(0), Immediate(type_index.index_)); in EmitNativeCode()
318 __ jmp(GetExitLabel()); in EmitNativeCode()
341 __ Bind(GetEntryLabel()); in EmitNativeCode()
347 __ UnpoisonHeapReference(locations->InAt(1).AsRegister<Register>()); in EmitNativeCode()
384 __ jmp(GetExitLabel()); in EmitNativeCode()
404 __ Bind(GetEntryLabel()); in EmitNativeCode()
427 __ Bind(GetEntryLabel()); in EmitNativeCode()
453 __ jmp(GetExitLabel()); in EmitNativeCode()
504 __ Bind(GetEntryLabel()); in EmitNativeCode()
507 __ MaybeUnpoisonHeapReference(ref_reg); in EmitNativeCode()
532 __ jmp(GetExitLabel()); in EmitNativeCode()
594 __ Bind(GetEntryLabel()); in EmitNativeCode()
597 __ MaybeUnpoisonHeapReference(ref_reg); in EmitNativeCode()
601 __ movl(temp_, ref_reg); in EmitNativeCode()
635 __ cmpl(temp_, ref_reg); in EmitNativeCode()
636 __ j(kEqual, &done); in EmitNativeCode()
647 __ pushl(EAX); in EmitNativeCode()
648 __ movl(EAX, temp_); in EmitNativeCode()
662 __ movl(value, base); in EmitNativeCode()
676 __ PoisonHeapReference(expected); in EmitNativeCode()
677 __ PoisonHeapReference(value); in EmitNativeCode()
680 __ LockCmpxchgl(field_addr_, value); in EmitNativeCode()
689 __ UnpoisonHeapReference(value); in EmitNativeCode()
695 __ popl(EAX); in EmitNativeCode()
697 __ Bind(&done); in EmitNativeCode()
698 __ jmp(GetExitLabel()); in EmitNativeCode()
762 __ Bind(GetEntryLabel()); in EmitNativeCode()
799 __ movl(free_reg, index_reg); in EmitNativeCode()
812 __ shll(index_reg, Immediate(TIMES_4)); in EmitNativeCode()
816 __ AddImmediate(index_reg, Immediate(offset_)); in EmitNativeCode()
855 __ movl(calling_convention.GetRegisterAt(2), Immediate(offset_)); in EmitNativeCode()
863 __ jmp(GetExitLabel()); in EmitNativeCode()
915 __ Bind(GetEntryLabel()); in EmitNativeCode()
929 __ jmp(GetExitLabel()); in EmitNativeCode()
941 #undef __
943 #define __ down_cast<X86Assembler*>(GetAssembler())-> // NOLINT macro
995 __ movl(Address(ESP, stack_index), static_cast<Register>(reg_id)); in SaveCoreRegister()
1000 __ movl(static_cast<Register>(reg_id), Address(ESP, stack_index)); in RestoreCoreRegister()
1006 __ movups(Address(ESP, stack_index), XmmRegister(reg_id)); in SaveFloatingPointRegister()
1008 __ movsd(Address(ESP, stack_index), XmmRegister(reg_id)); in SaveFloatingPointRegister()
1015 __ movups(XmmRegister(reg_id), Address(ESP, stack_index)); in RestoreFloatingPointRegister()
1017 __ movsd(XmmRegister(reg_id), Address(ESP, stack_index)); in RestoreFloatingPointRegister()
1041 __ fs()->call(Address::Absolute(entry_point_offset)); in GenerateInvokeRuntime()
1102 __ pushl(EAX); in MaybeIncrementHotness()
1103 __ cfi().AdjustCFAOffset(4); in MaybeIncrementHotness()
1104 __ movl(EAX, Address(ESP, kX86WordSize)); in MaybeIncrementHotness()
1107 __ cmpw(Address(reg, ArtMethod::HotnessCountOffset().Int32Value()), in MaybeIncrementHotness()
1109 __ j(kEqual, &overflow); in MaybeIncrementHotness()
1110 __ addw(Address(reg, ArtMethod::HotnessCountOffset().Int32Value()), in MaybeIncrementHotness()
1112 __ Bind(&overflow); in MaybeIncrementHotness()
1114 __ popl(EAX); in MaybeIncrementHotness()
1115 __ cfi().AdjustCFAOffset(-4); in MaybeIncrementHotness()
1131 __ pushl(EAX); in MaybeIncrementHotness()
1132 __ cfi().AdjustCFAOffset(4); in MaybeIncrementHotness()
1133 __ movl(EAX, Immediate(address)); in MaybeIncrementHotness()
1134 __ addw(Address(EAX, ProfilingInfo::BaselineHotnessCountOffset().Int32Value()), in MaybeIncrementHotness()
1136 __ andw(Address(EAX, ProfilingInfo::BaselineHotnessCountOffset().Int32Value()), in MaybeIncrementHotness()
1138 __ j(kNotZero, &done); in MaybeIncrementHotness()
1141 __ Bind(&done); in MaybeIncrementHotness()
1144 __ popl(EAX); in MaybeIncrementHotness()
1145 __ cfi().AdjustCFAOffset(-4); in MaybeIncrementHotness()
1150 __ movl(Address(ESP, kCurrentMethodStackOffset), kMethodRegisterArgument); in MaybeIncrementHotness()
1153 __ pushl(EAX); in MaybeIncrementHotness()
1154 __ cfi().AdjustCFAOffset(4); in MaybeIncrementHotness()
1155 __ movl(EAX, Immediate(address)); in MaybeIncrementHotness()
1156 __ addw(Address(EAX, ProfilingInfo::BaselineHotnessCountOffset().Int32Value()), in MaybeIncrementHotness()
1158 __ popl(EAX); // Put stack as expected before exiting or calling stub. in MaybeIncrementHotness()
1159 __ cfi().AdjustCFAOffset(-4); in MaybeIncrementHotness()
1160 __ j(kCarryClear, &done); in MaybeIncrementHotness()
1163 __ Bind(&done); in MaybeIncrementHotness()
1170 __ cfi().SetCurrentCFAOffset(kX86WordSize); // return address in GenerateFrameEntry()
1171 __ Bind(&frame_entry_label_); in GenerateFrameEntry()
1178 __ testl(EAX, Address(ESP, -static_cast<int32_t>(reserved_bytes))); in GenerateFrameEntry()
1186 __ pushl(reg); in GenerateFrameEntry()
1187 __ cfi().AdjustCFAOffset(kX86WordSize); in GenerateFrameEntry()
1188 __ cfi().RelOffset(DWARFReg(reg), 0); in GenerateFrameEntry()
1198 __ movl(Address(ESP, kCurrentMethodStackOffset), kMethodRegisterArgument); in GenerateFrameEntry()
1203 __ movl(Address(ESP, GetStackOffsetOfShouldDeoptimizeFlag()), Immediate(0)); in GenerateFrameEntry()
1211 __ cfi().RememberState(); in GenerateFrameExit()
1219 __ popl(reg); in GenerateFrameExit()
1220 __ cfi().AdjustCFAOffset(-static_cast<int>(kX86WordSize)); in GenerateFrameExit()
1221 __ cfi().Restore(DWARFReg(reg)); in GenerateFrameExit()
1225 __ ret(); in GenerateFrameExit()
1226 __ cfi().RestoreState(); in GenerateFrameExit()
1227 __ cfi().DefCFAOffset(GetFrameSize()); in GenerateFrameExit()
1231 __ Bind(GetLabelOf(block)); in Bind()
1359 __ movl(destination.AsRegister<Register>(), source.AsRegister<Register>()); in Move32()
1361 __ movd(destination.AsRegister<Register>(), source.AsFpuRegister<XmmRegister>()); in Move32()
1364 __ movl(destination.AsRegister<Register>(), Immediate(value)); in Move32()
1367 __ movl(destination.AsRegister<Register>(), Address(ESP, source.GetStackIndex())); in Move32()
1371 __ movd(destination.AsFpuRegister<XmmRegister>(), source.AsRegister<Register>()); in Move32()
1373 __ movaps(destination.AsFpuRegister<XmmRegister>(), source.AsFpuRegister<XmmRegister>()); in Move32()
1376 __ movss(destination.AsFpuRegister<XmmRegister>(), Address(ESP, source.GetStackIndex())); in Move32()
1381 __ movl(Address(ESP, destination.GetStackIndex()), source.AsRegister<Register>()); in Move32()
1383 __ movss(Address(ESP, destination.GetStackIndex()), source.AsFpuRegister<XmmRegister>()); in Move32()
1387 __ movl(Address(ESP, destination.GetStackIndex()), Immediate(value)); in Move32()
1390 __ pushl(Address(ESP, source.GetStackIndex())); in Move32()
1391 __ popl(Address(ESP, destination.GetStackIndex())); in Move32()
1411 __ movd(destination.AsRegisterPairLow<Register>(), src_reg); in Move64()
1412 __ psrlq(src_reg, Immediate(32)); in Move64()
1413 __ movd(destination.AsRegisterPairHigh<Register>(), src_reg); in Move64()
1417 __ movl(destination.AsRegisterPairLow<Register>(), Address(ESP, source.GetStackIndex())); in Move64()
1418 __ movl(destination.AsRegisterPairHigh<Register>(), in Move64()
1423 __ movaps(destination.AsFpuRegister<XmmRegister>(), source.AsFpuRegister<XmmRegister>()); in Move64()
1425 __ movsd(destination.AsFpuRegister<XmmRegister>(), Address(ESP, source.GetStackIndex())); in Move64()
1429 __ pushl(source.AsRegisterPairHigh<Register>()); in Move64()
1430 __ cfi().AdjustCFAOffset(elem_size); in Move64()
1431 __ pushl(source.AsRegisterPairLow<Register>()); in Move64()
1432 __ cfi().AdjustCFAOffset(elem_size); in Move64()
1433 __ movsd(destination.AsFpuRegister<XmmRegister>(), Address(ESP, 0)); in Move64()
1443 __ movl(Address(ESP, destination.GetStackIndex()), source.AsRegisterPairLow<Register>()); in Move64()
1444 __ movl(Address(ESP, destination.GetHighStackIndex(kX86WordSize)), in Move64()
1447 __ movsd(Address(ESP, destination.GetStackIndex()), source.AsFpuRegister<XmmRegister>()); in Move64()
1452 __ movl(Address(ESP, destination.GetStackIndex()), Immediate(Low32Bits(value))); in Move64()
1453 __ movl(Address(ESP, destination.GetHighStackIndex(kX86WordSize)), in Move64()
1487 __ movzxb(dst.AsRegister<Register>(), src); in LoadFromMemoryNoBarrier()
1490 __ movsxb(dst.AsRegister<Register>(), src); in LoadFromMemoryNoBarrier()
1493 __ movsxw(dst.AsRegister<Register>(), src); in LoadFromMemoryNoBarrier()
1496 __ movzxw(dst.AsRegister<Register>(), src); in LoadFromMemoryNoBarrier()
1499 __ movl(dst.AsRegister<Register>(), src); in LoadFromMemoryNoBarrier()
1503 __ movsd(temp, src); in LoadFromMemoryNoBarrier()
1504 __ movd(dst.AsRegisterPairLow<Register>(), temp); in LoadFromMemoryNoBarrier()
1505 __ psrlq(temp, Immediate(32)); in LoadFromMemoryNoBarrier()
1506 __ movd(dst.AsRegisterPairHigh<Register>(), temp); in LoadFromMemoryNoBarrier()
1510 __ movl(dst.AsRegisterPairLow<Register>(), src); in LoadFromMemoryNoBarrier()
1511 __ movl(dst.AsRegisterPairHigh<Register>(), src_high); in LoadFromMemoryNoBarrier()
1516 __ movss(dst.AsFpuRegister<XmmRegister>(), src); in LoadFromMemoryNoBarrier()
1519 __ movsd(dst.AsFpuRegister<XmmRegister>(), src); in LoadFromMemoryNoBarrier()
1522 __ movl(dst.AsRegister<Register>(), src); in LoadFromMemoryNoBarrier()
1523 __ MaybeUnpoisonHeapReference(dst.AsRegister<Register>()); in LoadFromMemoryNoBarrier()
1544 __ movb(dst, Immediate(CodeGenerator::GetInt8ValueOf(src.GetConstant()))); in MoveToMemory()
1546 __ movb(dst, src.AsRegister<ByteRegister>()); in MoveToMemory()
1553 __ movw(dst, Immediate(CodeGenerator::GetInt16ValueOf(src.GetConstant()))); in MoveToMemory()
1555 __ movw(dst, src.AsRegister<Register>()); in MoveToMemory()
1563 __ movl(dst, Immediate(v)); in MoveToMemory()
1565 __ movl(dst, src.AsRegister<Register>()); in MoveToMemory()
1574 __ movl(dst, Immediate(Low32Bits(v))); in MoveToMemory()
1575 __ movl(dst_next_4_bytes, Immediate(High32Bits(v))); in MoveToMemory()
1577 __ movl(dst, src.AsRegisterPairLow<Register>()); in MoveToMemory()
1578 __ movl(dst_next_4_bytes, src.AsRegisterPairHigh<Register>()); in MoveToMemory()
1585 __ movl(dst, Immediate(v)); in MoveToMemory()
1587 __ movss(dst, src.AsFpuRegister<XmmRegister>()); in MoveToMemory()
1595 __ movl(dst, Immediate(Low32Bits(v))); in MoveToMemory()
1596 __ movl(dst_next_4_bytes, Immediate(High32Bits(v))); in MoveToMemory()
1598 __ movsd(dst, src.AsFpuRegister<XmmRegister>()); in MoveToMemory()
1610 __ movl(location.AsRegister<Register>(), Immediate(value)); in MoveConstant()
1655 __ jmp(codegen_->GetLabelOf(successor)); in HandleGoto()
1690 __ j(kUnordered, true_label); in GenerateFPJumps()
1692 __ j(kUnordered, false_label); in GenerateFPJumps()
1694 __ j(X86UnsignedOrFPCondition(cond->GetCondition()), true_label); in GenerateFPJumps()
1752 __ j(X86Condition(true_high_cond), true_label); in GenerateLongComparesAndJumps()
1754 __ j(X86Condition(false_high_cond), false_label); in GenerateLongComparesAndJumps()
1756 __ j(X86Condition(true_high_cond), true_label); in GenerateLongComparesAndJumps()
1757 __ j(X86Condition(false_high_cond), false_label); in GenerateLongComparesAndJumps()
1765 __ cmpl(left_high, right_high); in GenerateLongComparesAndJumps()
1767 __ j(X86Condition(true_high_cond), true_label); in GenerateLongComparesAndJumps()
1769 __ j(X86Condition(false_high_cond), false_label); in GenerateLongComparesAndJumps()
1771 __ j(X86Condition(true_high_cond), true_label); in GenerateLongComparesAndJumps()
1772 __ j(X86Condition(false_high_cond), false_label); in GenerateLongComparesAndJumps()
1775 __ cmpl(left_low, right_low); in GenerateLongComparesAndJumps()
1778 __ cmpl(left_high, Address(ESP, right.GetHighStackIndex(kX86WordSize))); in GenerateLongComparesAndJumps()
1780 __ j(X86Condition(true_high_cond), true_label); in GenerateLongComparesAndJumps()
1782 __ j(X86Condition(false_high_cond), false_label); in GenerateLongComparesAndJumps()
1784 __ j(X86Condition(true_high_cond), true_label); in GenerateLongComparesAndJumps()
1785 __ j(X86Condition(false_high_cond), false_label); in GenerateLongComparesAndJumps()
1788 __ cmpl(left_low, Address(ESP, right.GetStackIndex())); in GenerateLongComparesAndJumps()
1791 __ j(final_condition, true_label); in GenerateLongComparesAndJumps()
1801 __ ucomisd(lhs.AsFpuRegister<XmmRegister>(), rhs.AsFpuRegister<XmmRegister>()); in GenerateFPCompare()
1804 __ ucomisd(lhs.AsFpuRegister<XmmRegister>(), in GenerateFPCompare()
1811 __ ucomisd(lhs.AsFpuRegister<XmmRegister>(), Address(ESP, rhs.GetStackIndex())); in GenerateFPCompare()
1815 __ ucomiss(lhs.AsFpuRegister<XmmRegister>(), rhs.AsFpuRegister<XmmRegister>()); in GenerateFPCompare()
1818 __ ucomiss(lhs.AsFpuRegister<XmmRegister>(), in GenerateFPCompare()
1825 __ ucomiss(lhs.AsFpuRegister<XmmRegister>(), Address(ESP, rhs.GetStackIndex())); in GenerateFPCompare()
1862 __ jmp(false_target); in GenerateCompareTestAndBranch()
1866 __ Bind(&fallthrough_target); in GenerateCompareTestAndBranch()
1894 __ jmp(true_target); in GenerateTestAndBranch()
1899 __ jmp(false_target); in GenerateTestAndBranch()
1916 __ j(X86Condition(cond->AsCondition()->GetOppositeCondition()), false_target); in GenerateTestAndBranch()
1918 __ j(X86Condition(cond->AsCondition()->GetCondition()), true_target); in GenerateTestAndBranch()
1924 __ testl(lhs.AsRegister<Register>(), lhs.AsRegister<Register>()); in GenerateTestAndBranch()
1926 __ cmpl(Address(ESP, lhs.GetStackIndex()), Immediate(0)); in GenerateTestAndBranch()
1929 __ j(kEqual, false_target); in GenerateTestAndBranch()
1931 __ j(kNotEqual, true_target); in GenerateTestAndBranch()
1952 __ j(X86Condition(condition->GetOppositeCondition()), false_target); in GenerateTestAndBranch()
1954 __ j(X86Condition(condition->GetCondition()), true_target); in GenerateTestAndBranch()
1961 __ jmp(false_target); in GenerateTestAndBranch()
2009 __ movl(flag->GetLocations()->Out().AsRegister<Register>(), in VisitShouldDeoptimizeFlag()
2080 __ testl(cond_reg, cond_reg); in VisitSelect()
2093 __ testl(cond_reg, cond_reg); in VisitSelect()
2104 __ cmovl(cond, false_high, true_loc.AsRegisterPairHigh<Register>()); in VisitSelect()
2105 __ cmovl(cond, false_low, true_loc.AsRegisterPairLow<Register>()); in VisitSelect()
2107 __ cmovl(cond, false_high, Address(ESP, true_loc.GetHighStackIndex(kX86WordSize))); in VisitSelect()
2108 __ cmovl(cond, false_low, Address(ESP, true_loc.GetStackIndex())); in VisitSelect()
2114 __ cmovl(cond, false_reg, true_loc.AsRegister<Register>()); in VisitSelect()
2116 __ cmovl(cond, false_reg, Address(ESP, true_loc.GetStackIndex())); in VisitSelect()
2124 __ Bind(&false_target); in VisitSelect()
2137 __ subl(ESP, Immediate(adjustment)); in IncreaseFrame()
2138 __ cfi().AdjustCFAOffset(adjustment); in IncreaseFrame()
2142 __ addl(ESP, Immediate(adjustment)); in DecreaseFrame()
2143 __ cfi().AdjustCFAOffset(-adjustment); in DecreaseFrame()
2147 __ nop(); in GenerateNop()
2205 __ xorl(reg, reg); in HandleCondition()
2207 __ setb(X86Condition(cond->GetCondition()), reg); in HandleCondition()
2227 __ Bind(&false_label); in HandleCondition()
2228 __ xorl(reg, reg); in HandleCondition()
2229 __ jmp(&done_label); in HandleCondition()
2232 __ Bind(&true_label); in HandleCondition()
2233 __ movl(reg, Immediate(1)); in HandleCondition()
2234 __ Bind(&done_label); in HandleCondition()
2444 __ movd(EAX, XMM0); in VisitReturn()
2453 __ movd(EAX, XMM0); in VisitReturn()
2455 __ movaps(XMM1, XMM0); in VisitReturn()
2456 __ psrlq(XMM1, Immediate(32)); in VisitReturn()
2457 __ movd(EDX, XMM1); in VisitReturn()
2603 __ movl(temp, Immediate(address)); in MaybeGenerateInlineCacheCheck()
2605 __ cmpl(klass, Address(temp, InlineCache::ClassesOffset().Int32Value())); in MaybeGenerateInlineCacheCheck()
2606 __ j(kEqual, &done); in MaybeGenerateInlineCacheCheck()
2608 __ Bind(&done); in MaybeGenerateInlineCacheCheck()
2625 __ movd(hidden_reg, locations->InAt(invoke->GetNumberOfArguments() - 1).AsRegister<Register>()); in VisitInvokeInterface()
2628 __ movd(hidden_reg, temp); in VisitInvokeInterface()
2632 __ movl(temp, Address(ESP, receiver.GetStackIndex())); in VisitInvokeInterface()
2634 __ movl(temp, Address(temp, class_offset)); in VisitInvokeInterface()
2637 __ movl(temp, Address(receiver.AsRegister<Register>(), class_offset)); in VisitInvokeInterface()
2647 __ MaybeUnpoisonHeapReference(temp); in VisitInvokeInterface()
2652 __ movl(temp, in VisitInvokeInterface()
2657 __ movl(temp, Address(temp, method_offset)); in VisitInvokeInterface()
2661 __ movd(hidden_reg, temp); in VisitInvokeInterface()
2664 __ call(Address(temp, in VisitInvokeInterface()
2730 __ negl(out.AsRegister<Register>()); in VisitNeg()
2736 __ negl(out.AsRegisterPairLow<Register>()); in VisitNeg()
2742 __ adcl(out.AsRegisterPairHigh<Register>(), Immediate(0)); in VisitNeg()
2743 __ negl(out.AsRegisterPairHigh<Register>()); in VisitNeg()
2753 __ movl(constant, Immediate(INT32_C(0x80000000))); in VisitNeg()
2754 __ movd(mask, constant); in VisitNeg()
2755 __ xorps(out.AsFpuRegister<XmmRegister>(), mask); in VisitNeg()
2765 __ LoadLongConstant(mask, INT64_C(0x8000000000000000)); in VisitNeg()
2766 __ xorpd(out.AsFpuRegister<XmmRegister>(), mask); in VisitNeg()
2793 __ movss(mask, codegen_->LiteralInt32Address(INT32_C(0x80000000), in VisitX86FPNeg()
2796 __ xorps(out.AsFpuRegister<XmmRegister>(), mask); in VisitX86FPNeg()
2798 __ movsd(mask, codegen_->LiteralInt64Address(INT64_C(0x8000000000000000), in VisitX86FPNeg()
2801 __ xorpd(out.AsFpuRegister<XmmRegister>(), mask); in VisitX86FPNeg()
2992 __ movzxb(out.AsRegister<Register>(), in.AsRegister<ByteRegister>()); in VisitTypeConversion()
2996 __ movl(out.AsRegister<Register>(), Immediate(static_cast<uint8_t>(value))); in VisitTypeConversion()
3001 __ movzxb(out.AsRegister<Register>(), in.AsRegisterPairLow<ByteRegister>()); in VisitTypeConversion()
3005 __ movl(out.AsRegister<Register>(), Immediate(static_cast<uint8_t>(value))); in VisitTypeConversion()
3022 __ movsxb(out.AsRegister<Register>(), in.AsRegister<ByteRegister>()); in VisitTypeConversion()
3026 __ movl(out.AsRegister<Register>(), Immediate(static_cast<int8_t>(value))); in VisitTypeConversion()
3031 __ movsxb(out.AsRegister<Register>(), in.AsRegisterPairLow<ByteRegister>()); in VisitTypeConversion()
3035 __ movl(out.AsRegister<Register>(), Immediate(static_cast<int8_t>(value))); in VisitTypeConversion()
3051 __ movzxw(out.AsRegister<Register>(), in.AsRegister<Register>()); in VisitTypeConversion()
3053 __ movzxw(out.AsRegister<Register>(), Address(ESP, in.GetStackIndex())); in VisitTypeConversion()
3057 __ movl(out.AsRegister<Register>(), Immediate(static_cast<uint16_t>(value))); in VisitTypeConversion()
3062 __ movzxw(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>()); in VisitTypeConversion()
3064 __ movzxw(out.AsRegister<Register>(), Address(ESP, in.GetStackIndex())); in VisitTypeConversion()
3068 __ movl(out.AsRegister<Register>(), Immediate(static_cast<uint16_t>(value))); in VisitTypeConversion()
3083 __ movsxw(out.AsRegister<Register>(), in.AsRegister<Register>()); in VisitTypeConversion()
3085 __ movsxw(out.AsRegister<Register>(), Address(ESP, in.GetStackIndex())); in VisitTypeConversion()
3089 __ movl(out.AsRegister<Register>(), Immediate(static_cast<int16_t>(value))); in VisitTypeConversion()
3094 __ movsxw(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>()); in VisitTypeConversion()
3096 __ movsxw(out.AsRegister<Register>(), Address(ESP, in.GetStackIndex())); in VisitTypeConversion()
3100 __ movl(out.AsRegister<Register>(), Immediate(static_cast<int16_t>(value))); in VisitTypeConversion()
3114 __ movl(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>()); in VisitTypeConversion()
3116 __ movl(out.AsRegister<Register>(), Address(ESP, in.GetStackIndex())); in VisitTypeConversion()
3121 __ movl(out.AsRegister<Register>(), Immediate(static_cast<int32_t>(value))); in VisitTypeConversion()
3131 __ movl(output, Immediate(kPrimIntMax)); in VisitTypeConversion()
3133 __ cvtsi2ss(temp, output); in VisitTypeConversion()
3135 __ comiss(input, temp); in VisitTypeConversion()
3136 __ j(kAboveEqual, &done); in VisitTypeConversion()
3138 __ j(kUnordered, &nan); in VisitTypeConversion()
3140 __ cvttss2si(output, input); in VisitTypeConversion()
3141 __ jmp(&done); in VisitTypeConversion()
3142 __ Bind(&nan); in VisitTypeConversion()
3144 __ xorl(output, output); in VisitTypeConversion()
3145 __ Bind(&done); in VisitTypeConversion()
3155 __ movl(output, Immediate(kPrimIntMax)); in VisitTypeConversion()
3157 __ cvtsi2sd(temp, output); in VisitTypeConversion()
3159 __ comisd(input, temp); in VisitTypeConversion()
3160 __ j(kAboveEqual, &done); in VisitTypeConversion()
3162 __ j(kUnordered, &nan); in VisitTypeConversion()
3164 __ cvttsd2si(output, input); in VisitTypeConversion()
3165 __ jmp(&done); in VisitTypeConversion()
3166 __ Bind(&nan); in VisitTypeConversion()
3168 __ xorl(output, output); in VisitTypeConversion()
3169 __ Bind(&done); in VisitTypeConversion()
3190 __ cdq(); in VisitTypeConversion()
3217 __ cvtsi2ss(out.AsFpuRegister<XmmRegister>(), in.AsRegister<Register>()); in VisitTypeConversion()
3235 __ fstps(Address(ESP, out.GetStackIndex() + adjustment)); in VisitTypeConversion()
3237 __ fstps(Address(ESP, 0)); in VisitTypeConversion()
3250 __ cvtsd2ss(out.AsFpuRegister<XmmRegister>(), in.AsFpuRegister<XmmRegister>()); in VisitTypeConversion()
3267 __ cvtsi2sd(out.AsFpuRegister<XmmRegister>(), in.AsRegister<Register>()); in VisitTypeConversion()
3285 __ fstpl(Address(ESP, out.GetStackIndex() + adjustment)); in VisitTypeConversion()
3287 __ fstpl(Address(ESP, 0)); in VisitTypeConversion()
3300 __ cvtss2sd(out.AsFpuRegister<XmmRegister>(), in.AsFpuRegister<XmmRegister>()); in VisitTypeConversion()
3363 __ addl(out.AsRegister<Register>(), second.AsRegister<Register>()); in VisitAdd()
3365 __ addl(out.AsRegister<Register>(), first.AsRegister<Register>()); in VisitAdd()
3367 __ leal(out.AsRegister<Register>(), Address( in VisitAdd()
3373 __ addl(out.AsRegister<Register>(), Immediate(value)); in VisitAdd()
3375 __ leal(out.AsRegister<Register>(), Address(first.AsRegister<Register>(), value)); in VisitAdd()
3379 __ addl(first.AsRegister<Register>(), Address(ESP, second.GetStackIndex())); in VisitAdd()
3386 __ addl(first.AsRegisterPairLow<Register>(), second.AsRegisterPairLow<Register>()); in VisitAdd()
3387 __ adcl(first.AsRegisterPairHigh<Register>(), second.AsRegisterPairHigh<Register>()); in VisitAdd()
3389 __ addl(first.AsRegisterPairLow<Register>(), Address(ESP, second.GetStackIndex())); in VisitAdd()
3390 __ adcl(first.AsRegisterPairHigh<Register>(), in VisitAdd()
3395 __ addl(first.AsRegisterPairLow<Register>(), Immediate(Low32Bits(value))); in VisitAdd()
3396 __ adcl(first.AsRegisterPairHigh<Register>(), Immediate(High32Bits(value))); in VisitAdd()
3403 __ addss(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitAdd()
3407 __ addss(first.AsFpuRegister<XmmRegister>(), in VisitAdd()
3414 __ addss(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitAdd()
3421 __ addsd(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitAdd()
3425 __ addsd(first.AsFpuRegister<XmmRegister>(), in VisitAdd()
3432 __ addsd(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitAdd()
3480 __ subl(first.AsRegister<Register>(), second.AsRegister<Register>()); in VisitSub()
3482 __ subl(first.AsRegister<Register>(), in VisitSub()
3485 __ subl(first.AsRegister<Register>(), Address(ESP, second.GetStackIndex())); in VisitSub()
3492 __ subl(first.AsRegisterPairLow<Register>(), second.AsRegisterPairLow<Register>()); in VisitSub()
3493 __ sbbl(first.AsRegisterPairHigh<Register>(), second.AsRegisterPairHigh<Register>()); in VisitSub()
3495 __ subl(first.AsRegisterPairLow<Register>(), Address(ESP, second.GetStackIndex())); in VisitSub()
3496 __ sbbl(first.AsRegisterPairHigh<Register>(), in VisitSub()
3501 __ subl(first.AsRegisterPairLow<Register>(), Immediate(Low32Bits(value))); in VisitSub()
3502 __ sbbl(first.AsRegisterPairHigh<Register>(), Immediate(High32Bits(value))); in VisitSub()
3509 __ subss(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitSub()
3513 __ subss(first.AsFpuRegister<XmmRegister>(), in VisitSub()
3520 __ subss(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitSub()
3527 __ subsd(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitSub()
3531 __ subsd(first.AsFpuRegister<XmmRegister>(), in VisitSub()
3538 __ subsd(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitSub()
3602 __ imull(out.AsRegister<Register>(), first.AsRegister<Register>(), imm); in VisitMul()
3605 __ imull(first.AsRegister<Register>(), second.AsRegister<Register>()); in VisitMul()
3609 __ imull(first.AsRegister<Register>(), Address(ESP, second.GetStackIndex())); in VisitMul()
3636 __ movl(eax, high); in VisitMul()
3638 __ imull(eax, in1_lo); in VisitMul()
3640 __ imull(in1_hi, low); in VisitMul()
3642 __ addl(in1_hi, eax); in VisitMul()
3644 __ movl(eax, low); in VisitMul()
3646 __ mull(in1_lo); in VisitMul()
3648 __ addl(in1_hi, edx); in VisitMul()
3650 __ movl(in1_lo, eax); in VisitMul()
3655 __ movl(eax, in2_hi); in VisitMul()
3657 __ imull(eax, in1_lo); in VisitMul()
3659 __ imull(in1_hi, in2_lo); in VisitMul()
3661 __ addl(in1_hi, eax); in VisitMul()
3663 __ movl(eax, in1_lo); in VisitMul()
3665 __ mull(in2_lo); in VisitMul()
3667 __ addl(in1_hi, edx); in VisitMul()
3669 __ movl(in1_lo, eax); in VisitMul()
3675 __ movl(eax, in2_hi); in VisitMul()
3677 __ imull(eax, in1_lo); in VisitMul()
3679 __ imull(in1_hi, in2_lo); in VisitMul()
3681 __ addl(in1_hi, eax); in VisitMul()
3683 __ movl(eax, in1_lo); in VisitMul()
3685 __ mull(in2_lo); in VisitMul()
3687 __ addl(in1_hi, edx); in VisitMul()
3689 __ movl(in1_lo, eax); in VisitMul()
3698 __ mulss(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitMul()
3702 __ mulss(first.AsFpuRegister<XmmRegister>(), in VisitMul()
3709 __ mulss(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitMul()
3717 __ mulsd(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitMul()
3721 __ mulsd(first.AsFpuRegister<XmmRegister>(), in VisitMul()
3728 __ mulsd(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitMul()
3746 __ flds(Address(ESP, source.GetStackIndex() + stack_adjustment)); in PushOntoFPStack()
3748 __ filds(Address(ESP, source.GetStackIndex() + stack_adjustment)); in PushOntoFPStack()
3753 __ fldl(Address(ESP, source.GetStackIndex() + stack_adjustment)); in PushOntoFPStack()
3755 __ fildl(Address(ESP, source.GetStackIndex() + stack_adjustment)); in PushOntoFPStack()
3763 __ flds(Address(ESP, temp_offset)); in PushOntoFPStack()
3765 __ filds(Address(ESP, temp_offset)); in PushOntoFPStack()
3771 __ fldl(Address(ESP, temp_offset)); in PushOntoFPStack()
3773 __ fildl(Address(ESP, temp_offset)); in PushOntoFPStack()
3799 __ Bind(&retry); in GenerateRemFP()
3800 __ fprem(); in GenerateRemFP()
3803 __ fstsw(); in GenerateRemFP()
3807 __ andl(EAX, Immediate(kC2ConditionMask)); in GenerateRemFP()
3808 __ j(kNotEqual, &retry); in GenerateRemFP()
3813 __ fsts(Address(ESP, 0)); in GenerateRemFP()
3815 __ fstl(Address(ESP, 0)); in GenerateRemFP()
3819 __ fucompp(); in GenerateRemFP()
3824 __ movss(out.AsFpuRegister<XmmRegister>(), Address(ESP, 0)); in GenerateRemFP()
3826 __ movsd(out.AsFpuRegister<XmmRegister>(), Address(ESP, 0)); in GenerateRemFP()
3848 __ xorl(out_register, out_register); in DivRemOneOrMinusOne()
3850 __ movl(out_register, input_register); in DivRemOneOrMinusOne()
3852 __ negl(out_register); in DivRemOneOrMinusOne()
3870 __ movl(out, numerator); in RemByPowerOfTwo()
3871 __ andl(out, Immediate(abs_imm-1)); in RemByPowerOfTwo()
3872 __ j(Condition::kZero, &done); in RemByPowerOfTwo()
3873 __ leal(tmp, Address(out, static_cast<int32_t>(~(abs_imm-1)))); in RemByPowerOfTwo()
3874 __ testl(numerator, numerator); in RemByPowerOfTwo()
3875 __ cmovl(Condition::kLess, out, tmp); in RemByPowerOfTwo()
3876 __ Bind(&done); in RemByPowerOfTwo()
3890 __ leal(num, Address(input_register, abs_imm - 1)); in DivByPowerOfTwo()
3891 __ testl(input_register, input_register); in DivByPowerOfTwo()
3892 __ cmovl(kGreaterEqual, num, input_register); in DivByPowerOfTwo()
3894 __ sarl(num, Immediate(shift)); in DivByPowerOfTwo()
3897 __ negl(num); in DivByPowerOfTwo()
3900 __ movl(out_register, num); in DivByPowerOfTwo()
3935 __ movl(num, eax); in GenerateDivRemWithAnyConstant()
3938 __ movl(eax, Immediate(magic)); in GenerateDivRemWithAnyConstant()
3941 __ imull(num); in GenerateDivRemWithAnyConstant()
3945 __ addl(edx, num); in GenerateDivRemWithAnyConstant()
3947 __ subl(edx, num); in GenerateDivRemWithAnyConstant()
3952 __ sarl(edx, Immediate(shift)); in GenerateDivRemWithAnyConstant()
3956 __ movl(eax, edx); in GenerateDivRemWithAnyConstant()
3957 __ shrl(edx, Immediate(31)); in GenerateDivRemWithAnyConstant()
3958 __ addl(edx, eax); in GenerateDivRemWithAnyConstant()
3961 __ movl(eax, num); in GenerateDivRemWithAnyConstant()
3962 __ imull(edx, Immediate(imm)); in GenerateDivRemWithAnyConstant()
3963 __ subl(eax, edx); in GenerateDivRemWithAnyConstant()
3964 __ movl(edx, eax); in GenerateDivRemWithAnyConstant()
3966 __ movl(eax, edx); in GenerateDivRemWithAnyConstant()
4011 __ cmpl(second_reg, Immediate(-1)); in GenerateDivRemIntegral()
4012 __ j(kEqual, slow_path->GetEntryLabel()); in GenerateDivRemIntegral()
4015 __ cdq(); in GenerateDivRemIntegral()
4017 __ idivl(second_reg); in GenerateDivRemIntegral()
4018 __ Bind(slow_path->GetExitLabel()); in GenerateDivRemIntegral()
4111 __ divss(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitDiv()
4115 __ divss(first.AsFpuRegister<XmmRegister>(), in VisitDiv()
4122 __ divss(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitDiv()
4129 __ divsd(first.AsFpuRegister<XmmRegister>(), second.AsFpuRegister<XmmRegister>()); in VisitDiv()
4133 __ divsd(first.AsFpuRegister<XmmRegister>(), in VisitDiv()
4140 __ divsd(first.AsFpuRegister<XmmRegister>(), Address(ESP, second.GetStackIndex())); in VisitDiv()
4272 __ cmpl(output_lo, op2_lo); in GenerateMinMaxInt()
4276 __ movl(temp, output_hi); in GenerateMinMaxInt()
4277 __ sbbl(temp, op2_hi); in GenerateMinMaxInt()
4281 __ cmovl(cond, output_lo, op2_lo); in GenerateMinMaxInt()
4282 __ cmovl(cond, output_hi, op2_hi); in GenerateMinMaxInt()
4294 __ cmpl(out, op2); in GenerateMinMaxInt()
4296 __ cmovl(cond, out, op2); in GenerateMinMaxInt()
4335 __ ucomisd(out, op2); in GenerateMinMaxFP()
4338 __ ucomiss(out, op2); in GenerateMinMaxFP()
4341 __ j(Condition::kParityEven, &nan); in GenerateMinMaxFP()
4343 __ j(is_min ? Condition::kAbove : Condition::kBelow, &op2_label); in GenerateMinMaxFP()
4344 __ j(is_min ? Condition::kBelow : Condition::kAbove, &done); in GenerateMinMaxFP()
4349 __ orpd(out, op2); in GenerateMinMaxFP()
4351 __ orps(out, op2); in GenerateMinMaxFP()
4355 __ andpd(out, op2); in GenerateMinMaxFP()
4357 __ andps(out, op2); in GenerateMinMaxFP()
4360 __ jmp(&done); in GenerateMinMaxFP()
4363 __ Bind(&nan); in GenerateMinMaxFP()
4366 __ LoadLongConstant(out, kDoubleNaN); in GenerateMinMaxFP()
4369 __ movl(constant, Immediate(kFloatNaN)); in GenerateMinMaxFP()
4370 __ movd(out, constant); in GenerateMinMaxFP()
4372 __ jmp(&done); in GenerateMinMaxFP()
4375 __ Bind(&op2_label); in GenerateMinMaxFP()
4377 __ movsd(out, op2); in GenerateMinMaxFP()
4379 __ movss(out, op2); in GenerateMinMaxFP()
4383 __ Bind(&done); in GenerateMinMaxFP()
4456 __ cdq(); in VisitAbs()
4458 __ xorl(EAX, EDX); in VisitAbs()
4460 __ subl(EAX, EDX); in VisitAbs()
4473 __ movl(temp, input_hi); in VisitAbs()
4474 __ sarl(temp, Immediate(31)); in VisitAbs()
4476 __ movl(output_lo, temp); in VisitAbs()
4477 __ movl(output_hi, temp); in VisitAbs()
4479 __ xorl(output_lo, input_lo); in VisitAbs()
4480 __ xorl(output_hi, input_hi); in VisitAbs()
4482 __ subl(output_lo, temp); in VisitAbs()
4483 __ sbbl(output_hi, temp); in VisitAbs()
4490 __ movl(constant, Immediate(INT32_C(0x7FFFFFFF))); in VisitAbs()
4491 __ movd(temp, constant); in VisitAbs()
4492 __ andps(out, temp); in VisitAbs()
4499 __ LoadLongConstant(temp, INT64_C(0x7FFFFFFFFFFFFFFF)); in VisitAbs()
4500 __ andpd(out, temp); in VisitAbs()
4548 __ testl(value.AsRegister<Register>(), value.AsRegister<Register>()); in VisitDivZeroCheck()
4549 __ j(kEqual, slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4551 __ cmpl(Address(ESP, value.GetStackIndex()), Immediate(0)); in VisitDivZeroCheck()
4552 __ j(kEqual, slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4556 __ jmp(slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4564 __ movl(temp, value.AsRegisterPairLow<Register>()); in VisitDivZeroCheck()
4565 __ orl(temp, value.AsRegisterPairHigh<Register>()); in VisitDivZeroCheck()
4566 __ j(kEqual, slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4570 __ jmp(slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4617 __ shll(first_reg, second_reg); in HandleShift()
4619 __ sarl(first_reg, second_reg); in HandleShift()
4621 __ shrl(first_reg, second_reg); in HandleShift()
4630 __ shll(first_reg, imm); in HandleShift()
4632 __ sarl(first_reg, imm); in HandleShift()
4634 __ shrl(first_reg, imm); in HandleShift()
4676 __ addl(low, low); in GenerateShlLong()
4677 __ adcl(high, high); in GenerateShlLong()
4689 __ movl(high, low); in GenerateShlLong()
4690 __ shll(high, Immediate(shift - 32)); in GenerateShlLong()
4691 __ xorl(low, low); in GenerateShlLong()
4694 __ shld(high, low, Immediate(shift)); in GenerateShlLong()
4695 __ shll(low, Immediate(shift)); in GenerateShlLong()
4701 __ shld(loc.AsRegisterPairHigh<Register>(), loc.AsRegisterPairLow<Register>(), shifter); in GenerateShlLong()
4702 __ shll(loc.AsRegisterPairLow<Register>(), shifter); in GenerateShlLong()
4703 __ testl(shifter, Immediate(32)); in GenerateShlLong()
4704 __ j(kEqual, &done); in GenerateShlLong()
4705 __ movl(loc.AsRegisterPairHigh<Register>(), loc.AsRegisterPairLow<Register>()); in GenerateShlLong()
4706 __ movl(loc.AsRegisterPairLow<Register>(), Immediate(0)); in GenerateShlLong()
4707 __ Bind(&done); in GenerateShlLong()
4716 __ movl(low, high); in GenerateShrLong()
4717 __ sarl(high, Immediate(31)); in GenerateShrLong()
4721 __ movl(low, high); in GenerateShrLong()
4722 __ sarl(high, Immediate(31)); in GenerateShrLong()
4723 __ sarl(low, Immediate(shift - 32)); in GenerateShrLong()
4726 __ shrd(low, high, Immediate(shift)); in GenerateShrLong()
4727 __ sarl(high, Immediate(shift)); in GenerateShrLong()
4733 __ shrd(loc.AsRegisterPairLow<Register>(), loc.AsRegisterPairHigh<Register>(), shifter); in GenerateShrLong()
4734 __ sarl(loc.AsRegisterPairHigh<Register>(), shifter); in GenerateShrLong()
4735 __ testl(shifter, Immediate(32)); in GenerateShrLong()
4736 __ j(kEqual, &done); in GenerateShrLong()
4737 __ movl(loc.AsRegisterPairLow<Register>(), loc.AsRegisterPairHigh<Register>()); in GenerateShrLong()
4738 __ sarl(loc.AsRegisterPairHigh<Register>(), Immediate(31)); in GenerateShrLong()
4739 __ Bind(&done); in GenerateShrLong()
4756 __ movl(low, high); in GenerateUShrLong()
4757 __ shrl(low, Immediate(shift - 32)); in GenerateUShrLong()
4758 __ xorl(high, high); in GenerateUShrLong()
4761 __ shrd(low, high, Immediate(shift)); in GenerateUShrLong()
4762 __ shrl(high, Immediate(shift)); in GenerateUShrLong()
4768 __ shrd(loc.AsRegisterPairLow<Register>(), loc.AsRegisterPairHigh<Register>(), shifter); in GenerateUShrLong()
4769 __ shrl(loc.AsRegisterPairHigh<Register>(), shifter); in GenerateUShrLong()
4770 __ testl(shifter, Immediate(32)); in GenerateUShrLong()
4771 __ j(kEqual, &done); in GenerateUShrLong()
4772 __ movl(loc.AsRegisterPairLow<Register>(), loc.AsRegisterPairHigh<Register>()); in GenerateUShrLong()
4773 __ movl(loc.AsRegisterPairHigh<Register>(), Immediate(0)); in GenerateUShrLong()
4774 __ Bind(&done); in GenerateUShrLong()
4807 __ rorl(first_reg, second_reg); in VisitRor()
4810 __ rorl(first_reg, imm); in VisitRor()
4822 __ movl(temp_reg, first_reg_hi); in VisitRor()
4823 __ shrd(first_reg_hi, first_reg_lo, second_reg); in VisitRor()
4824 __ shrd(first_reg_lo, temp_reg, second_reg); in VisitRor()
4825 __ movl(temp_reg, first_reg_hi); in VisitRor()
4826 __ testl(second_reg, Immediate(32)); in VisitRor()
4827 __ cmovl(kNotEqual, first_reg_hi, first_reg_lo); in VisitRor()
4828 __ cmovl(kNotEqual, first_reg_lo, temp_reg); in VisitRor()
4837 __ movl(temp_reg, first_reg_lo); in VisitRor()
4838 __ movl(first_reg_lo, first_reg_hi); in VisitRor()
4839 __ movl(first_reg_hi, temp_reg); in VisitRor()
4845 __ movl(temp_reg, first_reg_lo); in VisitRor()
4848 __ shrd(first_reg_lo, first_reg_hi, imm); in VisitRor()
4851 __ shrd(first_reg_hi, temp_reg, imm); in VisitRor()
4855 __ movl(temp_reg, first_reg_lo); in VisitRor()
4856 __ movl(first_reg_lo, first_reg_hi); in VisitRor()
4857 __ movl(first_reg_hi, temp_reg); in VisitRor()
4954 __ movl(locations->Out().AsRegister<Register>(), in VisitClassTableGet()
4959 __ movl(locations->Out().AsRegister<Register>(), in VisitClassTableGet()
4963 __ movl(locations->Out().AsRegister<Register>(), in VisitClassTableGet()
4982 __ notl(out.AsRegister<Register>()); in VisitNot()
4986 __ notl(out.AsRegisterPairLow<Register>()); in VisitNot()
4987 __ notl(out.AsRegisterPairHigh<Register>()); in VisitNot()
5007 __ xorl(out.AsRegister<Register>(), Immediate(1)); in VisitBooleanNot()
5079 __ cmpl(left_high, right.AsRegisterPairHigh<Register>()); in VisitCompare()
5081 __ cmpl(left_high, Address(ESP, right.GetHighStackIndex(kX86WordSize))); in VisitCompare()
5086 __ j(kLess, &less); // Signed compare. in VisitCompare()
5087 __ j(kGreater, &greater); // Signed compare. in VisitCompare()
5089 __ cmpl(left_low, right.AsRegisterPairLow<Register>()); in VisitCompare()
5091 __ cmpl(left_low, Address(ESP, right.GetStackIndex())); in VisitCompare()
5101 __ j(kUnordered, compare->IsGtBias() ? &greater : &less); in VisitCompare()
5107 __ j(kUnordered, compare->IsGtBias() ? &greater : &less); in VisitCompare()
5115 __ movl(out, Immediate(0)); in VisitCompare()
5116 __ j(kEqual, &done); in VisitCompare()
5117 __ j(less_cond, &less); in VisitCompare()
5119 __ Bind(&greater); in VisitCompare()
5120 __ movl(out, Immediate(1)); in VisitCompare()
5121 __ jmp(&done); in VisitCompare()
5123 __ Bind(&less); in VisitCompare()
5124 __ movl(out, Immediate(-1)); in VisitCompare()
5126 __ Bind(&done); in VisitCompare()
5190 __ movl(temp, Address(ESP, location.GetStackIndex())); in GetInvokeStaticOrDirectExtraParameter()
5201 __ movl(temp, Address(ESP, stack_offset)); in GetInvokeStaticOrDirectExtraParameter()
5212 __ leal(temp.AsRegister<Register>(), in LoadMethod()
5222 __ movl(temp.AsRegister<Register>(), Address(base_reg, kPlaceholder32BitOffset)); in LoadMethod()
5230 __ movl(temp.AsRegister<Register>(), Address(base_reg, kPlaceholder32BitOffset)); in LoadMethod()
5236 __ movl(temp.AsRegister<Register>(), in LoadMethod()
5259 __ fs()->movl(temp.AsRegister<Register>(), Address::Absolute(offset)); in GenerateStaticOrDirectCall()
5283 __ call(GetFrameEntryLabel()); in GenerateStaticOrDirectCall()
5294 __ call(Address(base_reg, CodeGeneratorX86::kPlaceholder32BitOffset)); in GenerateStaticOrDirectCall()
5298 __ call(Address(callee_method.AsRegister<Register>(), in GenerateStaticOrDirectCall()
5310 __ movzxb(EAX, AL); in GenerateStaticOrDirectCall()
5313 __ movsxb(EAX, AL); in GenerateStaticOrDirectCall()
5316 __ movzxw(EAX, EAX); in GenerateStaticOrDirectCall()
5319 __ movsxw(EAX, EAX); in GenerateStaticOrDirectCall()
5322 __ fstps(Address(ESP, 0)); in GenerateStaticOrDirectCall()
5323 __ movss(XMM0, Address(ESP, 0)); in GenerateStaticOrDirectCall()
5326 __ fstpl(Address(ESP, 0)); in GenerateStaticOrDirectCall()
5327 __ movsd(XMM0, Address(ESP, 0)); in GenerateStaticOrDirectCall()
5344 __ call(Address(callee_method.AsRegister<Register>(), in GenerateStaticOrDirectCall()
5368 __ movl(temp, Address(receiver, class_offset)); in GenerateVirtualCall()
5377 __ MaybeUnpoisonHeapReference(temp); in GenerateVirtualCall()
5382 __ movl(temp, Address(temp, method_offset)); in GenerateVirtualCall()
5384 __ call(Address( in GenerateVirtualCall()
5393 __ Bind(&boot_image_other_patches_.back().label); in RecordBootImageIntrinsicPatch()
5400 __ Bind(&boot_image_other_patches_.back().label); in RecordBootImageRelRoPatch()
5413 __ Bind(&boot_image_method_patches_.back().label); in RecordBootImageMethodPatch()
5428 __ Bind(&method_bss_entry_patches_.back().label); in RecordMethodBssEntryPatch()
5436 __ Bind(&boot_image_type_patches_.back().label); in RecordBootImageTypePatch()
5467 __ Bind(&boot_image_string_patches_.back().label); in RecordBootImageStringPatch()
5485 __ Bind(&boot_image_jni_entrypoint_patches_.back().label); in RecordBootImageJniEntrypointPatch()
5497 __ leal(reg, Address(method_address_reg, CodeGeneratorX86::kPlaceholder32BitOffset)); in LoadBootImageAddress()
5505 __ movl(reg, Address(method_address_reg, CodeGeneratorX86::kPlaceholder32BitOffset)); in LoadBootImageAddress()
5512 __ movl(reg, Immediate(dchecked_integral_cast<uint32_t>(reinterpret_cast<uintptr_t>(address)))); in LoadBootImageAddress()
5525 __ leal(reg, Address(method_address_reg, CodeGeneratorX86::kPlaceholder32BitOffset)); in LoadIntrinsicDeclaringClass()
5529 __ Bind(&boot_image_type_patches_.back().label); in LoadIntrinsicDeclaringClass()
5617 __ testl(value, value); in MarkGCCard()
5618 __ j(kEqual, &is_null); in MarkGCCard()
5621 __ fs()->movl(card, Address::Absolute(Thread::CardTableOffset<kX86PointerSize>().Int32Value())); in MarkGCCard()
5624 __ movl(temp, object); in MarkGCCard()
5625 __ shrl(temp, Immediate(gc::accounting::CardTable::kCardShift)); in MarkGCCard()
5639 __ movb(Address(temp, card, TIMES_1, 0), in MarkGCCard()
5642 __ Bind(&is_null); in MarkGCCard()
5715 __ movzxb(out.AsRegister<Register>(), Address(base, offset)); in HandleFieldGet()
5720 __ movsxb(out.AsRegister<Register>(), Address(base, offset)); in HandleFieldGet()
5725 __ movzxw(out.AsRegister<Register>(), Address(base, offset)); in HandleFieldGet()
5730 __ movsxw(out.AsRegister<Register>(), Address(base, offset)); in HandleFieldGet()
5735 __ movl(out.AsRegister<Register>(), Address(base, offset)); in HandleFieldGet()
5749 __ movl(out.AsRegister<Register>(), Address(base, offset)); in HandleFieldGet()
5765 __ movsd(temp, Address(base, offset)); in HandleFieldGet()
5767 __ movd(out.AsRegisterPairLow<Register>(), temp); in HandleFieldGet()
5768 __ psrlq(temp, Immediate(32)); in HandleFieldGet()
5769 __ movd(out.AsRegisterPairHigh<Register>(), temp); in HandleFieldGet()
5772 __ movl(out.AsRegisterPairLow<Register>(), Address(base, offset)); in HandleFieldGet()
5774 __ movl(out.AsRegisterPairHigh<Register>(), Address(base, kX86WordSize + offset)); in HandleFieldGet()
5780 __ movss(out.AsFpuRegister<XmmRegister>(), Address(base, offset)); in HandleFieldGet()
5785 __ movsd(out.AsFpuRegister<XmmRegister>(), Address(base, offset)); in HandleFieldGet()
5881 __ movb(field_addr, Immediate(CodeGenerator::GetInt8ValueOf(value.GetConstant()))); in HandleFieldSet()
5883 __ movb(field_addr, value.AsRegister<ByteRegister>()); in HandleFieldSet()
5891 __ movw(field_addr, Immediate(CodeGenerator::GetInt16ValueOf(value.GetConstant()))); in HandleFieldSet()
5893 __ movw(field_addr, value.AsRegister<Register>()); in HandleFieldSet()
5906 __ movl(temp, value.AsRegister<Register>()); in HandleFieldSet()
5907 __ PoisonHeapReference(temp); in HandleFieldSet()
5908 __ movl(field_addr, temp); in HandleFieldSet()
5911 __ movl(field_addr, Immediate(v)); in HandleFieldSet()
5914 __ movl(field_addr, value.AsRegister<Register>()); in HandleFieldSet()
5923 __ movd(temp1, value.AsRegisterPairLow<Register>()); in HandleFieldSet()
5924 __ movd(temp2, value.AsRegisterPairHigh<Register>()); in HandleFieldSet()
5925 __ punpckldq(temp1, temp2); in HandleFieldSet()
5926 __ movsd(field_addr, temp1); in HandleFieldSet()
5930 __ movl(field_addr, Immediate(Low32Bits(v))); in HandleFieldSet()
5932 __ movl(field_addr.displaceBy(kX86WordSize), Immediate(High32Bits(v))); in HandleFieldSet()
5934 __ movl(field_addr, value.AsRegisterPairLow<Register>()); in HandleFieldSet()
5936 __ movl(field_addr.displaceBy(kX86WordSize), value.AsRegisterPairHigh<Register>()); in HandleFieldSet()
5945 __ movl(field_addr, Immediate(v)); in HandleFieldSet()
5947 __ movss(field_addr, value.AsFpuRegister<XmmRegister>()); in HandleFieldSet()
5956 __ movl(field_addr, Immediate(Low32Bits(v))); in HandleFieldSet()
5958 __ movl(field_addr.displaceBy(kX86WordSize), Immediate(High32Bits(v))); in HandleFieldSet()
5961 __ movsd(field_addr, value.AsFpuRegister<XmmRegister>()); in HandleFieldSet()
6005 __ testl(base, base); in HandleFieldSet()
6006 __ j(kEqual, &pred_is_null); in HandleFieldSet()
6018 __ Bind(&pred_is_null); in HandleFieldSet()
6060 __ testl(recv, recv); in VisitPredicatedInstanceFieldGet()
6061 __ j(kZero, &finish); in VisitPredicatedInstanceFieldGet()
6063 __ Bind(&finish); in VisitPredicatedInstanceFieldGet()
6074 __ movl(EAX, Immediate(instruction->GetFormat()->GetValue())); in VisitStringBuilderAppend()
6161 __ testl(EAX, Address(obj.AsRegister<Register>(), 0)); in GenerateImplicitNullCheck()
6173 __ testl(obj.AsRegister<Register>(), obj.AsRegister<Register>()); in GenerateExplicitNullCheck()
6175 __ cmpl(Address(ESP, obj.GetStackIndex()), Immediate(0)); in GenerateExplicitNullCheck()
6179 __ jmp(slow_path->GetEntryLabel()); in GenerateExplicitNullCheck()
6182 __ j(kEqual, slow_path->GetEntryLabel()); in GenerateExplicitNullCheck()
6231 __ movzxb(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_1, data_offset)); in VisitArrayGet()
6237 __ movsxb(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_1, data_offset)); in VisitArrayGet()
6247 __ testb(Address(obj, count_offset), Immediate(1)); in VisitArrayGet()
6251 __ j(kNotZero, ¬_compressed); in VisitArrayGet()
6252 __ movzxb(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_1, data_offset)); in VisitArrayGet()
6253 __ jmp(&done); in VisitArrayGet()
6254 __ Bind(¬_compressed); in VisitArrayGet()
6255 __ movzxw(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_2, data_offset)); in VisitArrayGet()
6256 __ Bind(&done); in VisitArrayGet()
6260 __ movzxw(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_2, data_offset)); in VisitArrayGet()
6267 __ movsxw(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_2, data_offset)); in VisitArrayGet()
6273 __ movl(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_4, data_offset)); in VisitArrayGet()
6290 __ movl(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_4, data_offset)); in VisitArrayGet()
6309 __ movl(out_loc.AsRegisterPairLow<Register>(), in VisitArrayGet()
6312 __ movl(out_loc.AsRegisterPairHigh<Register>(), in VisitArrayGet()
6319 __ movss(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_4, data_offset)); in VisitArrayGet()
6325 __ movsd(out, CodeGeneratorX86::ArrayAddress(obj, index, TIMES_8, data_offset)); in VisitArrayGet()
6395 __ movb(address, value.AsRegister<ByteRegister>()); in VisitArraySet()
6397 __ movb(address, Immediate(CodeGenerator::GetInt8ValueOf(value.GetConstant()))); in VisitArraySet()
6408 __ movw(address, value.AsRegister<Register>()); in VisitArraySet()
6410 __ movw(address, Immediate(CodeGenerator::GetInt16ValueOf(value.GetConstant()))); in VisitArraySet()
6424 __ movl(address, Immediate(0)); in VisitArraySet()
6439 __ testl(register_value, register_value); in VisitArraySet()
6440 __ j(kEqual, &do_store); in VisitArraySet()
6461 __ movl(temp, Address(array, class_offset)); in VisitArraySet()
6463 __ MaybeUnpoisonHeapReference(temp); in VisitArraySet()
6466 __ movl(temp, Address(temp, component_offset)); in VisitArraySet()
6470 __ cmpl(temp, Address(register_value, class_offset)); in VisitArraySet()
6474 __ j(kEqual, &do_put); in VisitArraySet()
6477 __ MaybeUnpoisonHeapReference(temp); in VisitArraySet()
6482 __ cmpl(Address(temp, super_offset), Immediate(0)); in VisitArraySet()
6483 __ j(kNotEqual, slow_path->GetEntryLabel()); in VisitArraySet()
6484 __ Bind(&do_put); in VisitArraySet()
6486 __ j(kNotEqual, slow_path->GetEntryLabel()); in VisitArraySet()
6496 __ Bind(&do_store); in VisitArraySet()
6501 __ movl(temp, register_value); in VisitArraySet()
6502 __ PoisonHeapReference(temp); in VisitArraySet()
6506 __ movl(address, source); in VisitArraySet()
6513 __ Bind(slow_path->GetExitLabel()); in VisitArraySet()
6523 __ movl(address, value.AsRegister<Register>()); in VisitArraySet()
6527 __ movl(address, Immediate(v)); in VisitArraySet()
6536 __ movl(CodeGeneratorX86::ArrayAddress(array, index, TIMES_8, data_offset), in VisitArraySet()
6539 __ movl(CodeGeneratorX86::ArrayAddress(array, index, TIMES_8, data_offset + kX86WordSize), in VisitArraySet()
6544 __ movl(CodeGeneratorX86::ArrayAddress(array, index, TIMES_8, data_offset), in VisitArraySet()
6547 __ movl(CodeGeneratorX86::ArrayAddress(array, index, TIMES_8, data_offset + kX86WordSize), in VisitArraySet()
6557 __ movss(address, value.AsFpuRegister<XmmRegister>()); in VisitArraySet()
6561 __ movl(address, Immediate(v)); in VisitArraySet()
6571 __ movsd(address, value.AsFpuRegister<XmmRegister>()); in VisitArraySet()
6577 __ movl(address, Immediate(Low32Bits(v))); in VisitArraySet()
6579 __ movl(address_hi, Immediate(High32Bits(v))); in VisitArraySet()
6609 __ movl(out, Address(obj, offset)); in VisitArrayLength()
6613 __ shrl(out, Immediate(1)); in VisitArrayLength()
6650 __ jmp(slow_path->GetEntryLabel()); in VisitBoundsCheck()
6660 __ cmpl(index_reg, Immediate(length)); in VisitBoundsCheck()
6662 __ j(kAboveEqual, slow_path->GetEntryLabel()); in VisitBoundsCheck()
6675 __ movl(length_reg, array_len); in VisitBoundsCheck()
6677 __ shrl(length_reg, Immediate(1)); in VisitBoundsCheck()
6684 __ cmpl(array_len, Immediate(value)); in VisitBoundsCheck()
6686 __ cmpl(array_len, index_loc.AsRegister<Register>()); in VisitBoundsCheck()
6694 __ j(kBelowEqual, slow_path->GetEntryLabel()); in VisitBoundsCheck()
6753 __ fs()->cmpw(Address::Absolute(Thread::ThreadFlagsOffset<kX86PointerSize>().Int32Value()), in GenerateSuspendCheck()
6756 __ j(kNotEqual, slow_path->GetEntryLabel()); in GenerateSuspendCheck()
6757 __ Bind(slow_path->GetReturnLabel()); in GenerateSuspendCheck()
6759 __ j(kEqual, codegen_->GetLabelOf(successor)); in GenerateSuspendCheck()
6760 __ jmp(slow_path->GetEntryLabel()); in GenerateSuspendCheck()
6776 __ movl(temp_reg, Address(ESP, src + stack_offset)); in MoveMemoryToMemory()
6777 __ movl(Address(ESP, dst + stack_offset), temp_reg); in MoveMemoryToMemory()
6789 __ movl(destination.AsRegister<Register>(), source.AsRegister<Register>()); in EmitMove()
6791 __ movd(destination.AsFpuRegister<XmmRegister>(), source.AsRegister<Register>()); in EmitMove()
6794 __ movl(Address(ESP, destination.GetStackIndex()), source.AsRegister<Register>()); in EmitMove()
6798 __ movl(destination.AsRegisterPairLow<Register>(), source.AsRegisterPairLow<Register>()); in EmitMove()
6800 __ movl(destination.AsRegisterPairHigh<Register>(), source.AsRegisterPairHigh<Register>()); in EmitMove()
6804 __ pushl(source.AsRegisterPairHigh<Register>()); in EmitMove()
6805 __ cfi().AdjustCFAOffset(elem_size); in EmitMove()
6806 __ pushl(source.AsRegisterPairLow<Register>()); in EmitMove()
6807 __ cfi().AdjustCFAOffset(elem_size); in EmitMove()
6809 __ movsd(destination.AsFpuRegister<XmmRegister>(), Address(ESP, 0)); in EmitMove()
6814 __ movl(Address(ESP, destination.GetStackIndex()), source.AsRegisterPairLow<Register>()); in EmitMove()
6815 __ movl(Address(ESP, destination.GetHighStackIndex(kX86WordSize)), in EmitMove()
6820 __ movd(destination.AsRegister<Register>(), source.AsFpuRegister<XmmRegister>()); in EmitMove()
6822 __ movaps(destination.AsFpuRegister<XmmRegister>(), source.AsFpuRegister<XmmRegister>()); in EmitMove()
6828 __ movsd(Address(ESP, 0), source.AsFpuRegister<XmmRegister>()); in EmitMove()
6830 __ popl(destination.AsRegisterPairLow<Register>()); in EmitMove()
6831 __ cfi().AdjustCFAOffset(-elem_size); in EmitMove()
6832 __ popl(destination.AsRegisterPairHigh<Register>()); in EmitMove()
6833 __ cfi().AdjustCFAOffset(-elem_size); in EmitMove()
6835 __ movss(Address(ESP, destination.GetStackIndex()), source.AsFpuRegister<XmmRegister>()); in EmitMove()
6837 __ movsd(Address(ESP, destination.GetStackIndex()), source.AsFpuRegister<XmmRegister>()); in EmitMove()
6840 __ movups(Address(ESP, destination.GetStackIndex()), source.AsFpuRegister<XmmRegister>()); in EmitMove()
6844 __ movl(destination.AsRegister<Register>(), Address(ESP, source.GetStackIndex())); in EmitMove()
6846 __ movss(destination.AsFpuRegister<XmmRegister>(), Address(ESP, source.GetStackIndex())); in EmitMove()
6853 __ movl(destination.AsRegisterPairLow<Register>(), Address(ESP, source.GetStackIndex())); in EmitMove()
6854 __ movl(destination.AsRegisterPairHigh<Register>(), in EmitMove()
6857 __ movsd(destination.AsFpuRegister<XmmRegister>(), Address(ESP, source.GetStackIndex())); in EmitMove()
6864 __ movups(destination.AsFpuRegister<XmmRegister>(), Address(ESP, source.GetStackIndex())); in EmitMove()
6875 __ xorl(destination.AsRegister<Register>(), destination.AsRegister<Register>()); in EmitMove()
6877 __ movl(destination.AsRegister<Register>(), Immediate(value)); in EmitMove()
6881 __ movl(Address(ESP, destination.GetStackIndex()), Immediate(value)); in EmitMove()
6891 __ xorps(dest, dest); in EmitMove()
6896 __ movl(temp, Immediate(value)); in EmitMove()
6897 __ movd(dest, temp); in EmitMove()
6901 __ movl(Address(ESP, destination.GetStackIndex()), imm); in EmitMove()
6910 __ movl(Address(ESP, destination.GetStackIndex()), low); in EmitMove()
6911 __ movl(Address(ESP, destination.GetHighStackIndex(kX86WordSize)), high); in EmitMove()
6913 __ movl(destination.AsRegisterPairLow<Register>(), low); in EmitMove()
6914 __ movl(destination.AsRegisterPairHigh<Register>(), high); in EmitMove()
6928 __ xorpd(dest, dest); in EmitMove()
6930 __ pushl(high); in EmitMove()
6931 __ cfi().AdjustCFAOffset(4); in EmitMove()
6932 __ pushl(low); in EmitMove()
6933 __ cfi().AdjustCFAOffset(4); in EmitMove()
6934 __ movsd(dest, Address(ESP, 0)); in EmitMove()
6939 __ movl(Address(ESP, destination.GetStackIndex()), low); in EmitMove()
6940 __ movl(Address(ESP, destination.GetHighStackIndex(kX86WordSize)), high); in EmitMove()
6954 __ movl(static_cast<Register>(ensure_scratch.GetRegister()), Address(ESP, mem + stack_offset)); in Exchange()
6955 __ movl(Address(ESP, mem + stack_offset), reg); in Exchange()
6956 __ movl(reg, static_cast<Register>(ensure_scratch.GetRegister())); in Exchange()
6965 __ movl(temp_reg, Address(ESP, mem + stack_offset)); in Exchange32()
6966 __ movss(Address(ESP, mem + stack_offset), reg); in Exchange32()
6967 __ movd(reg, temp_reg); in Exchange32()
6973 __ movups(Address(ESP, 0), XmmRegister(reg)); in Exchange128()
6975 __ movups(XmmRegister(reg), Address(ESP, 0)); in Exchange128()
6992 … __ movl(static_cast<Register>(ensure_scratch1.GetRegister()), Address(ESP, mem1 + stack_offset)); in ExchangeMemory()
6993 … __ movl(static_cast<Register>(ensure_scratch2.GetRegister()), Address(ESP, mem2 + stack_offset)); in ExchangeMemory()
6994 … __ movl(Address(ESP, mem2 + stack_offset), static_cast<Register>(ensure_scratch1.GetRegister())); in ExchangeMemory()
6995 … __ movl(Address(ESP, mem1 + stack_offset), static_cast<Register>(ensure_scratch2.GetRegister())); in ExchangeMemory()
7008 __ xorl(destination.AsRegister<Register>(), source.AsRegister<Register>()); in EmitSwap()
7009 __ xorl(source.AsRegister<Register>(), destination.AsRegister<Register>()); in EmitSwap()
7010 __ xorl(destination.AsRegister<Register>(), source.AsRegister<Register>()); in EmitSwap()
7020 __ xorpd(destination.AsFpuRegister<XmmRegister>(), source.AsFpuRegister<XmmRegister>()); in EmitSwap()
7021 __ xorpd(source.AsFpuRegister<XmmRegister>(), destination.AsFpuRegister<XmmRegister>()); in EmitSwap()
7022 __ xorpd(destination.AsFpuRegister<XmmRegister>(), source.AsFpuRegister<XmmRegister>()); in EmitSwap()
7032 __ movhpd(reg, stack); in EmitSwap()
7035 __ movsd(stack, reg); in EmitSwap()
7038 __ psrldq(reg, Immediate(8)); in EmitSwap()
7044 __ movhpd(reg, stack); in EmitSwap()
7047 __ movsd(stack, reg); in EmitSwap()
7050 __ psrldq(reg, Immediate(8)); in EmitSwap()
7065 __ pushl(static_cast<Register>(reg)); in SpillScratch()
7069 __ popl(static_cast<Register>(reg)); in RestoreScratch()
7184 __ leal(out, Address(method_address, CodeGeneratorX86::kPlaceholder32BitOffset)); in VisitLoadClass()
7191 __ movl(out, Address(method_address, CodeGeneratorX86::kPlaceholder32BitOffset)); in VisitLoadClass()
7211 __ movl(out, Immediate(address)); in VisitLoadClass()
7234 __ testl(out, out); in VisitLoadClass()
7235 __ j(kEqual, slow_path->GetEntryLabel()); in VisitLoadClass()
7241 __ Bind(slow_path->GetExitLabel()); in VisitLoadClass()
7294 __ cmpb(Address(class_reg, status_byte_offset), Immediate(shifted_visibly_initialized_value)); in GenerateClassInitializationCheck()
7295 __ j(kBelow, slow_path->GetEntryLabel()); in GenerateClassInitializationCheck()
7296 __ Bind(slow_path->GetExitLabel()); in GenerateClassInitializationCheck()
7308 __ cmpw(Address(temp, mirror::Class::StatusOffset()), Immediate(path_to_root)); in GenerateBitstringTypeCheckCompare()
7311 __ movl(temp, Address(temp, mirror::Class::StatusOffset())); in GenerateBitstringTypeCheckCompare()
7313 __ subl(temp, Immediate(path_to_root)); in GenerateBitstringTypeCheckCompare()
7315 __ shll(temp, Immediate(32u - mask_bits)); in GenerateBitstringTypeCheckCompare()
7383 __ leal(out, Address(method_address, CodeGeneratorX86::kPlaceholder32BitOffset)); in VisitLoadString()
7390 __ movl(out, Address(method_address, CodeGeneratorX86::kPlaceholder32BitOffset)); in VisitLoadString()
7404 __ testl(out, out); in VisitLoadString()
7405 __ j(kEqual, slow_path->GetEntryLabel()); in VisitLoadString()
7406 __ Bind(slow_path->GetExitLabel()); in VisitLoadString()
7412 __ movl(out, Immediate(address)); in VisitLoadString()
7430 __ movl(calling_convention.GetRegisterAt(0), Immediate(load->GetStringIndex().index_)); in VisitLoadString()
7446 __ fs()->movl(load->GetLocations()->Out().AsRegister<Register>(), GetExceptionTlsAddress()); in VisitLoadException()
7454 __ fs()->movl(GetExceptionTlsAddress(), Immediate(0)); in VisitClearException()
7554 __ testl(obj, obj); in VisitInstanceOf()
7555 __ j(kEqual, &zero); in VisitInstanceOf()
7569 __ cmpl(out, cls.AsRegister<Register>()); in VisitInstanceOf()
7572 __ cmpl(out, Address(ESP, cls.GetStackIndex())); in VisitInstanceOf()
7576 __ j(kNotEqual, &zero); in VisitInstanceOf()
7577 __ movl(out, Immediate(1)); in VisitInstanceOf()
7578 __ jmp(&done); in VisitInstanceOf()
7594 __ Bind(&loop); in VisitInstanceOf()
7601 __ testl(out, out); in VisitInstanceOf()
7603 __ j(kEqual, &done); in VisitInstanceOf()
7605 __ cmpl(out, cls.AsRegister<Register>()); in VisitInstanceOf()
7608 __ cmpl(out, Address(ESP, cls.GetStackIndex())); in VisitInstanceOf()
7610 __ j(kNotEqual, &loop); in VisitInstanceOf()
7611 __ movl(out, Immediate(1)); in VisitInstanceOf()
7613 __ jmp(&done); in VisitInstanceOf()
7629 __ Bind(&loop); in VisitInstanceOf()
7631 __ cmpl(out, cls.AsRegister<Register>()); in VisitInstanceOf()
7634 __ cmpl(out, Address(ESP, cls.GetStackIndex())); in VisitInstanceOf()
7636 __ j(kEqual, &success); in VisitInstanceOf()
7643 __ testl(out, out); in VisitInstanceOf()
7644 __ j(kNotEqual, &loop); in VisitInstanceOf()
7646 __ jmp(&done); in VisitInstanceOf()
7647 __ Bind(&success); in VisitInstanceOf()
7648 __ movl(out, Immediate(1)); in VisitInstanceOf()
7650 __ jmp(&done); in VisitInstanceOf()
7667 __ cmpl(out, cls.AsRegister<Register>()); in VisitInstanceOf()
7670 __ cmpl(out, Address(ESP, cls.GetStackIndex())); in VisitInstanceOf()
7672 __ j(kEqual, &exact_check); in VisitInstanceOf()
7680 __ testl(out, out); in VisitInstanceOf()
7682 __ j(kEqual, &done); in VisitInstanceOf()
7683 __ cmpw(Address(out, primitive_offset), Immediate(Primitive::kPrimNot)); in VisitInstanceOf()
7684 __ j(kNotEqual, &zero); in VisitInstanceOf()
7685 __ Bind(&exact_check); in VisitInstanceOf()
7686 __ movl(out, Immediate(1)); in VisitInstanceOf()
7687 __ jmp(&done); in VisitInstanceOf()
7700 __ cmpl(out, cls.AsRegister<Register>()); in VisitInstanceOf()
7703 __ cmpl(out, Address(ESP, cls.GetStackIndex())); in VisitInstanceOf()
7709 __ j(kNotEqual, slow_path->GetEntryLabel()); in VisitInstanceOf()
7710 __ movl(out, Immediate(1)); in VisitInstanceOf()
7712 __ jmp(&done); in VisitInstanceOf()
7741 __ jmp(slow_path->GetEntryLabel()); in VisitInstanceOf()
7743 __ jmp(&done); in VisitInstanceOf()
7757 __ j(kNotEqual, &zero); in VisitInstanceOf()
7758 __ movl(out, Immediate(1)); in VisitInstanceOf()
7759 __ jmp(&done); in VisitInstanceOf()
7765 __ Bind(&zero); in VisitInstanceOf()
7766 __ xorl(out, out); in VisitInstanceOf()
7770 __ Bind(&done); in VisitInstanceOf()
7774 __ Bind(slow_path->GetExitLabel()); in VisitInstanceOf()
7829 __ testl(obj, obj); in VisitCheckCast()
7830 __ j(kEqual, &done); in VisitCheckCast()
7844 __ cmpl(temp, cls.AsRegister<Register>()); in VisitCheckCast()
7847 __ cmpl(temp, Address(ESP, cls.GetStackIndex())); in VisitCheckCast()
7851 __ j(kNotEqual, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7866 __ Bind(&loop); in VisitCheckCast()
7876 __ testl(temp, temp); in VisitCheckCast()
7877 __ j(kZero, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7881 __ cmpl(temp, cls.AsRegister<Register>()); in VisitCheckCast()
7884 __ cmpl(temp, Address(ESP, cls.GetStackIndex())); in VisitCheckCast()
7886 __ j(kNotEqual, &loop); in VisitCheckCast()
7900 __ Bind(&loop); in VisitCheckCast()
7902 __ cmpl(temp, cls.AsRegister<Register>()); in VisitCheckCast()
7905 __ cmpl(temp, Address(ESP, cls.GetStackIndex())); in VisitCheckCast()
7907 __ j(kEqual, &done); in VisitCheckCast()
7918 __ testl(temp, temp); in VisitCheckCast()
7919 __ j(kNotZero, &loop); in VisitCheckCast()
7921 __ jmp(type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7935 __ cmpl(temp, cls.AsRegister<Register>()); in VisitCheckCast()
7938 __ cmpl(temp, Address(ESP, cls.GetStackIndex())); in VisitCheckCast()
7940 __ j(kEqual, &done); in VisitCheckCast()
7952 __ testl(temp, temp); in VisitCheckCast()
7953 __ j(kZero, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7955 __ cmpw(Address(temp, primitive_offset), Immediate(Primitive::kPrimNot)); in VisitCheckCast()
7956 __ j(kNotEqual, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7969 __ jmp(type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7989 __ movl(maybe_temp2_loc.AsRegister<Register>(), Address(temp, array_length_offset)); in VisitCheckCast()
7991 __ MaybePoisonHeapReference(cls.AsRegister<Register>()); in VisitCheckCast()
7994 __ Bind(&start_loop); in VisitCheckCast()
7996 __ subl(maybe_temp2_loc.AsRegister<Register>(), Immediate(2)); in VisitCheckCast()
7997 __ j(kNegative, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7999 __ cmpl(cls.AsRegister<Register>(), in VisitCheckCast()
8004 __ j(kNotEqual, &start_loop); in VisitCheckCast()
8006 __ MaybeUnpoisonHeapReference(cls.AsRegister<Register>()); in VisitCheckCast()
8019 __ j(kNotEqual, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
8023 __ Bind(&done); in VisitCheckCast()
8025 __ Bind(type_check_slow_path->GetExitLabel()); in VisitCheckCast()
8062 __ andn(dest.AsRegister<Register>(), in VisitX86AndNot()
8067 __ andn(dest.AsRegisterPairLow<Register>(), in VisitX86AndNot()
8070 __ andn(dest.AsRegisterPairHigh<Register>(), in VisitX86AndNot()
8092 __ blsr(dest.AsRegister<Register>(), src.AsRegister<Register>()); in VisitX86MaskOrResetLeastSetBit()
8095 __ blsmsk(dest.AsRegister<Register>(), src.AsRegister<Register>()); in VisitX86MaskOrResetLeastSetBit()
8137 __ andl(first.AsRegister<Register>(), second.AsRegister<Register>()); in HandleBitwiseOperation()
8139 __ orl(first.AsRegister<Register>(), second.AsRegister<Register>()); in HandleBitwiseOperation()
8142 __ xorl(first.AsRegister<Register>(), second.AsRegister<Register>()); in HandleBitwiseOperation()
8146 __ andl(first.AsRegister<Register>(), in HandleBitwiseOperation()
8149 __ orl(first.AsRegister<Register>(), in HandleBitwiseOperation()
8153 __ xorl(first.AsRegister<Register>(), in HandleBitwiseOperation()
8158 __ andl(first.AsRegister<Register>(), Address(ESP, second.GetStackIndex())); in HandleBitwiseOperation()
8160 __ orl(first.AsRegister<Register>(), Address(ESP, second.GetStackIndex())); in HandleBitwiseOperation()
8163 __ xorl(first.AsRegister<Register>(), Address(ESP, second.GetStackIndex())); in HandleBitwiseOperation()
8170 __ andl(first.AsRegisterPairLow<Register>(), second.AsRegisterPairLow<Register>()); in HandleBitwiseOperation()
8171 __ andl(first.AsRegisterPairHigh<Register>(), second.AsRegisterPairHigh<Register>()); in HandleBitwiseOperation()
8173 __ orl(first.AsRegisterPairLow<Register>(), second.AsRegisterPairLow<Register>()); in HandleBitwiseOperation()
8174 __ orl(first.AsRegisterPairHigh<Register>(), second.AsRegisterPairHigh<Register>()); in HandleBitwiseOperation()
8177 __ xorl(first.AsRegisterPairLow<Register>(), second.AsRegisterPairLow<Register>()); in HandleBitwiseOperation()
8178 __ xorl(first.AsRegisterPairHigh<Register>(), second.AsRegisterPairHigh<Register>()); in HandleBitwiseOperation()
8182 __ andl(first.AsRegisterPairLow<Register>(), Address(ESP, second.GetStackIndex())); in HandleBitwiseOperation()
8183 __ andl(first.AsRegisterPairHigh<Register>(), in HandleBitwiseOperation()
8186 __ orl(first.AsRegisterPairLow<Register>(), Address(ESP, second.GetStackIndex())); in HandleBitwiseOperation()
8187 __ orl(first.AsRegisterPairHigh<Register>(), in HandleBitwiseOperation()
8191 __ xorl(first.AsRegisterPairLow<Register>(), Address(ESP, second.GetStackIndex())); in HandleBitwiseOperation()
8192 __ xorl(first.AsRegisterPairHigh<Register>(), in HandleBitwiseOperation()
8206 __ xorl(first_low, first_low); in HandleBitwiseOperation()
8208 __ andl(first_low, low); in HandleBitwiseOperation()
8211 __ xorl(first_high, first_high); in HandleBitwiseOperation()
8213 __ andl(first_high, high); in HandleBitwiseOperation()
8217 __ orl(first_low, low); in HandleBitwiseOperation()
8220 __ orl(first_high, high); in HandleBitwiseOperation()
8225 __ xorl(first_low, low); in HandleBitwiseOperation()
8228 __ xorl(first_high, high); in HandleBitwiseOperation()
8255 __ movl(maybe_temp.AsRegister<Register>(), out_reg); in GenerateReferenceLoadOneRegister()
8257 __ movl(out_reg, Address(out_reg, offset)); in GenerateReferenceLoadOneRegister()
8263 __ movl(out_reg, Address(out_reg, offset)); in GenerateReferenceLoadOneRegister()
8264 __ MaybeUnpoisonHeapReference(out_reg); in GenerateReferenceLoadOneRegister()
8286 __ movl(out_reg, Address(obj_reg, offset)); in GenerateReferenceLoadTwoRegisters()
8292 __ movl(out_reg, Address(obj_reg, offset)); in GenerateReferenceLoadTwoRegisters()
8293 __ MaybeUnpoisonHeapReference(out_reg); in GenerateReferenceLoadTwoRegisters()
8317 __ movl(root_reg, address); in GenerateGcRootFieldLoad()
8319 __ Bind(fixup_label); in GenerateGcRootFieldLoad()
8337 __ fs()->cmpl(Address::Absolute(entry_point_offset), Immediate(0)); in GenerateGcRootFieldLoad()
8339 __ j(kNotEqual, slow_path->GetEntryLabel()); in GenerateGcRootFieldLoad()
8340 __ Bind(slow_path->GetExitLabel()); in GenerateGcRootFieldLoad()
8345 __ leal(root_reg, address); in GenerateGcRootFieldLoad()
8347 __ Bind(fixup_label); in GenerateGcRootFieldLoad()
8355 __ movl(root_reg, address); in GenerateGcRootFieldLoad()
8357 __ Bind(fixup_label); in GenerateGcRootFieldLoad()
8442 __ testb(Address(obj, monitor_offset + gray_byte_position), Immediate(test_value)); in GenerateReferenceLoadWithBakerReadBarrier()
8453 __ movl(ref_reg, src); // Flags are unaffected. in GenerateReferenceLoadWithBakerReadBarrier()
8469 __ j(kNotZero, slow_path->GetEntryLabel()); in GenerateReferenceLoadWithBakerReadBarrier()
8472 __ MaybeUnpoisonHeapReference(ref_reg); in GenerateReferenceLoadWithBakerReadBarrier()
8474 __ Bind(slow_path->GetExitLabel()); in GenerateReferenceLoadWithBakerReadBarrier()
8500 __ jmp(slow_path->GetEntryLabel()); in GenerateReadBarrierSlow()
8501 __ Bind(slow_path->GetExitLabel()); in GenerateReadBarrierSlow()
8518 __ UnpoisonHeapReference(out.AsRegister<Register>()); in MaybeGenerateReadBarrierSlow()
8535 __ jmp(slow_path->GetEntryLabel()); in GenerateReadBarrierForRootSlow()
8536 __ Bind(slow_path->GetExitLabel()); in GenerateReadBarrierForRootSlow()
8570 __ cmpl(value_reg, Immediate(lower_bound)); in GenPackedSwitchWithCompares()
8571 __ j(first_condition, codegen_->GetLabelOf(default_block)); in GenPackedSwitchWithCompares()
8572 __ j(kEqual, codegen_->GetLabelOf(successors[0])); in GenPackedSwitchWithCompares()
8584 __ cmpl(value_reg, Immediate(compare_to_value)); in GenPackedSwitchWithCompares()
8586 __ j(first_condition, codegen_->GetLabelOf(successors[index])); in GenPackedSwitchWithCompares()
8588 __ j(kEqual, codegen_->GetLabelOf(successors[index + 1])); in GenPackedSwitchWithCompares()
8594 __ cmpl(value_reg, Immediate(lower_bound + index)); in GenPackedSwitchWithCompares()
8595 __ j(kEqual, codegen_->GetLabelOf(successors[index])); in GenPackedSwitchWithCompares()
8600 __ jmp(codegen_->GetLabelOf(default_block)); in GenPackedSwitchWithCompares()
8651 __ leal(temp_reg, Address(value_reg, -lower_bound)); in VisitX86PackedSwitch()
8657 __ cmpl(value_reg, Immediate(num_entries - 1)); in VisitX86PackedSwitch()
8658 __ j(kAbove, codegen_->GetLabelOf(default_block)); in VisitX86PackedSwitch()
8662 __ movl(temp_reg, codegen_->LiteralCaseTable(switch_instr, constant_area, value_reg)); in VisitX86PackedSwitch()
8665 __ addl(temp_reg, constant_area); in VisitX86PackedSwitch()
8668 __ jmp(temp_reg); in VisitX86PackedSwitch()
8685 __ call(&next_instruction); in VisitX86ComputeBaseMethodAddress()
8686 __ Bind(&next_instruction); in VisitX86ComputeBaseMethodAddress()
8692 __ popl(reg); in VisitX86ComputeBaseMethodAddress()
8735 __ movss(out.AsFpuRegister<XmmRegister>(), in VisitX86LoadFromConstantTable()
8741 __ movsd(out.AsFpuRegister<XmmRegister>(), in VisitX86LoadFromConstantTable()
8747 __ movl(out.AsRegister<Register>(), in VisitX86LoadFromConstantTable()
8859 new (GetGraph()->GetAllocator()) RIPFixup(*this, method_base, __ AddDouble(v)); in LiteralDoubleAddress()
8867 new (GetGraph()->GetAllocator()) RIPFixup(*this, method_base, __ AddFloat(v)); in LiteralFloatAddress()
8875 new (GetGraph()->GetAllocator()) RIPFixup(*this, method_base, __ AddInt32(v)); in LiteralInt32Address()
8883 new (GetGraph()->GetAllocator()) RIPFixup(*this, method_base, __ AddInt64(v)); in LiteralInt64Address()
8889 __ xorl(dest, dest); in Load32BitValue()
8891 __ movl(dest, Immediate(value)); in Load32BitValue()
8897 __ testl(dest, dest); in Compare32BitValue()
8899 __ cmpl(dest, Immediate(value)); in Compare32BitValue()
8913 __ cmpl(lhs, Address(ESP, rhs.GetStackIndex())); in GenerateIntCompare()
8915 __ cmpl(lhs, rhs.AsRegister<Register>()); in GenerateIntCompare()
9020 #undef __