Lines Matching refs:invoke

200 bool IntrinsicLocationsBuilderARMVIXL::TryDispatch(HInvoke* invoke) {  in TryDispatch()  argument
201 Dispatch(invoke); in TryDispatch()
202 LocationSummary* res = invoke->GetLocations(); in TryDispatch()
209 static void CreateFPToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToIntLocations() argument
211 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToIntLocations()
216 static void CreateIntToFPLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntToFPLocations() argument
218 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntToFPLocations()
243 void IntrinsicLocationsBuilderARMVIXL::VisitDoubleDoubleToRawLongBits(HInvoke* invoke) { in VisitDoubleDoubleToRawLongBits() argument
244 CreateFPToIntLocations(allocator_, invoke); in VisitDoubleDoubleToRawLongBits()
246 void IntrinsicLocationsBuilderARMVIXL::VisitDoubleLongBitsToDouble(HInvoke* invoke) { in VisitDoubleLongBitsToDouble() argument
247 CreateIntToFPLocations(allocator_, invoke); in VisitDoubleLongBitsToDouble()
250 void IntrinsicCodeGeneratorARMVIXL::VisitDoubleDoubleToRawLongBits(HInvoke* invoke) { in VisitDoubleDoubleToRawLongBits() argument
251 MoveFPToInt(invoke->GetLocations(), /* is64bit= */ true, GetAssembler()); in VisitDoubleDoubleToRawLongBits()
253 void IntrinsicCodeGeneratorARMVIXL::VisitDoubleLongBitsToDouble(HInvoke* invoke) { in VisitDoubleLongBitsToDouble() argument
254 MoveIntToFP(invoke->GetLocations(), /* is64bit= */ true, GetAssembler()); in VisitDoubleLongBitsToDouble()
257 void IntrinsicLocationsBuilderARMVIXL::VisitFloatFloatToRawIntBits(HInvoke* invoke) { in VisitFloatFloatToRawIntBits() argument
258 CreateFPToIntLocations(allocator_, invoke); in VisitFloatFloatToRawIntBits()
260 void IntrinsicLocationsBuilderARMVIXL::VisitFloatIntBitsToFloat(HInvoke* invoke) { in VisitFloatIntBitsToFloat() argument
261 CreateIntToFPLocations(allocator_, invoke); in VisitFloatIntBitsToFloat()
264 void IntrinsicCodeGeneratorARMVIXL::VisitFloatFloatToRawIntBits(HInvoke* invoke) { in VisitFloatFloatToRawIntBits() argument
265 MoveFPToInt(invoke->GetLocations(), /* is64bit= */ false, GetAssembler()); in VisitFloatFloatToRawIntBits()
267 void IntrinsicCodeGeneratorARMVIXL::VisitFloatIntBitsToFloat(HInvoke* invoke) { in VisitFloatIntBitsToFloat() argument
268 MoveIntToFP(invoke->GetLocations(), /* is64bit= */ false, GetAssembler()); in VisitFloatIntBitsToFloat()
271 static void CreateIntToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntToIntLocations() argument
273 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntToIntLocations()
278 static void CreateLongToLongLocationsWithOverlap(ArenaAllocator* allocator, HInvoke* invoke) { in CreateLongToLongLocationsWithOverlap() argument
280 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateLongToLongLocationsWithOverlap()
285 static void CreateFPToFPLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToFPLocations() argument
287 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToFPLocations()
292 static void GenNumberOfLeadingZeros(HInvoke* invoke, in GenNumberOfLeadingZeros() argument
296 LocationSummary* locations = invoke->GetLocations(); in GenNumberOfLeadingZeros()
306 vixl32::Label* final_label = codegen->GetFinalLabel(invoke, &end); in GenNumberOfLeadingZeros()
319 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerNumberOfLeadingZeros(HInvoke* invoke) { in VisitIntegerNumberOfLeadingZeros() argument
320 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerNumberOfLeadingZeros()
323 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerNumberOfLeadingZeros(HInvoke* invoke) { in VisitIntegerNumberOfLeadingZeros() argument
324 GenNumberOfLeadingZeros(invoke, DataType::Type::kInt32, codegen_); in VisitIntegerNumberOfLeadingZeros()
327 void IntrinsicLocationsBuilderARMVIXL::VisitLongNumberOfLeadingZeros(HInvoke* invoke) { in VisitLongNumberOfLeadingZeros() argument
328 CreateLongToLongLocationsWithOverlap(allocator_, invoke); in VisitLongNumberOfLeadingZeros()
331 void IntrinsicCodeGeneratorARMVIXL::VisitLongNumberOfLeadingZeros(HInvoke* invoke) { in VisitLongNumberOfLeadingZeros() argument
332 GenNumberOfLeadingZeros(invoke, DataType::Type::kInt64, codegen_); in VisitLongNumberOfLeadingZeros()
335 static void GenNumberOfTrailingZeros(HInvoke* invoke, in GenNumberOfTrailingZeros() argument
341 LocationSummary* locations = invoke->GetLocations(); in GenNumberOfTrailingZeros()
348 vixl32::Label* final_label = codegen->GetFinalLabel(invoke, &end); in GenNumberOfTrailingZeros()
365 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerNumberOfTrailingZeros(HInvoke* invoke) { in VisitIntegerNumberOfTrailingZeros() argument
366 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerNumberOfTrailingZeros()
369 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerNumberOfTrailingZeros(HInvoke* invoke) { in VisitIntegerNumberOfTrailingZeros() argument
370 GenNumberOfTrailingZeros(invoke, DataType::Type::kInt32, codegen_); in VisitIntegerNumberOfTrailingZeros()
373 void IntrinsicLocationsBuilderARMVIXL::VisitLongNumberOfTrailingZeros(HInvoke* invoke) { in VisitLongNumberOfTrailingZeros() argument
374 CreateLongToLongLocationsWithOverlap(allocator_, invoke); in VisitLongNumberOfTrailingZeros()
377 void IntrinsicCodeGeneratorARMVIXL::VisitLongNumberOfTrailingZeros(HInvoke* invoke) { in VisitLongNumberOfTrailingZeros() argument
378 GenNumberOfTrailingZeros(invoke, DataType::Type::kInt64, codegen_); in VisitLongNumberOfTrailingZeros()
381 void IntrinsicLocationsBuilderARMVIXL::VisitMathSqrt(HInvoke* invoke) { in VisitMathSqrt() argument
382 CreateFPToFPLocations(allocator_, invoke); in VisitMathSqrt()
385 void IntrinsicCodeGeneratorARMVIXL::VisitMathSqrt(HInvoke* invoke) { in VisitMathSqrt() argument
387 __ Vsqrt(OutputDRegister(invoke), InputDRegisterAt(invoke, 0)); in VisitMathSqrt()
390 void IntrinsicLocationsBuilderARMVIXL::VisitMathRint(HInvoke* invoke) { in VisitMathRint() argument
392 CreateFPToFPLocations(allocator_, invoke); in VisitMathRint()
396 void IntrinsicCodeGeneratorARMVIXL::VisitMathRint(HInvoke* invoke) { in VisitMathRint() argument
399 __ Vrintn(F64, OutputDRegister(invoke), InputDRegisterAt(invoke, 0)); in VisitMathRint()
402 void IntrinsicLocationsBuilderARMVIXL::VisitMathRoundFloat(HInvoke* invoke) { in VisitMathRoundFloat() argument
405 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitMathRoundFloat()
412 void IntrinsicCodeGeneratorARMVIXL::VisitMathRoundFloat(HInvoke* invoke) { in VisitMathRoundFloat() argument
416 vixl32::SRegister in_reg = InputSRegisterAt(invoke, 0); in VisitMathRoundFloat()
417 vixl32::Register out_reg = OutputRegister(invoke); in VisitMathRoundFloat()
418 vixl32::SRegister temp1 = LowSRegisterFrom(invoke->GetLocations()->GetTemp(0)); in VisitMathRoundFloat()
419 vixl32::SRegister temp2 = HighSRegisterFrom(invoke->GetLocations()->GetTemp(0)); in VisitMathRoundFloat()
421 vixl32::Label* final_label = codegen_->GetFinalLabel(invoke, &done); in VisitMathRoundFloat()
453 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPeekByte(HInvoke* invoke) { in VisitMemoryPeekByte() argument
454 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekByte()
457 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPeekByte(HInvoke* invoke) { in VisitMemoryPeekByte() argument
460 __ Ldrsb(OutputRegister(invoke), MemOperand(LowRegisterFrom(invoke->GetLocations()->InAt(0)))); in VisitMemoryPeekByte()
463 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPeekIntNative(HInvoke* invoke) { in VisitMemoryPeekIntNative() argument
464 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekIntNative()
467 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPeekIntNative(HInvoke* invoke) { in VisitMemoryPeekIntNative() argument
470 __ Ldr(OutputRegister(invoke), MemOperand(LowRegisterFrom(invoke->GetLocations()->InAt(0)))); in VisitMemoryPeekIntNative()
473 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPeekLongNative(HInvoke* invoke) { in VisitMemoryPeekLongNative() argument
474 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekLongNative()
477 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPeekLongNative(HInvoke* invoke) { in VisitMemoryPeekLongNative() argument
480 vixl32::Register addr = LowRegisterFrom(invoke->GetLocations()->InAt(0)); in VisitMemoryPeekLongNative()
483 vixl32::Register lo = LowRegisterFrom(invoke->GetLocations()->Out()); in VisitMemoryPeekLongNative()
484 vixl32::Register hi = HighRegisterFrom(invoke->GetLocations()->Out()); in VisitMemoryPeekLongNative()
494 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPeekShortNative(HInvoke* invoke) { in VisitMemoryPeekShortNative() argument
495 CreateIntToIntLocations(allocator_, invoke); in VisitMemoryPeekShortNative()
498 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPeekShortNative(HInvoke* invoke) { in VisitMemoryPeekShortNative() argument
501 __ Ldrsh(OutputRegister(invoke), MemOperand(LowRegisterFrom(invoke->GetLocations()->InAt(0)))); in VisitMemoryPeekShortNative()
504 static void CreateIntIntToVoidLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntToVoidLocations() argument
506 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntIntToVoidLocations()
511 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPokeByte(HInvoke* invoke) { in VisitMemoryPokeByte() argument
512 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeByte()
515 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPokeByte(HInvoke* invoke) { in VisitMemoryPokeByte() argument
517 __ Strb(InputRegisterAt(invoke, 1), MemOperand(LowRegisterFrom(invoke->GetLocations()->InAt(0)))); in VisitMemoryPokeByte()
520 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPokeIntNative(HInvoke* invoke) { in VisitMemoryPokeIntNative() argument
521 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeIntNative()
524 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPokeIntNative(HInvoke* invoke) { in VisitMemoryPokeIntNative() argument
526 __ Str(InputRegisterAt(invoke, 1), MemOperand(LowRegisterFrom(invoke->GetLocations()->InAt(0)))); in VisitMemoryPokeIntNative()
529 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPokeLongNative(HInvoke* invoke) { in VisitMemoryPokeLongNative() argument
530 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeLongNative()
533 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPokeLongNative(HInvoke* invoke) { in VisitMemoryPokeLongNative() argument
536 vixl32::Register addr = LowRegisterFrom(invoke->GetLocations()->InAt(0)); in VisitMemoryPokeLongNative()
539 __ Str(LowRegisterFrom(invoke->GetLocations()->InAt(1)), MemOperand(addr)); in VisitMemoryPokeLongNative()
540 __ Str(HighRegisterFrom(invoke->GetLocations()->InAt(1)), MemOperand(addr, 4)); in VisitMemoryPokeLongNative()
543 void IntrinsicLocationsBuilderARMVIXL::VisitMemoryPokeShortNative(HInvoke* invoke) { in VisitMemoryPokeShortNative() argument
544 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeShortNative()
547 void IntrinsicCodeGeneratorARMVIXL::VisitMemoryPokeShortNative(HInvoke* invoke) { in VisitMemoryPokeShortNative() argument
549 __ Strh(InputRegisterAt(invoke, 1), MemOperand(LowRegisterFrom(invoke->GetLocations()->InAt(0)))); in VisitMemoryPokeShortNative()
552 void IntrinsicLocationsBuilderARMVIXL::VisitThreadCurrentThread(HInvoke* invoke) { in VisitThreadCurrentThread() argument
554 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitThreadCurrentThread()
558 void IntrinsicCodeGeneratorARMVIXL::VisitThreadCurrentThread(HInvoke* invoke) { in VisitThreadCurrentThread() argument
560 __ Ldr(OutputRegister(invoke), in VisitThreadCurrentThread()
564 static void GenUnsafeGet(HInvoke* invoke, in GenUnsafeGet() argument
568 LocationSummary* locations = invoke->GetLocations(); in GenUnsafeGet()
571 vixl32::Register base = InputRegisterAt(invoke, 1); // Object pointer. in GenUnsafeGet()
595 invoke, trg_loc, base, src, /* needs_null_check= */ false); in GenUnsafeGet()
604 codegen->GenerateReadBarrierSlow(invoke, trg_loc, trg_loc, base_loc, 0U, offset_loc); in GenUnsafeGet()
640 HInvoke* invoke, in CreateIntIntIntToIntLocations() argument
643 (invoke->GetIntrinsic() == Intrinsics::kUnsafeGetObject || in CreateIntIntIntToIntLocations()
644 invoke->GetIntrinsic() == Intrinsics::kUnsafeGetObjectVolatile); in CreateIntIntIntToIntLocations()
646 new (allocator) LocationSummary(invoke, in CreateIntIntIntToIntLocations()
666 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeGet(HInvoke* invoke) { in VisitUnsafeGet() argument
667 CreateIntIntIntToIntLocations(allocator_, invoke, DataType::Type::kInt32); in VisitUnsafeGet()
669 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeGetVolatile(HInvoke* invoke) { in VisitUnsafeGetVolatile() argument
670 CreateIntIntIntToIntLocations(allocator_, invoke, DataType::Type::kInt32); in VisitUnsafeGetVolatile()
672 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeGetLong(HInvoke* invoke) { in VisitUnsafeGetLong() argument
673 CreateIntIntIntToIntLocations(allocator_, invoke, DataType::Type::kInt64); in VisitUnsafeGetLong()
675 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeGetLongVolatile(HInvoke* invoke) { in VisitUnsafeGetLongVolatile() argument
676 CreateIntIntIntToIntLocations(allocator_, invoke, DataType::Type::kInt64); in VisitUnsafeGetLongVolatile()
678 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeGetObject(HInvoke* invoke) { in VisitUnsafeGetObject() argument
679 CreateIntIntIntToIntLocations(allocator_, invoke, DataType::Type::kReference); in VisitUnsafeGetObject()
681 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeGetObjectVolatile(HInvoke* invoke) { in VisitUnsafeGetObjectVolatile() argument
682 CreateIntIntIntToIntLocations(allocator_, invoke, DataType::Type::kReference); in VisitUnsafeGetObjectVolatile()
685 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeGet(HInvoke* invoke) { in VisitUnsafeGet() argument
686 GenUnsafeGet(invoke, DataType::Type::kInt32, /* is_volatile= */ false, codegen_); in VisitUnsafeGet()
688 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeGetVolatile(HInvoke* invoke) { in VisitUnsafeGetVolatile() argument
689 GenUnsafeGet(invoke, DataType::Type::kInt32, /* is_volatile= */ true, codegen_); in VisitUnsafeGetVolatile()
691 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeGetLong(HInvoke* invoke) { in VisitUnsafeGetLong() argument
692 GenUnsafeGet(invoke, DataType::Type::kInt64, /* is_volatile= */ false, codegen_); in VisitUnsafeGetLong()
694 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeGetLongVolatile(HInvoke* invoke) { in VisitUnsafeGetLongVolatile() argument
695 GenUnsafeGet(invoke, DataType::Type::kInt64, /* is_volatile= */ true, codegen_); in VisitUnsafeGetLongVolatile()
697 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeGetObject(HInvoke* invoke) { in VisitUnsafeGetObject() argument
698 GenUnsafeGet(invoke, DataType::Type::kReference, /* is_volatile= */ false, codegen_); in VisitUnsafeGetObject()
700 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeGetObjectVolatile(HInvoke* invoke) { in VisitUnsafeGetObjectVolatile() argument
701 GenUnsafeGet(invoke, DataType::Type::kReference, /* is_volatile= */ true, codegen_); in VisitUnsafeGetObjectVolatile()
708 HInvoke* invoke) { in CreateIntIntIntIntToVoid() argument
710 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntIntIntIntToVoid()
729 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePut(HInvoke* invoke) { in VisitUnsafePut() argument
731 allocator_, features_, DataType::Type::kInt32, /* is_volatile= */ false, invoke); in VisitUnsafePut()
733 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutOrdered(HInvoke* invoke) { in VisitUnsafePutOrdered() argument
735 allocator_, features_, DataType::Type::kInt32, /* is_volatile= */ false, invoke); in VisitUnsafePutOrdered()
737 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutVolatile(HInvoke* invoke) { in VisitUnsafePutVolatile() argument
739 allocator_, features_, DataType::Type::kInt32, /* is_volatile= */ true, invoke); in VisitUnsafePutVolatile()
741 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutObject(HInvoke* invoke) { in VisitUnsafePutObject() argument
743 allocator_, features_, DataType::Type::kReference, /* is_volatile= */ false, invoke); in VisitUnsafePutObject()
745 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutObjectOrdered(HInvoke* invoke) { in VisitUnsafePutObjectOrdered() argument
747 allocator_, features_, DataType::Type::kReference, /* is_volatile= */ false, invoke); in VisitUnsafePutObjectOrdered()
749 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutObjectVolatile(HInvoke* invoke) { in VisitUnsafePutObjectVolatile() argument
751 allocator_, features_, DataType::Type::kReference, /* is_volatile= */ true, invoke); in VisitUnsafePutObjectVolatile()
753 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutLong(HInvoke* invoke) { in VisitUnsafePutLong() argument
755 allocator_, features_, DataType::Type::kInt64, /* is_volatile= */ false, invoke); in VisitUnsafePutLong()
757 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutLongOrdered(HInvoke* invoke) { in VisitUnsafePutLongOrdered() argument
759 allocator_, features_, DataType::Type::kInt64, /* is_volatile= */ false, invoke); in VisitUnsafePutLongOrdered()
761 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafePutLongVolatile(HInvoke* invoke) { in VisitUnsafePutLongVolatile() argument
763 allocator_, features_, DataType::Type::kInt64, /* is_volatile= */ true, invoke); in VisitUnsafePutLongVolatile()
825 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePut(HInvoke* invoke) { in VisitUnsafePut() argument
826 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePut()
832 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutOrdered(HInvoke* invoke) { in VisitUnsafePutOrdered() argument
833 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutOrdered()
839 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutVolatile(HInvoke* invoke) { in VisitUnsafePutVolatile() argument
840 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutVolatile()
846 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutObject(HInvoke* invoke) { in VisitUnsafePutObject() argument
847 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutObject()
853 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutObjectOrdered(HInvoke* invoke) { in VisitUnsafePutObjectOrdered() argument
854 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutObjectOrdered()
860 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutObjectVolatile(HInvoke* invoke) { in VisitUnsafePutObjectVolatile() argument
861 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutObjectVolatile()
867 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutLong(HInvoke* invoke) { in VisitUnsafePutLong() argument
868 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutLong()
874 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutLongOrdered(HInvoke* invoke) { in VisitUnsafePutLongOrdered() argument
875 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutLongOrdered()
881 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafePutLongVolatile(HInvoke* invoke) { in VisitUnsafePutLongVolatile() argument
882 GenUnsafePut(invoke->GetLocations(), in VisitUnsafePutLongVolatile()
889 static void CreateIntIntIntIntIntToIntPlusTemps(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntIntIntIntToIntPlusTemps() argument
892 (invoke->GetIntrinsic() == Intrinsics::kUnsafeCASObject); in CreateIntIntIntIntIntToIntPlusTemps()
894 new (allocator) LocationSummary(invoke, in CreateIntIntIntIntIntToIntPlusTemps()
919 explicit BakerReadBarrierCasSlowPathARMVIXL(HInvoke* invoke) in BakerReadBarrierCasSlowPathARMVIXL() argument
920 : SlowPathCodeARMVIXL(invoke) {} in BakerReadBarrierCasSlowPathARMVIXL()
984 static void GenCas(HInvoke* invoke, DataType::Type type, CodeGeneratorARMVIXL* codegen) { in GenCas() argument
988 LocationSummary* locations = invoke->GetLocations(); in GenCas()
990 vixl32::Register out = OutputRegister(invoke); // Boolean result. in GenCas()
992 vixl32::Register base = InputRegisterAt(invoke, 1); // Object pointer. in GenCas()
994 vixl32::Register expected = InputRegisterAt(invoke, 3); // Expected. in GenCas()
995 vixl32::Register value = InputRegisterAt(invoke, 4); // Value. in GenCas()
1018 new (codegen->GetScopedAllocator()) BakerReadBarrierCasSlowPathARMVIXL(invoke); in GenCas()
1070 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeCASInt(HInvoke* invoke) { in VisitUnsafeCASInt() argument
1071 CreateIntIntIntIntIntToIntPlusTemps(allocator_, invoke); in VisitUnsafeCASInt()
1073 void IntrinsicLocationsBuilderARMVIXL::VisitUnsafeCASObject(HInvoke* invoke) { in VisitUnsafeCASObject() argument
1080 CreateIntIntIntIntIntToIntPlusTemps(allocator_, invoke); in VisitUnsafeCASObject()
1082 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeCASInt(HInvoke* invoke) { in VisitUnsafeCASInt() argument
1083 GenCas(invoke, DataType::Type::kInt32, codegen_); in VisitUnsafeCASInt()
1085 void IntrinsicCodeGeneratorARMVIXL::VisitUnsafeCASObject(HInvoke* invoke) { in VisitUnsafeCASObject() argument
1090 GenCas(invoke, DataType::Type::kReference, codegen_); in VisitUnsafeCASObject()
1093 void IntrinsicLocationsBuilderARMVIXL::VisitStringCompareTo(HInvoke* invoke) { in VisitStringCompareTo() argument
1096 new (allocator_) LocationSummary(invoke, in VisitStringCompareTo()
1097 invoke->InputAt(1)->CanBeNull() in VisitStringCompareTo()
1120 HInvoke* invoke,
1124 void IntrinsicCodeGeneratorARMVIXL::VisitStringCompareTo(HInvoke* invoke) { in VisitStringCompareTo() argument
1126 LocationSummary* locations = invoke->GetLocations(); in VisitStringCompareTo()
1128 const vixl32::Register str = InputRegisterAt(invoke, 0); in VisitStringCompareTo()
1129 const vixl32::Register arg = InputRegisterAt(invoke, 1); in VisitStringCompareTo()
1130 const vixl32::Register out = OutputRegister(invoke); in VisitStringCompareTo()
1147 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in VisitStringCompareTo()
1151 const bool can_slow_path = invoke->InputAt(1)->CanBeNull(); in VisitStringCompareTo()
1153 slow_path = new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARMVIXL(invoke); in VisitStringCompareTo()
1210 GenerateStringCompareToLoop(assembler, invoke, &end, &different_compression); in VisitStringCompareTo()
1220 HInvoke* invoke, in GenerateStringCompareToLoop() argument
1223 LocationSummary* locations = invoke->GetLocations(); in GenerateStringCompareToLoop()
1225 const vixl32::Register str = InputRegisterAt(invoke, 0); in GenerateStringCompareToLoop()
1226 const vixl32::Register arg = InputRegisterAt(invoke, 1); in GenerateStringCompareToLoop()
1227 const vixl32::Register out = OutputRegister(invoke); in GenerateStringCompareToLoop()
1411 void IntrinsicLocationsBuilderARMVIXL::VisitStringEquals(HInvoke* invoke) { in VisitStringEquals() argument
1413 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitStringEquals()
1425 const char* const_string = GetConstString(invoke->InputAt(0), &const_string_length); in VisitStringEquals()
1427 const_string = GetConstString(invoke->InputAt(1), &const_string_length); in VisitStringEquals()
1443 void IntrinsicCodeGeneratorARMVIXL::VisitStringEquals(HInvoke* invoke) { in VisitStringEquals() argument
1445 LocationSummary* locations = invoke->GetLocations(); in VisitStringEquals()
1447 vixl32::Register str = InputRegisterAt(invoke, 0); in VisitStringEquals()
1448 vixl32::Register arg = InputRegisterAt(invoke, 1); in VisitStringEquals()
1449 vixl32::Register out = OutputRegister(invoke); in VisitStringEquals()
1457 vixl32::Label* final_label = codegen_->GetFinalLabel(invoke, &end); in VisitStringEquals()
1465 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in VisitStringEquals()
1467 StringEqualsOptimizations optimizations(invoke); in VisitStringEquals()
1499 const char* const_string = GetConstString(invoke->InputAt(0), &const_string_length); in VisitStringEquals()
1501 const_string = GetConstString(invoke->InputAt(1), &const_string_length); in VisitStringEquals()
1610 static void GenerateVisitStringIndexOf(HInvoke* invoke, in GenerateVisitStringIndexOf() argument
1614 LocationSummary* locations = invoke->GetLocations(); in GenerateVisitStringIndexOf()
1617 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in GenerateVisitStringIndexOf()
1622 HInstruction* code_point = invoke->InputAt(1); in GenerateVisitStringIndexOf()
1628 slow_path = new (codegen->GetScopedAllocator()) IntrinsicSlowPathARMVIXL(invoke); in GenerateVisitStringIndexOf()
1635 vixl32::Register char_reg = InputRegisterAt(invoke, 1); in GenerateVisitStringIndexOf()
1638 slow_path = new (codegen->GetScopedAllocator()) IntrinsicSlowPathARMVIXL(invoke); in GenerateVisitStringIndexOf()
1650 codegen->InvokeRuntime(kQuickIndexOf, invoke, invoke->GetDexPc(), slow_path); in GenerateVisitStringIndexOf()
1658 void IntrinsicLocationsBuilderARMVIXL::VisitStringIndexOf(HInvoke* invoke) { in VisitStringIndexOf() argument
1660 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringIndexOf()
1672 void IntrinsicCodeGeneratorARMVIXL::VisitStringIndexOf(HInvoke* invoke) { in VisitStringIndexOf() argument
1673 GenerateVisitStringIndexOf(invoke, GetAssembler(), codegen_, /* start_at_zero= */ true); in VisitStringIndexOf()
1676 void IntrinsicLocationsBuilderARMVIXL::VisitStringIndexOfAfter(HInvoke* invoke) { in VisitStringIndexOfAfter() argument
1678 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringIndexOfAfter()
1688 void IntrinsicCodeGeneratorARMVIXL::VisitStringIndexOfAfter(HInvoke* invoke) { in VisitStringIndexOfAfter() argument
1689 GenerateVisitStringIndexOf(invoke, GetAssembler(), codegen_, /* start_at_zero= */ false); in VisitStringIndexOfAfter()
1692 void IntrinsicLocationsBuilderARMVIXL::VisitStringNewStringFromBytes(HInvoke* invoke) { in VisitStringNewStringFromBytes() argument
1694 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringNewStringFromBytes()
1703 void IntrinsicCodeGeneratorARMVIXL::VisitStringNewStringFromBytes(HInvoke* invoke) { in VisitStringNewStringFromBytes() argument
1705 vixl32::Register byte_array = InputRegisterAt(invoke, 0); in VisitStringNewStringFromBytes()
1708 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARMVIXL(invoke); in VisitStringNewStringFromBytes()
1712 codegen_->InvokeRuntime(kQuickAllocStringFromBytes, invoke, invoke->GetDexPc(), slow_path); in VisitStringNewStringFromBytes()
1717 void IntrinsicLocationsBuilderARMVIXL::VisitStringNewStringFromChars(HInvoke* invoke) { in VisitStringNewStringFromChars() argument
1719 new (allocator_) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in VisitStringNewStringFromChars()
1727 void IntrinsicCodeGeneratorARMVIXL::VisitStringNewStringFromChars(HInvoke* invoke) { in VisitStringNewStringFromChars() argument
1734 codegen_->InvokeRuntime(kQuickAllocStringFromChars, invoke, invoke->GetDexPc()); in VisitStringNewStringFromChars()
1738 void IntrinsicLocationsBuilderARMVIXL::VisitStringNewStringFromString(HInvoke* invoke) { in VisitStringNewStringFromString() argument
1740 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringNewStringFromString()
1746 void IntrinsicCodeGeneratorARMVIXL::VisitStringNewStringFromString(HInvoke* invoke) { in VisitStringNewStringFromString() argument
1748 vixl32::Register string_to_copy = InputRegisterAt(invoke, 0); in VisitStringNewStringFromString()
1751 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARMVIXL(invoke); in VisitStringNewStringFromString()
1755 codegen_->InvokeRuntime(kQuickAllocStringFromString, invoke, invoke->GetDexPc(), slow_path); in VisitStringNewStringFromString()
1761 void IntrinsicLocationsBuilderARMVIXL::VisitSystemArrayCopy(HInvoke* invoke) { in VisitSystemArrayCopy() argument
1768 CodeGenerator::CreateSystemArrayCopyLocationSummary(invoke); in VisitSystemArrayCopy()
1769 LocationSummary* locations = invoke->GetLocations(); in VisitSystemArrayCopy()
1774 HIntConstant* src_pos = invoke->InputAt(1)->AsIntConstant(); in VisitSystemArrayCopy()
1775 HIntConstant* dest_pos = invoke->InputAt(3)->AsIntConstant(); in VisitSystemArrayCopy()
1776 HIntConstant* length = invoke->InputAt(4)->AsIntConstant(); in VisitSystemArrayCopy()
1858 void IntrinsicCodeGeneratorARMVIXL::VisitSystemArrayCopy(HInvoke* invoke) { in VisitSystemArrayCopy() argument
1864 LocationSummary* locations = invoke->GetLocations(); in VisitSystemArrayCopy()
1872 vixl32::Register src = InputRegisterAt(invoke, 0); in VisitSystemArrayCopy()
1874 vixl32::Register dest = InputRegisterAt(invoke, 2); in VisitSystemArrayCopy()
1885 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathARMVIXL(invoke); in VisitSystemArrayCopy()
1889 SystemArrayCopyOptimizations optimizations(invoke); in VisitSystemArrayCopy()
1979 invoke, temp1_loc, src, class_offset, temp2_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
1983 invoke, temp1_loc, temp1, component_offset, temp2_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
1995 invoke, temp1_loc, dest, class_offset, temp2_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
2007 invoke, temp2_loc, temp1, component_offset, temp3_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
2021 invoke, temp2_loc, src, class_offset, temp3_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
2030 invoke, temp1_loc, temp1, component_offset, temp2_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
2109 invoke, temp1_loc, src, class_offset, temp2_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
2112 invoke, temp3_loc, temp1, component_offset, temp2_loc, /* needs_null_check= */ false); in VisitSystemArrayCopy()
2191 new (codegen_->GetScopedAllocator()) ReadBarrierSystemArrayCopySlowPathARMVIXL(invoke); in VisitSystemArrayCopy()
2250 static void CreateFPToFPCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToFPCallLocations() argument
2256 if (invoke->GetBlock()->GetGraph()->IsDebuggable()) { in CreateFPToFPCallLocations()
2260 DCHECK_EQ(invoke->GetNumberOfArguments(), 1U); in CreateFPToFPCallLocations()
2261 DCHECK_EQ(invoke->InputAt(0)->GetType(), DataType::Type::kFloat64); in CreateFPToFPCallLocations()
2262 DCHECK_EQ(invoke->GetType(), DataType::Type::kFloat64); in CreateFPToFPCallLocations()
2265 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in CreateFPToFPCallLocations()
2275 static void CreateFPFPToFPCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPFPToFPCallLocations() argument
2281 if (invoke->GetBlock()->GetGraph()->IsDebuggable()) { in CreateFPFPToFPCallLocations()
2285 DCHECK_EQ(invoke->GetNumberOfArguments(), 2U); in CreateFPFPToFPCallLocations()
2286 DCHECK_EQ(invoke->InputAt(0)->GetType(), DataType::Type::kFloat64); in CreateFPFPToFPCallLocations()
2287 DCHECK_EQ(invoke->InputAt(1)->GetType(), DataType::Type::kFloat64); in CreateFPFPToFPCallLocations()
2288 DCHECK_EQ(invoke->GetType(), DataType::Type::kFloat64); in CreateFPFPToFPCallLocations()
2291 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in CreateFPFPToFPCallLocations()
2304 static void GenFPToFPCall(HInvoke* invoke, in GenFPToFPCall() argument
2308 LocationSummary* const locations = invoke->GetLocations(); in GenFPToFPCall()
2310 DCHECK_EQ(invoke->GetNumberOfArguments(), 1U); in GenFPToFPCall()
2316 InputDRegisterAt(invoke, 0)); in GenFPToFPCall()
2317 codegen->InvokeRuntime(entry, invoke, invoke->GetDexPc()); in GenFPToFPCall()
2318 __ Vmov(OutputDRegister(invoke), in GenFPToFPCall()
2323 static void GenFPFPToFPCall(HInvoke* invoke, in GenFPFPToFPCall() argument
2327 LocationSummary* const locations = invoke->GetLocations(); in GenFPFPToFPCall()
2329 DCHECK_EQ(invoke->GetNumberOfArguments(), 2U); in GenFPFPToFPCall()
2335 InputDRegisterAt(invoke, 0)); in GenFPFPToFPCall()
2338 InputDRegisterAt(invoke, 1)); in GenFPFPToFPCall()
2339 codegen->InvokeRuntime(entry, invoke, invoke->GetDexPc()); in GenFPFPToFPCall()
2340 __ Vmov(OutputDRegister(invoke), in GenFPFPToFPCall()
2345 void IntrinsicLocationsBuilderARMVIXL::VisitMathCos(HInvoke* invoke) { in VisitMathCos() argument
2346 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCos()
2349 void IntrinsicCodeGeneratorARMVIXL::VisitMathCos(HInvoke* invoke) { in VisitMathCos() argument
2350 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickCos); in VisitMathCos()
2353 void IntrinsicLocationsBuilderARMVIXL::VisitMathSin(HInvoke* invoke) { in VisitMathSin() argument
2354 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathSin()
2357 void IntrinsicCodeGeneratorARMVIXL::VisitMathSin(HInvoke* invoke) { in VisitMathSin() argument
2358 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickSin); in VisitMathSin()
2361 void IntrinsicLocationsBuilderARMVIXL::VisitMathAcos(HInvoke* invoke) { in VisitMathAcos() argument
2362 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAcos()
2365 void IntrinsicCodeGeneratorARMVIXL::VisitMathAcos(HInvoke* invoke) { in VisitMathAcos() argument
2366 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickAcos); in VisitMathAcos()
2369 void IntrinsicLocationsBuilderARMVIXL::VisitMathAsin(HInvoke* invoke) { in VisitMathAsin() argument
2370 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAsin()
2373 void IntrinsicCodeGeneratorARMVIXL::VisitMathAsin(HInvoke* invoke) { in VisitMathAsin() argument
2374 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickAsin); in VisitMathAsin()
2377 void IntrinsicLocationsBuilderARMVIXL::VisitMathAtan(HInvoke* invoke) { in VisitMathAtan() argument
2378 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAtan()
2381 void IntrinsicCodeGeneratorARMVIXL::VisitMathAtan(HInvoke* invoke) { in VisitMathAtan() argument
2382 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickAtan); in VisitMathAtan()
2385 void IntrinsicLocationsBuilderARMVIXL::VisitMathCbrt(HInvoke* invoke) { in VisitMathCbrt() argument
2386 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCbrt()
2389 void IntrinsicCodeGeneratorARMVIXL::VisitMathCbrt(HInvoke* invoke) { in VisitMathCbrt() argument
2390 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickCbrt); in VisitMathCbrt()
2393 void IntrinsicLocationsBuilderARMVIXL::VisitMathCosh(HInvoke* invoke) { in VisitMathCosh() argument
2394 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCosh()
2397 void IntrinsicCodeGeneratorARMVIXL::VisitMathCosh(HInvoke* invoke) { in VisitMathCosh() argument
2398 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickCosh); in VisitMathCosh()
2401 void IntrinsicLocationsBuilderARMVIXL::VisitMathExp(HInvoke* invoke) { in VisitMathExp() argument
2402 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathExp()
2405 void IntrinsicCodeGeneratorARMVIXL::VisitMathExp(HInvoke* invoke) { in VisitMathExp() argument
2406 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickExp); in VisitMathExp()
2409 void IntrinsicLocationsBuilderARMVIXL::VisitMathExpm1(HInvoke* invoke) { in VisitMathExpm1() argument
2410 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathExpm1()
2413 void IntrinsicCodeGeneratorARMVIXL::VisitMathExpm1(HInvoke* invoke) { in VisitMathExpm1() argument
2414 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickExpm1); in VisitMathExpm1()
2417 void IntrinsicLocationsBuilderARMVIXL::VisitMathLog(HInvoke* invoke) { in VisitMathLog() argument
2418 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathLog()
2421 void IntrinsicCodeGeneratorARMVIXL::VisitMathLog(HInvoke* invoke) { in VisitMathLog() argument
2422 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickLog); in VisitMathLog()
2425 void IntrinsicLocationsBuilderARMVIXL::VisitMathLog10(HInvoke* invoke) { in VisitMathLog10() argument
2426 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathLog10()
2429 void IntrinsicCodeGeneratorARMVIXL::VisitMathLog10(HInvoke* invoke) { in VisitMathLog10() argument
2430 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickLog10); in VisitMathLog10()
2433 void IntrinsicLocationsBuilderARMVIXL::VisitMathSinh(HInvoke* invoke) { in VisitMathSinh() argument
2434 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathSinh()
2437 void IntrinsicCodeGeneratorARMVIXL::VisitMathSinh(HInvoke* invoke) { in VisitMathSinh() argument
2438 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickSinh); in VisitMathSinh()
2441 void IntrinsicLocationsBuilderARMVIXL::VisitMathTan(HInvoke* invoke) { in VisitMathTan() argument
2442 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathTan()
2445 void IntrinsicCodeGeneratorARMVIXL::VisitMathTan(HInvoke* invoke) { in VisitMathTan() argument
2446 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickTan); in VisitMathTan()
2449 void IntrinsicLocationsBuilderARMVIXL::VisitMathTanh(HInvoke* invoke) { in VisitMathTanh() argument
2450 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathTanh()
2453 void IntrinsicCodeGeneratorARMVIXL::VisitMathTanh(HInvoke* invoke) { in VisitMathTanh() argument
2454 GenFPToFPCall(invoke, GetAssembler(), codegen_, kQuickTanh); in VisitMathTanh()
2457 void IntrinsicLocationsBuilderARMVIXL::VisitMathAtan2(HInvoke* invoke) { in VisitMathAtan2() argument
2458 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathAtan2()
2461 void IntrinsicCodeGeneratorARMVIXL::VisitMathAtan2(HInvoke* invoke) { in VisitMathAtan2() argument
2462 GenFPFPToFPCall(invoke, GetAssembler(), codegen_, kQuickAtan2); in VisitMathAtan2()
2465 void IntrinsicLocationsBuilderARMVIXL::VisitMathPow(HInvoke* invoke) { in VisitMathPow() argument
2466 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathPow()
2469 void IntrinsicCodeGeneratorARMVIXL::VisitMathPow(HInvoke* invoke) { in VisitMathPow() argument
2470 GenFPFPToFPCall(invoke, GetAssembler(), codegen_, kQuickPow); in VisitMathPow()
2473 void IntrinsicLocationsBuilderARMVIXL::VisitMathHypot(HInvoke* invoke) { in VisitMathHypot() argument
2474 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathHypot()
2477 void IntrinsicCodeGeneratorARMVIXL::VisitMathHypot(HInvoke* invoke) { in VisitMathHypot() argument
2478 GenFPFPToFPCall(invoke, GetAssembler(), codegen_, kQuickHypot); in VisitMathHypot()
2481 void IntrinsicLocationsBuilderARMVIXL::VisitMathNextAfter(HInvoke* invoke) { in VisitMathNextAfter() argument
2482 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathNextAfter()
2485 void IntrinsicCodeGeneratorARMVIXL::VisitMathNextAfter(HInvoke* invoke) { in VisitMathNextAfter() argument
2486 GenFPFPToFPCall(invoke, GetAssembler(), codegen_, kQuickNextAfter); in VisitMathNextAfter()
2489 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerReverse(HInvoke* invoke) { in VisitIntegerReverse() argument
2490 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerReverse()
2493 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerReverse(HInvoke* invoke) { in VisitIntegerReverse() argument
2495 __ Rbit(OutputRegister(invoke), InputRegisterAt(invoke, 0)); in VisitIntegerReverse()
2498 void IntrinsicLocationsBuilderARMVIXL::VisitLongReverse(HInvoke* invoke) { in VisitLongReverse() argument
2499 CreateLongToLongLocationsWithOverlap(allocator_, invoke); in VisitLongReverse()
2502 void IntrinsicCodeGeneratorARMVIXL::VisitLongReverse(HInvoke* invoke) { in VisitLongReverse() argument
2504 LocationSummary* locations = invoke->GetLocations(); in VisitLongReverse()
2515 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerReverseBytes(HInvoke* invoke) { in VisitIntegerReverseBytes() argument
2516 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerReverseBytes()
2519 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerReverseBytes(HInvoke* invoke) { in VisitIntegerReverseBytes() argument
2521 __ Rev(OutputRegister(invoke), InputRegisterAt(invoke, 0)); in VisitIntegerReverseBytes()
2524 void IntrinsicLocationsBuilderARMVIXL::VisitLongReverseBytes(HInvoke* invoke) { in VisitLongReverseBytes() argument
2525 CreateLongToLongLocationsWithOverlap(allocator_, invoke); in VisitLongReverseBytes()
2528 void IntrinsicCodeGeneratorARMVIXL::VisitLongReverseBytes(HInvoke* invoke) { in VisitLongReverseBytes() argument
2530 LocationSummary* locations = invoke->GetLocations(); in VisitLongReverseBytes()
2541 void IntrinsicLocationsBuilderARMVIXL::VisitShortReverseBytes(HInvoke* invoke) { in VisitShortReverseBytes() argument
2542 CreateIntToIntLocations(allocator_, invoke); in VisitShortReverseBytes()
2545 void IntrinsicCodeGeneratorARMVIXL::VisitShortReverseBytes(HInvoke* invoke) { in VisitShortReverseBytes() argument
2547 __ Revsh(OutputRegister(invoke), InputRegisterAt(invoke, 0)); in VisitShortReverseBytes()
2578 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerBitCount(HInvoke* invoke) { in VisitIntegerBitCount() argument
2579 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerBitCount()
2580 invoke->GetLocations()->AddTemp(Location::RequiresFpuRegister()); in VisitIntegerBitCount()
2583 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerBitCount(HInvoke* invoke) { in VisitIntegerBitCount() argument
2584 GenBitCount(invoke, DataType::Type::kInt32, GetAssembler()); in VisitIntegerBitCount()
2587 void IntrinsicLocationsBuilderARMVIXL::VisitLongBitCount(HInvoke* invoke) { in VisitLongBitCount() argument
2588 VisitIntegerBitCount(invoke); in VisitLongBitCount()
2591 void IntrinsicCodeGeneratorARMVIXL::VisitLongBitCount(HInvoke* invoke) { in VisitLongBitCount() argument
2592 GenBitCount(invoke, DataType::Type::kInt64, GetAssembler()); in VisitLongBitCount()
2595 static void GenHighestOneBit(HInvoke* invoke, in GenHighestOneBit() argument
2605 LocationSummary* locations = invoke->GetLocations(); in GenHighestOneBit()
2636 vixl32::Register out = OutputRegister(invoke); in GenHighestOneBit()
2637 vixl32::Register in = InputRegisterAt(invoke, 0); in GenHighestOneBit()
2645 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerHighestOneBit(HInvoke* invoke) { in VisitIntegerHighestOneBit() argument
2646 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerHighestOneBit()
2649 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerHighestOneBit(HInvoke* invoke) { in VisitIntegerHighestOneBit() argument
2650 GenHighestOneBit(invoke, DataType::Type::kInt32, codegen_); in VisitIntegerHighestOneBit()
2653 void IntrinsicLocationsBuilderARMVIXL::VisitLongHighestOneBit(HInvoke* invoke) { in VisitLongHighestOneBit() argument
2654 CreateLongToLongLocationsWithOverlap(allocator_, invoke); in VisitLongHighestOneBit()
2657 void IntrinsicCodeGeneratorARMVIXL::VisitLongHighestOneBit(HInvoke* invoke) { in VisitLongHighestOneBit() argument
2658 GenHighestOneBit(invoke, DataType::Type::kInt64, codegen_); in VisitLongHighestOneBit()
2661 static void GenLowestOneBit(HInvoke* invoke, in GenLowestOneBit() argument
2671 LocationSummary* locations = invoke->GetLocations(); in GenLowestOneBit()
2702 vixl32::Register out = OutputRegister(invoke); in GenLowestOneBit()
2703 vixl32::Register in = InputRegisterAt(invoke, 0); in GenLowestOneBit()
2710 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerLowestOneBit(HInvoke* invoke) { in VisitIntegerLowestOneBit() argument
2711 CreateIntToIntLocations(allocator_, invoke); in VisitIntegerLowestOneBit()
2714 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerLowestOneBit(HInvoke* invoke) { in VisitIntegerLowestOneBit() argument
2715 GenLowestOneBit(invoke, DataType::Type::kInt32, codegen_); in VisitIntegerLowestOneBit()
2718 void IntrinsicLocationsBuilderARMVIXL::VisitLongLowestOneBit(HInvoke* invoke) { in VisitLongLowestOneBit() argument
2719 CreateLongToLongLocationsWithOverlap(allocator_, invoke); in VisitLongLowestOneBit()
2722 void IntrinsicCodeGeneratorARMVIXL::VisitLongLowestOneBit(HInvoke* invoke) { in VisitLongLowestOneBit() argument
2723 GenLowestOneBit(invoke, DataType::Type::kInt64, codegen_); in VisitLongLowestOneBit()
2726 void IntrinsicLocationsBuilderARMVIXL::VisitStringGetCharsNoCheck(HInvoke* invoke) { in VisitStringGetCharsNoCheck() argument
2728 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitStringGetCharsNoCheck()
2741 void IntrinsicCodeGeneratorARMVIXL::VisitStringGetCharsNoCheck(HInvoke* invoke) { in VisitStringGetCharsNoCheck() argument
2743 LocationSummary* locations = invoke->GetLocations(); in VisitStringGetCharsNoCheck()
2757 vixl32::Register srcObj = InputRegisterAt(invoke, 0); in VisitStringGetCharsNoCheck()
2758 vixl32::Register srcBegin = InputRegisterAt(invoke, 1); in VisitStringGetCharsNoCheck()
2759 vixl32::Register srcEnd = InputRegisterAt(invoke, 2); in VisitStringGetCharsNoCheck()
2760 vixl32::Register dstObj = InputRegisterAt(invoke, 3); in VisitStringGetCharsNoCheck()
2761 vixl32::Register dstBegin = InputRegisterAt(invoke, 4); in VisitStringGetCharsNoCheck()
2768 vixl32::Label* final_label = codegen_->GetFinalLabel(invoke, &done); in VisitStringGetCharsNoCheck()
2853 void IntrinsicLocationsBuilderARMVIXL::VisitFloatIsInfinite(HInvoke* invoke) { in VisitFloatIsInfinite() argument
2854 CreateFPToIntLocations(allocator_, invoke); in VisitFloatIsInfinite()
2857 void IntrinsicCodeGeneratorARMVIXL::VisitFloatIsInfinite(HInvoke* invoke) { in VisitFloatIsInfinite() argument
2859 const vixl32::Register out = OutputRegister(invoke); in VisitFloatIsInfinite()
2864 __ Vmov(out, InputSRegisterAt(invoke, 0)); in VisitFloatIsInfinite()
2871 void IntrinsicLocationsBuilderARMVIXL::VisitDoubleIsInfinite(HInvoke* invoke) { in VisitDoubleIsInfinite() argument
2872 CreateFPToIntLocations(allocator_, invoke); in VisitDoubleIsInfinite()
2875 void IntrinsicCodeGeneratorARMVIXL::VisitDoubleIsInfinite(HInvoke* invoke) { in VisitDoubleIsInfinite() argument
2877 const vixl32::Register out = OutputRegister(invoke); in VisitDoubleIsInfinite()
2889 __ Vmov(temp, out, InputDRegisterAt(invoke, 0)); in VisitDoubleIsInfinite()
2897 void IntrinsicLocationsBuilderARMVIXL::VisitMathCeil(HInvoke* invoke) { in VisitMathCeil() argument
2899 CreateFPToFPLocations(allocator_, invoke); in VisitMathCeil()
2903 void IntrinsicCodeGeneratorARMVIXL::VisitMathCeil(HInvoke* invoke) { in VisitMathCeil() argument
2906 __ Vrintp(F64, OutputDRegister(invoke), InputDRegisterAt(invoke, 0)); in VisitMathCeil()
2909 void IntrinsicLocationsBuilderARMVIXL::VisitMathFloor(HInvoke* invoke) { in VisitMathFloor() argument
2911 CreateFPToFPLocations(allocator_, invoke); in VisitMathFloor()
2915 void IntrinsicCodeGeneratorARMVIXL::VisitMathFloor(HInvoke* invoke) { in VisitMathFloor() argument
2918 __ Vrintm(F64, OutputDRegister(invoke), InputDRegisterAt(invoke, 0)); in VisitMathFloor()
2921 void IntrinsicLocationsBuilderARMVIXL::VisitIntegerValueOf(HInvoke* invoke) { in VisitIntegerValueOf() argument
2924 invoke, in VisitIntegerValueOf()
2930 void IntrinsicCodeGeneratorARMVIXL::VisitIntegerValueOf(HInvoke* invoke) { in VisitIntegerValueOf() argument
2932 IntrinsicVisitor::ComputeIntegerValueOfInfo(invoke, codegen_->GetCompilerOptions()); in VisitIntegerValueOf()
2933 LocationSummary* locations = invoke->GetLocations(); in VisitIntegerValueOf()
2939 if (invoke->InputAt(0)->IsConstant()) { in VisitIntegerValueOf()
2940 int32_t value = invoke->InputAt(0)->AsIntConstant()->GetValue(); in VisitIntegerValueOf()
2950 codegen_->AllocateInstanceForIntrinsic(invoke->AsInvokeStaticOrDirect(), in VisitIntegerValueOf()
2973 codegen_->AllocateInstanceForIntrinsic(invoke->AsInvokeStaticOrDirect(), in VisitIntegerValueOf()
2983 void IntrinsicLocationsBuilderARMVIXL::VisitThreadInterrupted(HInvoke* invoke) { in VisitThreadInterrupted() argument
2985 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitThreadInterrupted()
2989 void IntrinsicCodeGeneratorARMVIXL::VisitThreadInterrupted(HInvoke* invoke) { in VisitThreadInterrupted() argument
2991 vixl32::Register out = RegisterFrom(invoke->GetLocations()->Out()); in VisitThreadInterrupted()
2997 vixl32::Label* const final_label = codegen_->GetFinalLabel(invoke, &done); in VisitThreadInterrupted()
3008 void IntrinsicLocationsBuilderARMVIXL::VisitReachabilityFence(HInvoke* invoke) { in VisitReachabilityFence() argument
3010 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitReachabilityFence()
3014 void IntrinsicCodeGeneratorARMVIXL::VisitReachabilityFence(HInvoke* invoke ATTRIBUTE_UNUSED) { } in VisitReachabilityFence()