Lines Matching refs:__

151 #define __ down_cast<CodeGeneratorMIPS*>(codegen)->GetAssembler()->  // NOLINT  macro
161 __ Bind(GetEntryLabel()); in EmitNativeCode()
197 __ Bind(GetEntryLabel()); in EmitNativeCode()
224 __ Bind(GetEntryLabel()); in EmitNativeCode()
229 __ LoadConst32(calling_convention.GetRegisterAt(0), type_index.index_); in EmitNativeCode()
261 bool reordering = __ SetReorder(false); in EmitNativeCode()
263 __ StoreToOffset(kStoreWord, out.AsRegister<Register>(), TMP, /* placeholder */ 0x5678); in EmitNativeCode()
264 __ SetReorder(reordering); in EmitNativeCode()
266 __ B(GetExitLabel()); in EmitNativeCode()
293 __ Bind(GetEntryLabel()); in EmitNativeCode()
299 __ LoadConst32(calling_convention.GetRegisterAt(0), string_index.index_); in EmitNativeCode()
318 bool reordering = __ SetReorder(false); in EmitNativeCode()
320 __ StoreToOffset(kStoreWord, out, TMP, /* placeholder */ 0x5678); in EmitNativeCode()
321 __ SetReorder(reordering); in EmitNativeCode()
323 __ B(GetExitLabel()); in EmitNativeCode()
338 __ Bind(GetEntryLabel()); in EmitNativeCode()
365 __ Bind(GetEntryLabel()); in EmitNativeCode()
369 __ B(GetReturnLabel()); in EmitNativeCode()
371 __ B(mips_codegen->GetLabelOf(successor_)); in EmitNativeCode()
404 __ Bind(GetEntryLabel()); in EmitNativeCode()
432 __ B(GetExitLabel()); in EmitNativeCode()
453 __ Bind(GetEntryLabel()); in EmitNativeCode()
457 __ LoadConst32(calling_convention.GetRegisterAt(0), in EmitNativeCode()
475 __ Bind(GetEntryLabel()); in EmitNativeCode()
501 __ B(GetExitLabel()); in EmitNativeCode()
554 __ Bind(GetEntryLabel()); in EmitNativeCode()
579 __ Jalr(entrypoint_.AsRegister<Register>()); in EmitNativeCode()
580 __ NopIfNoReordering(); in EmitNativeCode()
590 __ B(GetExitLabel()); in EmitNativeCode()
645 __ Bind(GetEntryLabel()); in EmitNativeCode()
653 __ Move(temp1_, ref_reg); in EmitNativeCode()
692 __ Beq(temp1_, ref_reg, &done); in EmitNativeCode()
711 __ Addu(tmp_ptr, base, offset); in EmitNativeCode()
714 __ PoisonHeapReference(expected); in EmitNativeCode()
718 __ PoisonHeapReference(value); in EmitNativeCode()
728 __ Bind(&loop_head); in EmitNativeCode()
730 __ LlR6(tmp, tmp_ptr); in EmitNativeCode()
732 __ LlR2(tmp, tmp_ptr); in EmitNativeCode()
734 __ Bne(tmp, expected, &exit_loop); in EmitNativeCode()
735 __ Move(tmp, value); in EmitNativeCode()
737 __ ScR6(tmp, tmp_ptr); in EmitNativeCode()
739 __ ScR2(tmp, tmp_ptr); in EmitNativeCode()
741 __ Beqz(tmp, &loop_head); in EmitNativeCode()
742 __ Bind(&exit_loop); in EmitNativeCode()
745 __ UnpoisonHeapReference(expected); in EmitNativeCode()
749 __ UnpoisonHeapReference(value); in EmitNativeCode()
753 __ Bind(&done); in EmitNativeCode()
754 __ B(GetExitLabel()); in EmitNativeCode()
814 __ Bind(GetEntryLabel()); in EmitNativeCode()
851 __ Move(free_reg, index_reg); in EmitNativeCode()
864 __ Sll(index_reg, index_reg, TIMES_4); in EmitNativeCode()
868 __ Addiu32(index_reg, index_reg, offset_); in EmitNativeCode()
907 __ LoadConst32(calling_convention.GetRegisterAt(2), offset_); in EmitNativeCode()
918 __ B(GetExitLabel()); in EmitNativeCode()
973 __ Bind(GetEntryLabel()); in EmitNativeCode()
987 __ B(GetExitLabel()); in EmitNativeCode()
1036 #undef __
1038 #define __ down_cast<MipsAssembler*>(GetAssembler())-> // NOLINT macro
1043 __ FinalizeCode(); in Finalize()
1049 uint32_t new_position = __ GetAdjustedPosition(old_position); in Finalize()
1057 frame_entry_interval->start = __ GetAdjustedPosition(frame_entry_interval->start); in Finalize()
1058 frame_entry_interval->end = __ GetAdjustedPosition(frame_entry_interval->end); in Finalize()
1060 it.second.start = __ GetAdjustedPosition(it.second.start); in Finalize()
1061 it.second.end = __ GetAdjustedPosition(it.second.end); in Finalize()
1064 it.code_interval.start = __ GetAdjustedPosition(it.code_interval.start); in Finalize()
1065 it.code_interval.end = __ GetAdjustedPosition(it.code_interval.end); in Finalize()
1100 __ Move(TMP, r2); in EmitSwap()
1101 __ Move(r2, r1); in EmitSwap()
1102 __ Move(r1, TMP); in EmitSwap()
1107 __ MovS(FTMP, f2); in EmitSwap()
1108 __ MovS(f2, f1); in EmitSwap()
1109 __ MovS(f1, FTMP); in EmitSwap()
1112 __ MovD(FTMP, f2); in EmitSwap()
1113 __ MovD(f2, f1); in EmitSwap()
1114 __ MovD(f1, FTMP); in EmitSwap()
1123 __ Move(TMP, r2); in EmitSwap()
1124 __ Mfc1(r2, f1); in EmitSwap()
1125 __ Mtc1(TMP, f1); in EmitSwap()
1130 __ Move(TMP, r2); in EmitSwap()
1131 __ Move(r2, r1); in EmitSwap()
1132 __ Move(r1, TMP); in EmitSwap()
1135 __ Move(TMP, r2); in EmitSwap()
1136 __ Move(r2, r1); in EmitSwap()
1137 __ Move(r1, TMP); in EmitSwap()
1151 __ Mfc1(TMP, f1); in EmitSwap()
1152 __ MoveFromFpuHigh(AT, f1); in EmitSwap()
1153 __ Mtc1(r2_l, f1); in EmitSwap()
1154 __ MoveToFpuHigh(r2_h, f1); in EmitSwap()
1155 __ Move(r2_l, TMP); in EmitSwap()
1156 __ Move(r2_h, AT); in EmitSwap()
1165 __ Move(TMP, reg); in EmitSwap()
1166 __ LoadFromOffset(kLoadWord, reg, SP, offset); in EmitSwap()
1167 __ StoreToOffset(kStoreWord, TMP, SP, offset); in EmitSwap()
1177 __ Move(TMP, reg_l); in EmitSwap()
1178 __ LoadFromOffset(kLoadWord, reg_l, SP, offset_l); in EmitSwap()
1179 __ StoreToOffset(kStoreWord, TMP, SP, offset_l); in EmitSwap()
1180 __ Move(TMP, reg_h); in EmitSwap()
1181 __ LoadFromOffset(kLoadWord, reg_h, SP, offset_h); in EmitSwap()
1182 __ StoreToOffset(kStoreWord, TMP, SP, offset_h); in EmitSwap()
1188 __ MovS(FTMP, reg); in EmitSwap()
1189 __ LoadSFromOffset(reg, SP, offset); in EmitSwap()
1190 __ StoreSToOffset(FTMP, SP, offset); in EmitSwap()
1193 __ MovD(FTMP, reg); in EmitSwap()
1194 __ LoadDFromOffset(reg, SP, offset); in EmitSwap()
1195 __ StoreDToOffset(FTMP, SP, offset); in EmitSwap()
1203 __ Pop(static_cast<Register>(reg)); in RestoreScratch()
1207 __ Push(static_cast<Register>(reg)); in SpillScratch()
1218 __ LoadFromOffset(kLoadWord, in Exchange()
1222 __ LoadFromOffset(kLoadWord, in Exchange()
1226 __ StoreToOffset(kStoreWord, in Exchange()
1230 __ StoreToOffset(kStoreWord, TMP, SP, index1 + stack_offset); in Exchange()
1261 __ Bind(&frame_entry_label_); in GenerateFrameEntry()
1266 __ LoadFromOffset(kLoadWord, in GenerateFrameEntry()
1288 __ IncreaseFrameSize(ofs); in GenerateFrameEntry()
1296 __ StoreToOffset(kStoreWord, reg, SP, ofs); in GenerateFrameEntry()
1297 __ cfi().RelOffset(DWARFReg(reg), ofs); in GenerateFrameEntry()
1305 __ StoreDToOffset(reg, SP, ofs); in GenerateFrameEntry()
1313 __ StoreToOffset(kStoreWord, kMethodRegisterArgument, SP, kCurrentMethodStackOffset); in GenerateFrameEntry()
1318 __ StoreToOffset(kStoreWord, ZERO, SP, GetStackOffsetOfShouldDeoptimizeFlag()); in GenerateFrameEntry()
1323 __ cfi().RememberState(); in GenerateFrameExit()
1336 __ LoadFromOffset(kLoadWord, reg, SP, ofs); in GenerateFrameExit()
1337 __ cfi().Restore(DWARFReg(reg)); in GenerateFrameExit()
1345 __ LoadDFromOffset(reg, SP, ofs); in GenerateFrameExit()
1352 bool reordering = __ SetReorder(false); in GenerateFrameExit()
1354 __ Jr(RA); in GenerateFrameExit()
1355 __ DecreaseFrameSize(frame_size); // Single instruction in delay slot. in GenerateFrameExit()
1357 __ DecreaseFrameSize(frame_size); in GenerateFrameExit()
1358 __ Jr(RA); in GenerateFrameExit()
1359 __ Nop(); // In delay slot. in GenerateFrameExit()
1361 __ SetReorder(reordering); in GenerateFrameExit()
1363 __ Jr(RA); in GenerateFrameExit()
1364 __ NopIfNoReordering(); in GenerateFrameExit()
1367 __ cfi().RestoreState(); in GenerateFrameExit()
1368 __ cfi().DefCFAOffset(GetFrameSize()); in GenerateFrameExit()
1372 __ Bind(GetLabelOf(block)); in Bind()
1398 __ Move(destination.AsRegister<Register>(), source.AsRegister<Register>()); in Move32()
1400 __ Mfc1(destination.AsRegister<Register>(), source.AsFpuRegister<FRegister>()); in Move32()
1403 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(), SP, source.GetStackIndex()); in Move32()
1407 __ Mtc1(source.AsRegister<Register>(), destination.AsFpuRegister<FRegister>()); in Move32()
1409 __ MovS(destination.AsFpuRegister<FRegister>(), source.AsFpuRegister<FRegister>()); in Move32()
1412 __ LoadSFromOffset(destination.AsFpuRegister<FRegister>(), SP, source.GetStackIndex()); in Move32()
1417 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(), SP, destination.GetStackIndex()); in Move32()
1419 __ StoreSToOffset(source.AsFpuRegister<FRegister>(), SP, destination.GetStackIndex()); in Move32()
1422 __ LoadFromOffset(kLoadWord, TMP, SP, source.GetStackIndex()); in Move32()
1423 __ StoreToOffset(kStoreWord, TMP, SP, destination.GetStackIndex()); in Move32()
1435 __ Move(destination.AsRegisterPairHigh<Register>(), source.AsRegisterPairHigh<Register>()); in Move64()
1436 __ Move(destination.AsRegisterPairLow<Register>(), source.AsRegisterPairLow<Register>()); in Move64()
1441 __ Mfc1(dst_low, src); in Move64()
1442 __ MoveFromFpuHigh(dst_high, src); in Move64()
1447 __ LoadFromOffset(kLoadDoubleword, r, SP, off); in Move64()
1454 __ Mtc1(src_low, dst); in Move64()
1455 __ MoveToFpuHigh(src_high, dst); in Move64()
1457 __ MovD(destination.AsFpuRegister<FRegister>(), source.AsFpuRegister<FRegister>()); in Move64()
1460 __ LoadDFromOffset(destination.AsFpuRegister<FRegister>(), SP, source.GetStackIndex()); in Move64()
1466 __ StoreToOffset(kStoreDoubleword, source.AsRegisterPairLow<Register>(), SP, off); in Move64()
1468 __ StoreDToOffset(source.AsFpuRegister<FRegister>(), SP, off); in Move64()
1471 __ LoadFromOffset(kLoadWord, TMP, SP, source.GetStackIndex()); in Move64()
1472 __ StoreToOffset(kStoreWord, TMP, SP, off); in Move64()
1473 __ LoadFromOffset(kLoadWord, TMP, SP, source.GetStackIndex() + 4); in Move64()
1474 __ StoreToOffset(kStoreWord, TMP, SP, off + 4); in Move64()
1485 __ LoadConst32(dst, value); in MoveConstant()
1489 __ StoreConstToOffset(kStoreWord, value, SP, destination.GetStackIndex(), TMP); in MoveConstant()
1497 __ LoadConst64(r_h, r_l, value); in MoveConstant()
1501 __ StoreConstToOffset(kStoreDoubleword, value, SP, destination.GetStackIndex(), TMP); in MoveConstant()
1507 __ LoadSConst32(destination.AsFpuRegister<FRegister>(), value, TMP); in MoveConstant()
1511 __ StoreConstToOffset(kStoreWord, value, SP, destination.GetStackIndex(), TMP); in MoveConstant()
1519 __ LoadDConst64(fd, value, TMP); in MoveConstant()
1523 __ StoreConstToOffset(kStoreDoubleword, value, SP, destination.GetStackIndex(), TMP); in MoveConstant()
1531 __ LoadConst32(dst, value); in MoveConstant()
1553 uint32_t high_offset = __ GetLabelLocation(&info.high_label); in EmitPcRelativeLinkerPatches()
1557 ? __ GetLabelLocation(&info.pc_rel_label) in EmitPcRelativeLinkerPatches()
1558 : __ GetPcRelBaseLabelLocation(); in EmitPcRelativeLinkerPatches()
1591 uint32_t literal_offset = __ GetLabelLocation(literal->GetLabel()); in EmitLinkerPatches()
1600 uint32_t literal_offset = __ GetLabelLocation(literal->GetLabel()); in EmitLinkerPatches()
1637 [this, value]() { return __ NewLiteral<uint32_t>(value); }); in DeduplicateUint32Literal()
1644 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateMethodLiteral()
1651 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateBootImageStringLiteral()
1658 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateBootImageTypeLiteral()
1670 __ Bind(&info->high_label); in EmitPcRelativeAddressPlaceholderHigh()
1671 __ Bind(&info->pc_rel_label); in EmitPcRelativeAddressPlaceholderHigh()
1673 __ Auipc(out, /* placeholder */ 0x1234); in EmitPcRelativeAddressPlaceholderHigh()
1678 __ Nal(); in EmitPcRelativeAddressPlaceholderHigh()
1680 __ Bind(&info->high_label); in EmitPcRelativeAddressPlaceholderHigh()
1681 __ Lui(out, /* placeholder */ 0x1234); in EmitPcRelativeAddressPlaceholderHigh()
1685 __ Bind(&info->pc_rel_label); in EmitPcRelativeAddressPlaceholderHigh()
1688 __ Addu(out, out, (base == ZERO) ? RA : base); in EmitPcRelativeAddressPlaceholderHigh()
1762 __ Beqz(value, &done); in MarkGCCard()
1764 __ LoadFromOffset(kLoadWord, in MarkGCCard()
1768 __ Srl(temp, object, gc::accounting::CardTable::kCardShift); in MarkGCCard()
1769 __ Addu(temp, card, temp); in MarkGCCard()
1770 __ Sb(card, temp, 0); in MarkGCCard()
1772 __ Bind(&done); in MarkGCCard()
1814 __ StoreToOffset(kStoreWord, Register(reg_id), SP, stack_index); in SaveCoreRegister()
1819 __ LoadFromOffset(kLoadWord, Register(reg_id), SP, stack_index); in RestoreCoreRegister()
1824 __ StoreDToOffset(FRegister(reg_id), SP, stack_index); in SaveFloatingPointRegister()
1829 __ LoadDFromOffset(FRegister(reg_id), SP, stack_index); in RestoreFloatingPointRegister()
1864 bool reordering = __ SetReorder(false); in GenerateInvokeRuntime()
1865 __ LoadFromOffset(kLoadWord, T9, TR, entry_point_offset); in GenerateInvokeRuntime()
1866 __ Jalr(T9); in GenerateInvokeRuntime()
1871 __ IncreaseFrameSize(kMipsDirectEntrypointRuntimeOffset); // Single instruction in delay slot. in GenerateInvokeRuntime()
1872 __ DecreaseFrameSize(kMipsDirectEntrypointRuntimeOffset); in GenerateInvokeRuntime()
1874 __ Nop(); // In delay slot. in GenerateInvokeRuntime()
1876 __ SetReorder(reordering); in GenerateInvokeRuntime()
1881 __ LoadFromOffset(kLoadWord, TMP, class_reg, mirror::Class::StatusOffset().Int32Value()); in GenerateClassInitializationCheck()
1882 __ LoadConst32(AT, mirror::Class::kStatusInitialized); in GenerateClassInitializationCheck()
1883 __ Blt(TMP, AT, slow_path->GetEntryLabel()); in GenerateClassInitializationCheck()
1885 __ Sync(0); in GenerateClassInitializationCheck()
1886 __ Bind(slow_path->GetExitLabel()); in GenerateClassInitializationCheck()
1890 __ Sync(0); // Only stype 0 is supported. in GenerateMemoryBarrier()
1899 __ LoadFromOffset(kLoadUnsignedHalfword, in GenerateSuspendCheck()
1904 __ Bnez(TMP, slow_path->GetEntryLabel()); in GenerateSuspendCheck()
1905 __ Bind(slow_path->GetReturnLabel()); in GenerateSuspendCheck()
1907 __ Beqz(TMP, codegen_->GetLabelOf(successor)); in GenerateSuspendCheck()
1908 __ B(slow_path->GetEntryLabel()); in GenerateSuspendCheck()
1988 __ Andi(dst, lhs, rhs_imm); in HandleBinaryOp()
1990 __ And(dst, lhs, rhs_reg); in HandleBinaryOp()
1993 __ Ori(dst, lhs, rhs_imm); in HandleBinaryOp()
1995 __ Or(dst, lhs, rhs_reg); in HandleBinaryOp()
1998 __ Xori(dst, lhs, rhs_imm); in HandleBinaryOp()
2000 __ Xor(dst, lhs, rhs_reg); in HandleBinaryOp()
2003 __ Addiu(dst, lhs, rhs_imm); in HandleBinaryOp()
2005 __ Addu(dst, lhs, rhs_reg); in HandleBinaryOp()
2009 __ Addiu(dst, lhs, -rhs_imm); in HandleBinaryOp()
2011 __ Subu(dst, lhs, rhs_reg); in HandleBinaryOp()
2027 __ And(dst_low, lhs_low, rhs_low); in HandleBinaryOp()
2028 __ And(dst_high, lhs_high, rhs_high); in HandleBinaryOp()
2030 __ Or(dst_low, lhs_low, rhs_low); in HandleBinaryOp()
2031 __ Or(dst_high, lhs_high, rhs_high); in HandleBinaryOp()
2033 __ Xor(dst_low, lhs_low, rhs_low); in HandleBinaryOp()
2034 __ Xor(dst_high, lhs_high, rhs_high); in HandleBinaryOp()
2038 __ Slt(TMP, lhs_low, ZERO); in HandleBinaryOp()
2039 __ Addu(dst_low, lhs_low, rhs_low); in HandleBinaryOp()
2041 __ Addu(dst_low, lhs_low, rhs_low); in HandleBinaryOp()
2043 __ Sltu(TMP, dst_low, (dst_low == rhs_low) ? lhs_low : rhs_low); in HandleBinaryOp()
2045 __ Addu(dst_high, lhs_high, rhs_high); in HandleBinaryOp()
2046 __ Addu(dst_high, dst_high, TMP); in HandleBinaryOp()
2049 __ Sltu(TMP, lhs_low, rhs_low); in HandleBinaryOp()
2050 __ Subu(dst_low, lhs_low, rhs_low); in HandleBinaryOp()
2051 __ Subu(dst_high, lhs_high, rhs_high); in HandleBinaryOp()
2052 __ Subu(dst_high, dst_high, TMP); in HandleBinaryOp()
2061 __ Ori(dst_low, lhs_low, low); in HandleBinaryOp()
2064 __ LoadConst32(TMP, low); in HandleBinaryOp()
2065 __ Or(dst_low, lhs_low, TMP); in HandleBinaryOp()
2069 __ Ori(dst_high, lhs_high, high); in HandleBinaryOp()
2073 __ LoadConst32(TMP, high); in HandleBinaryOp()
2075 __ Or(dst_high, lhs_high, TMP); in HandleBinaryOp()
2082 __ Xori(dst_low, lhs_low, low); in HandleBinaryOp()
2085 __ LoadConst32(TMP, low); in HandleBinaryOp()
2086 __ Xor(dst_low, lhs_low, TMP); in HandleBinaryOp()
2090 __ Xori(dst_high, lhs_high, high); in HandleBinaryOp()
2094 __ LoadConst32(TMP, high); in HandleBinaryOp()
2096 __ Xor(dst_high, lhs_high, TMP); in HandleBinaryOp()
2102 __ Andi(dst_low, lhs_low, low); in HandleBinaryOp()
2104 __ LoadConst32(TMP, low); in HandleBinaryOp()
2105 __ And(dst_low, lhs_low, TMP); in HandleBinaryOp()
2107 __ Move(dst_low, lhs_low); in HandleBinaryOp()
2110 __ Andi(dst_high, lhs_high, high); in HandleBinaryOp()
2113 __ LoadConst32(TMP, high); in HandleBinaryOp()
2115 __ And(dst_high, lhs_high, TMP); in HandleBinaryOp()
2117 __ Move(dst_high, lhs_high); in HandleBinaryOp()
2129 __ Addiu(dst_low, lhs_low, low); in HandleBinaryOp()
2132 __ Sltiu(AT, dst_low, low); in HandleBinaryOp()
2135 __ LoadConst32(TMP, low); in HandleBinaryOp()
2136 __ Addu(dst_low, lhs_low, TMP); in HandleBinaryOp()
2137 __ Sltu(AT, dst_low, TMP); in HandleBinaryOp()
2141 __ Addiu(dst_high, lhs_high, high); in HandleBinaryOp()
2145 __ LoadConst32(TMP, high); in HandleBinaryOp()
2147 __ Addu(dst_high, lhs_high, TMP); in HandleBinaryOp()
2150 __ Addu(dst_high, dst_high, AT); in HandleBinaryOp()
2164 __ AddS(dst, lhs, rhs); in HandleBinaryOp()
2166 __ AddD(dst, lhs, rhs); in HandleBinaryOp()
2171 __ SubS(dst, lhs, rhs); in HandleBinaryOp()
2173 __ SubD(dst, lhs, rhs); in HandleBinaryOp()
2229 __ Move(dst, lhs); in HandleShift()
2232 __ Sll(dst, lhs, shift_value); in HandleShift()
2234 __ Sra(dst, lhs, shift_value); in HandleShift()
2236 __ Srl(dst, lhs, shift_value); in HandleShift()
2239 __ Rotr(dst, lhs, shift_value); in HandleShift()
2241 __ Sll(TMP, lhs, (kMipsBitsPerWord - shift_value) & shift_mask); in HandleShift()
2242 __ Srl(dst, lhs, shift_value); in HandleShift()
2243 __ Or(dst, dst, TMP); in HandleShift()
2248 __ Sllv(dst, lhs, rhs_reg); in HandleShift()
2250 __ Srav(dst, lhs, rhs_reg); in HandleShift()
2252 __ Srlv(dst, lhs, rhs_reg); in HandleShift()
2255 __ Rotrv(dst, lhs, rhs_reg); in HandleShift()
2257 __ Subu(TMP, ZERO, rhs_reg); in HandleShift()
2263 __ Sllv(TMP, lhs, TMP); in HandleShift()
2264 __ Srlv(dst, lhs, rhs_reg); in HandleShift()
2265 __ Or(dst, dst, TMP); in HandleShift()
2283 __ Srl(dst_high, lhs_low, kMipsBitsPerWord - shift_value); in HandleShift()
2284 __ Ins(dst_high, lhs_high, shift_value, kMipsBitsPerWord - shift_value); in HandleShift()
2285 __ Sll(dst_low, lhs_low, shift_value); in HandleShift()
2287 __ Srl(dst_low, lhs_low, shift_value); in HandleShift()
2288 __ Ins(dst_low, lhs_high, kMipsBitsPerWord - shift_value, shift_value); in HandleShift()
2289 __ Sra(dst_high, lhs_high, shift_value); in HandleShift()
2291 __ Srl(dst_low, lhs_low, shift_value); in HandleShift()
2292 __ Ins(dst_low, lhs_high, kMipsBitsPerWord - shift_value, shift_value); in HandleShift()
2293 __ Srl(dst_high, lhs_high, shift_value); in HandleShift()
2295 __ Srl(dst_low, lhs_low, shift_value); in HandleShift()
2296 __ Ins(dst_low, lhs_high, kMipsBitsPerWord - shift_value, shift_value); in HandleShift()
2297 __ Srl(dst_high, lhs_high, shift_value); in HandleShift()
2298 __ Ins(dst_high, lhs_low, kMipsBitsPerWord - shift_value, shift_value); in HandleShift()
2302 __ Sll(dst_low, lhs_low, shift_value); in HandleShift()
2303 __ Srl(TMP, lhs_low, kMipsBitsPerWord - shift_value); in HandleShift()
2304 __ Sll(dst_high, lhs_high, shift_value); in HandleShift()
2305 __ Or(dst_high, dst_high, TMP); in HandleShift()
2307 __ Sra(dst_high, lhs_high, shift_value); in HandleShift()
2308 __ Sll(TMP, lhs_high, kMipsBitsPerWord - shift_value); in HandleShift()
2309 __ Srl(dst_low, lhs_low, shift_value); in HandleShift()
2310 __ Or(dst_low, dst_low, TMP); in HandleShift()
2312 __ Srl(dst_high, lhs_high, shift_value); in HandleShift()
2313 __ Sll(TMP, lhs_high, kMipsBitsPerWord - shift_value); in HandleShift()
2314 __ Srl(dst_low, lhs_low, shift_value); in HandleShift()
2315 __ Or(dst_low, dst_low, TMP); in HandleShift()
2317 __ Srl(TMP, lhs_low, shift_value); in HandleShift()
2318 __ Sll(dst_low, lhs_high, kMipsBitsPerWord - shift_value); in HandleShift()
2319 __ Or(dst_low, dst_low, TMP); in HandleShift()
2320 __ Srl(TMP, lhs_high, shift_value); in HandleShift()
2321 __ Sll(dst_high, lhs_low, kMipsBitsPerWord - shift_value); in HandleShift()
2322 __ Or(dst_high, dst_high, TMP); in HandleShift()
2328 __ Sll(dst_high, lhs_low, shift_value_high); in HandleShift()
2329 __ Move(dst_low, ZERO); in HandleShift()
2331 __ Sra(dst_low, lhs_high, shift_value_high); in HandleShift()
2332 __ Sra(dst_high, dst_low, kMipsBitsPerWord - 1); in HandleShift()
2334 __ Srl(dst_low, lhs_high, shift_value_high); in HandleShift()
2335 __ Move(dst_high, ZERO); in HandleShift()
2339 __ Move(dst_low, lhs_high); in HandleShift()
2340 __ Move(dst_high, lhs_low); in HandleShift()
2343 __ Srl(dst_low, lhs_high, shift_value_high); in HandleShift()
2344 __ Ins(dst_low, lhs_low, kMipsBitsPerWord - shift_value_high, shift_value_high); in HandleShift()
2345 __ Srl(dst_high, lhs_low, shift_value_high); in HandleShift()
2346 __ Ins(dst_high, lhs_high, kMipsBitsPerWord - shift_value_high, shift_value_high); in HandleShift()
2348 __ Sll(TMP, lhs_low, kMipsBitsPerWord - shift_value_high); in HandleShift()
2349 __ Srl(dst_low, lhs_high, shift_value_high); in HandleShift()
2350 __ Or(dst_low, dst_low, TMP); in HandleShift()
2351 __ Sll(TMP, lhs_high, kMipsBitsPerWord - shift_value_high); in HandleShift()
2352 __ Srl(dst_high, lhs_low, shift_value_high); in HandleShift()
2353 __ Or(dst_high, dst_high, TMP); in HandleShift()
2361 __ Sllv(dst_low, lhs_low, rhs_reg); in HandleShift()
2362 __ Nor(AT, ZERO, rhs_reg); in HandleShift()
2363 __ Srl(TMP, lhs_low, 1); in HandleShift()
2364 __ Srlv(TMP, TMP, AT); in HandleShift()
2365 __ Sllv(dst_high, lhs_high, rhs_reg); in HandleShift()
2366 __ Or(dst_high, dst_high, TMP); in HandleShift()
2367 __ Andi(TMP, rhs_reg, kMipsBitsPerWord); in HandleShift()
2368 __ Beqz(TMP, &done); in HandleShift()
2369 __ Move(dst_high, dst_low); in HandleShift()
2370 __ Move(dst_low, ZERO); in HandleShift()
2372 __ Srav(dst_high, lhs_high, rhs_reg); in HandleShift()
2373 __ Nor(AT, ZERO, rhs_reg); in HandleShift()
2374 __ Sll(TMP, lhs_high, 1); in HandleShift()
2375 __ Sllv(TMP, TMP, AT); in HandleShift()
2376 __ Srlv(dst_low, lhs_low, rhs_reg); in HandleShift()
2377 __ Or(dst_low, dst_low, TMP); in HandleShift()
2378 __ Andi(TMP, rhs_reg, kMipsBitsPerWord); in HandleShift()
2379 __ Beqz(TMP, &done); in HandleShift()
2380 __ Move(dst_low, dst_high); in HandleShift()
2381 __ Sra(dst_high, dst_high, 31); in HandleShift()
2383 __ Srlv(dst_high, lhs_high, rhs_reg); in HandleShift()
2384 __ Nor(AT, ZERO, rhs_reg); in HandleShift()
2385 __ Sll(TMP, lhs_high, 1); in HandleShift()
2386 __ Sllv(TMP, TMP, AT); in HandleShift()
2387 __ Srlv(dst_low, lhs_low, rhs_reg); in HandleShift()
2388 __ Or(dst_low, dst_low, TMP); in HandleShift()
2389 __ Andi(TMP, rhs_reg, kMipsBitsPerWord); in HandleShift()
2390 __ Beqz(TMP, &done); in HandleShift()
2391 __ Move(dst_low, dst_high); in HandleShift()
2392 __ Move(dst_high, ZERO); in HandleShift()
2394 __ Nor(AT, ZERO, rhs_reg); in HandleShift()
2395 __ Srlv(TMP, lhs_low, rhs_reg); in HandleShift()
2396 __ Sll(dst_low, lhs_high, 1); in HandleShift()
2397 __ Sllv(dst_low, dst_low, AT); in HandleShift()
2398 __ Or(dst_low, dst_low, TMP); in HandleShift()
2399 __ Srlv(TMP, lhs_high, rhs_reg); in HandleShift()
2400 __ Sll(dst_high, lhs_low, 1); in HandleShift()
2401 __ Sllv(dst_high, dst_high, AT); in HandleShift()
2402 __ Or(dst_high, dst_high, TMP); in HandleShift()
2403 __ Andi(TMP, rhs_reg, kMipsBitsPerWord); in HandleShift()
2404 __ Beqz(TMP, &done); in HandleShift()
2405 __ Move(TMP, dst_high); in HandleShift()
2406 __ Move(dst_high, dst_low); in HandleShift()
2407 __ Move(dst_low, TMP); in HandleShift()
2409 __ Bind(&done); in HandleShift()
2489 __ LoadFromOffset(kLoadUnsignedByte, out, obj, offset, null_checker); in VisitArrayGet()
2491 __ Addu(TMP, obj, index.AsRegister<Register>()); in VisitArrayGet()
2492 __ LoadFromOffset(kLoadUnsignedByte, out, TMP, data_offset, null_checker); in VisitArrayGet()
2502 __ LoadFromOffset(kLoadSignedByte, out, obj, offset, null_checker); in VisitArrayGet()
2504 __ Addu(TMP, obj, index.AsRegister<Register>()); in VisitArrayGet()
2505 __ LoadFromOffset(kLoadSignedByte, out, TMP, data_offset, null_checker); in VisitArrayGet()
2515 __ LoadFromOffset(kLoadSignedHalfword, out, obj, offset, null_checker); in VisitArrayGet()
2517 __ ShiftAndAdd(TMP, index.AsRegister<Register>(), obj, TIMES_2, TMP); in VisitArrayGet()
2518 __ LoadFromOffset(kLoadSignedHalfword, out, TMP, data_offset, null_checker); in VisitArrayGet()
2527 __ LoadFromOffset(kLoadWord, TMP, obj, count_offset, null_checker); in VisitArrayGet()
2528 __ Sll(TMP, TMP, 31); // Extract compression flag into the most significant bit of TMP. in VisitArrayGet()
2536 __ Bnez(TMP, &uncompressed_load); in VisitArrayGet()
2537 __ LoadFromOffset(kLoadUnsignedByte, in VisitArrayGet()
2541 __ B(&done); in VisitArrayGet()
2542 __ Bind(&uncompressed_load); in VisitArrayGet()
2543 __ LoadFromOffset(kLoadUnsignedHalfword, in VisitArrayGet()
2547 __ Bind(&done); in VisitArrayGet()
2549 __ LoadFromOffset(kLoadUnsignedHalfword, in VisitArrayGet()
2559 __ Bnez(TMP, &uncompressed_load); in VisitArrayGet()
2560 __ Addu(TMP, obj, index_reg); in VisitArrayGet()
2561 __ LoadFromOffset(kLoadUnsignedByte, out, TMP, data_offset); in VisitArrayGet()
2562 __ B(&done); in VisitArrayGet()
2563 __ Bind(&uncompressed_load); in VisitArrayGet()
2564 __ ShiftAndAdd(TMP, index_reg, obj, TIMES_2, TMP); in VisitArrayGet()
2565 __ LoadFromOffset(kLoadUnsignedHalfword, out, TMP, data_offset); in VisitArrayGet()
2566 __ Bind(&done); in VisitArrayGet()
2568 __ ShiftAndAdd(TMP, index_reg, obj, TIMES_2, TMP); in VisitArrayGet()
2569 __ LoadFromOffset(kLoadUnsignedHalfword, out, TMP, data_offset, null_checker); in VisitArrayGet()
2581 __ LoadFromOffset(kLoadWord, out, obj, offset, null_checker); in VisitArrayGet()
2583 __ ShiftAndAdd(TMP, index.AsRegister<Register>(), obj, TIMES_4, TMP); in VisitArrayGet()
2584 __ LoadFromOffset(kLoadWord, out, TMP, data_offset, null_checker); in VisitArrayGet()
2611 __ LoadFromOffset(kLoadWord, out, obj, offset, null_checker); in VisitArrayGet()
2617 __ ShiftAndAdd(TMP, index.AsRegister<Register>(), obj, TIMES_4, TMP); in VisitArrayGet()
2618 __ LoadFromOffset(kLoadWord, out, TMP, data_offset, null_checker); in VisitArrayGet()
2638 __ LoadFromOffset(kLoadDoubleword, out, obj, offset, null_checker); in VisitArrayGet()
2640 __ ShiftAndAdd(TMP, index.AsRegister<Register>(), obj, TIMES_8, TMP); in VisitArrayGet()
2641 __ LoadFromOffset(kLoadDoubleword, out, TMP, data_offset, null_checker); in VisitArrayGet()
2651 __ LoadSFromOffset(out, obj, offset, null_checker); in VisitArrayGet()
2653 __ ShiftAndAdd(TMP, index.AsRegister<Register>(), obj, TIMES_4, TMP); in VisitArrayGet()
2654 __ LoadSFromOffset(out, TMP, data_offset, null_checker); in VisitArrayGet()
2664 __ LoadDFromOffset(out, obj, offset, null_checker); in VisitArrayGet()
2666 __ ShiftAndAdd(TMP, index.AsRegister<Register>(), obj, TIMES_8, TMP); in VisitArrayGet()
2667 __ LoadDFromOffset(out, TMP, data_offset, null_checker); in VisitArrayGet()
2689 __ LoadFromOffset(kLoadWord, out, obj, offset); in VisitArrayLength()
2693 __ Srl(out, out, 1u); in VisitArrayLength()
2761 __ Addu(base_reg, obj, index.AsRegister<Register>()); in VisitArraySet()
2765 __ StoreConstToOffset(kStoreByte, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2768 __ StoreToOffset(kStoreByte, value, base_reg, data_offset, null_checker); in VisitArraySet()
2779 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_2, base_reg); in VisitArraySet()
2783 __ StoreConstToOffset(kStoreHalfword, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2786 __ StoreToOffset(kStoreHalfword, value, base_reg, data_offset, null_checker); in VisitArraySet()
2796 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_4, base_reg); in VisitArraySet()
2800 __ StoreConstToOffset(kStoreWord, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2803 __ StoreToOffset(kStoreWord, value, base_reg, data_offset, null_checker); in VisitArraySet()
2815 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_4, base_reg); in VisitArraySet()
2819 __ StoreConstToOffset(kStoreWord, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2840 __ Bnez(value, &non_zero); in VisitArraySet()
2845 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_4, base_reg); in VisitArraySet()
2847 __ StoreToOffset(kStoreWord, value, base_reg, data_offset, null_checker); in VisitArraySet()
2848 __ B(&done); in VisitArraySet()
2849 __ Bind(&non_zero); in VisitArraySet()
2861 __ LoadFromOffset(kLoadWord, temp1, obj, class_offset, null_checker); in VisitArraySet()
2862 __ MaybeUnpoisonHeapReference(temp1); in VisitArraySet()
2865 __ LoadFromOffset(kLoadWord, temp1, temp1, component_offset); in VisitArraySet()
2867 __ LoadFromOffset(kLoadWord, temp2, value, class_offset); in VisitArraySet()
2873 __ Beq(temp1, temp2, &do_put); in VisitArraySet()
2876 __ MaybeUnpoisonHeapReference(temp1); in VisitArraySet()
2879 __ LoadFromOffset(kLoadWord, temp1, temp1, super_offset); in VisitArraySet()
2882 __ Bnez(temp1, slow_path->GetEntryLabel()); in VisitArraySet()
2883 __ Bind(&do_put); in VisitArraySet()
2885 __ Bne(temp1, temp2, slow_path->GetEntryLabel()); in VisitArraySet()
2894 __ Move(temp1, value); in VisitArraySet()
2895 __ PoisonHeapReference(temp1); in VisitArraySet()
2903 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_4, base_reg); in VisitArraySet()
2905 __ StoreToOffset(kStoreWord, source, base_reg, data_offset); in VisitArraySet()
2914 __ Bind(&done); in VisitArraySet()
2918 __ Bind(slow_path->GetExitLabel()); in VisitArraySet()
2928 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_8, base_reg); in VisitArraySet()
2932 __ StoreConstToOffset(kStoreDoubleword, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2935 __ StoreToOffset(kStoreDoubleword, value, base_reg, data_offset, null_checker); in VisitArraySet()
2945 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_4, base_reg); in VisitArraySet()
2949 __ StoreConstToOffset(kStoreWord, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2952 __ StoreSToOffset(value, base_reg, data_offset, null_checker); in VisitArraySet()
2962 __ ShiftAndAdd(base_reg, index.AsRegister<Register>(), obj, TIMES_8, base_reg); in VisitArraySet()
2966 __ StoreConstToOffset(kStoreDoubleword, value, base_reg, data_offset, TMP, null_checker); in VisitArraySet()
2969 __ StoreDToOffset(value, base_reg, data_offset, null_checker); in VisitArraySet()
3002 __ Bgeu(index, length, slow_path->GetEntryLabel()); in VisitBoundsCheck()
3089 __ Beqz(obj, &done); in VisitCheckCast()
3104 __ Bne(temp, cls, slow_path->GetEntryLabel()); in VisitCheckCast()
3119 __ Bind(&loop); in VisitCheckCast()
3128 __ Beqz(temp, slow_path->GetEntryLabel()); in VisitCheckCast()
3130 __ Bne(temp, cls, &loop); in VisitCheckCast()
3144 __ Bind(&loop); in VisitCheckCast()
3145 __ Beq(temp, cls, &done); in VisitCheckCast()
3154 __ Bnez(temp, &loop); in VisitCheckCast()
3155 __ B(slow_path->GetEntryLabel()); in VisitCheckCast()
3168 __ Beq(temp, cls, &done); in VisitCheckCast()
3177 __ Beqz(temp, slow_path->GetEntryLabel()); in VisitCheckCast()
3180 __ LoadFromOffset(kLoadUnsignedHalfword, temp, temp, primitive_offset); in VisitCheckCast()
3182 __ Bnez(temp, slow_path->GetEntryLabel()); in VisitCheckCast()
3195 __ B(slow_path->GetEntryLabel()); in VisitCheckCast()
3216 __ Lw(TMP, temp, array_length_offset); in VisitCheckCast()
3219 __ Bind(&loop); in VisitCheckCast()
3220 __ Addiu(temp, temp, 2 * kHeapReferenceSize); // Possibly in delay slot on R2. in VisitCheckCast()
3221 __ Beqz(TMP, slow_path->GetEntryLabel()); in VisitCheckCast()
3222 __ Lw(AT, temp, object_array_data_offset - 2 * kHeapReferenceSize); in VisitCheckCast()
3223 __ MaybeUnpoisonHeapReference(AT); in VisitCheckCast()
3225 __ Addiu(TMP, TMP, -2); in VisitCheckCast()
3227 __ Bne(AT, cls, &loop); in VisitCheckCast()
3232 __ Bind(&done); in VisitCheckCast()
3233 __ Bind(slow_path->GetExitLabel()); in VisitCheckCast()
3310 __ Slt(TMP, lhs, rhs); in VisitCompare()
3311 __ Slt(res, rhs, lhs); in VisitCompare()
3312 __ Subu(res, res, TMP); in VisitCompare()
3322 __ Slt(TMP, lhs_high, rhs_high); in VisitCompare()
3323 __ Slt(AT, rhs_high, lhs_high); // Inverted: is actually gt. in VisitCompare()
3324 __ Subu(res, AT, TMP); // Result -1:1:0 for [ <, >, == ]. in VisitCompare()
3325 __ Bnez(res, &done); // If we compared ==, check if lower bits are also equal. in VisitCompare()
3326 __ Sltu(TMP, lhs_low, rhs_low); in VisitCompare()
3327 __ Sltu(AT, rhs_low, lhs_low); // Inverted: is actually gt. in VisitCompare()
3328 __ Subu(res, AT, TMP); // Result -1:1:0 for [ <, >, == ]. in VisitCompare()
3329 __ Bind(&done); in VisitCompare()
3339 __ CmpEqS(FTMP, lhs, rhs); in VisitCompare()
3340 __ LoadConst32(res, 0); in VisitCompare()
3341 __ Bc1nez(FTMP, &done); in VisitCompare()
3343 __ CmpLtS(FTMP, lhs, rhs); in VisitCompare()
3344 __ LoadConst32(res, -1); in VisitCompare()
3345 __ Bc1nez(FTMP, &done); in VisitCompare()
3346 __ LoadConst32(res, 1); in VisitCompare()
3348 __ CmpLtS(FTMP, rhs, lhs); in VisitCompare()
3349 __ LoadConst32(res, 1); in VisitCompare()
3350 __ Bc1nez(FTMP, &done); in VisitCompare()
3351 __ LoadConst32(res, -1); in VisitCompare()
3355 __ ColtS(0, lhs, rhs); in VisitCompare()
3356 __ LoadConst32(res, -1); in VisitCompare()
3357 __ Bc1t(0, &done); in VisitCompare()
3358 __ CeqS(0, lhs, rhs); in VisitCompare()
3359 __ LoadConst32(res, 1); in VisitCompare()
3360 __ Movt(res, ZERO, 0); in VisitCompare()
3362 __ ColtS(0, rhs, lhs); in VisitCompare()
3363 __ LoadConst32(res, 1); in VisitCompare()
3364 __ Bc1t(0, &done); in VisitCompare()
3365 __ CeqS(0, lhs, rhs); in VisitCompare()
3366 __ LoadConst32(res, -1); in VisitCompare()
3367 __ Movt(res, ZERO, 0); in VisitCompare()
3370 __ Bind(&done); in VisitCompare()
3379 __ CmpEqD(FTMP, lhs, rhs); in VisitCompare()
3380 __ LoadConst32(res, 0); in VisitCompare()
3381 __ Bc1nez(FTMP, &done); in VisitCompare()
3383 __ CmpLtD(FTMP, lhs, rhs); in VisitCompare()
3384 __ LoadConst32(res, -1); in VisitCompare()
3385 __ Bc1nez(FTMP, &done); in VisitCompare()
3386 __ LoadConst32(res, 1); in VisitCompare()
3388 __ CmpLtD(FTMP, rhs, lhs); in VisitCompare()
3389 __ LoadConst32(res, 1); in VisitCompare()
3390 __ Bc1nez(FTMP, &done); in VisitCompare()
3391 __ LoadConst32(res, -1); in VisitCompare()
3395 __ ColtD(0, lhs, rhs); in VisitCompare()
3396 __ LoadConst32(res, -1); in VisitCompare()
3397 __ Bc1t(0, &done); in VisitCompare()
3398 __ CeqD(0, lhs, rhs); in VisitCompare()
3399 __ LoadConst32(res, 1); in VisitCompare()
3400 __ Movt(res, ZERO, 0); in VisitCompare()
3402 __ ColtD(0, rhs, lhs); in VisitCompare()
3403 __ LoadConst32(res, 1); in VisitCompare()
3404 __ Bc1t(0, &done); in VisitCompare()
3405 __ CeqD(0, lhs, rhs); in VisitCompare()
3406 __ LoadConst32(res, -1); in VisitCompare()
3407 __ Movt(res, ZERO, 0); in VisitCompare()
3410 __ Bind(&done); in VisitCompare()
3470 __ LoadConst32(dst, 0); in HandleCondition()
3471 __ B(&done); in HandleCondition()
3474 __ Bind(&true_label); in HandleCondition()
3475 __ LoadConst32(dst, 1); in HandleCondition()
3476 __ Bind(&done); in HandleCondition()
3493 __ Move(out, ZERO); in DivRemOneOrMinusOne()
3496 __ Subu(out, ZERO, dividend); in DivRemOneOrMinusOne()
3498 __ Move(out, dividend); in DivRemOneOrMinusOne()
3520 __ Srl(TMP, dividend, 31); in DivRemByPowerOfTwo()
3522 __ Sra(TMP, dividend, 31); in DivRemByPowerOfTwo()
3523 __ Srl(TMP, TMP, 32 - ctz_imm); in DivRemByPowerOfTwo()
3525 __ Addu(out, dividend, TMP); in DivRemByPowerOfTwo()
3526 __ Sra(out, out, ctz_imm); in DivRemByPowerOfTwo()
3528 __ Subu(out, ZERO, out); in DivRemByPowerOfTwo()
3533 __ Sra(TMP, dividend, 31); in DivRemByPowerOfTwo()
3534 __ Subu(out, dividend, TMP); in DivRemByPowerOfTwo()
3535 __ Andi(out, out, 1); in DivRemByPowerOfTwo()
3536 __ Addu(out, out, TMP); in DivRemByPowerOfTwo()
3538 __ Sra(TMP, dividend, 31); in DivRemByPowerOfTwo()
3539 __ Srl(TMP, TMP, 32 - ctz_imm); in DivRemByPowerOfTwo()
3540 __ Addu(out, dividend, TMP); in DivRemByPowerOfTwo()
3542 __ Andi(out, out, abs_imm - 1); in DivRemByPowerOfTwo()
3544 __ Sll(out, out, 32 - ctz_imm); in DivRemByPowerOfTwo()
3545 __ Srl(out, out, 32 - ctz_imm); in DivRemByPowerOfTwo()
3547 __ Subu(out, out, TMP); in DivRemByPowerOfTwo()
3570 __ LoadConst32(TMP, magic); in GenerateDivRemWithAnyConstant()
3572 __ MuhR6(TMP, dividend, TMP); in GenerateDivRemWithAnyConstant()
3574 __ MultR2(dividend, TMP); in GenerateDivRemWithAnyConstant()
3575 __ Mfhi(TMP); in GenerateDivRemWithAnyConstant()
3578 __ Addu(TMP, TMP, dividend); in GenerateDivRemWithAnyConstant()
3580 __ Subu(TMP, TMP, dividend); in GenerateDivRemWithAnyConstant()
3584 __ Sra(TMP, TMP, shift); in GenerateDivRemWithAnyConstant()
3588 __ Sra(out, TMP, 31); in GenerateDivRemWithAnyConstant()
3589 __ Subu(out, TMP, out); in GenerateDivRemWithAnyConstant()
3591 __ Sra(AT, TMP, 31); in GenerateDivRemWithAnyConstant()
3592 __ Subu(AT, TMP, AT); in GenerateDivRemWithAnyConstant()
3593 __ LoadConst32(TMP, imm); in GenerateDivRemWithAnyConstant()
3595 __ MulR6(TMP, AT, TMP); in GenerateDivRemWithAnyConstant()
3597 __ MulR2(TMP, AT, TMP); in GenerateDivRemWithAnyConstant()
3599 __ Subu(out, dividend, TMP); in GenerateDivRemWithAnyConstant()
3629 __ DivR6(out, dividend, divisor); in GenerateDivRemIntegral()
3631 __ DivR2(out, dividend, divisor); in GenerateDivRemIntegral()
3635 __ ModR6(out, dividend, divisor); in GenerateDivRemIntegral()
3637 __ ModR2(out, dividend, divisor); in GenerateDivRemIntegral()
3699 __ DivS(dst, lhs, rhs); in VisitDiv()
3701 __ DivD(dst, lhs, rhs); in VisitDiv()
3729 __ B(slow_path->GetEntryLabel()); in VisitDivZeroCheck()
3736 __ Beqz(value.AsRegister<Register>(), slow_path->GetEntryLabel()); in VisitDivZeroCheck()
3743 __ B(slow_path->GetEntryLabel()); in VisitDivZeroCheck()
3750 __ Or(TMP, value.AsRegisterPairHigh<Register>(), value.AsRegisterPairLow<Register>()); in VisitDivZeroCheck()
3751 __ Beqz(TMP, slow_path->GetEntryLabel()); in VisitDivZeroCheck()
3806 __ B(codegen_->GetLabelOf(successor)); in HandleGoto()
3845 __ Sltiu(dst, lhs, 1); in GenerateIntCompare()
3847 __ Sltu(dst, ZERO, lhs); in GenerateIntCompare()
3850 __ Addiu(dst, lhs, -rhs_imm); in GenerateIntCompare()
3852 __ Sltiu(dst, dst, 1); in GenerateIntCompare()
3854 __ Sltu(dst, ZERO, dst); in GenerateIntCompare()
3859 __ Xori(dst, lhs, rhs_imm); in GenerateIntCompare()
3863 __ LoadConst32(rhs_reg, rhs_imm); in GenerateIntCompare()
3865 __ Xor(dst, lhs, rhs_reg); in GenerateIntCompare()
3868 __ Sltiu(dst, dst, 1); in GenerateIntCompare()
3870 __ Sltu(dst, ZERO, dst); in GenerateIntCompare()
3878 __ Slti(dst, lhs, rhs_imm); in GenerateIntCompare()
3882 __ LoadConst32(rhs_reg, rhs_imm); in GenerateIntCompare()
3884 __ Slt(dst, lhs, rhs_reg); in GenerateIntCompare()
3889 __ Xori(dst, dst, 1); in GenerateIntCompare()
3897 __ Slti(dst, lhs, rhs_imm + 1); in GenerateIntCompare()
3901 __ Xori(dst, dst, 1); in GenerateIntCompare()
3906 __ LoadConst32(rhs_reg, rhs_imm); in GenerateIntCompare()
3908 __ Slt(dst, rhs_reg, lhs); in GenerateIntCompare()
3912 __ Xori(dst, dst, 1); in GenerateIntCompare()
3924 __ Sltiu(dst, lhs, rhs_imm); in GenerateIntCompare()
3928 __ LoadConst32(rhs_reg, rhs_imm); in GenerateIntCompare()
3930 __ Sltu(dst, lhs, rhs_reg); in GenerateIntCompare()
3935 __ Xori(dst, dst, 1); in GenerateIntCompare()
3949 __ Sltiu(dst, lhs, rhs_imm + 1); in GenerateIntCompare()
3953 __ Xori(dst, dst, 1); in GenerateIntCompare()
3958 __ LoadConst32(rhs_reg, rhs_imm); in GenerateIntCompare()
3960 __ Sltu(dst, rhs_reg, lhs); in GenerateIntCompare()
3964 __ Xori(dst, dst, 1); in GenerateIntCompare()
3989 __ Addiu(dst, lhs, -rhs_imm); in MaterializeIntCompare()
3991 __ Xori(dst, lhs, rhs_imm); in MaterializeIntCompare()
3995 __ LoadConst32(rhs_reg, rhs_imm); in MaterializeIntCompare()
3997 __ Xor(dst, lhs, rhs_reg); in MaterializeIntCompare()
4004 __ Slti(dst, lhs, rhs_imm); in MaterializeIntCompare()
4008 __ LoadConst32(rhs_reg, rhs_imm); in MaterializeIntCompare()
4010 __ Slt(dst, lhs, rhs_reg); in MaterializeIntCompare()
4018 __ Slti(dst, lhs, rhs_imm + 1); in MaterializeIntCompare()
4023 __ LoadConst32(rhs_reg, rhs_imm); in MaterializeIntCompare()
4025 __ Slt(dst, rhs_reg, lhs); in MaterializeIntCompare()
4036 __ Sltiu(dst, lhs, rhs_imm); in MaterializeIntCompare()
4040 __ LoadConst32(rhs_reg, rhs_imm); in MaterializeIntCompare()
4042 __ Sltu(dst, lhs, rhs_reg); in MaterializeIntCompare()
4056 __ Sltiu(dst, lhs, rhs_imm + 1); in MaterializeIntCompare()
4061 __ LoadConst32(rhs_reg, rhs_imm); in MaterializeIntCompare()
4063 __ Sltu(dst, rhs_reg, lhs); in MaterializeIntCompare()
4087 __ Beqz(lhs, label); in GenerateIntCompareAndBranch()
4091 __ Bnez(lhs, label); in GenerateIntCompareAndBranch()
4094 __ Bltz(lhs, label); in GenerateIntCompareAndBranch()
4097 __ Bgez(lhs, label); in GenerateIntCompareAndBranch()
4100 __ Blez(lhs, label); in GenerateIntCompareAndBranch()
4103 __ Bgtz(lhs, label); in GenerateIntCompareAndBranch()
4108 __ B(label); in GenerateIntCompareAndBranch()
4116 __ LoadConst32(rhs_reg, rhs_imm); in GenerateIntCompareAndBranch()
4120 __ Beq(lhs, rhs_reg, label); in GenerateIntCompareAndBranch()
4123 __ Bne(lhs, rhs_reg, label); in GenerateIntCompareAndBranch()
4126 __ Blt(lhs, rhs_reg, label); in GenerateIntCompareAndBranch()
4129 __ Bge(lhs, rhs_reg, label); in GenerateIntCompareAndBranch()
4132 __ Bge(rhs_reg, lhs, label); in GenerateIntCompareAndBranch()
4135 __ Blt(rhs_reg, lhs, label); in GenerateIntCompareAndBranch()
4138 __ Bltu(lhs, rhs_reg, label); in GenerateIntCompareAndBranch()
4141 __ Bgeu(lhs, rhs_reg, label); in GenerateIntCompareAndBranch()
4144 __ Bgeu(rhs_reg, lhs, label); in GenerateIntCompareAndBranch()
4147 __ Bltu(rhs_reg, lhs, label); in GenerateIntCompareAndBranch()
4154 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4155 __ Beq(lhs, TMP, label); in GenerateIntCompareAndBranch()
4158 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4159 __ Bne(lhs, TMP, label); in GenerateIntCompareAndBranch()
4163 __ Slti(TMP, lhs, rhs_imm); in GenerateIntCompareAndBranch()
4164 __ Bnez(TMP, label); in GenerateIntCompareAndBranch()
4166 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4167 __ Blt(lhs, TMP, label); in GenerateIntCompareAndBranch()
4172 __ Slti(TMP, lhs, rhs_imm); in GenerateIntCompareAndBranch()
4173 __ Beqz(TMP, label); in GenerateIntCompareAndBranch()
4175 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4176 __ Bge(lhs, TMP, label); in GenerateIntCompareAndBranch()
4182 __ Slti(TMP, lhs, rhs_imm + 1); in GenerateIntCompareAndBranch()
4183 __ Bnez(TMP, label); in GenerateIntCompareAndBranch()
4185 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4186 __ Bge(TMP, lhs, label); in GenerateIntCompareAndBranch()
4192 __ Slti(TMP, lhs, rhs_imm + 1); in GenerateIntCompareAndBranch()
4193 __ Beqz(TMP, label); in GenerateIntCompareAndBranch()
4195 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4196 __ Blt(TMP, lhs, label); in GenerateIntCompareAndBranch()
4201 __ Sltiu(TMP, lhs, rhs_imm); in GenerateIntCompareAndBranch()
4202 __ Bnez(TMP, label); in GenerateIntCompareAndBranch()
4204 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4205 __ Bltu(lhs, TMP, label); in GenerateIntCompareAndBranch()
4210 __ Sltiu(TMP, lhs, rhs_imm); in GenerateIntCompareAndBranch()
4211 __ Beqz(TMP, label); in GenerateIntCompareAndBranch()
4213 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4214 __ Bgeu(lhs, TMP, label); in GenerateIntCompareAndBranch()
4222 __ Sltiu(TMP, lhs, rhs_imm + 1); in GenerateIntCompareAndBranch()
4223 __ Bnez(TMP, label); in GenerateIntCompareAndBranch()
4225 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4226 __ Bgeu(TMP, lhs, label); in GenerateIntCompareAndBranch()
4234 __ Sltiu(TMP, lhs, rhs_imm + 1); in GenerateIntCompareAndBranch()
4235 __ Beqz(TMP, label); in GenerateIntCompareAndBranch()
4237 __ LoadConst32(TMP, rhs_imm); in GenerateIntCompareAndBranch()
4238 __ Bltu(TMP, lhs, label); in GenerateIntCompareAndBranch()
4271 __ Or(TMP, lhs_high, lhs_low); in GenerateLongCompareAndBranch()
4272 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4276 __ Or(TMP, lhs_high, lhs_low); in GenerateLongCompareAndBranch()
4277 __ Bnez(TMP, label); in GenerateLongCompareAndBranch()
4280 __ Bltz(lhs_high, label); in GenerateLongCompareAndBranch()
4283 __ Bgez(lhs_high, label); in GenerateLongCompareAndBranch()
4286 __ Or(TMP, lhs_high, lhs_low); in GenerateLongCompareAndBranch()
4287 __ Sra(AT, lhs_high, 31); in GenerateLongCompareAndBranch()
4288 __ Bgeu(AT, TMP, label); in GenerateLongCompareAndBranch()
4291 __ Or(TMP, lhs_high, lhs_low); in GenerateLongCompareAndBranch()
4292 __ Sra(AT, lhs_high, 31); in GenerateLongCompareAndBranch()
4293 __ Bltu(AT, TMP, label); in GenerateLongCompareAndBranch()
4298 __ B(label); in GenerateLongCompareAndBranch()
4305 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4306 __ Xor(TMP, TMP, lhs_high); in GenerateLongCompareAndBranch()
4307 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4308 __ Xor(AT, AT, lhs_low); in GenerateLongCompareAndBranch()
4309 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4310 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4313 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4314 __ Xor(TMP, TMP, lhs_high); in GenerateLongCompareAndBranch()
4315 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4316 __ Xor(AT, AT, lhs_low); in GenerateLongCompareAndBranch()
4317 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4318 __ Bnez(TMP, label); in GenerateLongCompareAndBranch()
4321 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4322 __ Blt(lhs_high, TMP, label); in GenerateLongCompareAndBranch()
4323 __ Slt(TMP, TMP, lhs_high); in GenerateLongCompareAndBranch()
4324 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4325 __ Sltu(AT, lhs_low, AT); in GenerateLongCompareAndBranch()
4326 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4329 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4330 __ Blt(TMP, lhs_high, label); in GenerateLongCompareAndBranch()
4331 __ Slt(TMP, lhs_high, TMP); in GenerateLongCompareAndBranch()
4332 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4333 __ Sltu(AT, lhs_low, AT); in GenerateLongCompareAndBranch()
4334 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4335 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4338 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4339 __ Blt(lhs_high, TMP, label); in GenerateLongCompareAndBranch()
4340 __ Slt(TMP, TMP, lhs_high); in GenerateLongCompareAndBranch()
4341 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4342 __ Sltu(AT, AT, lhs_low); in GenerateLongCompareAndBranch()
4343 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4344 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4347 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4348 __ Blt(TMP, lhs_high, label); in GenerateLongCompareAndBranch()
4349 __ Slt(TMP, lhs_high, TMP); in GenerateLongCompareAndBranch()
4350 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4351 __ Sltu(AT, AT, lhs_low); in GenerateLongCompareAndBranch()
4352 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4355 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4356 __ Bltu(lhs_high, TMP, label); in GenerateLongCompareAndBranch()
4357 __ Sltu(TMP, TMP, lhs_high); in GenerateLongCompareAndBranch()
4358 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4359 __ Sltu(AT, lhs_low, AT); in GenerateLongCompareAndBranch()
4360 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4363 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4364 __ Bltu(TMP, lhs_high, label); in GenerateLongCompareAndBranch()
4365 __ Sltu(TMP, lhs_high, TMP); in GenerateLongCompareAndBranch()
4366 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4367 __ Sltu(AT, lhs_low, AT); in GenerateLongCompareAndBranch()
4368 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4369 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4372 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4373 __ Bltu(lhs_high, TMP, label); in GenerateLongCompareAndBranch()
4374 __ Sltu(TMP, TMP, lhs_high); in GenerateLongCompareAndBranch()
4375 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4376 __ Sltu(AT, AT, lhs_low); in GenerateLongCompareAndBranch()
4377 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4378 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4381 __ LoadConst32(TMP, imm_high); in GenerateLongCompareAndBranch()
4382 __ Bltu(TMP, lhs_high, label); in GenerateLongCompareAndBranch()
4383 __ Sltu(TMP, lhs_high, TMP); in GenerateLongCompareAndBranch()
4384 __ LoadConst32(AT, imm_low); in GenerateLongCompareAndBranch()
4385 __ Sltu(AT, AT, lhs_low); in GenerateLongCompareAndBranch()
4386 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4392 __ Xor(TMP, lhs_high, rhs_high); in GenerateLongCompareAndBranch()
4393 __ Xor(AT, lhs_low, rhs_low); in GenerateLongCompareAndBranch()
4394 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4395 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4398 __ Xor(TMP, lhs_high, rhs_high); in GenerateLongCompareAndBranch()
4399 __ Xor(AT, lhs_low, rhs_low); in GenerateLongCompareAndBranch()
4400 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4401 __ Bnez(TMP, label); in GenerateLongCompareAndBranch()
4404 __ Blt(lhs_high, rhs_high, label); in GenerateLongCompareAndBranch()
4405 __ Slt(TMP, rhs_high, lhs_high); in GenerateLongCompareAndBranch()
4406 __ Sltu(AT, lhs_low, rhs_low); in GenerateLongCompareAndBranch()
4407 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4410 __ Blt(rhs_high, lhs_high, label); in GenerateLongCompareAndBranch()
4411 __ Slt(TMP, lhs_high, rhs_high); in GenerateLongCompareAndBranch()
4412 __ Sltu(AT, lhs_low, rhs_low); in GenerateLongCompareAndBranch()
4413 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4414 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4417 __ Blt(lhs_high, rhs_high, label); in GenerateLongCompareAndBranch()
4418 __ Slt(TMP, rhs_high, lhs_high); in GenerateLongCompareAndBranch()
4419 __ Sltu(AT, rhs_low, lhs_low); in GenerateLongCompareAndBranch()
4420 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4421 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4424 __ Blt(rhs_high, lhs_high, label); in GenerateLongCompareAndBranch()
4425 __ Slt(TMP, lhs_high, rhs_high); in GenerateLongCompareAndBranch()
4426 __ Sltu(AT, rhs_low, lhs_low); in GenerateLongCompareAndBranch()
4427 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4430 __ Bltu(lhs_high, rhs_high, label); in GenerateLongCompareAndBranch()
4431 __ Sltu(TMP, rhs_high, lhs_high); in GenerateLongCompareAndBranch()
4432 __ Sltu(AT, lhs_low, rhs_low); in GenerateLongCompareAndBranch()
4433 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4436 __ Bltu(rhs_high, lhs_high, label); in GenerateLongCompareAndBranch()
4437 __ Sltu(TMP, lhs_high, rhs_high); in GenerateLongCompareAndBranch()
4438 __ Sltu(AT, lhs_low, rhs_low); in GenerateLongCompareAndBranch()
4439 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4440 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4443 __ Bltu(lhs_high, rhs_high, label); in GenerateLongCompareAndBranch()
4444 __ Sltu(TMP, rhs_high, lhs_high); in GenerateLongCompareAndBranch()
4445 __ Sltu(AT, rhs_low, lhs_low); in GenerateLongCompareAndBranch()
4446 __ Or(TMP, TMP, AT); in GenerateLongCompareAndBranch()
4447 __ Beqz(TMP, label); in GenerateLongCompareAndBranch()
4450 __ Bltu(rhs_high, lhs_high, label); in GenerateLongCompareAndBranch()
4451 __ Sltu(TMP, lhs_high, rhs_high); in GenerateLongCompareAndBranch()
4452 __ Sltu(AT, rhs_low, lhs_low); in GenerateLongCompareAndBranch()
4453 __ Blt(TMP, AT, label); in GenerateLongCompareAndBranch()
4471 __ CmpEqS(FTMP, lhs, rhs); in GenerateFpCompare()
4472 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4473 __ Andi(dst, dst, 1); in GenerateFpCompare()
4476 __ CmpEqS(FTMP, lhs, rhs); in GenerateFpCompare()
4477 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4478 __ Addiu(dst, dst, 1); in GenerateFpCompare()
4482 __ CmpLtS(FTMP, lhs, rhs); in GenerateFpCompare()
4484 __ CmpUltS(FTMP, lhs, rhs); in GenerateFpCompare()
4486 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4487 __ Andi(dst, dst, 1); in GenerateFpCompare()
4491 __ CmpLeS(FTMP, lhs, rhs); in GenerateFpCompare()
4493 __ CmpUleS(FTMP, lhs, rhs); in GenerateFpCompare()
4495 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4496 __ Andi(dst, dst, 1); in GenerateFpCompare()
4500 __ CmpUltS(FTMP, rhs, lhs); in GenerateFpCompare()
4502 __ CmpLtS(FTMP, rhs, lhs); in GenerateFpCompare()
4504 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4505 __ Andi(dst, dst, 1); in GenerateFpCompare()
4509 __ CmpUleS(FTMP, rhs, lhs); in GenerateFpCompare()
4511 __ CmpLeS(FTMP, rhs, lhs); in GenerateFpCompare()
4513 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4514 __ Andi(dst, dst, 1); in GenerateFpCompare()
4523 __ CeqS(0, lhs, rhs); in GenerateFpCompare()
4524 __ LoadConst32(dst, 1); in GenerateFpCompare()
4525 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4528 __ CeqS(0, lhs, rhs); in GenerateFpCompare()
4529 __ LoadConst32(dst, 1); in GenerateFpCompare()
4530 __ Movt(dst, ZERO, 0); in GenerateFpCompare()
4534 __ ColtS(0, lhs, rhs); in GenerateFpCompare()
4536 __ CultS(0, lhs, rhs); in GenerateFpCompare()
4538 __ LoadConst32(dst, 1); in GenerateFpCompare()
4539 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4543 __ ColeS(0, lhs, rhs); in GenerateFpCompare()
4545 __ CuleS(0, lhs, rhs); in GenerateFpCompare()
4547 __ LoadConst32(dst, 1); in GenerateFpCompare()
4548 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4552 __ CultS(0, rhs, lhs); in GenerateFpCompare()
4554 __ ColtS(0, rhs, lhs); in GenerateFpCompare()
4556 __ LoadConst32(dst, 1); in GenerateFpCompare()
4557 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4561 __ CuleS(0, rhs, lhs); in GenerateFpCompare()
4563 __ ColeS(0, rhs, lhs); in GenerateFpCompare()
4565 __ LoadConst32(dst, 1); in GenerateFpCompare()
4566 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4578 __ CmpEqD(FTMP, lhs, rhs); in GenerateFpCompare()
4579 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4580 __ Andi(dst, dst, 1); in GenerateFpCompare()
4583 __ CmpEqD(FTMP, lhs, rhs); in GenerateFpCompare()
4584 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4585 __ Addiu(dst, dst, 1); in GenerateFpCompare()
4589 __ CmpLtD(FTMP, lhs, rhs); in GenerateFpCompare()
4591 __ CmpUltD(FTMP, lhs, rhs); in GenerateFpCompare()
4593 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4594 __ Andi(dst, dst, 1); in GenerateFpCompare()
4598 __ CmpLeD(FTMP, lhs, rhs); in GenerateFpCompare()
4600 __ CmpUleD(FTMP, lhs, rhs); in GenerateFpCompare()
4602 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4603 __ Andi(dst, dst, 1); in GenerateFpCompare()
4607 __ CmpUltD(FTMP, rhs, lhs); in GenerateFpCompare()
4609 __ CmpLtD(FTMP, rhs, lhs); in GenerateFpCompare()
4611 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4612 __ Andi(dst, dst, 1); in GenerateFpCompare()
4616 __ CmpUleD(FTMP, rhs, lhs); in GenerateFpCompare()
4618 __ CmpLeD(FTMP, rhs, lhs); in GenerateFpCompare()
4620 __ Mfc1(dst, FTMP); in GenerateFpCompare()
4621 __ Andi(dst, dst, 1); in GenerateFpCompare()
4630 __ CeqD(0, lhs, rhs); in GenerateFpCompare()
4631 __ LoadConst32(dst, 1); in GenerateFpCompare()
4632 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4635 __ CeqD(0, lhs, rhs); in GenerateFpCompare()
4636 __ LoadConst32(dst, 1); in GenerateFpCompare()
4637 __ Movt(dst, ZERO, 0); in GenerateFpCompare()
4641 __ ColtD(0, lhs, rhs); in GenerateFpCompare()
4643 __ CultD(0, lhs, rhs); in GenerateFpCompare()
4645 __ LoadConst32(dst, 1); in GenerateFpCompare()
4646 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4650 __ ColeD(0, lhs, rhs); in GenerateFpCompare()
4652 __ CuleD(0, lhs, rhs); in GenerateFpCompare()
4654 __ LoadConst32(dst, 1); in GenerateFpCompare()
4655 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4659 __ CultD(0, rhs, lhs); in GenerateFpCompare()
4661 __ ColtD(0, rhs, lhs); in GenerateFpCompare()
4663 __ LoadConst32(dst, 1); in GenerateFpCompare()
4664 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4668 __ CuleD(0, rhs, lhs); in GenerateFpCompare()
4670 __ ColeD(0, rhs, lhs); in GenerateFpCompare()
4672 __ LoadConst32(dst, 1); in GenerateFpCompare()
4673 __ Movf(dst, ZERO, 0); in GenerateFpCompare()
4694 __ CeqS(cc, lhs, rhs); in MaterializeFpCompareR2()
4697 __ CeqS(cc, lhs, rhs); in MaterializeFpCompareR2()
4701 __ ColtS(cc, lhs, rhs); in MaterializeFpCompareR2()
4703 __ CultS(cc, lhs, rhs); in MaterializeFpCompareR2()
4708 __ ColeS(cc, lhs, rhs); in MaterializeFpCompareR2()
4710 __ CuleS(cc, lhs, rhs); in MaterializeFpCompareR2()
4715 __ CultS(cc, rhs, lhs); in MaterializeFpCompareR2()
4717 __ ColtS(cc, rhs, lhs); in MaterializeFpCompareR2()
4722 __ CuleS(cc, rhs, lhs); in MaterializeFpCompareR2()
4724 __ ColeS(cc, rhs, lhs); in MaterializeFpCompareR2()
4735 __ CeqD(cc, lhs, rhs); in MaterializeFpCompareR2()
4738 __ CeqD(cc, lhs, rhs); in MaterializeFpCompareR2()
4742 __ ColtD(cc, lhs, rhs); in MaterializeFpCompareR2()
4744 __ CultD(cc, lhs, rhs); in MaterializeFpCompareR2()
4749 __ ColeD(cc, lhs, rhs); in MaterializeFpCompareR2()
4751 __ CuleD(cc, lhs, rhs); in MaterializeFpCompareR2()
4756 __ CultD(cc, rhs, lhs); in MaterializeFpCompareR2()
4758 __ ColtD(cc, rhs, lhs); in MaterializeFpCompareR2()
4763 __ CuleD(cc, rhs, lhs); in MaterializeFpCompareR2()
4765 __ ColeD(cc, rhs, lhs); in MaterializeFpCompareR2()
4786 __ CmpEqS(dst, lhs, rhs); in MaterializeFpCompareR6()
4789 __ CmpEqS(dst, lhs, rhs); in MaterializeFpCompareR6()
4793 __ CmpLtS(dst, lhs, rhs); in MaterializeFpCompareR6()
4795 __ CmpUltS(dst, lhs, rhs); in MaterializeFpCompareR6()
4800 __ CmpLeS(dst, lhs, rhs); in MaterializeFpCompareR6()
4802 __ CmpUleS(dst, lhs, rhs); in MaterializeFpCompareR6()
4807 __ CmpUltS(dst, rhs, lhs); in MaterializeFpCompareR6()
4809 __ CmpLtS(dst, rhs, lhs); in MaterializeFpCompareR6()
4814 __ CmpUleS(dst, rhs, lhs); in MaterializeFpCompareR6()
4816 __ CmpLeS(dst, rhs, lhs); in MaterializeFpCompareR6()
4827 __ CmpEqD(dst, lhs, rhs); in MaterializeFpCompareR6()
4830 __ CmpEqD(dst, lhs, rhs); in MaterializeFpCompareR6()
4834 __ CmpLtD(dst, lhs, rhs); in MaterializeFpCompareR6()
4836 __ CmpUltD(dst, lhs, rhs); in MaterializeFpCompareR6()
4841 __ CmpLeD(dst, lhs, rhs); in MaterializeFpCompareR6()
4843 __ CmpUleD(dst, lhs, rhs); in MaterializeFpCompareR6()
4848 __ CmpUltD(dst, rhs, lhs); in MaterializeFpCompareR6()
4850 __ CmpLtD(dst, rhs, lhs); in MaterializeFpCompareR6()
4855 __ CmpUleD(dst, rhs, lhs); in MaterializeFpCompareR6()
4857 __ CmpLeD(dst, rhs, lhs); in MaterializeFpCompareR6()
4879 __ CmpEqS(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4880 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4883 __ CmpEqS(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4884 __ Bc1eqz(FTMP, label); in GenerateFpCompareAndBranch()
4888 __ CmpLtS(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4890 __ CmpUltS(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4892 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4896 __ CmpLeS(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4898 __ CmpUleS(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4900 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4904 __ CmpUltS(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
4906 __ CmpLtS(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
4908 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4912 __ CmpUleS(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
4914 __ CmpLeS(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
4916 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4925 __ CeqS(0, lhs, rhs); in GenerateFpCompareAndBranch()
4926 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
4929 __ CeqS(0, lhs, rhs); in GenerateFpCompareAndBranch()
4930 __ Bc1f(0, label); in GenerateFpCompareAndBranch()
4934 __ ColtS(0, lhs, rhs); in GenerateFpCompareAndBranch()
4936 __ CultS(0, lhs, rhs); in GenerateFpCompareAndBranch()
4938 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
4942 __ ColeS(0, lhs, rhs); in GenerateFpCompareAndBranch()
4944 __ CuleS(0, lhs, rhs); in GenerateFpCompareAndBranch()
4946 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
4950 __ CultS(0, rhs, lhs); in GenerateFpCompareAndBranch()
4952 __ ColtS(0, rhs, lhs); in GenerateFpCompareAndBranch()
4954 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
4958 __ CuleS(0, rhs, lhs); in GenerateFpCompareAndBranch()
4960 __ ColeS(0, rhs, lhs); in GenerateFpCompareAndBranch()
4962 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
4974 __ CmpEqD(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4975 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4978 __ CmpEqD(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4979 __ Bc1eqz(FTMP, label); in GenerateFpCompareAndBranch()
4983 __ CmpLtD(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4985 __ CmpUltD(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4987 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4991 __ CmpLeD(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4993 __ CmpUleD(FTMP, lhs, rhs); in GenerateFpCompareAndBranch()
4995 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
4999 __ CmpUltD(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
5001 __ CmpLtD(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
5003 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
5007 __ CmpUleD(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
5009 __ CmpLeD(FTMP, rhs, lhs); in GenerateFpCompareAndBranch()
5011 __ Bc1nez(FTMP, label); in GenerateFpCompareAndBranch()
5020 __ CeqD(0, lhs, rhs); in GenerateFpCompareAndBranch()
5021 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
5024 __ CeqD(0, lhs, rhs); in GenerateFpCompareAndBranch()
5025 __ Bc1f(0, label); in GenerateFpCompareAndBranch()
5029 __ ColtD(0, lhs, rhs); in GenerateFpCompareAndBranch()
5031 __ CultD(0, lhs, rhs); in GenerateFpCompareAndBranch()
5033 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
5037 __ ColeD(0, lhs, rhs); in GenerateFpCompareAndBranch()
5039 __ CuleD(0, lhs, rhs); in GenerateFpCompareAndBranch()
5041 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
5045 __ CultD(0, rhs, lhs); in GenerateFpCompareAndBranch()
5047 __ ColtD(0, rhs, lhs); in GenerateFpCompareAndBranch()
5049 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
5053 __ CuleD(0, rhs, lhs); in GenerateFpCompareAndBranch()
5055 __ ColeD(0, rhs, lhs); in GenerateFpCompareAndBranch()
5057 __ Bc1t(0, label); in GenerateFpCompareAndBranch()
5080 __ B(true_target); in GenerateTestAndBranch()
5085 __ B(false_target); in GenerateTestAndBranch()
5104 __ Beqz(cond_val.AsRegister<Register>(), false_target); in GenerateTestAndBranch()
5106 __ Bnez(cond_val.AsRegister<Register>(), true_target); in GenerateTestAndBranch()
5139 __ B(false_target); in GenerateTestAndBranch()
5469 __ Movz(dst.AsRegister<Register>(), src_reg, cond_reg); in GenConditionalMoveR2()
5471 __ Movn(dst.AsRegister<Register>(), src_reg, cond_reg); in GenConditionalMoveR2()
5476 __ Movz(dst.AsRegisterPairLow<Register>(), src_reg, cond_reg); in GenConditionalMoveR2()
5477 __ Movz(dst.AsRegisterPairHigh<Register>(), src_reg_high, cond_reg); in GenConditionalMoveR2()
5479 __ Movn(dst.AsRegisterPairLow<Register>(), src_reg, cond_reg); in GenConditionalMoveR2()
5480 __ Movn(dst.AsRegisterPairHigh<Register>(), src_reg_high, cond_reg); in GenConditionalMoveR2()
5485 __ MovzS(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_reg); in GenConditionalMoveR2()
5487 __ MovnS(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_reg); in GenConditionalMoveR2()
5492 __ MovzD(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_reg); in GenConditionalMoveR2()
5494 __ MovnD(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_reg); in GenConditionalMoveR2()
5507 __ Movf(dst.AsRegister<Register>(), src_reg, cond_cc); in GenConditionalMoveR2()
5509 __ Movt(dst.AsRegister<Register>(), src_reg, cond_cc); in GenConditionalMoveR2()
5514 __ Movf(dst.AsRegisterPairLow<Register>(), src_reg, cond_cc); in GenConditionalMoveR2()
5515 __ Movf(dst.AsRegisterPairHigh<Register>(), src_reg_high, cond_cc); in GenConditionalMoveR2()
5517 __ Movt(dst.AsRegisterPairLow<Register>(), src_reg, cond_cc); in GenConditionalMoveR2()
5518 __ Movt(dst.AsRegisterPairHigh<Register>(), src_reg_high, cond_cc); in GenConditionalMoveR2()
5523 __ MovfS(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_cc); in GenConditionalMoveR2()
5525 __ MovtS(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_cc); in GenConditionalMoveR2()
5530 __ MovfD(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_cc); in GenConditionalMoveR2()
5532 __ MovtD(dst.AsFpuRegister<FRegister>(), src.AsFpuRegister<FRegister>(), cond_cc); in GenConditionalMoveR2()
5585 __ Mfc1(cond_reg, fcond_reg); in GenConditionalMoveR6()
5589 __ Selnez(dst.AsRegister<Register>(), false_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5591 __ Seleqz(dst.AsRegister<Register>(), false_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5595 __ Seleqz(dst.AsRegister<Register>(), true_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5597 __ Selnez(dst.AsRegister<Register>(), true_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5602 __ Seleqz(AT, true_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5603 __ Selnez(TMP, false_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5605 __ Selnez(AT, true_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5606 __ Seleqz(TMP, false_src.AsRegister<Register>(), cond_reg); in GenConditionalMoveR6()
5608 __ Or(dst.AsRegister<Register>(), AT, TMP); in GenConditionalMoveR6()
5613 __ Mfc1(cond_reg, fcond_reg); in GenConditionalMoveR6()
5621 __ Selnez(dst_lo, src_lo, cond_reg); in GenConditionalMoveR6()
5622 __ Selnez(dst_hi, src_hi, cond_reg); in GenConditionalMoveR6()
5624 __ Seleqz(dst_lo, src_lo, cond_reg); in GenConditionalMoveR6()
5625 __ Seleqz(dst_hi, src_hi, cond_reg); in GenConditionalMoveR6()
5632 __ Seleqz(dst_lo, src_lo, cond_reg); in GenConditionalMoveR6()
5633 __ Seleqz(dst_hi, src_hi, cond_reg); in GenConditionalMoveR6()
5635 __ Selnez(dst_lo, src_lo, cond_reg); in GenConditionalMoveR6()
5636 __ Selnez(dst_hi, src_hi, cond_reg); in GenConditionalMoveR6()
5644 __ Sltu(TMP, ZERO, cond_reg); in GenConditionalMoveR6()
5645 __ Mtc1(TMP, fcond_reg); in GenConditionalMoveR6()
5651 __ SelnezS(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5653 __ SeleqzS(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5658 __ SeleqzS(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5660 __ SelnezS(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5664 __ SelS(fcond_reg, in GenConditionalMoveR6()
5668 __ SelS(fcond_reg, in GenConditionalMoveR6()
5672 __ MovS(dst_reg, fcond_reg); in GenConditionalMoveR6()
5679 __ Sltu(TMP, ZERO, cond_reg); in GenConditionalMoveR6()
5680 __ Mtc1(TMP, fcond_reg); in GenConditionalMoveR6()
5686 __ SelnezD(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5688 __ SeleqzD(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5693 __ SeleqzD(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5695 __ SelnezD(dst_reg, src_reg, fcond_reg); in GenConditionalMoveR6()
5699 __ SelD(fcond_reg, in GenConditionalMoveR6()
5703 __ SelD(fcond_reg, in GenConditionalMoveR6()
5707 __ MovD(dst_reg, fcond_reg); in GenConditionalMoveR6()
5721 __ LoadFromOffset(kLoadWord, in VisitShouldDeoptimizeFlag()
5748 __ Bind(&false_target); in VisitSelect()
5761 __ Nop(); in GenerateNop()
5855 __ Addiu32(locations->GetTemp(0).AsRegister<Register>(), obj, offset); in HandleFieldGet()
5857 __ Lw(ZERO, locations->GetTemp(0).AsRegister<Register>(), 0); in HandleFieldGet()
5864 __ Mtc1(locations->GetTemp(1).AsRegister<Register>(), dst_loc.AsFpuRegister<FRegister>()); in HandleFieldGet()
5865 __ MoveToFpuHigh(locations->GetTemp(2).AsRegister<Register>(), in HandleFieldGet()
5869 __ StoreToOffset(kStoreWord, in HandleFieldGet()
5873 __ StoreToOffset(kStoreWord, in HandleFieldGet()
5896 __ LoadFromOffset(kLoadWord, dst_loc.AsRegister<Register>(), obj, offset, null_checker); in HandleFieldGet()
5914 __ LoadFromOffset(load_type, dst, obj, offset, null_checker); in HandleFieldGet()
5919 __ LoadSFromOffset(dst, obj, offset, null_checker); in HandleFieldGet()
5921 __ LoadDFromOffset(dst, obj, offset, null_checker); in HandleFieldGet()
6007 __ Addiu32(locations->GetTemp(0).AsRegister<Register>(), obj, offset); in HandleFieldSet()
6009 __ Lw(ZERO, locations->GetTemp(0).AsRegister<Register>(), 0); in HandleFieldSet()
6014 __ Mfc1(locations->GetTemp(1).AsRegister<Register>(), in HandleFieldSet()
6016 __ MoveFromFpuHigh(locations->GetTemp(2).AsRegister<Register>(), in HandleFieldSet()
6019 __ LoadFromOffset(kLoadWord, in HandleFieldSet()
6023 __ LoadFromOffset(kLoadWord, in HandleFieldSet()
6031 __ LoadConst64(locations->GetTemp(2).AsRegister<Register>(), in HandleFieldSet()
6041 __ StoreConstToOffset(store_type, value, obj, offset, TMP, null_checker); in HandleFieldSet()
6054 __ PoisonHeapReference(TMP, src); in HandleFieldSet()
6055 __ StoreToOffset(store_type, TMP, obj, offset, null_checker); in HandleFieldSet()
6057 __ StoreToOffset(store_type, src, obj, offset, null_checker); in HandleFieldSet()
6062 __ StoreSToOffset(src, obj, offset, null_checker); in HandleFieldSet()
6064 __ StoreDToOffset(src, obj, offset, null_checker); in HandleFieldSet()
6122 __ Move(maybe_temp.AsRegister<Register>(), out_reg); in GenerateReferenceLoadOneRegister()
6124 __ LoadFromOffset(kLoadWord, out_reg, out_reg, offset); in GenerateReferenceLoadOneRegister()
6130 __ LoadFromOffset(kLoadWord, out_reg, out_reg, offset); in GenerateReferenceLoadOneRegister()
6131 __ MaybeUnpoisonHeapReference(out_reg); in GenerateReferenceLoadOneRegister()
6159 __ LoadFromOffset(kLoadWord, out_reg, obj_reg, offset); in GenerateReferenceLoadTwoRegisters()
6165 __ LoadFromOffset(kLoadWord, out_reg, obj_reg, offset); in GenerateReferenceLoadTwoRegisters()
6166 __ MaybeUnpoisonHeapReference(out_reg); in GenerateReferenceLoadTwoRegisters()
6189 __ LoadFromOffset(kLoadWord, root_reg, obj, offset); in GenerateGcRootFieldLoad()
6212 __ LoadFromOffset(kLoadWord, temp.AsRegister<Register>(), TR, entry_point_offset); in GenerateGcRootFieldLoad()
6215 __ Bnez(temp.AsRegister<Register>(), slow_path->GetEntryLabel()); in GenerateGcRootFieldLoad()
6216 __ Bind(slow_path->GetExitLabel()); in GenerateGcRootFieldLoad()
6221 __ Addiu32(root_reg, obj, offset); in GenerateGcRootFieldLoad()
6228 __ LoadFromOffset(kLoadWord, root_reg, obj, offset); in GenerateGcRootFieldLoad()
6318 __ LoadFromOffset(kLoadWord, temp_reg, obj, monitor_offset); in GenerateReferenceLoadWithBakerReadBarrier()
6326 __ Sync(0); // Barrier to prevent load-load reordering. in GenerateReferenceLoadWithBakerReadBarrier()
6337 __ LoadFromOffset(kLoadWord, ref_reg, obj, computed_offset); in GenerateReferenceLoadWithBakerReadBarrier()
6346 __ ShiftAndAdd(TMP, index_reg, obj, scale_factor, TMP); in GenerateReferenceLoadWithBakerReadBarrier()
6347 __ LoadFromOffset(kLoadWord, ref_reg, TMP, offset); in GenerateReferenceLoadWithBakerReadBarrier()
6351 __ LoadFromOffset(kLoadWord, ref_reg, obj, offset); in GenerateReferenceLoadWithBakerReadBarrier()
6355 __ MaybeUnpoisonHeapReference(ref_reg); in GenerateReferenceLoadWithBakerReadBarrier()
6386 __ Sll(temp_reg, temp_reg, 31 - LockWord::kReadBarrierStateShift); in GenerateReferenceLoadWithBakerReadBarrier()
6387 __ Bltz(temp_reg, slow_path->GetEntryLabel()); in GenerateReferenceLoadWithBakerReadBarrier()
6388 __ Bind(slow_path->GetExitLabel()); in GenerateReferenceLoadWithBakerReadBarrier()
6414 __ B(slow_path->GetEntryLabel()); in GenerateReadBarrierSlow()
6415 __ Bind(slow_path->GetExitLabel()); in GenerateReadBarrierSlow()
6432 __ UnpoisonHeapReference(out.AsRegister<Register>()); in MaybeGenerateReadBarrierSlow()
6449 __ B(slow_path->GetEntryLabel()); in GenerateReadBarrierForRootSlow()
6450 __ Bind(slow_path->GetExitLabel()); in GenerateReadBarrierForRootSlow()
6501 __ Move(out, ZERO); in VisitInstanceOf()
6502 __ Beqz(obj, &done); in VisitInstanceOf()
6515 __ Xor(out, out, cls); in VisitInstanceOf()
6516 __ Sltiu(out, out, 1); in VisitInstanceOf()
6531 __ Bind(&loop); in VisitInstanceOf()
6539 __ Beqz(out, &done); in VisitInstanceOf()
6540 __ Bne(out, cls, &loop); in VisitInstanceOf()
6541 __ LoadConst32(out, 1); in VisitInstanceOf()
6555 __ Bind(&loop); in VisitInstanceOf()
6556 __ Beq(out, cls, &success); in VisitInstanceOf()
6563 __ Bnez(out, &loop); in VisitInstanceOf()
6565 __ B(&done); in VisitInstanceOf()
6566 __ Bind(&success); in VisitInstanceOf()
6567 __ LoadConst32(out, 1); in VisitInstanceOf()
6581 __ Beq(out, cls, &success); in VisitInstanceOf()
6590 __ Beqz(out, &done); in VisitInstanceOf()
6591 __ LoadFromOffset(kLoadUnsignedHalfword, out, out, primitive_offset); in VisitInstanceOf()
6593 __ Sltiu(out, out, 1); in VisitInstanceOf()
6594 __ B(&done); in VisitInstanceOf()
6595 __ Bind(&success); in VisitInstanceOf()
6596 __ LoadConst32(out, 1); in VisitInstanceOf()
6613 __ Bne(out, cls, slow_path->GetEntryLabel()); in VisitInstanceOf()
6614 __ LoadConst32(out, 1); in VisitInstanceOf()
6642 __ B(slow_path->GetEntryLabel()); in VisitInstanceOf()
6647 __ Bind(&done); in VisitInstanceOf()
6650 __ Bind(slow_path->GetExitLabel()); in VisitInstanceOf()
6692 __ LoadConst32(invoke->GetLocations()->GetTemp(1).AsRegister<Register>(), in VisitInvokeInterface()
6697 __ LoadFromOffset(kLoadWord, temp, SP, receiver.GetStackIndex()); in VisitInvokeInterface()
6698 __ LoadFromOffset(kLoadWord, temp, temp, class_offset); in VisitInvokeInterface()
6700 __ LoadFromOffset(kLoadWord, temp, receiver.AsRegister<Register>(), class_offset); in VisitInvokeInterface()
6710 __ MaybeUnpoisonHeapReference(temp); in VisitInvokeInterface()
6711 __ LoadFromOffset(kLoadWord, temp, temp, in VisitInvokeInterface()
6716 __ LoadFromOffset(kLoadWord, temp, temp, method_offset); in VisitInvokeInterface()
6718 __ LoadFromOffset(kLoadWord, T9, temp, entry_point.Int32Value()); in VisitInvokeInterface()
6720 __ Jalr(T9); in VisitInvokeInterface()
6721 __ NopIfNoReordering(); in VisitInvokeInterface()
6861 __ LoadFromOffset(kLoadWord, temp, SP, location.GetStackIndex()); in GetInvokeStaticOrDirectExtraParameter()
6872 __ LoadFromOffset(kLoadWord, temp, SP, stack_offset); in GetInvokeStaticOrDirectExtraParameter()
6916 __ LoadFromOffset(kLoadWord, in GenerateStaticOrDirectCall()
6926 __ LoadConst32(temp.AsRegister<Register>(), invoke->GetMethodAddress()); in GenerateStaticOrDirectCall()
6933 bool reordering = __ SetReorder(false); in GenerateStaticOrDirectCall()
6935 __ Lw(temp.AsRegister<Register>(), TMP, /* placeholder */ 0x5678); in GenerateStaticOrDirectCall()
6936 __ SetReorder(reordering); in GenerateStaticOrDirectCall()
6942 __ LoadFromOffset(kLoadWord, temp.AsRegister<Register>(), base_reg, offset); in GenerateStaticOrDirectCall()
6956 __ Lw(reg, SP, kCurrentMethodStackOffset); in GenerateStaticOrDirectCall()
6960 __ LoadFromOffset(kLoadWord, in GenerateStaticOrDirectCall()
6967 __ LoadFromOffset(kLoadWord, in GenerateStaticOrDirectCall()
6977 __ Bal(&frame_entry_label_); in GenerateStaticOrDirectCall()
6981 __ LoadFromOffset(kLoadWord, in GenerateStaticOrDirectCall()
6987 __ Jalr(T9); in GenerateStaticOrDirectCall()
6988 __ NopIfNoReordering(); in GenerateStaticOrDirectCall()
7026 __ LoadFromOffset(kLoadWord, temp, receiver, class_offset); in GenerateVirtualCall()
7035 __ MaybeUnpoisonHeapReference(temp); in GenerateVirtualCall()
7037 __ LoadFromOffset(kLoadWord, temp, temp, method_offset); in GenerateVirtualCall()
7039 __ LoadFromOffset(kLoadWord, T9, temp, entry_point.Int32Value()); in GenerateVirtualCall()
7041 __ Jalr(T9); in GenerateVirtualCall()
7042 __ NopIfNoReordering(); in GenerateVirtualCall()
7142 __ LoadLiteral(out, in VisitLoadClass()
7152 bool reordering = __ SetReorder(false); in VisitLoadClass()
7154 __ Addiu(out, out, /* placeholder */ 0x5678); in VisitLoadClass()
7155 __ SetReorder(reordering); in VisitLoadClass()
7163 __ LoadLiteral(out, in VisitLoadClass()
7171 bool reordering = __ SetReorder(false); in VisitLoadClass()
7174 __ SetReorder(reordering); in VisitLoadClass()
7182 bool reordering = __ SetReorder(false); in VisitLoadClass()
7183 __ Bind(&info->high_label); in VisitLoadClass()
7184 __ Lui(out, /* placeholder */ 0x1234); in VisitLoadClass()
7186 __ SetReorder(reordering); in VisitLoadClass()
7201 __ Beqz(out, slow_path->GetEntryLabel()); in VisitLoadClass()
7206 __ Bind(slow_path->GetExitLabel()); in VisitLoadClass()
7223 __ LoadFromOffset(kLoadWord, out, TR, GetExceptionTlsOffset()); in VisitLoadException()
7231 __ StoreToOffset(kStoreWord, ZERO, TR, GetExceptionTlsOffset()); in VisitClearException()
7288 __ LoadLiteral(out, in VisitLoadString()
7297 bool reordering = __ SetReorder(false); in VisitLoadString()
7299 __ Addiu(out, out, /* placeholder */ 0x5678); in VisitLoadString()
7300 __ SetReorder(reordering); in VisitLoadString()
7307 __ LoadLiteral(out, in VisitLoadString()
7316 bool reordering = __ SetReorder(false); in VisitLoadString()
7323 __ SetReorder(reordering); in VisitLoadString()
7326 __ Beqz(out, slow_path->GetEntryLabel()); in VisitLoadString()
7327 __ Bind(slow_path->GetExitLabel()); in VisitLoadString()
7335 bool reordering = __ SetReorder(false); in VisitLoadString()
7336 __ Bind(&info->high_label); in VisitLoadString()
7337 __ Lui(out, /* placeholder */ 0x1234); in VisitLoadString()
7343 __ SetReorder(reordering); in VisitLoadString()
7353 __ LoadConst32(calling_convention.GetRegisterAt(0), load->GetStringIndex().index_); in VisitLoadString()
7419 __ MulR6(dst, lhs, rhs); in VisitMul()
7421 __ MulR2(dst, lhs, rhs); in VisitMul()
7445 __ MulR6(TMP, lhs_high, rhs_low); in VisitMul()
7446 __ MulR6(dst_high, lhs_low, rhs_high); in VisitMul()
7447 __ Addu(dst_high, dst_high, TMP); in VisitMul()
7448 __ MuhuR6(TMP, lhs_low, rhs_low); in VisitMul()
7449 __ Addu(dst_high, dst_high, TMP); in VisitMul()
7450 __ MulR6(dst_low, lhs_low, rhs_low); in VisitMul()
7452 __ MulR2(TMP, lhs_high, rhs_low); in VisitMul()
7453 __ MulR2(dst_high, lhs_low, rhs_high); in VisitMul()
7454 __ Addu(dst_high, dst_high, TMP); in VisitMul()
7455 __ MultuR2(lhs_low, rhs_low); in VisitMul()
7456 __ Mfhi(TMP); in VisitMul()
7457 __ Addu(dst_high, dst_high, TMP); in VisitMul()
7458 __ Mflo(dst_low); in VisitMul()
7468 __ MulS(dst, lhs, rhs); in VisitMul()
7470 __ MulD(dst, lhs, rhs); in VisitMul()
7508 __ Subu(dst, ZERO, src); in VisitNeg()
7516 __ Subu(dst_low, ZERO, src_low); in VisitNeg()
7517 __ Sltu(TMP, ZERO, dst_low); in VisitNeg()
7518 __ Subu(dst_high, ZERO, src_high); in VisitNeg()
7519 __ Subu(dst_high, dst_high, TMP); in VisitNeg()
7527 __ NegS(dst, src); in VisitNeg()
7529 __ NegD(dst, src); in VisitNeg()
7573 __ LoadFromOffset(kLoadWord, temp, TR, QUICK_ENTRY_POINT(pNewEmptyString)); in VisitNewInstance()
7574 __ LoadFromOffset(kLoadWord, T9, temp, code_offset.Int32Value()); in VisitNewInstance()
7575 __ Jalr(T9); in VisitNewInstance()
7576 __ NopIfNoReordering(); in VisitNewInstance()
7598 __ Nor(dst, src, ZERO); in VisitNot()
7607 __ Nor(dst_high, src_high, ZERO); in VisitNot()
7608 __ Nor(dst_low, src_low, ZERO); in VisitNot()
7625 __ Xori(locations->Out().AsRegister<Register>(), in VisitBooleanNot()
7641 __ Lw(ZERO, obj.AsRegister<Register>(), 0); in GenerateImplicitNullCheck()
7651 __ Beqz(obj.AsRegister<Register>(), slow_path->GetEntryLabel()); in GenerateExplicitNullCheck()
8020 __ Move(dst_low, src); in VisitTypeConversion()
8022 __ Sra(dst_high, src, 31); in VisitTypeConversion()
8031 __ Andi(dst, src, 0xFFFF); in VisitTypeConversion()
8035 __ Seb(dst, src); in VisitTypeConversion()
8037 __ Sll(dst, src, 24); in VisitTypeConversion()
8038 __ Sra(dst, dst, 24); in VisitTypeConversion()
8043 __ Seh(dst, src); in VisitTypeConversion()
8045 __ Sll(dst, src, 16); in VisitTypeConversion()
8046 __ Sra(dst, dst, 16); in VisitTypeConversion()
8051 __ Move(dst, src); in VisitTypeConversion()
8067 __ Mtc1(src_low, FTMP); in VisitTypeConversion()
8068 __ Mthc1(src_high, FTMP); in VisitTypeConversion()
8070 __ Cvtsl(dst, FTMP); in VisitTypeConversion()
8072 __ Cvtdl(dst, FTMP); in VisitTypeConversion()
8087 __ Mtc1(src, FTMP); in VisitTypeConversion()
8089 __ Cvtsw(dst, FTMP); in VisitTypeConversion()
8091 __ Cvtdw(dst, FTMP); in VisitTypeConversion()
8133 __ LoadConst32(TMP, min_val); in VisitTypeConversion()
8134 __ Mtc1(TMP, FTMP); in VisitTypeConversion()
8135 __ CmpLeS(FTMP, FTMP, src); in VisitTypeConversion()
8138 __ LoadConst32(TMP, High32Bits(min_val)); in VisitTypeConversion()
8139 __ Mtc1(ZERO, FTMP); in VisitTypeConversion()
8140 __ Mthc1(TMP, FTMP); in VisitTypeConversion()
8141 __ CmpLeD(FTMP, FTMP, src); in VisitTypeConversion()
8144 __ Bc1nez(FTMP, &truncate); in VisitTypeConversion()
8147 __ CmpEqS(FTMP, src, src); in VisitTypeConversion()
8149 __ CmpEqD(FTMP, src, src); in VisitTypeConversion()
8151 __ Move(dst_low, ZERO); in VisitTypeConversion()
8152 __ LoadConst32(dst_high, std::numeric_limits<int32_t>::min()); in VisitTypeConversion()
8153 __ Mfc1(TMP, FTMP); in VisitTypeConversion()
8154 __ And(dst_high, dst_high, TMP); in VisitTypeConversion()
8156 __ B(&done); in VisitTypeConversion()
8158 __ Bind(&truncate); in VisitTypeConversion()
8161 __ TruncLS(FTMP, src); in VisitTypeConversion()
8163 __ TruncLD(FTMP, src); in VisitTypeConversion()
8165 __ Mfc1(dst_low, FTMP); in VisitTypeConversion()
8166 __ Mfhc1(dst_high, FTMP); in VisitTypeConversion()
8168 __ Bind(&done); in VisitTypeConversion()
8195 __ LoadConst32(TMP, min_val); in VisitTypeConversion()
8196 __ Mtc1(TMP, FTMP); in VisitTypeConversion()
8199 __ LoadConst32(TMP, High32Bits(min_val)); in VisitTypeConversion()
8200 __ Mtc1(ZERO, FTMP); in VisitTypeConversion()
8201 __ MoveToFpuHigh(TMP, FTMP); in VisitTypeConversion()
8206 __ CmpLeS(FTMP, FTMP, src); in VisitTypeConversion()
8208 __ CmpLeD(FTMP, FTMP, src); in VisitTypeConversion()
8210 __ Bc1nez(FTMP, &truncate); in VisitTypeConversion()
8213 __ CmpEqS(FTMP, src, src); in VisitTypeConversion()
8215 __ CmpEqD(FTMP, src, src); in VisitTypeConversion()
8217 __ LoadConst32(dst, std::numeric_limits<int32_t>::min()); in VisitTypeConversion()
8218 __ Mfc1(TMP, FTMP); in VisitTypeConversion()
8219 __ And(dst, dst, TMP); in VisitTypeConversion()
8222 __ ColeS(0, FTMP, src); in VisitTypeConversion()
8224 __ ColeD(0, FTMP, src); in VisitTypeConversion()
8226 __ Bc1t(0, &truncate); in VisitTypeConversion()
8229 __ CeqS(0, src, src); in VisitTypeConversion()
8231 __ CeqD(0, src, src); in VisitTypeConversion()
8233 __ LoadConst32(dst, std::numeric_limits<int32_t>::min()); in VisitTypeConversion()
8234 __ Movf(dst, ZERO, 0); in VisitTypeConversion()
8237 __ B(&done); in VisitTypeConversion()
8239 __ Bind(&truncate); in VisitTypeConversion()
8242 __ TruncWS(FTMP, src); in VisitTypeConversion()
8244 __ TruncWD(FTMP, src); in VisitTypeConversion()
8246 __ Mfc1(dst, FTMP); in VisitTypeConversion()
8248 __ Bind(&done); in VisitTypeConversion()
8255 __ Cvtsd(dst, src); in VisitTypeConversion()
8257 __ Cvtds(dst, src); in VisitTypeConversion()
8384 __ Addiu32(temp_reg, value_reg, -lower_bound); in GenPackedSwitchWithCompares()
8388 __ Bltz(temp_reg, codegen_->GetLabelOf(default_block)); in GenPackedSwitchWithCompares()
8392 __ Beqz(temp_reg, codegen_->GetLabelOf(successors[0])); in GenPackedSwitchWithCompares()
8395 __ Addiu(temp_reg, temp_reg, -2); in GenPackedSwitchWithCompares()
8397 __ Bltz(temp_reg, codegen_->GetLabelOf(successors[last_index + 1])); in GenPackedSwitchWithCompares()
8399 __ Beqz(temp_reg, codegen_->GetLabelOf(successors[last_index + 2])); in GenPackedSwitchWithCompares()
8403 __ Addiu(temp_reg, temp_reg, -1); in GenPackedSwitchWithCompares()
8404 __ Beqz(temp_reg, codegen_->GetLabelOf(successors[last_index + 1])); in GenPackedSwitchWithCompares()
8409 __ B(codegen_->GetLabelOf(default_block)); in GenPackedSwitchWithCompares()
8425 JumpTable* table = __ CreateJumpTable(std::move(labels)); in GenTableBasedPackedSwitch()
8428 __ Addiu32(TMP, value_reg, -lower_bound); in GenTableBasedPackedSwitch()
8430 __ Sltiu(AT, TMP, num_entries); in GenTableBasedPackedSwitch()
8431 __ Beqz(AT, codegen_->GetLabelOf(default_block)); in GenTableBasedPackedSwitch()
8433 __ LoadConst32(AT, num_entries); in GenTableBasedPackedSwitch()
8434 __ Bgeu(TMP, AT, codegen_->GetLabelOf(default_block)); in GenTableBasedPackedSwitch()
8439 __ LoadLabelAddress(AT, constant_area, table->GetLabel()); in GenTableBasedPackedSwitch()
8440 __ ShiftAndAdd(TMP, TMP, AT, 2, TMP); in GenTableBasedPackedSwitch()
8441 __ Lw(TMP, TMP, 0); in GenTableBasedPackedSwitch()
8444 __ Addu(TMP, TMP, AT); in GenTableBasedPackedSwitch()
8446 __ Jr(TMP); in GenTableBasedPackedSwitch()
8447 __ NopIfNoReordering(); in GenTableBasedPackedSwitch()
8523 __ Nal(); in VisitMipsComputeBaseMethodAddress()
8525 __ Move(reg, RA); in VisitMipsComputeBaseMethodAddress()
8529 __ BindPcRelBaseLabel(); in VisitMipsComputeBaseMethodAddress()
8542 bool reordering = __ SetReorder(false); in VisitMipsDexCacheArraysBase()
8545 __ Addiu(reg, reg, /* placeholder */ 0x5678); in VisitMipsDexCacheArraysBase()
8546 __ SetReorder(reordering); in VisitMipsDexCacheArraysBase()
8572 __ LoadFromOffset(kLoadWord, in VisitClassTableGet()
8579 __ LoadFromOffset(kLoadWord, in VisitClassTableGet()
8583 __ LoadFromOffset(kLoadWord, in VisitClassTableGet()
8590 #undef __