Lines Matching refs:__

48 #define __ assembler->  macro
66 __ AddConstant(base, array, element_size * constant + data_offset); in GenSystemArrayCopyBaseAddress()
68 __ add(base, array, ShifterOperand(pos.AsRegister<Register>(), LSL, element_size_shift)); in GenSystemArrayCopyBaseAddress()
69 __ AddConstant(base, data_offset); in GenSystemArrayCopyBaseAddress()
88 __ AddConstant(end, base, element_size * constant); in GenSystemArrayCopyEndAddress()
90 __ add(end, base, ShifterOperand(copy_length.AsRegister<Register>(), LSL, element_size_shift)); in GenSystemArrayCopyEndAddress()
94 #undef __
97 #define __ down_cast<ArmAssembler*>(codegen->GetAssembler())-> // NOLINT macro
129 __ Bind(GetEntryLabel()); in EmitNativeCode()
134 __ Bind(&loop); in EmitNativeCode()
135 __ ldr(tmp, Address(src_curr_addr, element_size, Address::PostIndex)); in EmitNativeCode()
136 __ MaybeUnpoisonHeapReference(tmp); in EmitNativeCode()
161 __ MaybePoisonHeapReference(tmp); in EmitNativeCode()
162 __ str(tmp, Address(dst_curr_addr, element_size, Address::PostIndex)); in EmitNativeCode()
163 __ cmp(src_curr_addr, ShifterOperand(src_stop_addr)); in EmitNativeCode()
164 __ b(&loop, NE); in EmitNativeCode()
165 __ b(GetExitLabel()); in EmitNativeCode()
174 #undef __
191 #define __ assembler-> macro
213 __ vmovrrd(output.AsRegisterPairLow<Register>(), in MoveFPToInt()
217 __ vmovrs(output.AsRegister<Register>(), input.AsFpuRegister<SRegister>()); in MoveFPToInt()
225 __ vmovdrr(FromLowSToD(output.AsFpuRegisterPairLow<SRegister>()), in MoveIntToFP()
229 __ vmovsr(output.AsFpuRegister<SRegister>(), input.AsRegister<Register>()); in MoveIntToFP()
292 __ clz(out, in_reg_hi); in GenNumberOfLeadingZeros()
293 __ CompareAndBranchIfNonZero(in_reg_hi, final_label); in GenNumberOfLeadingZeros()
294 __ clz(out, in_reg_lo); in GenNumberOfLeadingZeros()
295 __ AddConstant(out, 32); in GenNumberOfLeadingZeros()
297 __ Bind(&end); in GenNumberOfLeadingZeros()
300 __ clz(out, in.AsRegister<Register>()); in GenNumberOfLeadingZeros()
338 __ rbit(out, in_reg_lo); in GenNumberOfTrailingZeros()
339 __ clz(out, out); in GenNumberOfTrailingZeros()
340 __ CompareAndBranchIfNonZero(in_reg_lo, final_label); in GenNumberOfTrailingZeros()
341 __ rbit(out, in_reg_hi); in GenNumberOfTrailingZeros()
342 __ clz(out, out); in GenNumberOfTrailingZeros()
343 __ AddConstant(out, 32); in GenNumberOfTrailingZeros()
345 __ Bind(&end); in GenNumberOfTrailingZeros()
349 __ rbit(out, in); in GenNumberOfTrailingZeros()
350 __ clz(out, out); in GenNumberOfTrailingZeros()
383 __ vabsd(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in MathAbsFP()
386 __ vabss(out.AsFpuRegister<SRegister>(), in.AsFpuRegister<SRegister>()); in MathAbsFP()
432 __ Asr(mask, in_reg_hi, 31); in GenAbsInteger()
433 __ adds(out_reg_lo, in_reg_lo, ShifterOperand(mask)); in GenAbsInteger()
434 __ adc(out_reg_hi, in_reg_hi, ShifterOperand(mask)); in GenAbsInteger()
435 __ eor(out_reg_lo, mask, ShifterOperand(out_reg_lo)); in GenAbsInteger()
436 __ eor(out_reg_hi, mask, ShifterOperand(out_reg_hi)); in GenAbsInteger()
441 __ Asr(mask, in_reg, 31); in GenAbsInteger()
442 __ add(out_reg, in_reg, ShifterOperand(mask)); in GenAbsInteger()
443 __ eor(out_reg, mask, ShifterOperand(out_reg)); in GenAbsInteger()
471 __ cmp(op1, ShifterOperand(op2)); in GenMinMax()
473 __ it((is_min) ? Condition::LT : Condition::GT, kItElse); in GenMinMax()
474 __ mov(out, ShifterOperand(op1), is_min ? Condition::LT : Condition::GT); in GenMinMax()
475 __ mov(out, ShifterOperand(op2), is_min ? Condition::GE : Condition::LE); in GenMinMax()
510 __ vsqrtd(FromLowSToD(locations->Out().AsFpuRegisterPairLow<SRegister>()), in VisitMathSqrt()
521 __ ldrsb(invoke->GetLocations()->Out().AsRegister<Register>(), in VisitMemoryPeekByte()
532 __ ldr(invoke->GetLocations()->Out().AsRegister<Register>(), in VisitMemoryPeekIntNative()
549 __ ldr(hi, Address(addr, 4)); in VisitMemoryPeekLongNative()
550 __ ldr(lo, Address(addr, 0)); in VisitMemoryPeekLongNative()
552 __ ldr(lo, Address(addr, 0)); in VisitMemoryPeekLongNative()
553 __ ldr(hi, Address(addr, 4)); in VisitMemoryPeekLongNative()
564 __ ldrsh(invoke->GetLocations()->Out().AsRegister<Register>(), in VisitMemoryPeekShortNative()
582 __ strb(invoke->GetLocations()->InAt(1).AsRegister<Register>(), in VisitMemoryPokeByte()
592 __ str(invoke->GetLocations()->InAt(1).AsRegister<Register>(), in VisitMemoryPokeIntNative()
606 __ str(invoke->GetLocations()->InAt(1).AsRegisterPairLow<Register>(), Address(addr, 0)); in VisitMemoryPokeLongNative()
607 __ str(invoke->GetLocations()->InAt(1).AsRegisterPairHigh<Register>(), Address(addr, 4)); in VisitMemoryPokeLongNative()
616 __ strh(invoke->GetLocations()->InAt(1).AsRegister<Register>(), in VisitMemoryPokeShortNative()
629 __ LoadFromOffset(kLoadWord, in VisitThreadCurrentThread()
650 __ ldr(trg, Address(base, offset)); in GenUnsafeGet()
652 __ dmb(ISH); in GenUnsafeGet()
665 __ dmb(ISH); in GenUnsafeGet()
668 __ ldr(trg, Address(base, offset)); in GenUnsafeGet()
670 __ dmb(ISH); in GenUnsafeGet()
675 __ ldr(trg, Address(base, offset)); in GenUnsafeGet()
677 __ dmb(ISH); in GenUnsafeGet()
679 __ MaybeUnpoisonHeapReference(trg); in GenUnsafeGet()
686 __ add(IP, base, ShifterOperand(offset)); in GenUnsafeGet()
689 __ ldrexd(trg_lo, trg_hi, IP); in GenUnsafeGet()
691 __ ldrd(trg_lo, Address(IP)); in GenUnsafeGet()
694 __ dmb(ISH); in GenUnsafeGet()
838 __ dmb(ISH); in GenUnsafePut()
849 __ add(IP, base, ShifterOperand(offset)); in GenUnsafePut()
851 __ Bind(&loop_head); in GenUnsafePut()
852 __ ldrexd(temp_lo, temp_hi, IP); in GenUnsafePut()
853 __ strexd(temp_lo, value_lo, value_hi, IP); in GenUnsafePut()
854 __ cmp(temp_lo, ShifterOperand(0)); in GenUnsafePut()
855 __ b(&loop_head, NE); in GenUnsafePut()
857 __ add(IP, base, ShifterOperand(offset)); in GenUnsafePut()
858 __ strd(value_lo, Address(IP)); in GenUnsafePut()
865 __ Mov(temp, value); in GenUnsafePut()
866 __ PoisonHeapReference(temp); in GenUnsafePut()
869 __ str(source, Address(base, offset)); in GenUnsafePut()
873 __ dmb(ISH); in GenUnsafePut()
1031 __ dmb(ISH); in GenCas()
1033 __ add(tmp_ptr, base, ShifterOperand(offset)); in GenCas()
1036 __ PoisonHeapReference(expected); in GenCas()
1041 __ PoisonHeapReference(value); in GenCas()
1051 __ Bind(&loop_head); in GenCas()
1053 __ ldrex(tmp, tmp_ptr); in GenCas()
1055 __ subs(tmp, tmp, ShifterOperand(expected)); in GenCas()
1057 __ it(EQ, ItState::kItT); in GenCas()
1058 __ strex(tmp, value, tmp_ptr, EQ); in GenCas()
1059 __ cmp(tmp, ShifterOperand(1), EQ); in GenCas()
1061 __ b(&loop_head, EQ); in GenCas()
1063 __ dmb(ISH); in GenCas()
1065 __ rsbs(out, tmp, ShifterOperand(1)); in GenCas()
1066 __ it(CC); in GenCas()
1067 __ mov(out, ShifterOperand(0), CC); in GenCas()
1070 __ UnpoisonHeapReference(expected); in GenCas()
1075 __ UnpoisonHeapReference(value); in GenCas()
1156 __ CompareAndBranchIfZero(arg, slow_path->GetEntryLabel()); in VisitStringCompareTo()
1160 __ subs(out, str, ShifterOperand(arg)); in VisitStringCompareTo()
1161 __ b(&end, EQ); in VisitStringCompareTo()
1165 __ ldr(temp3, Address(str, count_offset)); in VisitStringCompareTo()
1166 __ ldr(temp2, Address(arg, count_offset)); in VisitStringCompareTo()
1168 __ Lsr(temp0, temp3, 1u); in VisitStringCompareTo()
1169 __ Lsr(temp1, temp2, 1u); in VisitStringCompareTo()
1172 __ ldr(temp0, Address(str, count_offset)); in VisitStringCompareTo()
1173 __ ldr(temp1, Address(arg, count_offset)); in VisitStringCompareTo()
1176 __ subs(out, temp0, ShifterOperand(temp1)); in VisitStringCompareTo()
1178 __ it(GT); in VisitStringCompareTo()
1179 __ mov(temp0, ShifterOperand(temp1), GT); in VisitStringCompareTo()
1181 __ CompareAndBranchIfZero(temp0, &end); in VisitStringCompareTo()
1185 __ eor(temp2, temp2, ShifterOperand(temp3)); in VisitStringCompareTo()
1186 __ Lsrs(temp2, temp2, 1u); in VisitStringCompareTo()
1187 __ b(&different_compression, CS); in VisitStringCompareTo()
1190 __ Lsls(temp3, temp3, 31u); // Extract purely the compression flag. in VisitStringCompareTo()
1191 __ it(NE); in VisitStringCompareTo()
1192 __ add(temp0, temp0, ShifterOperand(temp0), NE); in VisitStringCompareTo()
1196 __ mov(temp1, ShifterOperand(value_offset)); in VisitStringCompareTo()
1208 __ Bind(&loop); in VisitStringCompareTo()
1209 __ ldr(IP, Address(str, temp1)); in VisitStringCompareTo()
1210 __ ldr(temp2, Address(arg, temp1)); in VisitStringCompareTo()
1211 __ cmp(IP, ShifterOperand(temp2)); in VisitStringCompareTo()
1212 __ b(&find_char_diff, NE); in VisitStringCompareTo()
1213 __ add(temp1, temp1, ShifterOperand(char_size * 2)); in VisitStringCompareTo()
1215 __ ldr(IP, Address(str, temp1)); in VisitStringCompareTo()
1216 __ ldr(temp2, Address(arg, temp1)); in VisitStringCompareTo()
1217 __ cmp(IP, ShifterOperand(temp2)); in VisitStringCompareTo()
1218 __ b(&find_char_diff_2nd_cmp, NE); in VisitStringCompareTo()
1219 __ add(temp1, temp1, ShifterOperand(char_size * 2)); in VisitStringCompareTo()
1221 __ subs(temp0, temp0, ShifterOperand(mirror::kUseStringCompression ? 8 : 4)); in VisitStringCompareTo()
1222 __ b(&loop, HI); in VisitStringCompareTo()
1223 __ b(&end); in VisitStringCompareTo()
1225 __ Bind(&find_char_diff_2nd_cmp); in VisitStringCompareTo()
1227 __ subs(temp0, temp0, ShifterOperand(4)); // 4 bytes previously compared. in VisitStringCompareTo()
1228 __ b(&end, LS); // Was the second comparison fully beyond the end? in VisitStringCompareTo()
1232 __ sub(temp0, temp0, ShifterOperand(2)); in VisitStringCompareTo()
1236 __ Bind(&find_char_diff); in VisitStringCompareTo()
1238 __ eor(temp1, temp2, ShifterOperand(IP)); in VisitStringCompareTo()
1239 __ rbit(temp1, temp1); in VisitStringCompareTo()
1240 __ clz(temp1, temp1); in VisitStringCompareTo()
1255 __ cmp(temp0, ShifterOperand(temp1, LSR, mirror::kUseStringCompression ? 3 : 4)); in VisitStringCompareTo()
1256 __ b(&end, mirror::kUseStringCompression ? LS : LE); in VisitStringCompareTo()
1263 __ orr(temp3, temp3, ShifterOperand(0xffu << 23)); // uncompressed ? 0xff800000u : 0x7ff80000u in VisitStringCompareTo()
1264 __ bic(temp1, temp1, ShifterOperand(temp3, LSR, 31 - 3)); // &= ~(uncompressed ? 0xfu : 0x7u) in VisitStringCompareTo()
1265 __ Asr(temp3, temp3, 7u); // uncompressed ? 0xffff0000u : 0xff0000u. in VisitStringCompareTo()
1266 __ Lsr(temp2, temp2, temp1); // Extract second character. in VisitStringCompareTo()
1267 __ Lsr(temp3, temp3, 16u); // uncompressed ? 0xffffu : 0xffu in VisitStringCompareTo()
1268 __ Lsr(out, IP, temp1); // Extract first character. in VisitStringCompareTo()
1269 __ and_(temp2, temp2, ShifterOperand(temp3)); in VisitStringCompareTo()
1270 __ and_(out, out, ShifterOperand(temp3)); in VisitStringCompareTo()
1272 __ bic(temp1, temp1, ShifterOperand(0xf)); in VisitStringCompareTo()
1273 __ Lsr(temp2, temp2, temp1); in VisitStringCompareTo()
1274 __ Lsr(out, IP, temp1); in VisitStringCompareTo()
1275 __ movt(temp2, 0); in VisitStringCompareTo()
1276 __ movt(out, 0); in VisitStringCompareTo()
1279 __ sub(out, out, ShifterOperand(temp2)); in VisitStringCompareTo()
1282 __ b(&end); in VisitStringCompareTo()
1283 __ Bind(&different_compression); in VisitStringCompareTo()
1294 __ add(temp0, temp0, ShifterOperand(temp0)); // Unlike LSL, this ADD is always 16-bit. in VisitStringCompareTo()
1296 __ mov(temp1, ShifterOperand(str)); in VisitStringCompareTo()
1297 __ mov(temp2, ShifterOperand(arg)); in VisitStringCompareTo()
1298 __ Lsrs(temp3, temp3, 1u); // Continue the move of the compression flag. in VisitStringCompareTo()
1299 __ it(CS, kItThen); // Interleave with selection of temp1 and temp2. in VisitStringCompareTo()
1300 __ mov(temp1, ShifterOperand(arg), CS); // Preserves flags. in VisitStringCompareTo()
1301 __ mov(temp2, ShifterOperand(str), CS); // Preserves flags. in VisitStringCompareTo()
1302 __ sbc(temp0, temp0, ShifterOperand(0)); // Complete the move of the compression flag. in VisitStringCompareTo()
1305 __ add(temp1, temp1, ShifterOperand(value_offset)); in VisitStringCompareTo()
1306 __ add(temp2, temp2, ShifterOperand(value_offset)); in VisitStringCompareTo()
1312 __ Bind(&different_compression_loop); in VisitStringCompareTo()
1313 __ ldrb(IP, Address(temp1, c_char_size, Address::PostIndex)); in VisitStringCompareTo()
1314 __ ldrh(temp3, Address(temp2, char_size, Address::PostIndex)); in VisitStringCompareTo()
1315 __ cmp(IP, ShifterOperand(temp3)); in VisitStringCompareTo()
1316 __ b(&different_compression_diff, NE); in VisitStringCompareTo()
1317 __ subs(temp0, temp0, ShifterOperand(2)); in VisitStringCompareTo()
1318 __ b(&different_compression_loop, HI); in VisitStringCompareTo()
1319 __ b(&end); in VisitStringCompareTo()
1322 __ Bind(&different_compression_diff); in VisitStringCompareTo()
1323 __ sub(out, IP, ShifterOperand(temp3)); in VisitStringCompareTo()
1326 __ Lsrs(temp0, temp0, 1u); in VisitStringCompareTo()
1329 __ it(CC); in VisitStringCompareTo()
1330 __ rsb(out, out, ShifterOperand(0), CC); in VisitStringCompareTo()
1333 __ Bind(&end); in VisitStringCompareTo()
1336 __ Bind(slow_path->GetExitLabel()); in VisitStringCompareTo()
1385 __ CompareAndBranchIfZero(arg, &return_false); in VisitStringEquals()
1389 __ cmp(str, ShifterOperand(arg)); in VisitStringEquals()
1390 __ b(&return_true, EQ); in VisitStringEquals()
1397 __ ldr(temp, Address(str, class_offset)); in VisitStringEquals()
1398 __ ldr(temp1, Address(arg, class_offset)); in VisitStringEquals()
1399 __ cmp(temp, ShifterOperand(temp1)); in VisitStringEquals()
1400 __ b(&return_false, NE); in VisitStringEquals()
1404 __ ldr(temp, Address(str, count_offset)); in VisitStringEquals()
1405 __ ldr(temp1, Address(arg, count_offset)); in VisitStringEquals()
1408 __ cmp(temp, ShifterOperand(temp1)); in VisitStringEquals()
1409 __ b(&return_false, NE); in VisitStringEquals()
1413 __ cbz(temp, &return_true); in VisitStringEquals()
1422 __ Lsrs(temp, temp, 1u); // Extract length and check compression flag. in VisitStringEquals()
1423 __ it(CS); // If uncompressed, in VisitStringEquals()
1424 __ add(temp, temp, ShifterOperand(temp), CS); // double the byte count. in VisitStringEquals()
1428 __ LoadImmediate(temp1, value_offset); in VisitStringEquals()
1432 __ Bind(&loop); in VisitStringEquals()
1433 __ ldr(out, Address(str, temp1)); in VisitStringEquals()
1434 __ ldr(temp2, Address(arg, temp1)); in VisitStringEquals()
1435 __ add(temp1, temp1, ShifterOperand(sizeof(uint32_t))); in VisitStringEquals()
1436 __ cmp(out, ShifterOperand(temp2)); in VisitStringEquals()
1437 __ b(&return_false, NE); in VisitStringEquals()
1439 __ subs(temp, temp, ShifterOperand(mirror::kUseStringCompression ? 4 : 2)); in VisitStringEquals()
1440 __ b(&loop, HI); in VisitStringEquals()
1444 __ Bind(&return_true); in VisitStringEquals()
1445 __ LoadImmediate(out, 1); in VisitStringEquals()
1446 __ b(final_label); in VisitStringEquals()
1449 __ Bind(&return_false); in VisitStringEquals()
1450 __ LoadImmediate(out, 0); in VisitStringEquals()
1453 __ Bind(&end); in VisitStringEquals()
1478 __ b(slow_path->GetEntryLabel()); in GenerateVisitStringIndexOf()
1479 __ Bind(slow_path->GetExitLabel()); in GenerateVisitStringIndexOf()
1485 __ cmp(char_reg, in GenerateVisitStringIndexOf()
1489 __ b(slow_path->GetEntryLabel(), HS); in GenerateVisitStringIndexOf()
1496 __ LoadImmediate(tmp_reg, 0); in GenerateVisitStringIndexOf()
1503 __ Bind(slow_path->GetExitLabel()); in GenerateVisitStringIndexOf()
1562 __ cmp(byte_array, ShifterOperand(0)); in VisitStringNewStringFromBytes()
1565 __ b(slow_path->GetEntryLabel(), EQ); in VisitStringNewStringFromBytes()
1569 __ Bind(slow_path->GetExitLabel()); in VisitStringNewStringFromBytes()
1608 __ cmp(string_to_copy, ShifterOperand(0)); in VisitStringNewStringFromString()
1611 __ b(slow_path->GetEntryLabel(), EQ); in VisitStringNewStringFromString()
1616 __ Bind(slow_path->GetExitLabel()); in VisitStringNewStringFromString()
1669 __ LoadFromOffset(kLoadWord, temp, input, length_offset); in CheckPosition()
1671 __ cmp(temp, ShifterOperand(length.GetConstant()->AsIntConstant()->GetValue())); in CheckPosition()
1673 __ cmp(temp, ShifterOperand(length.AsRegister<Register>())); in CheckPosition()
1675 __ b(slow_path->GetEntryLabel(), LT); in CheckPosition()
1679 __ LoadFromOffset(kLoadWord, temp, input, length_offset); in CheckPosition()
1680 __ subs(temp, temp, ShifterOperand(pos_const)); in CheckPosition()
1681 __ b(slow_path->GetEntryLabel(), LT); in CheckPosition()
1685 __ cmp(temp, ShifterOperand(length.GetConstant()->AsIntConstant()->GetValue())); in CheckPosition()
1687 __ cmp(temp, ShifterOperand(length.AsRegister<Register>())); in CheckPosition()
1689 __ b(slow_path->GetEntryLabel(), LT); in CheckPosition()
1694 __ CompareAndBranchIfNonZero(pos_reg, slow_path->GetEntryLabel()); in CheckPosition()
1698 __ cmp(pos_reg, ShifterOperand(0)); in CheckPosition()
1699 __ b(slow_path->GetEntryLabel(), LT); in CheckPosition()
1702 __ LoadFromOffset(kLoadWord, temp, input, length_offset); in CheckPosition()
1703 __ subs(temp, temp, ShifterOperand(pos_reg)); in CheckPosition()
1704 __ b(slow_path->GetEntryLabel(), LT); in CheckPosition()
1708 __ cmp(temp, ShifterOperand(length.GetConstant()->AsIntConstant()->GetValue())); in CheckPosition()
1710 __ cmp(temp, ShifterOperand(length.AsRegister<Register>())); in CheckPosition()
1712 __ b(slow_path->GetEntryLabel(), LT); in CheckPosition()
1758 __ cmp(src, ShifterOperand(dest)); in VisitSystemArrayCopy()
1759 __ b(intrinsic_slow_path->GetEntryLabel(), EQ); in VisitSystemArrayCopy()
1767 __ cmp(src, ShifterOperand(dest)); in VisitSystemArrayCopy()
1768 __ b(&conditions_on_positions_validated, NE); in VisitSystemArrayCopy()
1770 __ cmp(dest_pos.AsRegister<Register>(), ShifterOperand(src_pos_constant)); in VisitSystemArrayCopy()
1771 __ b(intrinsic_slow_path->GetEntryLabel(), GT); in VisitSystemArrayCopy()
1775 __ cmp(src, ShifterOperand(dest)); in VisitSystemArrayCopy()
1776 __ b(&conditions_on_positions_validated, NE); in VisitSystemArrayCopy()
1780 __ cmp(src_pos.AsRegister<Register>(), ShifterOperand(dest_pos_constant)); in VisitSystemArrayCopy()
1782 __ cmp(src_pos.AsRegister<Register>(), ShifterOperand(dest_pos.AsRegister<Register>())); in VisitSystemArrayCopy()
1784 __ b(intrinsic_slow_path->GetEntryLabel(), LT); in VisitSystemArrayCopy()
1787 __ Bind(&conditions_on_positions_validated); in VisitSystemArrayCopy()
1791 __ CompareAndBranchIfZero(src, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1796 __ CompareAndBranchIfZero(dest, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1804 __ cmp(length.AsRegister<Register>(), ShifterOperand(0)); in VisitSystemArrayCopy()
1805 __ b(intrinsic_slow_path->GetEntryLabel(), LT); in VisitSystemArrayCopy()
1841 __ CompareAndBranchIfZero(temp1, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1845 __ LoadFromOffset(kLoadUnsignedHalfword, temp1, temp1, primitive_offset); in VisitSystemArrayCopy()
1847 __ CompareAndBranchIfNonZero(temp1, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1865 __ CompareAndBranchIfZero(temp2, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1869 __ LoadFromOffset(kLoadUnsignedHalfword, temp2, temp2, primitive_offset); in VisitSystemArrayCopy()
1871 __ CompareAndBranchIfNonZero(temp2, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1880 __ cmp(temp1, ShifterOperand(temp2)); in VisitSystemArrayCopy()
1884 __ b(&do_copy, EQ); in VisitSystemArrayCopy()
1893 __ LoadFromOffset(kLoadWord, temp1, temp1, super_offset); in VisitSystemArrayCopy()
1894 __ CompareAndBranchIfNonZero(temp1, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1895 __ Bind(&do_copy); in VisitSystemArrayCopy()
1897 __ b(intrinsic_slow_path->GetEntryLabel(), NE); in VisitSystemArrayCopy()
1903 __ LoadFromOffset(kLoadWord, temp1, dest, class_offset); in VisitSystemArrayCopy()
1905 __ LoadFromOffset(kLoadWord, temp2, src, class_offset); in VisitSystemArrayCopy()
1911 __ MaybeUnpoisonHeapReference(temp1); in VisitSystemArrayCopy()
1912 __ MaybeUnpoisonHeapReference(temp2); in VisitSystemArrayCopy()
1919 __ LoadFromOffset(kLoadWord, temp3, temp1, component_offset); in VisitSystemArrayCopy()
1920 __ CompareAndBranchIfZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1921 __ MaybeUnpoisonHeapReference(temp3); in VisitSystemArrayCopy()
1923 __ LoadFromOffset(kLoadUnsignedHalfword, temp3, temp3, primitive_offset); in VisitSystemArrayCopy()
1925 __ CompareAndBranchIfNonZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1931 __ LoadFromOffset(kLoadWord, temp3, temp2, component_offset); in VisitSystemArrayCopy()
1932 __ CompareAndBranchIfZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1933 __ MaybeUnpoisonHeapReference(temp3); in VisitSystemArrayCopy()
1935 __ LoadFromOffset(kLoadUnsignedHalfword, temp3, temp3, primitive_offset); in VisitSystemArrayCopy()
1937 __ CompareAndBranchIfNonZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1940 __ cmp(temp1, ShifterOperand(temp2)); in VisitSystemArrayCopy()
1944 __ b(&do_copy, EQ); in VisitSystemArrayCopy()
1946 __ MaybeUnpoisonHeapReference(temp1); in VisitSystemArrayCopy()
1949 __ LoadFromOffset(kLoadWord, temp1, temp1, component_offset); in VisitSystemArrayCopy()
1950 __ MaybeUnpoisonHeapReference(temp1); in VisitSystemArrayCopy()
1952 __ LoadFromOffset(kLoadWord, temp1, temp1, super_offset); in VisitSystemArrayCopy()
1954 __ CompareAndBranchIfNonZero(temp1, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1955 __ Bind(&do_copy); in VisitSystemArrayCopy()
1957 __ b(intrinsic_slow_path->GetEntryLabel(), NE); in VisitSystemArrayCopy()
1970 __ CompareAndBranchIfZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1975 __ LoadFromOffset(kLoadWord, temp1, src, class_offset); in VisitSystemArrayCopy()
1976 __ MaybeUnpoisonHeapReference(temp1); in VisitSystemArrayCopy()
1978 __ LoadFromOffset(kLoadWord, temp3, temp1, component_offset); in VisitSystemArrayCopy()
1979 __ CompareAndBranchIfZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1980 __ MaybeUnpoisonHeapReference(temp3); in VisitSystemArrayCopy()
1983 __ LoadFromOffset(kLoadUnsignedHalfword, temp3, temp3, primitive_offset); in VisitSystemArrayCopy()
1985 __ CompareAndBranchIfNonZero(temp3, intrinsic_slow_path->GetEntryLabel()); in VisitSystemArrayCopy()
1997 __ CompareAndBranchIfZero(length.AsRegister<Register>(), &done); in VisitSystemArrayCopy()
2022 __ LoadFromOffset(kLoadWord, temp2, src, monitor_offset); in VisitSystemArrayCopy()
2032 __ add(src, src, ShifterOperand(temp2, LSR, 32)); in VisitSystemArrayCopy()
2056 __ Lsrs(temp2, temp2, LockWord::kReadBarrierStateShift + 1); in VisitSystemArrayCopy()
2058 __ b(read_barrier_slow_path->GetEntryLabel(), CS); in VisitSystemArrayCopy()
2066 __ Bind(&loop); in VisitSystemArrayCopy()
2067 __ ldr(IP, Address(temp1, element_size, Address::PostIndex)); in VisitSystemArrayCopy()
2068 __ str(IP, Address(temp2, element_size, Address::PostIndex)); in VisitSystemArrayCopy()
2069 __ cmp(temp1, ShifterOperand(temp3)); in VisitSystemArrayCopy()
2070 __ b(&loop, NE); in VisitSystemArrayCopy()
2072 __ Bind(read_barrier_slow_path->GetExitLabel()); in VisitSystemArrayCopy()
2084 __ Bind(&loop); in VisitSystemArrayCopy()
2085 __ ldr(IP, Address(temp1, element_size, Address::PostIndex)); in VisitSystemArrayCopy()
2086 __ str(IP, Address(temp2, element_size, Address::PostIndex)); in VisitSystemArrayCopy()
2087 __ cmp(temp1, ShifterOperand(temp3)); in VisitSystemArrayCopy()
2088 __ b(&loop, NE); in VisitSystemArrayCopy()
2090 __ Bind(&done); in VisitSystemArrayCopy()
2096 __ Bind(intrinsic_slow_path->GetExitLabel()); in VisitSystemArrayCopy()
2168 __ vmovrrd(calling_convention.GetRegisterAt(0), in GenFPToFPCall()
2172 __ vmovdrr(FromLowSToD(locations->Out().AsFpuRegisterPairLow<SRegister>()), in GenFPToFPCall()
2192 __ vmovrrd(calling_convention.GetRegisterAt(0), in GenFPFPToFPCall()
2195 __ vmovrrd(calling_convention.GetRegisterAt(2), in GenFPFPToFPCall()
2199 __ vmovdrr(FromLowSToD(locations->Out().AsFpuRegisterPairLow<SRegister>()), in GenFPFPToFPCall()
2351 __ rbit(out, in); in VisitIntegerReverse()
2371 __ rbit(out_reg_lo, in_reg_hi); in VisitLongReverse()
2372 __ rbit(out_reg_hi, in_reg_lo); in VisitLongReverse()
2386 __ rev(out, in); in VisitIntegerReverseBytes()
2406 __ rev(out_reg_lo, in_reg_hi); in VisitLongReverseBytes()
2407 __ rev(out_reg_hi, in_reg_lo); in VisitLongReverseBytes()
2421 __ revsh(out, in); in VisitShortReverseBytes()
2442 __ vmovdrr(tmp_d, src_1, src_0); // Temp DReg |--src_1|--src_0| in GenBitCount()
2443 __ vcntd(tmp_d, tmp_d); // Temp DReg |c|c|c|c|c|c|c|c| in GenBitCount()
2444 __ vpaddld(tmp_d, tmp_d, 8, /* is_unsigned */ true); // Temp DReg |--c|--c|--c|--c| in GenBitCount()
2445 __ vpaddld(tmp_d, tmp_d, 16, /* is_unsigned */ true); // Temp DReg |------c|------c| in GenBitCount()
2447 __ vpaddld(tmp_d, tmp_d, 32, /* is_unsigned */ true); // Temp DReg |--------------c| in GenBitCount()
2449 __ vmovrs(out_r, tmp_s); in GenBitCount()
2514 __ add(dst_ptr, dstObj, ShifterOperand(data_offset)); in VisitStringGetCharsNoCheck()
2515 __ add(dst_ptr, dst_ptr, ShifterOperand(dstBegin, LSL, 1)); in VisitStringGetCharsNoCheck()
2517 __ subs(num_chr, srcEnd, ShifterOperand(srcBegin)); in VisitStringGetCharsNoCheck()
2519 __ b(final_label, EQ); in VisitStringGetCharsNoCheck()
2522 __ add(src_ptr, srcObj, ShifterOperand(value_offset)); in VisitStringGetCharsNoCheck()
2528 __ ldr(IP, Address(srcObj, count_offset)); in VisitStringGetCharsNoCheck()
2529 __ tst(IP, ShifterOperand(1)); in VisitStringGetCharsNoCheck()
2530 __ b(&compressed_string_preloop, EQ); in VisitStringGetCharsNoCheck()
2532 __ add(src_ptr, src_ptr, ShifterOperand(srcBegin, LSL, 1)); in VisitStringGetCharsNoCheck()
2538 __ subs(IP, num_chr, ShifterOperand(4)); in VisitStringGetCharsNoCheck()
2539 __ b(&remainder, LT); in VisitStringGetCharsNoCheck()
2542 __ mov(num_chr, ShifterOperand(IP)); in VisitStringGetCharsNoCheck()
2547 __ Bind(&loop); in VisitStringGetCharsNoCheck()
2548 __ ldr(IP, Address(src_ptr, char_size * 2)); in VisitStringGetCharsNoCheck()
2549 __ subs(num_chr, num_chr, ShifterOperand(4)); in VisitStringGetCharsNoCheck()
2550 __ str(IP, Address(dst_ptr, char_size * 2)); in VisitStringGetCharsNoCheck()
2551 __ ldr(IP, Address(src_ptr, char_size * 4, Address::PostIndex)); in VisitStringGetCharsNoCheck()
2552 __ str(IP, Address(dst_ptr, char_size * 4, Address::PostIndex)); in VisitStringGetCharsNoCheck()
2553 __ b(&loop, GE); in VisitStringGetCharsNoCheck()
2555 __ adds(num_chr, num_chr, ShifterOperand(4)); in VisitStringGetCharsNoCheck()
2556 __ b(final_label, EQ); in VisitStringGetCharsNoCheck()
2560 __ Bind(&remainder); in VisitStringGetCharsNoCheck()
2561 __ ldrh(IP, Address(src_ptr, char_size, Address::PostIndex)); in VisitStringGetCharsNoCheck()
2562 __ subs(num_chr, num_chr, ShifterOperand(1)); in VisitStringGetCharsNoCheck()
2563 __ strh(IP, Address(dst_ptr, char_size, Address::PostIndex)); in VisitStringGetCharsNoCheck()
2564 __ b(&remainder, GT); in VisitStringGetCharsNoCheck()
2567 __ b(final_label); in VisitStringGetCharsNoCheck()
2572 __ Bind(&compressed_string_preloop); in VisitStringGetCharsNoCheck()
2573 __ add(src_ptr, src_ptr, ShifterOperand(srcBegin)); in VisitStringGetCharsNoCheck()
2574 __ Bind(&compressed_string_loop); in VisitStringGetCharsNoCheck()
2575 __ ldrb(IP, Address(src_ptr, c_char_size, Address::PostIndex)); in VisitStringGetCharsNoCheck()
2576 __ strh(IP, Address(dst_ptr, char_size, Address::PostIndex)); in VisitStringGetCharsNoCheck()
2577 __ subs(num_chr, num_chr, ShifterOperand(1)); in VisitStringGetCharsNoCheck()
2578 __ b(&compressed_string_loop, GT); in VisitStringGetCharsNoCheck()
2582 __ Bind(&done); in VisitStringGetCharsNoCheck()
2598 __ vmovrs(out, locations->InAt(0).AsFpuRegister<SRegister>()); in VisitFloatIsInfinite()
2600 __ Lsl(out, out, 1); in VisitFloatIsInfinite()
2601 __ eor(out, out, ShifterOperand(infinity)); in VisitFloatIsInfinite()
2603 __ clz(out, out); in VisitFloatIsInfinite()
2606 __ Lsr(out, out, 5); in VisitFloatIsInfinite()
2624 __ vmovrrd(IP, out, FromLowSToD(locations->InAt(0).AsFpuRegisterPairLow<SRegister>())); in VisitDoubleIsInfinite()
2625 __ eor(out, out, ShifterOperand(infinity_high)); in VisitDoubleIsInfinite()
2626 __ eor(out, out, ShifterOperand(infinity_high2)); in VisitDoubleIsInfinite()
2628 __ orr(out, IP, ShifterOperand(out, LSL, 1)); in VisitDoubleIsInfinite()
2630 __ clz(out, out); in VisitDoubleIsInfinite()
2633 __ Lsr(out, out, 5); in VisitDoubleIsInfinite()
2667 __ ldr(temp, Address(temp, ArtMethod::DeclaringClassOffset().Int32Value())); in VisitReferenceGetReferent()
2676 __ ldr(IP, Address(temp, disable_flag_offset)); in VisitReferenceGetReferent()
2677 __ ldr(temp, Address(temp, slow_path_flag_offset)); in VisitReferenceGetReferent()
2678 __ orr(IP, IP, ShifterOperand(temp)); in VisitReferenceGetReferent()
2679 __ CompareAndBranchIfNonZero(IP, slow_path->GetEntryLabel()); in VisitReferenceGetReferent()
2682 __ ldr(out, Address(obj, mirror::Reference::ReferentOffset().Int32Value())); in VisitReferenceGetReferent()
2684 __ MaybeUnpoisonHeapReference(out); in VisitReferenceGetReferent()
2685 __ Bind(slow_path->GetExitLabel()); in VisitReferenceGetReferent()
2713 __ LoadLiteral(out, codegen_->DeduplicateBootImageAddressLiteral(address)); in VisitIntegerValueOf()
2720 __ LoadLiteral(argument, codegen_->DeduplicateBootImageAddressLiteral(address)); in VisitIntegerValueOf()
2723 __ LoadImmediate(IP, value); in VisitIntegerValueOf()
2724 __ StoreToOffset(kStoreWord, IP, out, info.value_offset); in VisitIntegerValueOf()
2732 __ AddConstant(out, in, -info.low); in VisitIntegerValueOf()
2733 __ CmpConstant(out, info.high - info.low + 1); in VisitIntegerValueOf()
2735 __ b(&allocate, HS); in VisitIntegerValueOf()
2739 __ LoadLiteral(IP, codegen_->DeduplicateBootImageAddressLiteral(data_offset + address)); in VisitIntegerValueOf()
2741 __ MaybeUnpoisonHeapReference(out); in VisitIntegerValueOf()
2742 __ b(&done); in VisitIntegerValueOf()
2743 __ Bind(&allocate); in VisitIntegerValueOf()
2746 __ LoadLiteral(argument, codegen_->DeduplicateBootImageAddressLiteral(address)); in VisitIntegerValueOf()
2749 __ StoreToOffset(kStoreWord, in, out, info.value_offset); in VisitIntegerValueOf()
2753 __ Bind(&done); in VisitIntegerValueOf()
2793 #undef __