Lines Matching refs:invoke
154 bool IntrinsicLocationsBuilderARM64::TryDispatch(HInvoke* invoke) { in TryDispatch() argument
155 Dispatch(invoke); in TryDispatch()
156 LocationSummary* res = invoke->GetLocations(); in TryDispatch()
165 static void CreateFPToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToIntLocations() argument
167 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToIntLocations()
172 static void CreateIntToFPLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntToFPLocations() argument
174 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntToFPLocations()
193 void IntrinsicLocationsBuilderARM64::VisitDoubleDoubleToRawLongBits(HInvoke* invoke) { in VisitDoubleDoubleToRawLongBits() argument
194 CreateFPToIntLocations(allocator_, invoke); in VisitDoubleDoubleToRawLongBits()
196 void IntrinsicLocationsBuilderARM64::VisitDoubleLongBitsToDouble(HInvoke* invoke) { in VisitDoubleLongBitsToDouble() argument
197 CreateIntToFPLocations(allocator_, invoke); in VisitDoubleLongBitsToDouble()
200 void IntrinsicCodeGeneratorARM64::VisitDoubleDoubleToRawLongBits(HInvoke* invoke) { in VisitDoubleDoubleToRawLongBits() argument
201 MoveFPToInt(invoke->GetLocations(), /* is64bit= */ true, GetVIXLAssembler()); in VisitDoubleDoubleToRawLongBits()
203 void IntrinsicCodeGeneratorARM64::VisitDoubleLongBitsToDouble(HInvoke* invoke) { in VisitDoubleLongBitsToDouble() argument
204 MoveIntToFP(invoke->GetLocations(), /* is64bit= */ true, GetVIXLAssembler()); in VisitDoubleLongBitsToDouble()
207 void IntrinsicLocationsBuilderARM64::VisitFloatFloatToRawIntBits(HInvoke* invoke) { in VisitFloatFloatToRawIntBits() argument
208 CreateFPToIntLocations(allocator_, invoke); in VisitFloatFloatToRawIntBits()
210 void IntrinsicLocationsBuilderARM64::VisitFloatIntBitsToFloat(HInvoke* invoke) { in VisitFloatIntBitsToFloat() argument
211 CreateIntToFPLocations(allocator_, invoke); in VisitFloatIntBitsToFloat()
214 void IntrinsicCodeGeneratorARM64::VisitFloatFloatToRawIntBits(HInvoke* invoke) { in VisitFloatFloatToRawIntBits() argument
215 MoveFPToInt(invoke->GetLocations(), /* is64bit= */ false, GetVIXLAssembler()); in VisitFloatFloatToRawIntBits()
217 void IntrinsicCodeGeneratorARM64::VisitFloatIntBitsToFloat(HInvoke* invoke) { in VisitFloatIntBitsToFloat() argument
218 MoveIntToFP(invoke->GetLocations(), /* is64bit= */ false, GetVIXLAssembler()); in VisitFloatIntBitsToFloat()
221 static void CreateIntToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntToIntLocations() argument
223 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntToIntLocations()
228 static void CreateIntIntToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntToIntLocations() argument
230 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntIntToIntLocations()
257 void IntrinsicLocationsBuilderARM64::VisitIntegerReverseBytes(HInvoke* invoke) { in VisitIntegerReverseBytes() argument
258 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerReverseBytes()
261 void IntrinsicCodeGeneratorARM64::VisitIntegerReverseBytes(HInvoke* invoke) { in VisitIntegerReverseBytes() argument
262 GenReverseBytes(invoke->GetLocations(), DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerReverseBytes()
265 void IntrinsicLocationsBuilderARM64::VisitLongReverseBytes(HInvoke* invoke) { in VisitLongReverseBytes() argument
266 CreateIntToIntLocations(allocator_, invoke); in VisitLongReverseBytes()
269 void IntrinsicCodeGeneratorARM64::VisitLongReverseBytes(HInvoke* invoke) { in VisitLongReverseBytes() argument
270 GenReverseBytes(invoke->GetLocations(), DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongReverseBytes()
273 void IntrinsicLocationsBuilderARM64::VisitShortReverseBytes(HInvoke* invoke) { in VisitShortReverseBytes() argument
274 CreateIntToIntLocations(allocator_, invoke); in VisitShortReverseBytes()
277 void IntrinsicCodeGeneratorARM64::VisitShortReverseBytes(HInvoke* invoke) { in VisitShortReverseBytes() argument
278 GenReverseBytes(invoke->GetLocations(), DataType::Type::kInt16, GetVIXLAssembler()); in VisitShortReverseBytes()
292 void IntrinsicLocationsBuilderARM64::VisitIntegerNumberOfLeadingZeros(HInvoke* invoke) { in VisitIntegerNumberOfLeadingZeros() argument
293 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerNumberOfLeadingZeros()
296 void IntrinsicCodeGeneratorARM64::VisitIntegerNumberOfLeadingZeros(HInvoke* invoke) { in VisitIntegerNumberOfLeadingZeros() argument
297 GenNumberOfLeadingZeros(invoke->GetLocations(), DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerNumberOfLeadingZeros()
300 void IntrinsicLocationsBuilderARM64::VisitLongNumberOfLeadingZeros(HInvoke* invoke) { in VisitLongNumberOfLeadingZeros() argument
301 CreateIntToIntLocations(allocator_, invoke); in VisitLongNumberOfLeadingZeros()
304 void IntrinsicCodeGeneratorARM64::VisitLongNumberOfLeadingZeros(HInvoke* invoke) { in VisitLongNumberOfLeadingZeros() argument
305 GenNumberOfLeadingZeros(invoke->GetLocations(), DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongNumberOfLeadingZeros()
320 void IntrinsicLocationsBuilderARM64::VisitIntegerNumberOfTrailingZeros(HInvoke* invoke) { in VisitIntegerNumberOfTrailingZeros() argument
321 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerNumberOfTrailingZeros()
324 void IntrinsicCodeGeneratorARM64::VisitIntegerNumberOfTrailingZeros(HInvoke* invoke) { in VisitIntegerNumberOfTrailingZeros() argument
325 GenNumberOfTrailingZeros(invoke->GetLocations(), DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerNumberOfTrailingZeros()
328 void IntrinsicLocationsBuilderARM64::VisitLongNumberOfTrailingZeros(HInvoke* invoke) { in VisitLongNumberOfTrailingZeros() argument
329 CreateIntToIntLocations(allocator_, invoke); in VisitLongNumberOfTrailingZeros()
332 void IntrinsicCodeGeneratorARM64::VisitLongNumberOfTrailingZeros(HInvoke* invoke) { in VisitLongNumberOfTrailingZeros() argument
333 GenNumberOfTrailingZeros(invoke->GetLocations(), DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongNumberOfTrailingZeros()
347 void IntrinsicLocationsBuilderARM64::VisitIntegerReverse(HInvoke* invoke) { in VisitIntegerReverse() argument
348 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerReverse()
351 void IntrinsicCodeGeneratorARM64::VisitIntegerReverse(HInvoke* invoke) { in VisitIntegerReverse() argument
352 GenReverse(invoke->GetLocations(), DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerReverse()
355 void IntrinsicLocationsBuilderARM64::VisitLongReverse(HInvoke* invoke) { in VisitLongReverse() argument
356 CreateIntToIntLocations(allocator_, invoke); in VisitLongReverse()
359 void IntrinsicCodeGeneratorARM64::VisitLongReverse(HInvoke* invoke) { in VisitLongReverse() argument
360 GenReverse(invoke->GetLocations(), DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongReverse()
380 void IntrinsicLocationsBuilderARM64::VisitLongBitCount(HInvoke* invoke) { in VisitLongBitCount() argument
381 CreateIntToIntLocations(allocator_, invoke); in VisitLongBitCount()
384 void IntrinsicCodeGeneratorARM64::VisitLongBitCount(HInvoke* invoke) { in VisitLongBitCount() argument
385 GenBitCount(invoke, DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongBitCount()
388 void IntrinsicLocationsBuilderARM64::VisitIntegerBitCount(HInvoke* invoke) { in VisitIntegerBitCount() argument
389 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerBitCount()
392 void IntrinsicCodeGeneratorARM64::VisitIntegerBitCount(HInvoke* invoke) { in VisitIntegerBitCount() argument
393 GenBitCount(invoke, DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerBitCount()
396 static void GenHighestOneBit(HInvoke* invoke, DataType::Type type, MacroAssembler* masm) { in GenHighestOneBit() argument
401 Register src = InputRegisterAt(invoke, 0); in GenHighestOneBit()
402 Register dst = RegisterFrom(invoke->GetLocations()->Out(), type); in GenHighestOneBit()
413 void IntrinsicLocationsBuilderARM64::VisitIntegerHighestOneBit(HInvoke* invoke) { in VisitIntegerHighestOneBit() argument
414 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerHighestOneBit()
417 void IntrinsicCodeGeneratorARM64::VisitIntegerHighestOneBit(HInvoke* invoke) { in VisitIntegerHighestOneBit() argument
418 GenHighestOneBit(invoke, DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerHighestOneBit()
421 void IntrinsicLocationsBuilderARM64::VisitLongHighestOneBit(HInvoke* invoke) { in VisitLongHighestOneBit() argument
422 CreateIntToIntLocations(allocator_, invoke); in VisitLongHighestOneBit()
425 void IntrinsicCodeGeneratorARM64::VisitLongHighestOneBit(HInvoke* invoke) { in VisitLongHighestOneBit() argument
426 GenHighestOneBit(invoke, DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongHighestOneBit()
429 static void GenLowestOneBit(HInvoke* invoke, DataType::Type type, MacroAssembler* masm) { in GenLowestOneBit() argument
434 Register src = InputRegisterAt(invoke, 0); in GenLowestOneBit()
435 Register dst = RegisterFrom(invoke->GetLocations()->Out(), type); in GenLowestOneBit()
442 void IntrinsicLocationsBuilderARM64::VisitIntegerLowestOneBit(HInvoke* invoke) { in VisitIntegerLowestOneBit() argument
443 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerLowestOneBit()
446 void IntrinsicCodeGeneratorARM64::VisitIntegerLowestOneBit(HInvoke* invoke) { in VisitIntegerLowestOneBit() argument
447 GenLowestOneBit(invoke, DataType::Type::kInt32, GetVIXLAssembler()); in VisitIntegerLowestOneBit()
450 void IntrinsicLocationsBuilderARM64::VisitLongLowestOneBit(HInvoke* invoke) { in VisitLongLowestOneBit() argument
451 CreateIntToIntLocations(allocator_, invoke); in VisitLongLowestOneBit()
454 void IntrinsicCodeGeneratorARM64::VisitLongLowestOneBit(HInvoke* invoke) { in VisitLongLowestOneBit() argument
455 GenLowestOneBit(invoke, DataType::Type::kInt64, GetVIXLAssembler()); in VisitLongLowestOneBit()
458 static void CreateFPToFPLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToFPLocations() argument
460 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToFPLocations()
465 void IntrinsicLocationsBuilderARM64::VisitMathSqrt(HInvoke* invoke) { in VisitMathSqrt() argument
466 CreateFPToFPLocations(allocator_, invoke); in VisitMathSqrt()
469 void IntrinsicCodeGeneratorARM64::VisitMathSqrt(HInvoke* invoke) { in VisitMathSqrt() argument
470 LocationSummary* locations = invoke->GetLocations(); in VisitMathSqrt()
475 void IntrinsicLocationsBuilderARM64::VisitMathCeil(HInvoke* invoke) { in VisitMathCeil() argument
476 CreateFPToFPLocations(allocator_, invoke); in VisitMathCeil()
479 void IntrinsicCodeGeneratorARM64::VisitMathCeil(HInvoke* invoke) { in VisitMathCeil() argument
480 LocationSummary* locations = invoke->GetLocations(); in VisitMathCeil()
485 void IntrinsicLocationsBuilderARM64::VisitMathFloor(HInvoke* invoke) { in VisitMathFloor() argument
486 CreateFPToFPLocations(allocator_, invoke); in VisitMathFloor()
489 void IntrinsicCodeGeneratorARM64::VisitMathFloor(HInvoke* invoke) { in VisitMathFloor() argument
490 LocationSummary* locations = invoke->GetLocations(); in VisitMathFloor()
495 void IntrinsicLocationsBuilderARM64::VisitMathRint(HInvoke* invoke) { in VisitMathRint() argument
496 CreateFPToFPLocations(allocator_, invoke); in VisitMathRint()
499 void IntrinsicCodeGeneratorARM64::VisitMathRint(HInvoke* invoke) { in VisitMathRint() argument
500 LocationSummary* locations = invoke->GetLocations(); in VisitMathRint()
505 static void CreateFPToIntPlusFPTempLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToIntPlusFPTempLocations() argument
507 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToIntPlusFPTempLocations()
513 static void GenMathRound(HInvoke* invoke, bool is_double, vixl::aarch64::MacroAssembler* masm) { in GenMathRound() argument
527 LocationSummary* l = invoke->GetLocations(); in GenMathRound()
550 void IntrinsicLocationsBuilderARM64::VisitMathRoundDouble(HInvoke* invoke) { in VisitMathRoundDouble() argument
551 CreateFPToIntPlusFPTempLocations(allocator_, invoke); in VisitMathRoundDouble()
554 void IntrinsicCodeGeneratorARM64::VisitMathRoundDouble(HInvoke* invoke) { in VisitMathRoundDouble() argument
555 GenMathRound(invoke, /* is_double= */ true, GetVIXLAssembler()); in VisitMathRoundDouble()
558 void IntrinsicLocationsBuilderARM64::VisitMathRoundFloat(HInvoke* invoke) { in VisitMathRoundFloat() argument
559 CreateFPToIntPlusFPTempLocations(allocator_, invoke); in VisitMathRoundFloat()
562 void IntrinsicCodeGeneratorARM64::VisitMathRoundFloat(HInvoke* invoke) { in VisitMathRoundFloat() argument
563 GenMathRound(invoke, /* is_double= */ false, GetVIXLAssembler()); in VisitMathRoundFloat()
566 void IntrinsicLocationsBuilderARM64::VisitMemoryPeekByte(HInvoke* invoke) { in VisitMemoryPeekByte() argument
567 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekByte()
570 void IntrinsicCodeGeneratorARM64::VisitMemoryPeekByte(HInvoke* invoke) { in VisitMemoryPeekByte() argument
572 __ Ldrsb(WRegisterFrom(invoke->GetLocations()->Out()), in VisitMemoryPeekByte()
573 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPeekByte()
576 void IntrinsicLocationsBuilderARM64::VisitMemoryPeekIntNative(HInvoke* invoke) { in VisitMemoryPeekIntNative() argument
577 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekIntNative()
580 void IntrinsicCodeGeneratorARM64::VisitMemoryPeekIntNative(HInvoke* invoke) { in VisitMemoryPeekIntNative() argument
582 __ Ldr(WRegisterFrom(invoke->GetLocations()->Out()), in VisitMemoryPeekIntNative()
583 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPeekIntNative()
586 void IntrinsicLocationsBuilderARM64::VisitMemoryPeekLongNative(HInvoke* invoke) { in VisitMemoryPeekLongNative() argument
587 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekLongNative()
590 void IntrinsicCodeGeneratorARM64::VisitMemoryPeekLongNative(HInvoke* invoke) { in VisitMemoryPeekLongNative() argument
592 __ Ldr(XRegisterFrom(invoke->GetLocations()->Out()), in VisitMemoryPeekLongNative()
593 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPeekLongNative()
596 void IntrinsicLocationsBuilderARM64::VisitMemoryPeekShortNative(HInvoke* invoke) { in VisitMemoryPeekShortNative() argument
597 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekShortNative()
600 void IntrinsicCodeGeneratorARM64::VisitMemoryPeekShortNative(HInvoke* invoke) { in VisitMemoryPeekShortNative() argument
602 __ Ldrsh(WRegisterFrom(invoke->GetLocations()->Out()), in VisitMemoryPeekShortNative()
603 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPeekShortNative()
606 static void CreateIntIntToVoidLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntToVoidLocations() argument
608 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntIntToVoidLocations()
613 void IntrinsicLocationsBuilderARM64::VisitMemoryPokeByte(HInvoke* invoke) { in VisitMemoryPokeByte() argument
614 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeByte()
617 void IntrinsicCodeGeneratorARM64::VisitMemoryPokeByte(HInvoke* invoke) { in VisitMemoryPokeByte() argument
619 __ Strb(WRegisterFrom(invoke->GetLocations()->InAt(1)), in VisitMemoryPokeByte()
620 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPokeByte()
623 void IntrinsicLocationsBuilderARM64::VisitMemoryPokeIntNative(HInvoke* invoke) { in VisitMemoryPokeIntNative() argument
624 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeIntNative()
627 void IntrinsicCodeGeneratorARM64::VisitMemoryPokeIntNative(HInvoke* invoke) { in VisitMemoryPokeIntNative() argument
629 __ Str(WRegisterFrom(invoke->GetLocations()->InAt(1)), in VisitMemoryPokeIntNative()
630 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPokeIntNative()
633 void IntrinsicLocationsBuilderARM64::VisitMemoryPokeLongNative(HInvoke* invoke) { in VisitMemoryPokeLongNative() argument
634 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeLongNative()
637 void IntrinsicCodeGeneratorARM64::VisitMemoryPokeLongNative(HInvoke* invoke) { in VisitMemoryPokeLongNative() argument
639 __ Str(XRegisterFrom(invoke->GetLocations()->InAt(1)), in VisitMemoryPokeLongNative()
640 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPokeLongNative()
643 void IntrinsicLocationsBuilderARM64::VisitMemoryPokeShortNative(HInvoke* invoke) { in VisitMemoryPokeShortNative() argument
644 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeShortNative()
647 void IntrinsicCodeGeneratorARM64::VisitMemoryPokeShortNative(HInvoke* invoke) { in VisitMemoryPokeShortNative() argument
649 __ Strh(WRegisterFrom(invoke->GetLocations()->InAt(1)), in VisitMemoryPokeShortNative()
650 AbsoluteHeapOperandFrom(invoke->GetLocations()->InAt(0), 0)); in VisitMemoryPokeShortNative()
653 void IntrinsicLocationsBuilderARM64::VisitThreadCurrentThread(HInvoke* invoke) { in VisitThreadCurrentThread() argument
655 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitThreadCurrentThread()
659 void IntrinsicCodeGeneratorARM64::VisitThreadCurrentThread(HInvoke* invoke) { in VisitThreadCurrentThread() argument
660 codegen_->Load(DataType::Type::kReference, WRegisterFrom(invoke->GetLocations()->Out()), in VisitThreadCurrentThread()
664 static void GenUnsafeGet(HInvoke* invoke, in GenUnsafeGet() argument
668 LocationSummary* locations = invoke->GetLocations(); in GenUnsafeGet()
685 codegen->GenerateFieldLoadWithBakerReadBarrier(invoke, in GenUnsafeGet()
695 codegen->LoadAcquire(invoke, trg, mem_op, /* needs_null_check= */ true); in GenUnsafeGet()
702 codegen->MaybeGenerateReadBarrierSlow(invoke, trg_loc, trg_loc, base_loc, 0u, offset_loc); in GenUnsafeGet()
707 static void CreateIntIntIntToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntIntToIntLocations() argument
709 (invoke->GetIntrinsic() == Intrinsics::kUnsafeGetObject || in CreateIntIntIntToIntLocations()
710 invoke->GetIntrinsic() == Intrinsics::kUnsafeGetObjectVolatile); in CreateIntIntIntToIntLocations()
712 new (allocator) LocationSummary(invoke, in CreateIntIntIntToIntLocations()
730 void IntrinsicLocationsBuilderARM64::VisitUnsafeGet(HInvoke* invoke) { in VisitUnsafeGet() argument
731 CreateIntIntIntToIntLocations(allocator_, invoke); in VisitUnsafeGet()
733 void IntrinsicLocationsBuilderARM64::VisitUnsafeGetVolatile(HInvoke* invoke) { in VisitUnsafeGetVolatile() argument
734 CreateIntIntIntToIntLocations(allocator_, invoke); in VisitUnsafeGetVolatile()
736 void IntrinsicLocationsBuilderARM64::VisitUnsafeGetLong(HInvoke* invoke) { in VisitUnsafeGetLong() argument
737 CreateIntIntIntToIntLocations(allocator_, invoke); in VisitUnsafeGetLong()
739 void IntrinsicLocationsBuilderARM64::VisitUnsafeGetLongVolatile(HInvoke* invoke) { in VisitUnsafeGetLongVolatile() argument
740 CreateIntIntIntToIntLocations(allocator_, invoke); in VisitUnsafeGetLongVolatile()
742 void IntrinsicLocationsBuilderARM64::VisitUnsafeGetObject(HInvoke* invoke) { in VisitUnsafeGetObject() argument
743 CreateIntIntIntToIntLocations(allocator_, invoke); in VisitUnsafeGetObject()
745 void IntrinsicLocationsBuilderARM64::VisitUnsafeGetObjectVolatile(HInvoke* invoke) { in VisitUnsafeGetObjectVolatile() argument
746 CreateIntIntIntToIntLocations(allocator_, invoke); in VisitUnsafeGetObjectVolatile()
749 void IntrinsicCodeGeneratorARM64::VisitUnsafeGet(HInvoke* invoke) { in VisitUnsafeGet() argument
750 GenUnsafeGet(invoke, DataType::Type::kInt32, /* is_volatile= */ false, codegen_); in VisitUnsafeGet()
752 void IntrinsicCodeGeneratorARM64::VisitUnsafeGetVolatile(HInvoke* invoke) { in VisitUnsafeGetVolatile() argument
753 GenUnsafeGet(invoke, DataType::Type::kInt32, /* is_volatile= */ true, codegen_); in VisitUnsafeGetVolatile()
755 void IntrinsicCodeGeneratorARM64::VisitUnsafeGetLong(HInvoke* invoke) { in VisitUnsafeGetLong() argument
756 GenUnsafeGet(invoke, DataType::Type::kInt64, /* is_volatile= */ false, codegen_); in VisitUnsafeGetLong()
758 void IntrinsicCodeGeneratorARM64::VisitUnsafeGetLongVolatile(HInvoke* invoke) { in VisitUnsafeGetLongVolatile() argument
759 GenUnsafeGet(invoke, DataType::Type::kInt64, /* is_volatile= */ true, codegen_); in VisitUnsafeGetLongVolatile()
761 void IntrinsicCodeGeneratorARM64::VisitUnsafeGetObject(HInvoke* invoke) { in VisitUnsafeGetObject() argument
762 GenUnsafeGet(invoke, DataType::Type::kReference, /* is_volatile= */ false, codegen_); in VisitUnsafeGetObject()
764 void IntrinsicCodeGeneratorARM64::VisitUnsafeGetObjectVolatile(HInvoke* invoke) { in VisitUnsafeGetObjectVolatile() argument
765 GenUnsafeGet(invoke, DataType::Type::kReference, /* is_volatile= */ true, codegen_); in VisitUnsafeGetObjectVolatile()
768 static void CreateIntIntIntIntToVoid(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntIntIntToVoid() argument
770 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntIntIntIntToVoid()
777 void IntrinsicLocationsBuilderARM64::VisitUnsafePut(HInvoke* invoke) { in VisitUnsafePut() argument
778 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePut()
780 void IntrinsicLocationsBuilderARM64::VisitUnsafePutOrdered(HInvoke* invoke) { in VisitUnsafePutOrdered() argument
781 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutOrdered()
783 void IntrinsicLocationsBuilderARM64::VisitUnsafePutVolatile(HInvoke* invoke) { in VisitUnsafePutVolatile() argument
784 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutVolatile()
786 void IntrinsicLocationsBuilderARM64::VisitUnsafePutObject(HInvoke* invoke) { in VisitUnsafePutObject() argument
787 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutObject()
789 void IntrinsicLocationsBuilderARM64::VisitUnsafePutObjectOrdered(HInvoke* invoke) { in VisitUnsafePutObjectOrdered() argument
790 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutObjectOrdered()
792 void IntrinsicLocationsBuilderARM64::VisitUnsafePutObjectVolatile(HInvoke* invoke) { in VisitUnsafePutObjectVolatile() argument
793 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutObjectVolatile()
795 void IntrinsicLocationsBuilderARM64::VisitUnsafePutLong(HInvoke* invoke) { in VisitUnsafePutLong() argument
796 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutLong()
798 void IntrinsicLocationsBuilderARM64::VisitUnsafePutLongOrdered(HInvoke* invoke) { in VisitUnsafePutLongOrdered() argument
799 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutLongOrdered()
801 void IntrinsicLocationsBuilderARM64::VisitUnsafePutLongVolatile(HInvoke* invoke) { in VisitUnsafePutLongVolatile() argument
802 CreateIntIntIntIntToVoid(allocator_, invoke); in VisitUnsafePutLongVolatile()
805 static void GenUnsafePut(HInvoke* invoke, in GenUnsafePut() argument
810 LocationSummary* locations = invoke->GetLocations(); in GenUnsafePut()
833 codegen->StoreRelease(invoke, type, source, mem_op, /* needs_null_check= */ false); in GenUnsafePut()
845 void IntrinsicCodeGeneratorARM64::VisitUnsafePut(HInvoke* invoke) { in VisitUnsafePut() argument
846 GenUnsafePut(invoke, in VisitUnsafePut()
852 void IntrinsicCodeGeneratorARM64::VisitUnsafePutOrdered(HInvoke* invoke) { in VisitUnsafePutOrdered() argument
853 GenUnsafePut(invoke, in VisitUnsafePutOrdered()
859 void IntrinsicCodeGeneratorARM64::VisitUnsafePutVolatile(HInvoke* invoke) { in VisitUnsafePutVolatile() argument
860 GenUnsafePut(invoke, in VisitUnsafePutVolatile()
866 void IntrinsicCodeGeneratorARM64::VisitUnsafePutObject(HInvoke* invoke) { in VisitUnsafePutObject() argument
867 GenUnsafePut(invoke, in VisitUnsafePutObject()
873 void IntrinsicCodeGeneratorARM64::VisitUnsafePutObjectOrdered(HInvoke* invoke) { in VisitUnsafePutObjectOrdered() argument
874 GenUnsafePut(invoke, in VisitUnsafePutObjectOrdered()
880 void IntrinsicCodeGeneratorARM64::VisitUnsafePutObjectVolatile(HInvoke* invoke) { in VisitUnsafePutObjectVolatile() argument
881 GenUnsafePut(invoke, in VisitUnsafePutObjectVolatile()
887 void IntrinsicCodeGeneratorARM64::VisitUnsafePutLong(HInvoke* invoke) { in VisitUnsafePutLong() argument
888 GenUnsafePut(invoke, in VisitUnsafePutLong()
894 void IntrinsicCodeGeneratorARM64::VisitUnsafePutLongOrdered(HInvoke* invoke) { in VisitUnsafePutLongOrdered() argument
895 GenUnsafePut(invoke, in VisitUnsafePutLongOrdered()
901 void IntrinsicCodeGeneratorARM64::VisitUnsafePutLongVolatile(HInvoke* invoke) { in VisitUnsafePutLongVolatile() argument
902 GenUnsafePut(invoke, in VisitUnsafePutLongVolatile()
910 HInvoke* invoke, in CreateIntIntIntIntIntToInt() argument
914 (invoke->GetIntrinsic() == Intrinsics::kUnsafeCASObject); in CreateIntIntIntIntIntToInt()
916 new (allocator) LocationSummary(invoke, in CreateIntIntIntIntIntToInt()
940 explicit BakerReadBarrierCasSlowPathARM64(HInvoke* invoke) in BakerReadBarrierCasSlowPathARM64() argument
941 : SlowPathCodeARM64(invoke) {} in BakerReadBarrierCasSlowPathARM64()
1002 static void GenCas(HInvoke* invoke, DataType::Type type, CodeGeneratorARM64* codegen) { in GenCas() argument
1005 LocationSummary* locations = invoke->GetLocations(); in GenCas()
1034 new (codegen->GetScopedAllocator()) BakerReadBarrierCasSlowPathARM64(invoke); in GenCas()
1072 void IntrinsicLocationsBuilderARM64::VisitUnsafeCASInt(HInvoke* invoke) { in VisitUnsafeCASInt() argument
1073 CreateIntIntIntIntIntToInt(allocator_, invoke, DataType::Type::kInt32); in VisitUnsafeCASInt()
1075 void IntrinsicLocationsBuilderARM64::VisitUnsafeCASLong(HInvoke* invoke) { in VisitUnsafeCASLong() argument
1076 CreateIntIntIntIntIntToInt(allocator_, invoke, DataType::Type::kInt64); in VisitUnsafeCASLong()
1078 void IntrinsicLocationsBuilderARM64::VisitUnsafeCASObject(HInvoke* invoke) { in VisitUnsafeCASObject() argument
1085 CreateIntIntIntIntIntToInt(allocator_, invoke, DataType::Type::kReference); in VisitUnsafeCASObject()
1088 void IntrinsicCodeGeneratorARM64::VisitUnsafeCASInt(HInvoke* invoke) { in VisitUnsafeCASInt() argument
1089 GenCas(invoke, DataType::Type::kInt32, codegen_); in VisitUnsafeCASInt()
1091 void IntrinsicCodeGeneratorARM64::VisitUnsafeCASLong(HInvoke* invoke) { in VisitUnsafeCASLong() argument
1092 GenCas(invoke, DataType::Type::kInt64, codegen_); in VisitUnsafeCASLong()
1094 void IntrinsicCodeGeneratorARM64::VisitUnsafeCASObject(HInvoke* invoke) { in VisitUnsafeCASObject() argument
1099 GenCas(invoke, DataType::Type::kReference, codegen_); in VisitUnsafeCASObject()
1102 void IntrinsicLocationsBuilderARM64::VisitStringCompareTo(HInvoke* invoke) { in VisitStringCompareTo() argument
1104 new (allocator_) LocationSummary(invoke, in VisitStringCompareTo()
1105 invoke->InputAt(1)->CanBeNull() in VisitStringCompareTo()
1121 void IntrinsicCodeGeneratorARM64::VisitStringCompareTo(HInvoke* invoke) { in VisitStringCompareTo() argument
1123 LocationSummary* locations = invoke->GetLocations(); in VisitStringCompareTo()
1125 Register str = InputRegisterAt(invoke, 0); in VisitStringCompareTo()
1126 Register arg = InputRegisterAt(invoke, 1); in VisitStringCompareTo()
1129 Register out = OutputRegister(invoke); in VisitStringCompareTo()
1149 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in VisitStringCompareTo()
1153 const bool can_slow_path = invoke->InputAt(1)->CanBeNull(); in VisitStringCompareTo()
1155 slow_path = new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in VisitStringCompareTo()
1334 void IntrinsicLocationsBuilderARM64::VisitStringEquals(HInvoke* invoke) { in VisitStringEquals() argument
1336 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitStringEquals()
1343 const char* const_string = GetConstString(invoke->InputAt(0), &const_string_length); in VisitStringEquals()
1345 const_string = GetConstString(invoke->InputAt(1), &const_string_length); in VisitStringEquals()
1361 void IntrinsicCodeGeneratorARM64::VisitStringEquals(HInvoke* invoke) { in VisitStringEquals() argument
1363 LocationSummary* locations = invoke->GetLocations(); in VisitStringEquals()
1384 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in VisitStringEquals()
1386 StringEqualsOptimizations optimizations(invoke); in VisitStringEquals()
1418 const char* const_string = GetConstString(invoke->InputAt(0), &const_string_length); in VisitStringEquals()
1420 const_string = GetConstString(invoke->InputAt(1), &const_string_length); in VisitStringEquals()
1523 static void GenerateVisitStringIndexOf(HInvoke* invoke, in GenerateVisitStringIndexOf() argument
1527 LocationSummary* locations = invoke->GetLocations(); in GenerateVisitStringIndexOf()
1530 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in GenerateVisitStringIndexOf()
1535 HInstruction* code_point = invoke->InputAt(1); in GenerateVisitStringIndexOf()
1540 slow_path = new (codegen->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in GenerateVisitStringIndexOf()
1549 slow_path = new (codegen->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in GenerateVisitStringIndexOf()
1560 codegen->InvokeRuntime(kQuickIndexOf, invoke, invoke->GetDexPc(), slow_path); in GenerateVisitStringIndexOf()
1568 void IntrinsicLocationsBuilderARM64::VisitStringIndexOf(HInvoke* invoke) { in VisitStringIndexOf() argument
1570 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringIndexOf()
1582 void IntrinsicCodeGeneratorARM64::VisitStringIndexOf(HInvoke* invoke) { in VisitStringIndexOf() argument
1583 GenerateVisitStringIndexOf(invoke, GetVIXLAssembler(), codegen_, /* start_at_zero= */ true); in VisitStringIndexOf()
1586 void IntrinsicLocationsBuilderARM64::VisitStringIndexOfAfter(HInvoke* invoke) { in VisitStringIndexOfAfter() argument
1588 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringIndexOfAfter()
1598 void IntrinsicCodeGeneratorARM64::VisitStringIndexOfAfter(HInvoke* invoke) { in VisitStringIndexOfAfter() argument
1599 GenerateVisitStringIndexOf(invoke, GetVIXLAssembler(), codegen_, /* start_at_zero= */ false); in VisitStringIndexOfAfter()
1602 void IntrinsicLocationsBuilderARM64::VisitStringNewStringFromBytes(HInvoke* invoke) { in VisitStringNewStringFromBytes() argument
1604 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringNewStringFromBytes()
1613 void IntrinsicCodeGeneratorARM64::VisitStringNewStringFromBytes(HInvoke* invoke) { in VisitStringNewStringFromBytes() argument
1615 LocationSummary* locations = invoke->GetLocations(); in VisitStringNewStringFromBytes()
1620 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in VisitStringNewStringFromBytes()
1624 codegen_->InvokeRuntime(kQuickAllocStringFromBytes, invoke, invoke->GetDexPc(), slow_path); in VisitStringNewStringFromBytes()
1629 void IntrinsicLocationsBuilderARM64::VisitStringNewStringFromChars(HInvoke* invoke) { in VisitStringNewStringFromChars() argument
1631 new (allocator_) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in VisitStringNewStringFromChars()
1639 void IntrinsicCodeGeneratorARM64::VisitStringNewStringFromChars(HInvoke* invoke) { in VisitStringNewStringFromChars() argument
1646 codegen_->InvokeRuntime(kQuickAllocStringFromChars, invoke, invoke->GetDexPc()); in VisitStringNewStringFromChars()
1650 void IntrinsicLocationsBuilderARM64::VisitStringNewStringFromString(HInvoke* invoke) { in VisitStringNewStringFromString() argument
1652 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringNewStringFromString()
1658 void IntrinsicCodeGeneratorARM64::VisitStringNewStringFromString(HInvoke* invoke) { in VisitStringNewStringFromString() argument
1660 LocationSummary* locations = invoke->GetLocations(); in VisitStringNewStringFromString()
1665 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in VisitStringNewStringFromString()
1669 codegen_->InvokeRuntime(kQuickAllocStringFromString, invoke, invoke->GetDexPc(), slow_path); in VisitStringNewStringFromString()
1674 static void CreateFPToFPCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToFPCallLocations() argument
1675 DCHECK_EQ(invoke->GetNumberOfArguments(), 1U); in CreateFPToFPCallLocations()
1676 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(0)->GetType())); in CreateFPToFPCallLocations()
1677 DCHECK(DataType::IsFloatingPointType(invoke->GetType())); in CreateFPToFPCallLocations()
1680 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in CreateFPToFPCallLocations()
1684 locations->SetOut(calling_convention.GetReturnLocation(invoke->GetType())); in CreateFPToFPCallLocations()
1687 static void CreateFPFPToFPCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPFPToFPCallLocations() argument
1688 DCHECK_EQ(invoke->GetNumberOfArguments(), 2U); in CreateFPFPToFPCallLocations()
1689 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(0)->GetType())); in CreateFPFPToFPCallLocations()
1690 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(1)->GetType())); in CreateFPFPToFPCallLocations()
1691 DCHECK(DataType::IsFloatingPointType(invoke->GetType())); in CreateFPFPToFPCallLocations()
1694 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in CreateFPFPToFPCallLocations()
1699 locations->SetOut(calling_convention.GetReturnLocation(invoke->GetType())); in CreateFPFPToFPCallLocations()
1702 static void GenFPToFPCall(HInvoke* invoke, in GenFPToFPCall() argument
1705 codegen->InvokeRuntime(entry, invoke, invoke->GetDexPc()); in GenFPToFPCall()
1708 void IntrinsicLocationsBuilderARM64::VisitMathCos(HInvoke* invoke) { in VisitMathCos() argument
1709 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCos()
1712 void IntrinsicCodeGeneratorARM64::VisitMathCos(HInvoke* invoke) { in VisitMathCos() argument
1713 GenFPToFPCall(invoke, codegen_, kQuickCos); in VisitMathCos()
1716 void IntrinsicLocationsBuilderARM64::VisitMathSin(HInvoke* invoke) { in VisitMathSin() argument
1717 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathSin()
1720 void IntrinsicCodeGeneratorARM64::VisitMathSin(HInvoke* invoke) { in VisitMathSin() argument
1721 GenFPToFPCall(invoke, codegen_, kQuickSin); in VisitMathSin()
1724 void IntrinsicLocationsBuilderARM64::VisitMathAcos(HInvoke* invoke) { in VisitMathAcos() argument
1725 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAcos()
1728 void IntrinsicCodeGeneratorARM64::VisitMathAcos(HInvoke* invoke) { in VisitMathAcos() argument
1729 GenFPToFPCall(invoke, codegen_, kQuickAcos); in VisitMathAcos()
1732 void IntrinsicLocationsBuilderARM64::VisitMathAsin(HInvoke* invoke) { in VisitMathAsin() argument
1733 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAsin()
1736 void IntrinsicCodeGeneratorARM64::VisitMathAsin(HInvoke* invoke) { in VisitMathAsin() argument
1737 GenFPToFPCall(invoke, codegen_, kQuickAsin); in VisitMathAsin()
1740 void IntrinsicLocationsBuilderARM64::VisitMathAtan(HInvoke* invoke) { in VisitMathAtan() argument
1741 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAtan()
1744 void IntrinsicCodeGeneratorARM64::VisitMathAtan(HInvoke* invoke) { in VisitMathAtan() argument
1745 GenFPToFPCall(invoke, codegen_, kQuickAtan); in VisitMathAtan()
1748 void IntrinsicLocationsBuilderARM64::VisitMathCbrt(HInvoke* invoke) { in VisitMathCbrt() argument
1749 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCbrt()
1752 void IntrinsicCodeGeneratorARM64::VisitMathCbrt(HInvoke* invoke) { in VisitMathCbrt() argument
1753 GenFPToFPCall(invoke, codegen_, kQuickCbrt); in VisitMathCbrt()
1756 void IntrinsicLocationsBuilderARM64::VisitMathCosh(HInvoke* invoke) { in VisitMathCosh() argument
1757 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCosh()
1760 void IntrinsicCodeGeneratorARM64::VisitMathCosh(HInvoke* invoke) { in VisitMathCosh() argument
1761 GenFPToFPCall(invoke, codegen_, kQuickCosh); in VisitMathCosh()
1764 void IntrinsicLocationsBuilderARM64::VisitMathExp(HInvoke* invoke) { in VisitMathExp() argument
1765 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathExp()
1768 void IntrinsicCodeGeneratorARM64::VisitMathExp(HInvoke* invoke) { in VisitMathExp() argument
1769 GenFPToFPCall(invoke, codegen_, kQuickExp); in VisitMathExp()
1772 void IntrinsicLocationsBuilderARM64::VisitMathExpm1(HInvoke* invoke) { in VisitMathExpm1() argument
1773 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathExpm1()
1776 void IntrinsicCodeGeneratorARM64::VisitMathExpm1(HInvoke* invoke) { in VisitMathExpm1() argument
1777 GenFPToFPCall(invoke, codegen_, kQuickExpm1); in VisitMathExpm1()
1780 void IntrinsicLocationsBuilderARM64::VisitMathLog(HInvoke* invoke) { in VisitMathLog() argument
1781 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathLog()
1784 void IntrinsicCodeGeneratorARM64::VisitMathLog(HInvoke* invoke) { in VisitMathLog() argument
1785 GenFPToFPCall(invoke, codegen_, kQuickLog); in VisitMathLog()
1788 void IntrinsicLocationsBuilderARM64::VisitMathLog10(HInvoke* invoke) { in VisitMathLog10() argument
1789 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathLog10()
1792 void IntrinsicCodeGeneratorARM64::VisitMathLog10(HInvoke* invoke) { in VisitMathLog10() argument
1793 GenFPToFPCall(invoke, codegen_, kQuickLog10); in VisitMathLog10()
1796 void IntrinsicLocationsBuilderARM64::VisitMathSinh(HInvoke* invoke) { in VisitMathSinh() argument
1797 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathSinh()
1800 void IntrinsicCodeGeneratorARM64::VisitMathSinh(HInvoke* invoke) { in VisitMathSinh() argument
1801 GenFPToFPCall(invoke, codegen_, kQuickSinh); in VisitMathSinh()
1804 void IntrinsicLocationsBuilderARM64::VisitMathTan(HInvoke* invoke) { in VisitMathTan() argument
1805 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathTan()
1808 void IntrinsicCodeGeneratorARM64::VisitMathTan(HInvoke* invoke) { in VisitMathTan() argument
1809 GenFPToFPCall(invoke, codegen_, kQuickTan); in VisitMathTan()
1812 void IntrinsicLocationsBuilderARM64::VisitMathTanh(HInvoke* invoke) { in VisitMathTanh() argument
1813 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathTanh()
1816 void IntrinsicCodeGeneratorARM64::VisitMathTanh(HInvoke* invoke) { in VisitMathTanh() argument
1817 GenFPToFPCall(invoke, codegen_, kQuickTanh); in VisitMathTanh()
1820 void IntrinsicLocationsBuilderARM64::VisitMathAtan2(HInvoke* invoke) { in VisitMathAtan2() argument
1821 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathAtan2()
1824 void IntrinsicCodeGeneratorARM64::VisitMathAtan2(HInvoke* invoke) { in VisitMathAtan2() argument
1825 GenFPToFPCall(invoke, codegen_, kQuickAtan2); in VisitMathAtan2()
1828 void IntrinsicLocationsBuilderARM64::VisitMathPow(HInvoke* invoke) { in VisitMathPow() argument
1829 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathPow()
1832 void IntrinsicCodeGeneratorARM64::VisitMathPow(HInvoke* invoke) { in VisitMathPow() argument
1833 GenFPToFPCall(invoke, codegen_, kQuickPow); in VisitMathPow()
1836 void IntrinsicLocationsBuilderARM64::VisitMathHypot(HInvoke* invoke) { in VisitMathHypot() argument
1837 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathHypot()
1840 void IntrinsicCodeGeneratorARM64::VisitMathHypot(HInvoke* invoke) { in VisitMathHypot() argument
1841 GenFPToFPCall(invoke, codegen_, kQuickHypot); in VisitMathHypot()
1844 void IntrinsicLocationsBuilderARM64::VisitMathNextAfter(HInvoke* invoke) { in VisitMathNextAfter() argument
1845 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathNextAfter()
1848 void IntrinsicCodeGeneratorARM64::VisitMathNextAfter(HInvoke* invoke) { in VisitMathNextAfter() argument
1849 GenFPToFPCall(invoke, codegen_, kQuickNextAfter); in VisitMathNextAfter()
1852 void IntrinsicLocationsBuilderARM64::VisitStringGetCharsNoCheck(HInvoke* invoke) { in VisitStringGetCharsNoCheck() argument
1854 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitStringGetCharsNoCheck()
1866 void IntrinsicCodeGeneratorARM64::VisitStringGetCharsNoCheck(HInvoke* invoke) { in VisitStringGetCharsNoCheck() argument
1868 LocationSummary* locations = invoke->GetLocations(); in VisitStringGetCharsNoCheck()
2004 void IntrinsicLocationsBuilderARM64::VisitSystemArrayCopyChar(HInvoke* invoke) { in VisitSystemArrayCopyChar() argument
2007 HIntConstant* src_pos = invoke->InputAt(1)->AsIntConstant(); in VisitSystemArrayCopyChar()
2008 HIntConstant* dst_pos = invoke->InputAt(3)->AsIntConstant(); in VisitSystemArrayCopyChar()
2019 HIntConstant* length = invoke->InputAt(4)->AsIntConstant(); in VisitSystemArrayCopyChar()
2028 ArenaAllocator* allocator = invoke->GetBlock()->GetGraph()->GetAllocator(); in VisitSystemArrayCopyChar()
2030 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnSlowPath, kIntrinsified); in VisitSystemArrayCopyChar()
2033 SetSystemArrayCopyLocationRequires(locations, 1, invoke->InputAt(1)); in VisitSystemArrayCopyChar()
2035 SetSystemArrayCopyLocationRequires(locations, 3, invoke->InputAt(3)); in VisitSystemArrayCopyChar()
2036 SetSystemArrayCopyLocationRequires(locations, 4, invoke->InputAt(4)); in VisitSystemArrayCopyChar()
2131 void IntrinsicCodeGeneratorARM64::VisitSystemArrayCopyChar(HInvoke* invoke) { in VisitSystemArrayCopyChar() argument
2133 LocationSummary* locations = invoke->GetLocations(); in VisitSystemArrayCopyChar()
2141 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in VisitSystemArrayCopyChar()
2224 void IntrinsicLocationsBuilderARM64::VisitSystemArrayCopy(HInvoke* invoke) { in VisitSystemArrayCopy() argument
2233 HIntConstant* src_pos = invoke->InputAt(1)->AsIntConstant(); in VisitSystemArrayCopy()
2234 HIntConstant* dest_pos = invoke->InputAt(3)->AsIntConstant(); in VisitSystemArrayCopy()
2244 HIntConstant* length = invoke->InputAt(4)->AsIntConstant(); in VisitSystemArrayCopy()
2253 SystemArrayCopyOptimizations optimizations(invoke); in VisitSystemArrayCopy()
2267 ArenaAllocator* allocator = invoke->GetBlock()->GetGraph()->GetAllocator(); in VisitSystemArrayCopy()
2269 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnSlowPath, kIntrinsified); in VisitSystemArrayCopy()
2272 SetSystemArrayCopyLocationRequires(locations, 1, invoke->InputAt(1)); in VisitSystemArrayCopy()
2274 SetSystemArrayCopyLocationRequires(locations, 3, invoke->InputAt(3)); in VisitSystemArrayCopy()
2275 SetSystemArrayCopyLocationRequires(locations, 4, invoke->InputAt(4)); in VisitSystemArrayCopy()
2294 void IntrinsicCodeGeneratorARM64::VisitSystemArrayCopy(HInvoke* invoke) { in VisitSystemArrayCopy() argument
2300 LocationSummary* locations = invoke->GetLocations(); in VisitSystemArrayCopy()
2319 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in VisitSystemArrayCopy()
2323 SystemArrayCopyOptimizations optimizations(invoke); in VisitSystemArrayCopy()
2354 __ Cmp(RegisterFrom(src_pos, invoke->InputAt(1)->GetType()), in VisitSystemArrayCopy()
2355 OperandFrom(dest_pos, invoke->InputAt(3)->GetType())); in VisitSystemArrayCopy()
2420 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2429 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2446 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2463 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2482 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2496 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2580 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2588 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
2697 invoke, LocationFrom(tmp)); in VisitSystemArrayCopy()
2779 void IntrinsicLocationsBuilderARM64::VisitFloatIsInfinite(HInvoke* invoke) { in VisitFloatIsInfinite() argument
2780 CreateFPToIntLocations(allocator_, invoke); in VisitFloatIsInfinite()
2783 void IntrinsicCodeGeneratorARM64::VisitFloatIsInfinite(HInvoke* invoke) { in VisitFloatIsInfinite() argument
2784 GenIsInfinite(invoke->GetLocations(), /* is64bit= */ false, GetVIXLAssembler()); in VisitFloatIsInfinite()
2787 void IntrinsicLocationsBuilderARM64::VisitDoubleIsInfinite(HInvoke* invoke) { in VisitDoubleIsInfinite() argument
2788 CreateFPToIntLocations(allocator_, invoke); in VisitDoubleIsInfinite()
2791 void IntrinsicCodeGeneratorARM64::VisitDoubleIsInfinite(HInvoke* invoke) { in VisitDoubleIsInfinite() argument
2792 GenIsInfinite(invoke->GetLocations(), /* is64bit= */ true, GetVIXLAssembler()); in VisitDoubleIsInfinite()
2795 void IntrinsicLocationsBuilderARM64::VisitIntegerValueOf(HInvoke* invoke) { in VisitIntegerValueOf() argument
2798 invoke, in VisitIntegerValueOf()
2804 void IntrinsicCodeGeneratorARM64::VisitIntegerValueOf(HInvoke* invoke) { in VisitIntegerValueOf() argument
2806 IntrinsicVisitor::ComputeIntegerValueOfInfo(invoke, codegen_->GetCompilerOptions()); in VisitIntegerValueOf()
2807 LocationSummary* locations = invoke->GetLocations(); in VisitIntegerValueOf()
2813 if (invoke->InputAt(0)->IsConstant()) { in VisitIntegerValueOf()
2814 int32_t value = invoke->InputAt(0)->AsIntConstant()->GetValue(); in VisitIntegerValueOf()
2824 codegen_->AllocateInstanceForIntrinsic(invoke->AsInvokeStaticOrDirect(), in VisitIntegerValueOf()
2849 codegen_->AllocateInstanceForIntrinsic(invoke->AsInvokeStaticOrDirect(), in VisitIntegerValueOf()
2859 void IntrinsicLocationsBuilderARM64::VisitThreadInterrupted(HInvoke* invoke) { in VisitThreadInterrupted() argument
2861 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitThreadInterrupted()
2865 void IntrinsicCodeGeneratorARM64::VisitThreadInterrupted(HInvoke* invoke) { in VisitThreadInterrupted() argument
2867 Register out = RegisterFrom(invoke->GetLocations()->Out(), DataType::Type::kInt32); in VisitThreadInterrupted()
2880 void IntrinsicLocationsBuilderARM64::VisitReachabilityFence(HInvoke* invoke) { in VisitReachabilityFence() argument
2882 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitReachabilityFence()
2886 void IntrinsicCodeGeneratorARM64::VisitReachabilityFence(HInvoke* invoke ATTRIBUTE_UNUSED) { } in VisitReachabilityFence()
2888 void IntrinsicLocationsBuilderARM64::VisitCRC32Update(HInvoke* invoke) { in VisitCRC32Update() argument
2893 LocationSummary* locations = new (allocator_) LocationSummary(invoke, in VisitCRC32Update()
2903 void IntrinsicCodeGeneratorARM64::VisitCRC32Update(HInvoke* invoke) { in VisitCRC32Update() argument
2908 Register crc = InputRegisterAt(invoke, 0); in VisitCRC32Update()
2909 Register val = InputRegisterAt(invoke, 1); in VisitCRC32Update()
2910 Register out = OutputRegister(invoke); in VisitCRC32Update()
3034 void IntrinsicLocationsBuilderARM64::VisitCRC32UpdateBytes(HInvoke* invoke) { in VisitCRC32UpdateBytes() argument
3040 new (allocator_) LocationSummary(invoke, in VisitCRC32UpdateBytes()
3046 locations->SetInAt(2, Location::RegisterOrConstant(invoke->InputAt(2))); in VisitCRC32UpdateBytes()
3055 void IntrinsicCodeGeneratorARM64::VisitCRC32UpdateBytes(HInvoke* invoke) { in VisitCRC32UpdateBytes() argument
3059 LocationSummary* locations = invoke->GetLocations(); in VisitCRC32UpdateBytes()
3062 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARM64(invoke); in VisitCRC32UpdateBytes()
3090 void IntrinsicLocationsBuilderARM64::VisitCRC32UpdateByteBuffer(HInvoke* invoke) { in VisitCRC32UpdateByteBuffer() argument
3096 new (allocator_) LocationSummary(invoke, in VisitCRC32UpdateByteBuffer()
3117 void IntrinsicCodeGeneratorARM64::VisitCRC32UpdateByteBuffer(HInvoke* invoke) { in VisitCRC32UpdateByteBuffer() argument
3121 LocationSummary* locations = invoke->GetLocations(); in VisitCRC32UpdateByteBuffer()
3133 void IntrinsicLocationsBuilderARM64::VisitFP16ToFloat(HInvoke* invoke) { in VisitFP16ToFloat() argument
3138 LocationSummary* locations = new (allocator_) LocationSummary(invoke, in VisitFP16ToFloat()
3145 void IntrinsicCodeGeneratorARM64::VisitFP16ToFloat(HInvoke* invoke) { in VisitFP16ToFloat() argument
3149 Register bits = InputRegisterAt(invoke, 0); in VisitFP16ToFloat()
3150 VRegister out = SRegisterFrom(invoke->GetLocations()->Out()); in VisitFP16ToFloat()
3156 void IntrinsicLocationsBuilderARM64::VisitFP16ToHalf(HInvoke* invoke) { in VisitFP16ToHalf() argument
3161 LocationSummary* locations = new (allocator_) LocationSummary(invoke, in VisitFP16ToHalf()
3168 void IntrinsicCodeGeneratorARM64::VisitFP16ToHalf(HInvoke* invoke) { in VisitFP16ToHalf() argument
3172 VRegister in = SRegisterFrom(invoke->GetLocations()->InAt(0)); in VisitFP16ToHalf()
3174 Register out = WRegisterFrom(invoke->GetLocations()->Out()); in VisitFP16ToHalf()
3181 void GenerateFP16Round(HInvoke* invoke, in GenerateFP16Round() argument
3186 LocationSummary* locations = invoke->GetLocations(); in GenerateFP16Round()
3196 void IntrinsicLocationsBuilderARM64::VisitFP16Floor(HInvoke* invoke) { in VisitFP16Floor() argument
3201 CreateIntToIntLocations(allocator_, invoke); in VisitFP16Floor()
3204 void IntrinsicCodeGeneratorARM64::VisitFP16Floor(HInvoke* invoke) { in VisitFP16Floor() argument
3209 GenerateFP16Round(invoke, codegen_, masm, roundOp); in VisitFP16Floor()
3212 void IntrinsicLocationsBuilderARM64::VisitFP16Ceil(HInvoke* invoke) { in VisitFP16Ceil() argument
3217 CreateIntToIntLocations(allocator_, invoke); in VisitFP16Ceil()
3220 void IntrinsicCodeGeneratorARM64::VisitFP16Ceil(HInvoke* invoke) { in VisitFP16Ceil() argument
3225 GenerateFP16Round(invoke, codegen_, masm, roundOp); in VisitFP16Ceil()
3228 void IntrinsicLocationsBuilderARM64::VisitFP16Rint(HInvoke* invoke) { in VisitFP16Rint() argument
3233 CreateIntToIntLocations(allocator_, invoke); in VisitFP16Rint()
3236 void IntrinsicCodeGeneratorARM64::VisitFP16Rint(HInvoke* invoke) { in VisitFP16Rint() argument
3241 GenerateFP16Round(invoke, codegen_, masm, roundOp); in VisitFP16Rint()
3245 void GenerateFP16Compare(HInvoke* invoke, in GenerateFP16Compare() argument
3250 LocationSummary* locations = invoke->GetLocations(); in GenerateFP16Compare()
3259 static inline void GenerateFP16Compare(HInvoke* invoke, in GenerateFP16Compare() argument
3267 GenerateFP16Compare(invoke, codegen, masm, compareOp); in GenerateFP16Compare()
3270 void IntrinsicLocationsBuilderARM64::VisitFP16Greater(HInvoke* invoke) { in VisitFP16Greater() argument
3275 CreateIntIntToIntLocations(allocator_, invoke); in VisitFP16Greater()
3276 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16Greater()
3277 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16Greater()
3280 void IntrinsicCodeGeneratorARM64::VisitFP16Greater(HInvoke* invoke) { in VisitFP16Greater() argument
3282 GenerateFP16Compare(invoke, codegen_, masm, gt); in VisitFP16Greater()
3285 void IntrinsicLocationsBuilderARM64::VisitFP16GreaterEquals(HInvoke* invoke) { in VisitFP16GreaterEquals() argument
3290 CreateIntIntToIntLocations(allocator_, invoke); in VisitFP16GreaterEquals()
3291 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16GreaterEquals()
3292 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16GreaterEquals()
3295 void IntrinsicCodeGeneratorARM64::VisitFP16GreaterEquals(HInvoke* invoke) { in VisitFP16GreaterEquals() argument
3297 GenerateFP16Compare(invoke, codegen_, masm, ge); in VisitFP16GreaterEquals()
3300 void IntrinsicLocationsBuilderARM64::VisitFP16Less(HInvoke* invoke) { in VisitFP16Less() argument
3305 CreateIntIntToIntLocations(allocator_, invoke); in VisitFP16Less()
3306 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16Less()
3307 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16Less()
3310 void IntrinsicCodeGeneratorARM64::VisitFP16Less(HInvoke* invoke) { in VisitFP16Less() argument
3312 GenerateFP16Compare(invoke, codegen_, masm, mi); in VisitFP16Less()
3315 void IntrinsicLocationsBuilderARM64::VisitFP16LessEquals(HInvoke* invoke) { in VisitFP16LessEquals() argument
3320 CreateIntIntToIntLocations(allocator_, invoke); in VisitFP16LessEquals()
3321 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16LessEquals()
3322 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitFP16LessEquals()
3325 void IntrinsicCodeGeneratorARM64::VisitFP16LessEquals(HInvoke* invoke) { in VisitFP16LessEquals() argument
3327 GenerateFP16Compare(invoke, codegen_, masm, ls); in VisitFP16LessEquals()