Lines Matching full:invoke
93 bool IntrinsicLocationsBuilderRISCV64::TryDispatch(HInvoke* invoke) { in TryDispatch() argument
94 Dispatch(invoke); in TryDispatch()
95 LocationSummary* res = invoke->GetLocations(); in TryDispatch()
106 static void CreateFPToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToIntLocations() argument
108 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToIntLocations()
113 static void CreateIntToFPLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntToFPLocations() argument
115 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntToFPLocations()
120 static void CreateFPToFPCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPToFPCallLocations() argument
121 DCHECK_EQ(invoke->GetNumberOfArguments(), 1U); in CreateFPToFPCallLocations()
122 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(0)->GetType())); in CreateFPToFPCallLocations()
123 DCHECK(DataType::IsFloatingPointType(invoke->GetType())); in CreateFPToFPCallLocations()
126 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in CreateFPToFPCallLocations()
130 locations->SetOut(calling_convention.GetReturnLocation(invoke->GetType())); in CreateFPToFPCallLocations()
133 static void CreateFPFPToFPCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFPFPToFPCallLocations() argument
134 DCHECK_EQ(invoke->GetNumberOfArguments(), 2U); in CreateFPFPToFPCallLocations()
135 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(0)->GetType())); in CreateFPFPToFPCallLocations()
136 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(1)->GetType())); in CreateFPFPToFPCallLocations()
137 DCHECK(DataType::IsFloatingPointType(invoke->GetType())); in CreateFPFPToFPCallLocations()
140 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in CreateFPFPToFPCallLocations()
145 locations->SetOut(calling_convention.GetReturnLocation(invoke->GetType())); in CreateFPFPToFPCallLocations()
148 static void CreateFpFpFpToFpNoOverlapLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateFpFpFpToFpNoOverlapLocations() argument
149 DCHECK_EQ(invoke->GetNumberOfArguments(), 3U); in CreateFpFpFpToFpNoOverlapLocations()
150 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(0)->GetType())); in CreateFpFpFpToFpNoOverlapLocations()
151 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(1)->GetType())); in CreateFpFpFpToFpNoOverlapLocations()
152 DCHECK(DataType::IsFloatingPointType(invoke->InputAt(2)->GetType())); in CreateFpFpFpToFpNoOverlapLocations()
153 DCHECK(DataType::IsFloatingPointType(invoke->GetType())); in CreateFpFpFpToFpNoOverlapLocations()
156 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFpFpFpToFpNoOverlapLocations()
165 HInvoke* invoke, in CreateFPToFPLocations() argument
168 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateFPToFPLocations()
173 void IntrinsicLocationsBuilderRISCV64::VisitDoubleDoubleToRawLongBits(HInvoke* invoke) { in VisitDoubleDoubleToRawLongBits() argument
174 CreateFPToIntLocations(allocator_, invoke); in VisitDoubleDoubleToRawLongBits()
177 void IntrinsicCodeGeneratorRISCV64::VisitDoubleDoubleToRawLongBits(HInvoke* invoke) { in VisitDoubleDoubleToRawLongBits() argument
178 LocationSummary* locations = invoke->GetLocations(); in VisitDoubleDoubleToRawLongBits()
183 void IntrinsicLocationsBuilderRISCV64::VisitDoubleLongBitsToDouble(HInvoke* invoke) { in VisitDoubleLongBitsToDouble() argument
184 CreateIntToFPLocations(allocator_, invoke); in VisitDoubleLongBitsToDouble()
187 void IntrinsicCodeGeneratorRISCV64::VisitDoubleLongBitsToDouble(HInvoke* invoke) { in VisitDoubleLongBitsToDouble() argument
188 LocationSummary* locations = invoke->GetLocations(); in VisitDoubleLongBitsToDouble()
193 void IntrinsicLocationsBuilderRISCV64::VisitFloatFloatToRawIntBits(HInvoke* invoke) { in VisitFloatFloatToRawIntBits() argument
194 CreateFPToIntLocations(allocator_, invoke); in VisitFloatFloatToRawIntBits()
197 void IntrinsicCodeGeneratorRISCV64::VisitFloatFloatToRawIntBits(HInvoke* invoke) { in VisitFloatFloatToRawIntBits() argument
198 LocationSummary* locations = invoke->GetLocations(); in VisitFloatFloatToRawIntBits()
203 void IntrinsicLocationsBuilderRISCV64::VisitFloatIntBitsToFloat(HInvoke* invoke) { in VisitFloatIntBitsToFloat() argument
204 CreateIntToFPLocations(allocator_, invoke); in VisitFloatIntBitsToFloat()
207 void IntrinsicCodeGeneratorRISCV64::VisitFloatIntBitsToFloat(HInvoke* invoke) { in VisitFloatIntBitsToFloat() argument
208 LocationSummary* locations = invoke->GetLocations(); in VisitFloatIntBitsToFloat()
213 void IntrinsicLocationsBuilderRISCV64::VisitDoubleIsInfinite(HInvoke* invoke) { in VisitDoubleIsInfinite() argument
214 CreateFPToIntLocations(allocator_, invoke); in VisitDoubleIsInfinite()
217 void IntrinsicCodeGeneratorRISCV64::VisitDoubleIsInfinite(HInvoke* invoke) { in VisitDoubleIsInfinite() argument
218 LocationSummary* locations = invoke->GetLocations(); in VisitDoubleIsInfinite()
226 void IntrinsicLocationsBuilderRISCV64::VisitFloatIsInfinite(HInvoke* invoke) { in VisitFloatIsInfinite() argument
227 CreateFPToIntLocations(allocator_, invoke); in VisitFloatIsInfinite()
230 void IntrinsicCodeGeneratorRISCV64::VisitFloatIsInfinite(HInvoke* invoke) { in VisitFloatIsInfinite() argument
231 LocationSummary* locations = invoke->GetLocations(); in VisitFloatIsInfinite()
239 static void CreateIntToIntNoOverlapLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntToIntNoOverlapLocations() argument
241 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntToIntNoOverlapLocations()
247 void EmitMemoryPeek(HInvoke* invoke, EmitOp&& emit_op) { in EmitMemoryPeek() argument
248 LocationSummary* locations = invoke->GetLocations(); in EmitMemoryPeek()
252 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPeekByte(HInvoke* invoke) { in VisitMemoryPeekByte() argument
253 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitMemoryPeekByte()
256 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPeekByte(HInvoke* invoke) { in VisitMemoryPeekByte() argument
258 EmitMemoryPeek(invoke, [&](XRegister rd, XRegister rs1) { __ Lb(rd, rs1, 0); }); in VisitMemoryPeekByte()
261 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPeekIntNative(HInvoke* invoke) { in VisitMemoryPeekIntNative() argument
262 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitMemoryPeekIntNative()
265 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPeekIntNative(HInvoke* invoke) { in VisitMemoryPeekIntNative() argument
267 EmitMemoryPeek(invoke, [&](XRegister rd, XRegister rs1) { __ Lw(rd, rs1, 0); }); in VisitMemoryPeekIntNative()
270 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPeekLongNative(HInvoke* invoke) { in VisitMemoryPeekLongNative() argument
271 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitMemoryPeekLongNative()
274 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPeekLongNative(HInvoke* invoke) { in VisitMemoryPeekLongNative() argument
276 EmitMemoryPeek(invoke, [&](XRegister rd, XRegister rs1) { __ Ld(rd, rs1, 0); }); in VisitMemoryPeekLongNative()
279 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPeekShortNative(HInvoke* invoke) { in VisitMemoryPeekShortNative() argument
280 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitMemoryPeekShortNative()
283 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPeekShortNative(HInvoke* invoke) { in VisitMemoryPeekShortNative() argument
285 EmitMemoryPeek(invoke, [&](XRegister rd, XRegister rs1) { __ Lh(rd, rs1, 0); }); in VisitMemoryPeekShortNative()
288 static void CreateIntIntToVoidLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntToVoidLocations() argument
290 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateIntIntToVoidLocations()
295 static void CreateIntIntToIntSlowPathCallLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateIntIntToIntSlowPathCallLocations() argument
297 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnSlowPath, kIntrinsified); in CreateIntIntToIntSlowPathCallLocations()
305 void EmitMemoryPoke(HInvoke* invoke, EmitOp&& emit_op) { in EmitMemoryPoke() argument
306 LocationSummary* locations = invoke->GetLocations(); in EmitMemoryPoke()
310 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPokeByte(HInvoke* invoke) { in VisitMemoryPokeByte() argument
311 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeByte()
314 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPokeByte(HInvoke* invoke) { in VisitMemoryPokeByte() argument
316 EmitMemoryPoke(invoke, [&](XRegister rs2, XRegister rs1) { __ Sb(rs2, rs1, 0); }); in VisitMemoryPokeByte()
319 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPokeIntNative(HInvoke* invoke) { in VisitMemoryPokeIntNative() argument
320 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeIntNative()
323 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPokeIntNative(HInvoke* invoke) { in VisitMemoryPokeIntNative() argument
325 EmitMemoryPoke(invoke, [&](XRegister rs2, XRegister rs1) { __ Sw(rs2, rs1, 0); }); in VisitMemoryPokeIntNative()
328 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPokeLongNative(HInvoke* invoke) { in VisitMemoryPokeLongNative() argument
329 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeLongNative()
332 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPokeLongNative(HInvoke* invoke) { in VisitMemoryPokeLongNative() argument
334 EmitMemoryPoke(invoke, [&](XRegister rs2, XRegister rs1) { __ Sd(rs2, rs1, 0); }); in VisitMemoryPokeLongNative()
337 void IntrinsicLocationsBuilderRISCV64::VisitMemoryPokeShortNative(HInvoke* invoke) { in VisitMemoryPokeShortNative() argument
338 CreateIntIntToVoidLocations(allocator_, invoke); in VisitMemoryPokeShortNative()
341 void IntrinsicCodeGeneratorRISCV64::VisitMemoryPokeShortNative(HInvoke* invoke) { in VisitMemoryPokeShortNative() argument
343 EmitMemoryPoke(invoke, [&](XRegister rs2, XRegister rs1) { __ Sh(rs2, rs1, 0); }); in VisitMemoryPokeShortNative()
387 HInvoke* invoke, in GenerateReverseBytes() argument
389 DCHECK_EQ(type, invoke->GetType()); in GenerateReverseBytes()
390 LocationSummary* locations = invoke->GetLocations(); in GenerateReverseBytes()
394 static void GenerateReverse(CodeGeneratorRISCV64* codegen, HInvoke* invoke, DataType::Type type) { in GenerateReverse() argument
395 DCHECK_EQ(type, invoke->GetType()); in GenerateReverse()
397 LocationSummary* locations = invoke->GetLocations(); in GenerateReverse()
439 void IntrinsicLocationsBuilderRISCV64::VisitIntegerReverse(HInvoke* invoke) { in VisitIntegerReverse() argument
440 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerReverse()
443 void IntrinsicCodeGeneratorRISCV64::VisitIntegerReverse(HInvoke* invoke) { in VisitIntegerReverse() argument
444 GenerateReverse(codegen_, invoke, DataType::Type::kInt32); in VisitIntegerReverse()
447 void IntrinsicLocationsBuilderRISCV64::VisitLongReverse(HInvoke* invoke) { in VisitLongReverse() argument
448 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongReverse()
451 void IntrinsicCodeGeneratorRISCV64::VisitLongReverse(HInvoke* invoke) { in VisitLongReverse() argument
452 GenerateReverse(codegen_, invoke, DataType::Type::kInt64); in VisitLongReverse()
455 void IntrinsicLocationsBuilderRISCV64::VisitIntegerReverseBytes(HInvoke* invoke) { in VisitIntegerReverseBytes() argument
456 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerReverseBytes()
459 void IntrinsicCodeGeneratorRISCV64::VisitIntegerReverseBytes(HInvoke* invoke) { in VisitIntegerReverseBytes() argument
460 GenerateReverseBytes(codegen_, invoke, DataType::Type::kInt32); in VisitIntegerReverseBytes()
463 void IntrinsicLocationsBuilderRISCV64::VisitLongReverseBytes(HInvoke* invoke) { in VisitLongReverseBytes() argument
464 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongReverseBytes()
467 void IntrinsicCodeGeneratorRISCV64::VisitLongReverseBytes(HInvoke* invoke) { in VisitLongReverseBytes() argument
468 GenerateReverseBytes(codegen_, invoke, DataType::Type::kInt64); in VisitLongReverseBytes()
471 void IntrinsicLocationsBuilderRISCV64::VisitShortReverseBytes(HInvoke* invoke) { in VisitShortReverseBytes() argument
472 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitShortReverseBytes()
475 void IntrinsicCodeGeneratorRISCV64::VisitShortReverseBytes(HInvoke* invoke) { in VisitShortReverseBytes() argument
476 GenerateReverseBytes(codegen_, invoke, DataType::Type::kInt16); in VisitShortReverseBytes()
480 void EmitIntegralUnOp(HInvoke* invoke, EmitOp&& emit_op) { in EmitIntegralUnOp() argument
481 LocationSummary* locations = invoke->GetLocations(); in EmitIntegralUnOp()
485 void IntrinsicLocationsBuilderRISCV64::VisitIntegerBitCount(HInvoke* invoke) { in VisitIntegerBitCount() argument
486 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerBitCount()
489 void IntrinsicCodeGeneratorRISCV64::VisitIntegerBitCount(HInvoke* invoke) { in VisitIntegerBitCount() argument
491 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { __ Cpopw(rd, rs1); }); in VisitIntegerBitCount()
494 void IntrinsicLocationsBuilderRISCV64::VisitLongBitCount(HInvoke* invoke) { in VisitLongBitCount() argument
495 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongBitCount()
498 void IntrinsicCodeGeneratorRISCV64::VisitLongBitCount(HInvoke* invoke) { in VisitLongBitCount() argument
500 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { __ Cpop(rd, rs1); }); in VisitLongBitCount()
503 void IntrinsicLocationsBuilderRISCV64::VisitIntegerHighestOneBit(HInvoke* invoke) { in VisitIntegerHighestOneBit() argument
504 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerHighestOneBit()
507 void IntrinsicCodeGeneratorRISCV64::VisitIntegerHighestOneBit(HInvoke* invoke) { in VisitIntegerHighestOneBit() argument
509 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { in VisitIntegerHighestOneBit()
520 void IntrinsicLocationsBuilderRISCV64::VisitLongHighestOneBit(HInvoke* invoke) { in VisitLongHighestOneBit() argument
521 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongHighestOneBit()
524 void IntrinsicCodeGeneratorRISCV64::VisitLongHighestOneBit(HInvoke* invoke) { in VisitLongHighestOneBit() argument
526 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { in VisitLongHighestOneBit()
537 void IntrinsicLocationsBuilderRISCV64::VisitIntegerLowestOneBit(HInvoke* invoke) { in VisitIntegerLowestOneBit() argument
538 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerLowestOneBit()
541 void IntrinsicCodeGeneratorRISCV64::VisitIntegerLowestOneBit(HInvoke* invoke) { in VisitIntegerLowestOneBit() argument
543 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { in VisitIntegerLowestOneBit()
551 void IntrinsicLocationsBuilderRISCV64::VisitLongLowestOneBit(HInvoke* invoke) { in VisitLongLowestOneBit() argument
552 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongLowestOneBit()
555 void IntrinsicCodeGeneratorRISCV64::VisitLongLowestOneBit(HInvoke* invoke) { in VisitLongLowestOneBit() argument
557 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { in VisitLongLowestOneBit()
565 void IntrinsicLocationsBuilderRISCV64::VisitIntegerNumberOfLeadingZeros(HInvoke* invoke) { in VisitIntegerNumberOfLeadingZeros() argument
566 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerNumberOfLeadingZeros()
569 void IntrinsicCodeGeneratorRISCV64::VisitIntegerNumberOfLeadingZeros(HInvoke* invoke) { in VisitIntegerNumberOfLeadingZeros() argument
571 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { __ Clzw(rd, rs1); }); in VisitIntegerNumberOfLeadingZeros()
574 void IntrinsicLocationsBuilderRISCV64::VisitLongNumberOfLeadingZeros(HInvoke* invoke) { in VisitLongNumberOfLeadingZeros() argument
575 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongNumberOfLeadingZeros()
578 void IntrinsicCodeGeneratorRISCV64::VisitLongNumberOfLeadingZeros(HInvoke* invoke) { in VisitLongNumberOfLeadingZeros() argument
580 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { __ Clz(rd, rs1); }); in VisitLongNumberOfLeadingZeros()
583 void IntrinsicLocationsBuilderRISCV64::VisitIntegerNumberOfTrailingZeros(HInvoke* invoke) { in VisitIntegerNumberOfTrailingZeros() argument
584 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitIntegerNumberOfTrailingZeros()
587 void IntrinsicCodeGeneratorRISCV64::VisitIntegerNumberOfTrailingZeros(HInvoke* invoke) { in VisitIntegerNumberOfTrailingZeros() argument
589 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { __ Ctzw(rd, rs1); }); in VisitIntegerNumberOfTrailingZeros()
592 void IntrinsicLocationsBuilderRISCV64::VisitLongNumberOfTrailingZeros(HInvoke* invoke) { in VisitLongNumberOfTrailingZeros() argument
593 CreateIntToIntNoOverlapLocations(allocator_, invoke); in VisitLongNumberOfTrailingZeros()
596 void IntrinsicCodeGeneratorRISCV64::VisitLongNumberOfTrailingZeros(HInvoke* invoke) { in VisitLongNumberOfTrailingZeros() argument
598 EmitIntegralUnOp(invoke, [&](XRegister rd, XRegister rs1) { __ Ctz(rd, rs1); }); in VisitLongNumberOfTrailingZeros()
601 static void GenerateDivRemUnsigned(HInvoke* invoke, bool is_div, CodeGeneratorRISCV64* codegen) { in GenerateDivRemUnsigned() argument
602 LocationSummary* locations = invoke->GetLocations(); in GenerateDivRemUnsigned()
604 DataType::Type type = invoke->GetType(); in GenerateDivRemUnsigned()
613 new (codegen->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in GenerateDivRemUnsigned()
634 void IntrinsicLocationsBuilderRISCV64::VisitIntegerDivideUnsigned(HInvoke* invoke) { in VisitIntegerDivideUnsigned() argument
635 CreateIntIntToIntSlowPathCallLocations(allocator_, invoke); in VisitIntegerDivideUnsigned()
638 void IntrinsicCodeGeneratorRISCV64::VisitIntegerDivideUnsigned(HInvoke* invoke) { in VisitIntegerDivideUnsigned() argument
639 GenerateDivRemUnsigned(invoke, /*is_div=*/true, codegen_); in VisitIntegerDivideUnsigned()
642 void IntrinsicLocationsBuilderRISCV64::VisitLongDivideUnsigned(HInvoke* invoke) { in VisitLongDivideUnsigned() argument
643 CreateIntIntToIntSlowPathCallLocations(allocator_, invoke); in VisitLongDivideUnsigned()
646 void IntrinsicCodeGeneratorRISCV64::VisitLongDivideUnsigned(HInvoke* invoke) { in VisitLongDivideUnsigned() argument
647 GenerateDivRemUnsigned(invoke, /*is_div=*/true, codegen_); in VisitLongDivideUnsigned()
650 void IntrinsicLocationsBuilderRISCV64::VisitIntegerRemainderUnsigned(HInvoke* invoke) { in VisitIntegerRemainderUnsigned() argument
651 CreateIntIntToIntSlowPathCallLocations(allocator_, invoke); in VisitIntegerRemainderUnsigned()
654 void IntrinsicCodeGeneratorRISCV64::VisitIntegerRemainderUnsigned(HInvoke* invoke) { in VisitIntegerRemainderUnsigned() argument
655 GenerateDivRemUnsigned(invoke, /*is_div=*/false, codegen_); in VisitIntegerRemainderUnsigned()
658 void IntrinsicLocationsBuilderRISCV64::VisitLongRemainderUnsigned(HInvoke* invoke) { in VisitLongRemainderUnsigned() argument
659 CreateIntIntToIntSlowPathCallLocations(allocator_, invoke); in VisitLongRemainderUnsigned()
662 void IntrinsicCodeGeneratorRISCV64::VisitLongRemainderUnsigned(HInvoke* invoke) { in VisitLongRemainderUnsigned() argument
663 GenerateDivRemUnsigned(invoke, /*is_div=*/false, codegen_); in VisitLongRemainderUnsigned()
667 void IntrinsicLocationsBuilderRISCV64::Visit##name##ValueOf(HInvoke* invoke) { \
670 invoke, \
677 void IntrinsicCodeGeneratorRISCV64::Visit##name##ValueOf(HInvoke* invoke) { \
679 IntrinsicVisitor::ComputeValueOfInfo(invoke, \
685 HandleValueOf(invoke, info, type); \
690 void IntrinsicCodeGeneratorRISCV64::HandleValueOf(HInvoke* invoke, in BOXED_TYPES()
694 LocationSummary* locations = invoke->GetLocations(); in BOXED_TYPES()
700 codegen_->LoadIntrinsicDeclaringClass(out, invoke); in BOXED_TYPES()
701 codegen_->InvokeRuntime(kQuickAllocObjectInitialized, invoke, invoke->GetDexPc()); in BOXED_TYPES()
704 if (invoke->InputAt(0)->IsIntConstant()) { in BOXED_TYPES()
705 int32_t value = invoke->InputAt(0)->AsIntConstant()->GetValue(); in BOXED_TYPES()
747 void IntrinsicLocationsBuilderRISCV64::VisitReferenceGetReferent(HInvoke* invoke) { in VisitReferenceGetReferent() argument
748 IntrinsicVisitor::CreateReferenceGetReferentLocations(invoke, codegen_); in VisitReferenceGetReferent()
750 if (codegen_->EmitBakerReadBarrier() && invoke->GetLocations() != nullptr) { in VisitReferenceGetReferent()
751 invoke->GetLocations()->AddTemp(Location::RequiresRegister()); in VisitReferenceGetReferent()
755 void IntrinsicCodeGeneratorRISCV64::VisitReferenceGetReferent(HInvoke* invoke) { in VisitReferenceGetReferent() argument
757 LocationSummary* locations = invoke->GetLocations(); in VisitReferenceGetReferent()
762 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in VisitReferenceGetReferent()
778 codegen_->LoadIntrinsicDeclaringClass(temp, invoke); in VisitReferenceGetReferent()
792 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitReferenceGetReferent()
801 codegen_->MaybeGenerateReadBarrierSlow(invoke, out, out, obj, referent_offset); in VisitReferenceGetReferent()
808 void IntrinsicLocationsBuilderRISCV64::VisitReferenceRefersTo(HInvoke* invoke) { in VisitReferenceRefersTo() argument
809 IntrinsicVisitor::CreateReferenceRefersToLocations(invoke, codegen_); in VisitReferenceRefersTo()
812 void IntrinsicCodeGeneratorRISCV64::VisitReferenceRefersTo(HInvoke* invoke) { in VisitReferenceRefersTo() argument
814 LocationSummary* locations = invoke->GetLocations(); in VisitReferenceRefersTo()
824 codegen_->MaybeRecordImplicitNullCheck(invoke); in VisitReferenceRefersTo()
878 static void GenerateVisitStringIndexOf(HInvoke* invoke, in GenerateVisitStringIndexOf() argument
882 LocationSummary* locations = invoke->GetLocations(); in GenerateVisitStringIndexOf()
885 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in GenerateVisitStringIndexOf()
890 HInstruction* code_point = invoke->InputAt(1); in GenerateVisitStringIndexOf()
895 slow_path = new (codegen->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in GenerateVisitStringIndexOf()
902 slow_path = new (codegen->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in GenerateVisitStringIndexOf()
916 codegen->InvokeRuntime(kQuickIndexOf, invoke, invoke->GetDexPc(), slow_path); in GenerateVisitStringIndexOf()
924 void IntrinsicLocationsBuilderRISCV64::VisitStringIndexOf(HInvoke* invoke) { in VisitStringIndexOf() argument
926 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringIndexOf()
938 void IntrinsicCodeGeneratorRISCV64::VisitStringIndexOf(HInvoke* invoke) { in VisitStringIndexOf() argument
939 GenerateVisitStringIndexOf(invoke, GetAssembler(), codegen_, /* start_at_zero= */ true); in VisitStringIndexOf()
942 void IntrinsicLocationsBuilderRISCV64::VisitStringIndexOfAfter(HInvoke* invoke) { in VisitStringIndexOfAfter() argument
944 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringIndexOfAfter()
954 void IntrinsicCodeGeneratorRISCV64::VisitStringIndexOfAfter(HInvoke* invoke) { in VisitStringIndexOfAfter() argument
955 GenerateVisitStringIndexOf(invoke, GetAssembler(), codegen_, /* start_at_zero= */ false); in VisitStringIndexOfAfter()
958 void IntrinsicLocationsBuilderRISCV64::VisitStringNewStringFromBytes(HInvoke* invoke) { in VisitStringNewStringFromBytes() argument
960 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringNewStringFromBytes()
969 void IntrinsicCodeGeneratorRISCV64::VisitStringNewStringFromBytes(HInvoke* invoke) { in VisitStringNewStringFromBytes() argument
971 LocationSummary* locations = invoke->GetLocations(); in VisitStringNewStringFromBytes()
975 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in VisitStringNewStringFromBytes()
979 codegen_->InvokeRuntime(kQuickAllocStringFromBytes, invoke, invoke->GetDexPc(), slow_path); in VisitStringNewStringFromBytes()
984 void IntrinsicLocationsBuilderRISCV64::VisitStringNewStringFromChars(HInvoke* invoke) { in VisitStringNewStringFromChars() argument
986 new (allocator_) LocationSummary(invoke, LocationSummary::kCallOnMainOnly, kIntrinsified); in VisitStringNewStringFromChars()
994 void IntrinsicCodeGeneratorRISCV64::VisitStringNewStringFromChars(HInvoke* invoke) { in VisitStringNewStringFromChars() argument
1001 codegen_->InvokeRuntime(kQuickAllocStringFromChars, invoke, invoke->GetDexPc()); in VisitStringNewStringFromChars()
1005 void IntrinsicLocationsBuilderRISCV64::VisitStringNewStringFromString(HInvoke* invoke) { in VisitStringNewStringFromString() argument
1007 invoke, LocationSummary::kCallOnMainAndSlowPath, kIntrinsified); in VisitStringNewStringFromString()
1013 void IntrinsicCodeGeneratorRISCV64::VisitStringNewStringFromString(HInvoke* invoke) { in VisitStringNewStringFromString() argument
1015 LocationSummary* locations = invoke->GetLocations(); in VisitStringNewStringFromString()
1019 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in VisitStringNewStringFromString()
1023 codegen_->InvokeRuntime(kQuickAllocStringFromString, invoke, invoke->GetDexPc(), slow_path); in VisitStringNewStringFromString()
1102 void IntrinsicLocationsBuilderRISCV64::VisitStringEquals(HInvoke* invoke) { in VisitStringEquals() argument
1104 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitStringEquals()
1114 void IntrinsicCodeGeneratorRISCV64::VisitStringEquals(HInvoke* invoke) { in VisitStringEquals() argument
1116 LocationSummary* locations = invoke->GetLocations(); in VisitStringEquals()
1136 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in VisitStringEquals()
1138 StringEqualsOptimizations optimizations(invoke); in VisitStringEquals()
1318 ReadBarrierCasSlowPathRISCV64(HInvoke* invoke, in ReadBarrierCasSlowPathRISCV64() argument
1330 : SlowPathCodeRISCV64(invoke), in ReadBarrierCasSlowPathRISCV64()
1348 invoke, old_value_temp_loc, kBakerReadBarrierTemp); in ReadBarrierCasSlowPathRISCV64()
1351 invoke, old_value_loc, kBakerReadBarrierTemp); in ReadBarrierCasSlowPathRISCV64()
1357 invoke, old_value_temp_loc, old_value_loc, base_loc, /*offset=*/ 0u, index); in ReadBarrierCasSlowPathRISCV64()
1360 invoke, old_value_loc, old_value_temp_loc, base_loc, /*offset=*/ 0u, index); in ReadBarrierCasSlowPathRISCV64()
1598 void IntrinsicLocationsBuilderRISCV64::VisitSystemArrayCopy(HInvoke* invoke) { in VisitSystemArrayCopy() argument
1607 invoke, kSystemArrayCopyThreshold, num_temps); in VisitSystemArrayCopy()
1610 locations->SetInAt(1, LocationForSystemArrayCopyInput(invoke->InputAt(1))); in VisitSystemArrayCopy()
1611 locations->SetInAt(3, LocationForSystemArrayCopyInput(invoke->InputAt(3))); in VisitSystemArrayCopy()
1612 locations->SetInAt(4, LocationForSystemArrayCopyInput(invoke->InputAt(4))); in VisitSystemArrayCopy()
1616 void IntrinsicCodeGeneratorRISCV64::VisitSystemArrayCopy(HInvoke* invoke) { in VisitSystemArrayCopy() argument
1622 LocationSummary* locations = invoke->GetLocations(); in VisitSystemArrayCopy()
1639 new (codegen_->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in VisitSystemArrayCopy()
1643 SystemArrayCopyOptimizations optimizations(invoke); in VisitSystemArrayCopy()
1741 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
1748 codegen_->GenerateFieldLoadWithBakerReadBarrier(invoke, in VisitSystemArrayCopy()
1869 ReadBarrierSystemArrayCopySlowPathRISCV64(invoke, Location::RegisterLocation(tmp)); in VisitSystemArrayCopy()
1932 static void CreateSystemArrayCopyLocations(HInvoke* invoke, DataType::Type type) { in CreateSystemArrayCopyLocations() argument
1937 HIntConstant* src_pos = invoke->InputAt(1)->AsIntConstantOrNull(); in CreateSystemArrayCopyLocations()
1938 HIntConstant* dst_pos = invoke->InputAt(3)->AsIntConstantOrNull(); in CreateSystemArrayCopyLocations()
1949 HIntConstant* length = invoke->InputAt(4)->AsIntConstantOrNull(); in CreateSystemArrayCopyLocations()
1958 ArenaAllocator* allocator = invoke->GetBlock()->GetGraph()->GetAllocator(); in CreateSystemArrayCopyLocations()
1960 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnSlowPath, kIntrinsified); in CreateSystemArrayCopyLocations()
1963 locations->SetInAt(1, LocationForSystemArrayCopyInput(invoke->InputAt(1))); in CreateSystemArrayCopyLocations()
1965 locations->SetInAt(3, LocationForSystemArrayCopyInput(invoke->InputAt(3))); in CreateSystemArrayCopyLocations()
1966 locations->SetInAt(4, LocationForSystemArrayCopyInput(invoke->InputAt(4))); in CreateSystemArrayCopyLocations()
1971 void IntrinsicLocationsBuilderRISCV64::VisitSystemArrayCopyByte(HInvoke* invoke) { in VisitSystemArrayCopyByte() argument
1972 CreateSystemArrayCopyLocations(invoke, DataType::Type::kInt8); in VisitSystemArrayCopyByte()
1975 void IntrinsicLocationsBuilderRISCV64::VisitSystemArrayCopyChar(HInvoke* invoke) { in VisitSystemArrayCopyChar() argument
1976 CreateSystemArrayCopyLocations(invoke, DataType::Type::kUint16); in VisitSystemArrayCopyChar()
1979 void IntrinsicLocationsBuilderRISCV64::VisitSystemArrayCopyInt(HInvoke* invoke) { in VisitSystemArrayCopyInt() argument
1980 CreateSystemArrayCopyLocations(invoke, DataType::Type::kInt32); in VisitSystemArrayCopyInt()
2023 static void SystemArrayCopyPrimitive(HInvoke* invoke, in SystemArrayCopyPrimitive() argument
2027 LocationSummary* locations = invoke->GetLocations(); in SystemArrayCopyPrimitive()
2035 new (codegen->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in SystemArrayCopyPrimitive()
2038 SystemArrayCopyOptimizations optimizations(invoke); in SystemArrayCopyPrimitive()
2193 void IntrinsicCodeGeneratorRISCV64::VisitSystemArrayCopyByte(HInvoke* invoke) { in VisitSystemArrayCopyByte() argument
2194 SystemArrayCopyPrimitive(invoke, codegen_, DataType::Type::kInt8); in VisitSystemArrayCopyByte()
2197 void IntrinsicCodeGeneratorRISCV64::VisitSystemArrayCopyChar(HInvoke* invoke) { in VisitSystemArrayCopyChar() argument
2198 SystemArrayCopyPrimitive(invoke, codegen_, DataType::Type::kUint16); in VisitSystemArrayCopyChar()
2201 void IntrinsicCodeGeneratorRISCV64::VisitSystemArrayCopyInt(HInvoke* invoke) { in VisitSystemArrayCopyInt() argument
2202 SystemArrayCopyPrimitive(invoke, codegen_, DataType::Type::kInt32); in VisitSystemArrayCopyInt()
2319 HInvoke* invoke, in CreateUnsafeGetLocations() argument
2321 bool can_call = codegen->EmitReadBarrier() && IsUnsafeGetReference(invoke); in CreateUnsafeGetLocations()
2323 invoke, in CreateUnsafeGetLocations()
2337 HInvoke* invoke) { in CreateUnsafeGetAbsoluteLocations() argument
2339 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateUnsafeGetAbsoluteLocations()
2345 static void GenUnsafeGet(HInvoke* invoke, in GenUnsafeGet() argument
2353 LocationSummary* locations = invoke->GetLocations(); in GenUnsafeGet()
2373 codegen->GenerateReferenceLoadWithBakerReadBarrier(invoke, in GenUnsafeGet()
2388 invoke, out_loc, out_loc, object_loc, /*offset=*/ 0u, /*index=*/ offset_loc); in GenUnsafeGet()
2397 static void GenUnsafeGetAbsolute(HInvoke* invoke, in GenUnsafeGetAbsolute() argument
2404 LocationSummary* locations = invoke->GetLocations(); in GenUnsafeGetAbsolute()
2424 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGet(HInvoke* invoke) { in VisitUnsafeGet() argument
2425 VisitJdkUnsafeGet(invoke); in VisitUnsafeGet()
2428 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetAbsolute(HInvoke* invoke) { in VisitUnsafeGetAbsolute() argument
2429 VisitJdkUnsafeGetAbsolute(invoke); in VisitUnsafeGetAbsolute()
2432 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGet(HInvoke* invoke) { in VisitUnsafeGet() argument
2433 VisitJdkUnsafeGet(invoke); in VisitUnsafeGet()
2436 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetAbsolute(HInvoke* invoke) { in VisitUnsafeGetAbsolute() argument
2437 VisitJdkUnsafeGetAbsolute(invoke); in VisitUnsafeGetAbsolute()
2440 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetVolatile(HInvoke* invoke) { in VisitUnsafeGetVolatile() argument
2441 VisitJdkUnsafeGetVolatile(invoke); in VisitUnsafeGetVolatile()
2444 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetVolatile(HInvoke* invoke) { in VisitUnsafeGetVolatile() argument
2445 VisitJdkUnsafeGetVolatile(invoke); in VisitUnsafeGetVolatile()
2448 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetObject(HInvoke* invoke) { in VisitUnsafeGetObject() argument
2449 VisitJdkUnsafeGetReference(invoke); in VisitUnsafeGetObject()
2452 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetObject(HInvoke* invoke) { in VisitUnsafeGetObject() argument
2453 VisitJdkUnsafeGetReference(invoke); in VisitUnsafeGetObject()
2456 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetObjectVolatile(HInvoke* invoke) { in VisitUnsafeGetObjectVolatile() argument
2457 VisitJdkUnsafeGetReferenceVolatile(invoke); in VisitUnsafeGetObjectVolatile()
2460 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetObjectVolatile(HInvoke* invoke) { in VisitUnsafeGetObjectVolatile() argument
2461 VisitJdkUnsafeGetReferenceVolatile(invoke); in VisitUnsafeGetObjectVolatile()
2464 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetLong(HInvoke* invoke) { in VisitUnsafeGetLong() argument
2465 VisitJdkUnsafeGetLong(invoke); in VisitUnsafeGetLong()
2468 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetLong(HInvoke* invoke) { in VisitUnsafeGetLong() argument
2469 VisitJdkUnsafeGetLong(invoke); in VisitUnsafeGetLong()
2472 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetLongVolatile(HInvoke* invoke) { in VisitUnsafeGetLongVolatile() argument
2473 VisitJdkUnsafeGetLongVolatile(invoke); in VisitUnsafeGetLongVolatile()
2476 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetLongVolatile(HInvoke* invoke) { in VisitUnsafeGetLongVolatile() argument
2477 VisitJdkUnsafeGetLongVolatile(invoke); in VisitUnsafeGetLongVolatile()
2480 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetByte(HInvoke* invoke) { in VisitUnsafeGetByte() argument
2481 VisitJdkUnsafeGetByte(invoke); in VisitUnsafeGetByte()
2484 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetByte(HInvoke* invoke) { in VisitUnsafeGetByte() argument
2485 VisitJdkUnsafeGetByte(invoke); in VisitUnsafeGetByte()
2488 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGet(HInvoke* invoke) { in VisitJdkUnsafeGet() argument
2489 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGet()
2492 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAbsolute(HInvoke* invoke) { in VisitJdkUnsafeGetAbsolute() argument
2493 CreateUnsafeGetAbsoluteLocations(allocator_, invoke); in VisitJdkUnsafeGetAbsolute()
2496 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGet(HInvoke* invoke) { in VisitJdkUnsafeGet() argument
2497 GenUnsafeGet(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt32); in VisitJdkUnsafeGet()
2500 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAbsolute(HInvoke* invoke) { in VisitJdkUnsafeGetAbsolute() argument
2501 GenUnsafeGetAbsolute(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt32); in VisitJdkUnsafeGetAbsolute()
2504 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAcquire(HInvoke* invoke) { in VisitJdkUnsafeGetAcquire() argument
2505 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetAcquire()
2508 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAcquire(HInvoke* invoke) { in VisitJdkUnsafeGetAcquire() argument
2509 GenUnsafeGet(invoke, codegen_, std::memory_order_acquire, DataType::Type::kInt32); in VisitJdkUnsafeGetAcquire()
2512 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetVolatile(HInvoke* invoke) { in VisitJdkUnsafeGetVolatile() argument
2513 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetVolatile()
2516 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetVolatile(HInvoke* invoke) { in VisitJdkUnsafeGetVolatile() argument
2517 GenUnsafeGet(invoke, codegen_, std::memory_order_seq_cst, DataType::Type::kInt32); in VisitJdkUnsafeGetVolatile()
2520 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetReference(HInvoke* invoke) { in VisitJdkUnsafeGetReference() argument
2521 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetReference()
2524 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetReference(HInvoke* invoke) { in VisitJdkUnsafeGetReference() argument
2525 GenUnsafeGet(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kReference); in VisitJdkUnsafeGetReference()
2528 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetReferenceAcquire(HInvoke* invoke) { in VisitJdkUnsafeGetReferenceAcquire() argument
2529 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetReferenceAcquire()
2532 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetReferenceAcquire(HInvoke* invoke) { in VisitJdkUnsafeGetReferenceAcquire() argument
2533 GenUnsafeGet(invoke, codegen_, std::memory_order_acquire, DataType::Type::kReference); in VisitJdkUnsafeGetReferenceAcquire()
2536 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetReferenceVolatile(HInvoke* invoke) { in VisitJdkUnsafeGetReferenceVolatile() argument
2537 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetReferenceVolatile()
2540 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetReferenceVolatile(HInvoke* invoke) { in VisitJdkUnsafeGetReferenceVolatile() argument
2541 GenUnsafeGet(invoke, codegen_, std::memory_order_seq_cst, DataType::Type::kReference); in VisitJdkUnsafeGetReferenceVolatile()
2544 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetLong(HInvoke* invoke) { in VisitJdkUnsafeGetLong() argument
2545 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetLong()
2548 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetLong(HInvoke* invoke) { in VisitJdkUnsafeGetLong() argument
2549 GenUnsafeGet(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt64); in VisitJdkUnsafeGetLong()
2552 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetLongAcquire(HInvoke* invoke) { in VisitJdkUnsafeGetLongAcquire() argument
2553 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetLongAcquire()
2556 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetLongAcquire(HInvoke* invoke) { in VisitJdkUnsafeGetLongAcquire() argument
2557 GenUnsafeGet(invoke, codegen_, std::memory_order_acquire, DataType::Type::kInt64); in VisitJdkUnsafeGetLongAcquire()
2560 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetLongVolatile(HInvoke* invoke) { in VisitJdkUnsafeGetLongVolatile() argument
2561 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetLongVolatile()
2564 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetLongVolatile(HInvoke* invoke) { in VisitJdkUnsafeGetLongVolatile() argument
2565 GenUnsafeGet(invoke, codegen_, std::memory_order_seq_cst, DataType::Type::kInt64); in VisitJdkUnsafeGetLongVolatile()
2568 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetByte(HInvoke* invoke) { in VisitJdkUnsafeGetByte() argument
2569 CreateUnsafeGetLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetByte()
2572 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetByte(HInvoke* invoke) { in VisitJdkUnsafeGetByte() argument
2573 GenUnsafeGet(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt8); in VisitJdkUnsafeGetByte()
2576 static void CreateUnsafePutLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateUnsafePutLocations() argument
2578 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateUnsafePutLocations()
2583 if (kPoisonHeapReferences && invoke->InputAt(3)->GetType() == DataType::Type::kReference) { in CreateUnsafePutLocations()
2588 static void CreateUnsafePutAbsoluteLocations(ArenaAllocator* allocator, HInvoke* invoke) { in CreateUnsafePutAbsoluteLocations() argument
2590 new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in CreateUnsafePutAbsoluteLocations()
2596 static void GenUnsafePut(HInvoke* invoke, in GenUnsafePut() argument
2601 LocationSummary* locations = invoke->GetLocations(); in GenUnsafePut()
2624 static void GenUnsafePutAbsolute(HInvoke* invoke, in GenUnsafePutAbsolute() argument
2628 LocationSummary* locations = invoke->GetLocations(); in GenUnsafePutAbsolute()
2635 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePut(HInvoke* invoke) { in VisitUnsafePut() argument
2636 VisitJdkUnsafePut(invoke); in VisitUnsafePut()
2639 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutAbsolute(HInvoke* invoke) { in VisitUnsafePutAbsolute() argument
2640 VisitJdkUnsafePutAbsolute(invoke); in VisitUnsafePutAbsolute()
2643 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePut(HInvoke* invoke) { in VisitUnsafePut() argument
2644 VisitJdkUnsafePut(invoke); in VisitUnsafePut()
2647 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutAbsolute(HInvoke* invoke) { in VisitUnsafePutAbsolute() argument
2648 VisitJdkUnsafePutAbsolute(invoke); in VisitUnsafePutAbsolute()
2651 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutOrdered(HInvoke* invoke) { in VisitUnsafePutOrdered() argument
2652 VisitJdkUnsafePutOrdered(invoke); in VisitUnsafePutOrdered()
2655 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutOrdered(HInvoke* invoke) { in VisitUnsafePutOrdered() argument
2656 VisitJdkUnsafePutOrdered(invoke); in VisitUnsafePutOrdered()
2659 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutVolatile(HInvoke* invoke) { in VisitUnsafePutVolatile() argument
2660 VisitJdkUnsafePutVolatile(invoke); in VisitUnsafePutVolatile()
2663 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutVolatile(HInvoke* invoke) { in VisitUnsafePutVolatile() argument
2664 VisitJdkUnsafePutVolatile(invoke); in VisitUnsafePutVolatile()
2667 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutObject(HInvoke* invoke) { in VisitUnsafePutObject() argument
2668 VisitJdkUnsafePutReference(invoke); in VisitUnsafePutObject()
2671 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutObject(HInvoke* invoke) { in VisitUnsafePutObject() argument
2672 VisitJdkUnsafePutReference(invoke); in VisitUnsafePutObject()
2675 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutObjectOrdered(HInvoke* invoke) { in VisitUnsafePutObjectOrdered() argument
2676 VisitJdkUnsafePutObjectOrdered(invoke); in VisitUnsafePutObjectOrdered()
2679 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutObjectOrdered(HInvoke* invoke) { in VisitUnsafePutObjectOrdered() argument
2680 VisitJdkUnsafePutObjectOrdered(invoke); in VisitUnsafePutObjectOrdered()
2683 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutObjectVolatile(HInvoke* invoke) { in VisitUnsafePutObjectVolatile() argument
2684 VisitJdkUnsafePutReferenceVolatile(invoke); in VisitUnsafePutObjectVolatile()
2687 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutObjectVolatile(HInvoke* invoke) { in VisitUnsafePutObjectVolatile() argument
2688 VisitJdkUnsafePutReferenceVolatile(invoke); in VisitUnsafePutObjectVolatile()
2691 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutLong(HInvoke* invoke) { in VisitUnsafePutLong() argument
2692 VisitJdkUnsafePutLong(invoke); in VisitUnsafePutLong()
2695 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutLong(HInvoke* invoke) { in VisitUnsafePutLong() argument
2696 VisitJdkUnsafePutLong(invoke); in VisitUnsafePutLong()
2699 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutLongOrdered(HInvoke* invoke) { in VisitUnsafePutLongOrdered() argument
2700 VisitJdkUnsafePutLongOrdered(invoke); in VisitUnsafePutLongOrdered()
2703 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutLongOrdered(HInvoke* invoke) { in VisitUnsafePutLongOrdered() argument
2704 VisitJdkUnsafePutLongOrdered(invoke); in VisitUnsafePutLongOrdered()
2707 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutLongVolatile(HInvoke* invoke) { in VisitUnsafePutLongVolatile() argument
2708 VisitJdkUnsafePutLongVolatile(invoke); in VisitUnsafePutLongVolatile()
2711 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutLongVolatile(HInvoke* invoke) { in VisitUnsafePutLongVolatile() argument
2712 VisitJdkUnsafePutLongVolatile(invoke); in VisitUnsafePutLongVolatile()
2715 void IntrinsicLocationsBuilderRISCV64::VisitUnsafePutByte(HInvoke* invoke) { in VisitUnsafePutByte() argument
2716 VisitJdkUnsafePutByte(invoke); in VisitUnsafePutByte()
2719 void IntrinsicCodeGeneratorRISCV64::VisitUnsafePutByte(HInvoke* invoke) { in VisitUnsafePutByte() argument
2720 VisitJdkUnsafePutByte(invoke); in VisitUnsafePutByte()
2723 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePut(HInvoke* invoke) { in VisitJdkUnsafePut() argument
2724 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePut()
2727 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutAbsolute(HInvoke* invoke) { in VisitJdkUnsafePutAbsolute() argument
2728 CreateUnsafePutAbsoluteLocations(allocator_, invoke); in VisitJdkUnsafePutAbsolute()
2731 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePut(HInvoke* invoke) { in VisitJdkUnsafePut() argument
2732 GenUnsafePut(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt32); in VisitJdkUnsafePut()
2735 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutAbsolute(HInvoke* invoke) { in VisitJdkUnsafePutAbsolute() argument
2736 GenUnsafePutAbsolute(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt32); in VisitJdkUnsafePutAbsolute()
2739 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutOrdered(HInvoke* invoke) { in VisitJdkUnsafePutOrdered() argument
2740 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutOrdered()
2743 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutOrdered(HInvoke* invoke) { in VisitJdkUnsafePutOrdered() argument
2744 GenUnsafePut(invoke, codegen_, std::memory_order_release, DataType::Type::kInt32); in VisitJdkUnsafePutOrdered()
2747 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutRelease(HInvoke* invoke) { in VisitJdkUnsafePutRelease() argument
2748 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutRelease()
2751 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutRelease(HInvoke* invoke) { in VisitJdkUnsafePutRelease() argument
2752 GenUnsafePut(invoke, codegen_, std::memory_order_release, DataType::Type::kInt32); in VisitJdkUnsafePutRelease()
2755 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutVolatile(HInvoke* invoke) { in VisitJdkUnsafePutVolatile() argument
2756 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutVolatile()
2759 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutVolatile(HInvoke* invoke) { in VisitJdkUnsafePutVolatile() argument
2760 GenUnsafePut(invoke, codegen_, std::memory_order_seq_cst, DataType::Type::kInt32); in VisitJdkUnsafePutVolatile()
2763 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutReference(HInvoke* invoke) { in VisitJdkUnsafePutReference() argument
2764 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutReference()
2767 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutReference(HInvoke* invoke) { in VisitJdkUnsafePutReference() argument
2768 GenUnsafePut(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kReference); in VisitJdkUnsafePutReference()
2771 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutObjectOrdered(HInvoke* invoke) { in VisitJdkUnsafePutObjectOrdered() argument
2772 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutObjectOrdered()
2775 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutObjectOrdered(HInvoke* invoke) { in VisitJdkUnsafePutObjectOrdered() argument
2776 GenUnsafePut(invoke, codegen_, std::memory_order_release, DataType::Type::kReference); in VisitJdkUnsafePutObjectOrdered()
2779 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutReferenceRelease(HInvoke* invoke) { in VisitJdkUnsafePutReferenceRelease() argument
2780 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutReferenceRelease()
2783 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutReferenceRelease(HInvoke* invoke) { in VisitJdkUnsafePutReferenceRelease() argument
2784 GenUnsafePut(invoke, codegen_, std::memory_order_release, DataType::Type::kReference); in VisitJdkUnsafePutReferenceRelease()
2787 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutReferenceVolatile(HInvoke* invoke) { in VisitJdkUnsafePutReferenceVolatile() argument
2788 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutReferenceVolatile()
2791 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutReferenceVolatile(HInvoke* invoke) { in VisitJdkUnsafePutReferenceVolatile() argument
2792 GenUnsafePut(invoke, codegen_, std::memory_order_seq_cst, DataType::Type::kReference); in VisitJdkUnsafePutReferenceVolatile()
2795 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutLong(HInvoke* invoke) { in VisitJdkUnsafePutLong() argument
2796 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutLong()
2799 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutLong(HInvoke* invoke) { in VisitJdkUnsafePutLong() argument
2800 GenUnsafePut(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt64); in VisitJdkUnsafePutLong()
2803 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutLongOrdered(HInvoke* invoke) { in VisitJdkUnsafePutLongOrdered() argument
2804 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutLongOrdered()
2807 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutLongOrdered(HInvoke* invoke) { in VisitJdkUnsafePutLongOrdered() argument
2808 GenUnsafePut(invoke, codegen_, std::memory_order_release, DataType::Type::kInt64); in VisitJdkUnsafePutLongOrdered()
2811 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutLongRelease(HInvoke* invoke) { in VisitJdkUnsafePutLongRelease() argument
2812 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutLongRelease()
2815 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutLongRelease(HInvoke* invoke) { in VisitJdkUnsafePutLongRelease() argument
2816 GenUnsafePut(invoke, codegen_, std::memory_order_release, DataType::Type::kInt64); in VisitJdkUnsafePutLongRelease()
2819 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutLongVolatile(HInvoke* invoke) { in VisitJdkUnsafePutLongVolatile() argument
2820 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutLongVolatile()
2823 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutLongVolatile(HInvoke* invoke) { in VisitJdkUnsafePutLongVolatile() argument
2824 GenUnsafePut(invoke, codegen_, std::memory_order_seq_cst, DataType::Type::kInt64); in VisitJdkUnsafePutLongVolatile()
2827 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafePutByte(HInvoke* invoke) { in VisitJdkUnsafePutByte() argument
2828 CreateUnsafePutLocations(allocator_, invoke); in VisitJdkUnsafePutByte()
2831 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafePutByte(HInvoke* invoke) { in VisitJdkUnsafePutByte() argument
2832 GenUnsafePut(invoke, codegen_, std::memory_order_relaxed, DataType::Type::kInt8); in VisitJdkUnsafePutByte()
2836 HInvoke* invoke, in CreateUnsafeCASLocations() argument
2838 const bool can_call = codegen->EmitReadBarrier() && IsUnsafeCASReference(invoke); in CreateUnsafeCASLocations()
2840 invoke, in CreateUnsafeCASLocations()
2855 static void GenUnsafeCas(HInvoke* invoke, CodeGeneratorRISCV64* codegen, DataType::Type type) { in GenUnsafeCas() argument
2857 LocationSummary* locations = invoke->GetLocations(); in GenUnsafeCas()
2889 invoke, in GenUnsafeCas()
2937 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeCASInt(HInvoke* invoke) { in VisitUnsafeCASInt() argument
2938 VisitJdkUnsafeCASInt(invoke); in VisitUnsafeCASInt()
2941 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeCASInt(HInvoke* invoke) { in VisitUnsafeCASInt() argument
2942 VisitJdkUnsafeCASInt(invoke); in VisitUnsafeCASInt()
2945 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeCASLong(HInvoke* invoke) { in VisitUnsafeCASLong() argument
2946 VisitJdkUnsafeCASLong(invoke); in VisitUnsafeCASLong()
2949 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeCASLong(HInvoke* invoke) { in VisitUnsafeCASLong() argument
2950 VisitJdkUnsafeCASLong(invoke); in VisitUnsafeCASLong()
2953 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeCASObject(HInvoke* invoke) { in VisitUnsafeCASObject() argument
2954 VisitJdkUnsafeCASObject(invoke); in VisitUnsafeCASObject()
2957 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeCASObject(HInvoke* invoke) { in VisitUnsafeCASObject() argument
2958 VisitJdkUnsafeCASObject(invoke); in VisitUnsafeCASObject()
2961 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeCASInt(HInvoke* invoke) { in VisitJdkUnsafeCASInt() argument
2963 VisitJdkUnsafeCompareAndSetInt(invoke); in VisitJdkUnsafeCASInt()
2966 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeCASInt(HInvoke* invoke) { in VisitJdkUnsafeCASInt() argument
2968 VisitJdkUnsafeCompareAndSetInt(invoke); in VisitJdkUnsafeCASInt()
2971 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeCASLong(HInvoke* invoke) { in VisitJdkUnsafeCASLong() argument
2973 VisitJdkUnsafeCompareAndSetLong(invoke); in VisitJdkUnsafeCASLong()
2976 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeCASLong(HInvoke* invoke) { in VisitJdkUnsafeCASLong() argument
2978 VisitJdkUnsafeCompareAndSetLong(invoke); in VisitJdkUnsafeCASLong()
2981 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeCASObject(HInvoke* invoke) { in VisitJdkUnsafeCASObject() argument
2983 VisitJdkUnsafeCompareAndSetReference(invoke); in VisitJdkUnsafeCASObject()
2986 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeCASObject(HInvoke* invoke) { in VisitJdkUnsafeCASObject() argument
2988 VisitJdkUnsafeCompareAndSetReference(invoke); in VisitJdkUnsafeCASObject()
2991 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeCompareAndSetInt(HInvoke* invoke) { in VisitJdkUnsafeCompareAndSetInt() argument
2992 CreateUnsafeCASLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeCompareAndSetInt()
2995 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeCompareAndSetInt(HInvoke* invoke) { in VisitJdkUnsafeCompareAndSetInt() argument
2996 GenUnsafeCas(invoke, codegen_, DataType::Type::kInt32); in VisitJdkUnsafeCompareAndSetInt()
2999 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeCompareAndSetLong(HInvoke* invoke) { in VisitJdkUnsafeCompareAndSetLong() argument
3000 CreateUnsafeCASLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeCompareAndSetLong()
3003 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeCompareAndSetLong(HInvoke* invoke) { in VisitJdkUnsafeCompareAndSetLong() argument
3004 GenUnsafeCas(invoke, codegen_, DataType::Type::kInt64); in VisitJdkUnsafeCompareAndSetLong()
3007 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeCompareAndSetReference(HInvoke* invoke) { in VisitJdkUnsafeCompareAndSetReference() argument
3018 CreateUnsafeCASLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeCompareAndSetReference()
3022 LocationSummary* locations = invoke->GetLocations(); in VisitJdkUnsafeCompareAndSetReference()
3027 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeCompareAndSetReference(HInvoke* invoke) { in VisitJdkUnsafeCompareAndSetReference() argument
3028 GenUnsafeCas(invoke, codegen_, DataType::Type::kReference); in VisitJdkUnsafeCompareAndSetReference()
3032 HInvoke* invoke, in CreateUnsafeGetAndUpdateLocations() argument
3034 const bool can_call = codegen->EmitReadBarrier() && IsUnsafeGetAndSetReference(invoke); in CreateUnsafeGetAndUpdateLocations()
3036 invoke, in CreateUnsafeGetAndUpdateLocations()
3048 DataType::Type return_type = invoke->GetType(); in CreateUnsafeGetAndUpdateLocations()
3057 static void GenUnsafeGetAndUpdate(HInvoke* invoke, in GenUnsafeGetAndUpdate() argument
3066 LocationSummary* locations = invoke->GetLocations(); in GenUnsafeGetAndUpdate()
3067 DataType::Type return_type = invoke->GetType(); in GenUnsafeGetAndUpdate()
3106 invoke, out_or_temp_loc, kBakerReadBarrierTemp); in GenUnsafeGetAndUpdate()
3110 codegen->GenerateReadBarrierSlow(invoke, in GenUnsafeGetAndUpdate()
3121 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetAndAddInt(HInvoke* invoke) { in VisitUnsafeGetAndAddInt() argument
3122 VisitJdkUnsafeGetAndAddInt(invoke); in VisitUnsafeGetAndAddInt()
3125 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetAndAddInt(HInvoke* invoke) { in VisitUnsafeGetAndAddInt() argument
3126 VisitJdkUnsafeGetAndAddInt(invoke); in VisitUnsafeGetAndAddInt()
3129 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetAndAddLong(HInvoke* invoke) { in VisitUnsafeGetAndAddLong() argument
3130 VisitJdkUnsafeGetAndAddLong(invoke); in VisitUnsafeGetAndAddLong()
3133 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetAndAddLong(HInvoke* invoke) { in VisitUnsafeGetAndAddLong() argument
3134 VisitJdkUnsafeGetAndAddLong(invoke); in VisitUnsafeGetAndAddLong()
3137 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetAndSetInt(HInvoke* invoke) { in VisitUnsafeGetAndSetInt() argument
3138 VisitJdkUnsafeGetAndSetInt(invoke); in VisitUnsafeGetAndSetInt()
3141 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetAndSetInt(HInvoke* invoke) { in VisitUnsafeGetAndSetInt() argument
3142 VisitJdkUnsafeGetAndSetInt(invoke); in VisitUnsafeGetAndSetInt()
3145 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetAndSetLong(HInvoke* invoke) { in VisitUnsafeGetAndSetLong() argument
3146 VisitJdkUnsafeGetAndSetLong(invoke); in VisitUnsafeGetAndSetLong()
3149 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetAndSetLong(HInvoke* invoke) { in VisitUnsafeGetAndSetLong() argument
3150 VisitJdkUnsafeGetAndSetLong(invoke); in VisitUnsafeGetAndSetLong()
3153 void IntrinsicLocationsBuilderRISCV64::VisitUnsafeGetAndSetObject(HInvoke* invoke) { in VisitUnsafeGetAndSetObject() argument
3154 VisitJdkUnsafeGetAndSetReference(invoke); in VisitUnsafeGetAndSetObject()
3157 void IntrinsicCodeGeneratorRISCV64::VisitUnsafeGetAndSetObject(HInvoke* invoke) { in VisitUnsafeGetAndSetObject() argument
3158 VisitJdkUnsafeGetAndSetReference(invoke); in VisitUnsafeGetAndSetObject()
3161 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAndAddInt(HInvoke* invoke) { in VisitJdkUnsafeGetAndAddInt() argument
3162 CreateUnsafeGetAndUpdateLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetAndAddInt()
3165 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAndAddInt(HInvoke* invoke) { in VisitJdkUnsafeGetAndAddInt() argument
3166 GenUnsafeGetAndUpdate(invoke, DataType::Type::kInt32, codegen_, GetAndUpdateOp::kAdd); in VisitJdkUnsafeGetAndAddInt()
3169 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAndAddLong(HInvoke* invoke) { in VisitJdkUnsafeGetAndAddLong() argument
3170 CreateUnsafeGetAndUpdateLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetAndAddLong()
3173 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAndAddLong(HInvoke* invoke) { in VisitJdkUnsafeGetAndAddLong() argument
3174 GenUnsafeGetAndUpdate(invoke, DataType::Type::kInt64, codegen_, GetAndUpdateOp::kAdd); in VisitJdkUnsafeGetAndAddLong()
3177 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAndSetInt(HInvoke* invoke) { in VisitJdkUnsafeGetAndSetInt() argument
3178 CreateUnsafeGetAndUpdateLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetAndSetInt()
3181 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAndSetInt(HInvoke* invoke) { in VisitJdkUnsafeGetAndSetInt() argument
3182 GenUnsafeGetAndUpdate(invoke, DataType::Type::kInt32, codegen_, GetAndUpdateOp::kSet); in VisitJdkUnsafeGetAndSetInt()
3185 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAndSetLong(HInvoke* invoke) { in VisitJdkUnsafeGetAndSetLong() argument
3186 CreateUnsafeGetAndUpdateLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetAndSetLong()
3189 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAndSetLong(HInvoke* invoke) { in VisitJdkUnsafeGetAndSetLong() argument
3190 GenUnsafeGetAndUpdate(invoke, DataType::Type::kInt64, codegen_, GetAndUpdateOp::kSet); in VisitJdkUnsafeGetAndSetLong()
3193 void IntrinsicLocationsBuilderRISCV64::VisitJdkUnsafeGetAndSetReference(HInvoke* invoke) { in VisitJdkUnsafeGetAndSetReference() argument
3199 CreateUnsafeGetAndUpdateLocations(allocator_, invoke, codegen_); in VisitJdkUnsafeGetAndSetReference()
3202 void IntrinsicCodeGeneratorRISCV64::VisitJdkUnsafeGetAndSetReference(HInvoke* invoke) { in VisitJdkUnsafeGetAndSetReference() argument
3203 GenUnsafeGetAndUpdate(invoke, DataType::Type::kReference, codegen_, GetAndUpdateOp::kSet); in VisitJdkUnsafeGetAndSetReference()
3206 void IntrinsicLocationsBuilderRISCV64::VisitStringCompareTo(HInvoke* invoke) { in VisitStringCompareTo() argument
3208 new (allocator_) LocationSummary(invoke, in VisitStringCompareTo()
3209 invoke->InputAt(1)->CanBeNull() in VisitStringCompareTo()
3223 void IntrinsicCodeGeneratorRISCV64::VisitStringCompareTo(HInvoke* invoke) { in VisitStringCompareTo() argument
3226 LocationSummary* locations = invoke->GetLocations(); in VisitStringCompareTo()
3250 DCHECK(!invoke->CanDoImplicitNullCheckOn(invoke->InputAt(0))); in VisitStringCompareTo()
3254 const bool can_slow_path = invoke->InputAt(1)->CanBeNull(); in VisitStringCompareTo()
3256 slow_path = new (codegen_->GetScopedAllocator()) IntrinsicSlowPathRISCV64(invoke); in VisitStringCompareTo()
3410 VarHandleSlowPathRISCV64(HInvoke* invoke, std::memory_order order) in VarHandleSlowPathRISCV64() argument
3411 : IntrinsicSlowPathRISCV64(invoke), in VarHandleSlowPathRISCV64()
3509 static void GenerateVarHandleAccessModeAndVarTypeChecks(HInvoke* invoke, in GenerateVarHandleAccessModeAndVarTypeChecks() argument
3514 mirror::VarHandle::GetAccessModeByIntrinsic(invoke->GetIntrinsic()); in GenerateVarHandleAccessModeAndVarTypeChecks()
3518 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleAccessModeAndVarTypeChecks()
3557 size_t expected_coordinates_count = GetExpectedVarHandleCoordinatesCount(invoke); in GenerateVarHandleAccessModeAndVarTypeChecks()
3559 uint32_t number_of_arguments = invoke->GetNumberOfArguments(); in GenerateVarHandleAccessModeAndVarTypeChecks()
3561 HInstruction* arg = invoke->InputAt(arg_index); in GenerateVarHandleAccessModeAndVarTypeChecks()
3571 static void GenerateVarHandleStaticFieldCheck(HInvoke* invoke, in GenerateVarHandleStaticFieldCheck() argument
3575 XRegister varhandle = invoke->GetLocations()->InAt(0).AsRegister<XRegister>(); in GenerateVarHandleStaticFieldCheck()
3588 static void GenerateVarHandleInstanceFieldChecks(HInvoke* invoke, in GenerateVarHandleInstanceFieldChecks() argument
3591 VarHandleOptimizations optimizations(invoke); in GenerateVarHandleInstanceFieldChecks()
3593 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleInstanceFieldChecks()
3625 static void GenerateVarHandleArrayChecks(HInvoke* invoke, in GenerateVarHandleArrayChecks() argument
3628 VarHandleOptimizations optimizations(invoke); in GenerateVarHandleArrayChecks()
3630 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleArrayChecks()
3635 GetVarHandleExpectedValueType(invoke, /*expected_coordinates_count=*/ 2u); in GenerateVarHandleArrayChecks()
3708 static void GenerateVarHandleCoordinateChecks(HInvoke* invoke, in GenerateVarHandleCoordinateChecks() argument
3711 size_t expected_coordinates_count = GetExpectedVarHandleCoordinatesCount(invoke); in GenerateVarHandleCoordinateChecks()
3713 GenerateVarHandleStaticFieldCheck(invoke, codegen, slow_path); in GenerateVarHandleCoordinateChecks()
3715 GenerateVarHandleInstanceFieldChecks(invoke, codegen, slow_path); in GenerateVarHandleCoordinateChecks()
3718 GenerateVarHandleArrayChecks(invoke, codegen, slow_path); in GenerateVarHandleCoordinateChecks()
3722 static VarHandleSlowPathRISCV64* GenerateVarHandleChecks(HInvoke* invoke, in GenerateVarHandleChecks() argument
3726 size_t expected_coordinates_count = GetExpectedVarHandleCoordinatesCount(invoke); in GenerateVarHandleChecks()
3727 VarHandleOptimizations optimizations(invoke); in GenerateVarHandleChecks()
3736 new (codegen->GetScopedAllocator()) VarHandleSlowPathRISCV64(invoke, order); in GenerateVarHandleChecks()
3740 GenerateVarHandleAccessModeAndVarTypeChecks(invoke, codegen, slow_path, type); in GenerateVarHandleChecks()
3742 GenerateVarHandleCoordinateChecks(invoke, codegen, slow_path); in GenerateVarHandleChecks()
3752 static VarHandleTarget GetVarHandleTarget(HInvoke* invoke) { in GetVarHandleTarget() argument
3753 size_t expected_coordinates_count = GetExpectedVarHandleCoordinatesCount(invoke); in GetVarHandleTarget()
3754 LocationSummary* locations = invoke->GetLocations(); in GetVarHandleTarget()
3766 static void GenerateVarHandleTarget(HInvoke* invoke, in GenerateVarHandleTarget() argument
3770 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleTarget()
3772 size_t expected_coordinates_count = GetExpectedVarHandleCoordinatesCount(invoke); in GenerateVarHandleTarget()
3775 if (VarHandleOptimizations(invoke).GetUseKnownImageVarHandle()) { in GenerateVarHandleTarget()
3777 ArtField* target_field = GetBootImageVarHandleField(invoke); in GenerateVarHandleTarget()
3805 invoke, in GenerateVarHandleTarget()
3815 GetVarHandleExpectedValueType(invoke, /*expected_coordinates_count=*/ 2u); in GenerateVarHandleTarget()
3824 static LocationSummary* CreateVarHandleCommonLocations(HInvoke* invoke, in CreateVarHandleCommonLocations() argument
3826 size_t expected_coordinates_count = GetExpectedVarHandleCoordinatesCount(invoke); in CreateVarHandleCommonLocations()
3827 DataType::Type return_type = invoke->GetType(); in CreateVarHandleCommonLocations()
3829 ArenaAllocator* allocator = invoke->GetBlock()->GetGraph()->GetAllocator(); in CreateVarHandleCommonLocations()
3831 new (allocator) LocationSummary(invoke, LocationSummary::kCallOnSlowPath, kIntrinsified); in CreateVarHandleCommonLocations()
3846 uint32_t number_of_arguments = invoke->GetNumberOfArguments(); in CreateVarHandleCommonLocations()
3848 HInstruction* arg = invoke->InputAt(arg_index); in CreateVarHandleCommonLocations()
3860 GetExpectedVarHandleCoordinatesCount(invoke) == 0u) { // For static fields. in CreateVarHandleCommonLocations()
3876 static void CreateVarHandleGetLocations(HInvoke* invoke, CodeGeneratorRISCV64* codegen) { in CreateVarHandleGetLocations() argument
3877 VarHandleOptimizations optimizations(invoke); in CreateVarHandleGetLocations()
3883 invoke->GetType() == DataType::Type::kReference && in CreateVarHandleGetLocations()
3884 invoke->GetIntrinsic() != Intrinsics::kVarHandleGet && in CreateVarHandleGetLocations()
3885 invoke->GetIntrinsic() != Intrinsics::kVarHandleGetOpaque) { in CreateVarHandleGetLocations()
3892 CreateVarHandleCommonLocations(invoke, codegen); in CreateVarHandleGetLocations()
3900 static void GenerateVarHandleGet(HInvoke* invoke, in GenerateVarHandleGet() argument
3904 DataType::Type type = invoke->GetType(); in GenerateVarHandleGet()
3907 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleGet()
3911 VarHandleTarget target = GetVarHandleTarget(invoke); in GenerateVarHandleGet()
3914 slow_path = GenerateVarHandleChecks(invoke, codegen, order, type); in GenerateVarHandleGet()
3915 GenerateVarHandleTarget(invoke, target, codegen); in GenerateVarHandleGet()
3934 codegen->GenerateReferenceLoadWithBakerReadBarrier(invoke, in GenerateVarHandleGet()
3958 invoke, out, out, object_loc, /*offset=*/ 0u, /*index=*/ offset_loc); in GenerateVarHandleGet()
3974 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGet(HInvoke* invoke) { in VisitVarHandleGet() argument
3975 CreateVarHandleGetLocations(invoke, codegen_); in VisitVarHandleGet()
3978 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGet(HInvoke* invoke) { in VisitVarHandleGet() argument
3979 GenerateVarHandleGet(invoke, codegen_, std::memory_order_relaxed); in VisitVarHandleGet()
3982 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetOpaque(HInvoke* invoke) { in VisitVarHandleGetOpaque() argument
3983 CreateVarHandleGetLocations(invoke, codegen_); in VisitVarHandleGetOpaque()
3986 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetOpaque(HInvoke* invoke) { in VisitVarHandleGetOpaque() argument
3987 GenerateVarHandleGet(invoke, codegen_, std::memory_order_relaxed); in VisitVarHandleGetOpaque()
3990 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAcquire(HInvoke* invoke) { in VisitVarHandleGetAcquire() argument
3991 CreateVarHandleGetLocations(invoke, codegen_); in VisitVarHandleGetAcquire()
3994 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAcquire(HInvoke* invoke) { in VisitVarHandleGetAcquire() argument
3995 GenerateVarHandleGet(invoke, codegen_, std::memory_order_acquire); in VisitVarHandleGetAcquire()
3998 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetVolatile(HInvoke* invoke) { in VisitVarHandleGetVolatile() argument
3999 CreateVarHandleGetLocations(invoke, codegen_); in VisitVarHandleGetVolatile()
4002 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetVolatile(HInvoke* invoke) { in VisitVarHandleGetVolatile() argument
4003 GenerateVarHandleGet(invoke, codegen_, std::memory_order_seq_cst); in VisitVarHandleGetVolatile()
4006 static void CreateVarHandleSetLocations(HInvoke* invoke, CodeGeneratorRISCV64* codegen) { in CreateVarHandleSetLocations() argument
4007 VarHandleOptimizations optimizations(invoke); in CreateVarHandleSetLocations()
4012 CreateVarHandleCommonLocations(invoke, codegen); in CreateVarHandleSetLocations()
4013 if (kPoisonHeapReferences && invoke->GetLocations() != nullptr) { in CreateVarHandleSetLocations()
4014 LocationSummary* locations = invoke->GetLocations(); in CreateVarHandleSetLocations()
4015 uint32_t value_index = invoke->GetNumberOfArguments() - 1; in CreateVarHandleSetLocations()
4016 DataType::Type value_type = GetDataTypeFromShorty(invoke, value_index); in CreateVarHandleSetLocations()
4023 static void GenerateVarHandleSet(HInvoke* invoke, in GenerateVarHandleSet() argument
4027 uint32_t value_index = invoke->GetNumberOfArguments() - 1; in GenerateVarHandleSet()
4028 DataType::Type value_type = GetDataTypeFromShorty(invoke, value_index); in GenerateVarHandleSet()
4031 Location value = invoke->GetLocations()->InAt(value_index); in GenerateVarHandleSet()
4033 VarHandleTarget target = GetVarHandleTarget(invoke); in GenerateVarHandleSet()
4036 slow_path = GenerateVarHandleChecks(invoke, codegen, order, value_type); in GenerateVarHandleSet()
4037 GenerateVarHandleTarget(invoke, target, codegen); in GenerateVarHandleSet()
4048 ? invoke->GetLocations()->GetTemp(0).AsRegister<XRegister>() in GenerateVarHandleSet()
4068 if (CodeGenerator::StoreNeedsWriteBarrier(value_type, invoke->InputAt(value_index))) { in GenerateVarHandleSet()
4079 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleSet(HInvoke* invoke) { in VisitVarHandleSet() argument
4080 CreateVarHandleSetLocations(invoke, codegen_); in VisitVarHandleSet()
4083 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleSet(HInvoke* invoke) { in VisitVarHandleSet() argument
4084 GenerateVarHandleSet(invoke, codegen_, std::memory_order_relaxed); in VisitVarHandleSet()
4087 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleSetOpaque(HInvoke* invoke) { in VisitVarHandleSetOpaque() argument
4088 CreateVarHandleSetLocations(invoke, codegen_); in VisitVarHandleSetOpaque()
4091 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleSetOpaque(HInvoke* invoke) { in VisitVarHandleSetOpaque() argument
4092 GenerateVarHandleSet(invoke, codegen_, std::memory_order_relaxed); in VisitVarHandleSetOpaque()
4095 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleSetRelease(HInvoke* invoke) { in VisitVarHandleSetRelease() argument
4096 CreateVarHandleSetLocations(invoke, codegen_); in VisitVarHandleSetRelease()
4099 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleSetRelease(HInvoke* invoke) { in VisitVarHandleSetRelease() argument
4100 GenerateVarHandleSet(invoke, codegen_, std::memory_order_release); in VisitVarHandleSetRelease()
4103 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleSetVolatile(HInvoke* invoke) { in VisitVarHandleSetVolatile() argument
4104 CreateVarHandleSetLocations(invoke, codegen_); in VisitVarHandleSetVolatile()
4107 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleSetVolatile(HInvoke* invoke) { in VisitVarHandleSetVolatile() argument
4108 GenerateVarHandleSet(invoke, codegen_, std::memory_order_seq_cst); in VisitVarHandleSetVolatile()
4119 static void CreateVarHandleCompareAndSetOrExchangeLocations(HInvoke* invoke, in CreateVarHandleCompareAndSetOrExchangeLocations() argument
4122 VarHandleOptimizations optimizations(invoke); in CreateVarHandleCompareAndSetOrExchangeLocations()
4127 uint32_t expected_index = invoke->GetNumberOfArguments() - 2; in CreateVarHandleCompareAndSetOrExchangeLocations()
4128 uint32_t new_value_index = invoke->GetNumberOfArguments() - 1; in CreateVarHandleCompareAndSetOrExchangeLocations()
4129 DataType::Type value_type = GetDataTypeFromShorty(invoke, new_value_index); in CreateVarHandleCompareAndSetOrExchangeLocations()
4130 DCHECK_EQ(value_type, GetDataTypeFromShorty(invoke, expected_index)); in CreateVarHandleCompareAndSetOrExchangeLocations()
4149 LocationSummary* locations = CreateVarHandleCommonLocations(invoke, codegen); in CreateVarHandleCompareAndSetOrExchangeLocations()
4150 DCHECK_EQ(expected_index, 1u + GetExpectedVarHandleCoordinatesCount(invoke)); in CreateVarHandleCompareAndSetOrExchangeLocations()
4258 static void GenerateVarHandleCompareAndSetOrExchange(HInvoke* invoke, in GenerateVarHandleCompareAndSetOrExchange() argument
4266 uint32_t expected_index = invoke->GetNumberOfArguments() - 2; in GenerateVarHandleCompareAndSetOrExchange()
4267 uint32_t new_value_index = invoke->GetNumberOfArguments() - 1; in GenerateVarHandleCompareAndSetOrExchange()
4268 DataType::Type value_type = GetDataTypeFromShorty(invoke, new_value_index); in GenerateVarHandleCompareAndSetOrExchange()
4269 DCHECK_EQ(value_type, GetDataTypeFromShorty(invoke, expected_index)); in GenerateVarHandleCompareAndSetOrExchange()
4272 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleCompareAndSetOrExchange()
4277 VarHandleTarget target = GetVarHandleTarget(invoke); in GenerateVarHandleCompareAndSetOrExchange()
4280 slow_path = GenerateVarHandleChecks(invoke, codegen, order, value_type); in GenerateVarHandleCompareAndSetOrExchange()
4281 GenerateVarHandleTarget(invoke, target, codegen); in GenerateVarHandleCompareAndSetOrExchange()
4289 if (CodeGenerator::StoreNeedsWriteBarrier(value_type, invoke->InputAt(new_value_index))) { in GenerateVarHandleCompareAndSetOrExchange()
4313 DCHECK_EQ(expected_index, 1u + GetExpectedVarHandleCoordinatesCount(invoke)); in GenerateVarHandleCompareAndSetOrExchange()
4396 invoke, in GenerateVarHandleCompareAndSetOrExchange()
4477 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleCompareAndExchange(HInvoke* invoke) { in VisitVarHandleCompareAndExchange() argument
4478 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ false); in VisitVarHandleCompareAndExchange()
4481 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleCompareAndExchange(HInvoke* invoke) { in VisitVarHandleCompareAndExchange() argument
4483 invoke, codegen_, std::memory_order_seq_cst, /*return_success=*/ false, /*strong=*/ true); in VisitVarHandleCompareAndExchange()
4486 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleCompareAndExchangeAcquire(HInvoke* invoke) { in VisitVarHandleCompareAndExchangeAcquire() argument
4487 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ false); in VisitVarHandleCompareAndExchangeAcquire()
4490 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleCompareAndExchangeAcquire(HInvoke* invoke) { in VisitVarHandleCompareAndExchangeAcquire() argument
4492 invoke, codegen_, std::memory_order_acquire, /*return_success=*/ false, /*strong=*/ true); in VisitVarHandleCompareAndExchangeAcquire()
4495 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleCompareAndExchangeRelease(HInvoke* invoke) { in VisitVarHandleCompareAndExchangeRelease() argument
4496 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ false); in VisitVarHandleCompareAndExchangeRelease()
4499 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleCompareAndExchangeRelease(HInvoke* invoke) { in VisitVarHandleCompareAndExchangeRelease() argument
4501 invoke, codegen_, std::memory_order_release, /*return_success=*/ false, /*strong=*/ true); in VisitVarHandleCompareAndExchangeRelease()
4504 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleCompareAndSet(HInvoke* invoke) { in VisitVarHandleCompareAndSet() argument
4505 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ true); in VisitVarHandleCompareAndSet()
4508 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleCompareAndSet(HInvoke* invoke) { in VisitVarHandleCompareAndSet() argument
4510 invoke, codegen_, std::memory_order_seq_cst, /*return_success=*/ true, /*strong=*/ true); in VisitVarHandleCompareAndSet()
4513 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleWeakCompareAndSet(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSet() argument
4514 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ true); in VisitVarHandleWeakCompareAndSet()
4517 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleWeakCompareAndSet(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSet() argument
4519 invoke, codegen_, std::memory_order_seq_cst, /*return_success=*/ true, /*strong=*/ false); in VisitVarHandleWeakCompareAndSet()
4522 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleWeakCompareAndSetAcquire(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSetAcquire() argument
4523 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ true); in VisitVarHandleWeakCompareAndSetAcquire()
4526 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleWeakCompareAndSetAcquire(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSetAcquire() argument
4528 invoke, codegen_, std::memory_order_acquire, /*return_success=*/ true, /*strong=*/ false); in VisitVarHandleWeakCompareAndSetAcquire()
4531 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleWeakCompareAndSetPlain(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSetPlain() argument
4532 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ true); in VisitVarHandleWeakCompareAndSetPlain()
4535 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleWeakCompareAndSetPlain(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSetPlain() argument
4537 invoke, codegen_, std::memory_order_relaxed, /*return_success=*/ true, /*strong=*/ false); in VisitVarHandleWeakCompareAndSetPlain()
4540 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleWeakCompareAndSetRelease(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSetRelease() argument
4541 CreateVarHandleCompareAndSetOrExchangeLocations(invoke, codegen_, /*return_success=*/ true); in VisitVarHandleWeakCompareAndSetRelease()
4544 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleWeakCompareAndSetRelease(HInvoke* invoke) { in VisitVarHandleWeakCompareAndSetRelease() argument
4546 invoke, codegen_, std::memory_order_release, /*return_success=*/ true, /*strong=*/ false); in VisitVarHandleWeakCompareAndSetRelease()
4549 static void CreateVarHandleGetAndUpdateLocations(HInvoke* invoke, in CreateVarHandleGetAndUpdateLocations() argument
4552 VarHandleOptimizations optimizations(invoke); in CreateVarHandleGetAndUpdateLocations()
4558 uint32_t arg_index = invoke->GetNumberOfArguments() - 1; in CreateVarHandleGetAndUpdateLocations()
4559 DCHECK_EQ(arg_index, 1u + GetExpectedVarHandleCoordinatesCount(invoke)); in CreateVarHandleGetAndUpdateLocations()
4560 DataType::Type value_type = GetDataTypeFromShorty(invoke, arg_index); in CreateVarHandleGetAndUpdateLocations()
4573 LocationSummary* locations = CreateVarHandleCommonLocations(invoke, codegen); in CreateVarHandleGetAndUpdateLocations()
4627 DataType::Type return_type = invoke->GetType(); in CreateVarHandleGetAndUpdateLocations()
4639 static void GenerateVarHandleGetAndUpdate(HInvoke* invoke, in GenerateVarHandleGetAndUpdate() argument
4645 uint32_t arg_index = invoke->GetNumberOfArguments() - 1; in GenerateVarHandleGetAndUpdate()
4646 DCHECK_EQ(arg_index, 1u + GetExpectedVarHandleCoordinatesCount(invoke)); in GenerateVarHandleGetAndUpdate()
4647 DataType::Type value_type = GetDataTypeFromShorty(invoke, arg_index); in GenerateVarHandleGetAndUpdate()
4650 LocationSummary* locations = invoke->GetLocations(); in GenerateVarHandleGetAndUpdate()
4653 DataType::Type return_type = invoke->GetType(); in GenerateVarHandleGetAndUpdate()
4660 VarHandleTarget target = GetVarHandleTarget(invoke); in GenerateVarHandleGetAndUpdate()
4663 slow_path = GenerateVarHandleChecks(invoke, codegen, order, value_type); in GenerateVarHandleGetAndUpdate()
4664 GenerateVarHandleTarget(invoke, target, codegen); in GenerateVarHandleGetAndUpdate()
4672 if (CodeGenerator::StoreNeedsWriteBarrier(value_type, invoke->InputAt(arg_index))) { in GenerateVarHandleGetAndUpdate()
4882 invoke, out_or_temp, kBakerReadBarrierTemp); in GenerateVarHandleGetAndUpdate()
4888 invoke, out_or_temp, out_or_temp, base_loc, /*offset=*/ 0u, index); in GenerateVarHandleGetAndUpdate()
4915 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndSet(HInvoke* invoke) { in VisitVarHandleGetAndSet() argument
4916 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kSet); in VisitVarHandleGetAndSet()
4919 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndSet(HInvoke* invoke) { in VisitVarHandleGetAndSet() argument
4920 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kSet, std::memory_order_seq_cst); in VisitVarHandleGetAndSet()
4923 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndSetAcquire(HInvoke* invoke) { in VisitVarHandleGetAndSetAcquire() argument
4924 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kSet); in VisitVarHandleGetAndSetAcquire()
4927 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndSetAcquire(HInvoke* invoke) { in VisitVarHandleGetAndSetAcquire() argument
4928 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kSet, std::memory_order_acquire); in VisitVarHandleGetAndSetAcquire()
4931 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndSetRelease(HInvoke* invoke) { in VisitVarHandleGetAndSetRelease() argument
4932 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kSet); in VisitVarHandleGetAndSetRelease()
4935 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndSetRelease(HInvoke* invoke) { in VisitVarHandleGetAndSetRelease() argument
4936 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kSet, std::memory_order_release); in VisitVarHandleGetAndSetRelease()
4939 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndAdd(HInvoke* invoke) { in VisitVarHandleGetAndAdd() argument
4940 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kAdd); in VisitVarHandleGetAndAdd()
4943 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndAdd(HInvoke* invoke) { in VisitVarHandleGetAndAdd() argument
4944 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kAdd, std::memory_order_seq_cst); in VisitVarHandleGetAndAdd()
4947 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndAddAcquire(HInvoke* invoke) { in VisitVarHandleGetAndAddAcquire() argument
4948 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kAdd); in VisitVarHandleGetAndAddAcquire()
4951 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndAddAcquire(HInvoke* invoke) { in VisitVarHandleGetAndAddAcquire() argument
4952 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kAdd, std::memory_order_acquire); in VisitVarHandleGetAndAddAcquire()
4955 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndAddRelease(HInvoke* invoke) { in VisitVarHandleGetAndAddRelease() argument
4956 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kAdd); in VisitVarHandleGetAndAddRelease()
4959 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndAddRelease(HInvoke* invoke) { in VisitVarHandleGetAndAddRelease() argument
4960 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kAdd, std::memory_order_release); in VisitVarHandleGetAndAddRelease()
4963 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseAnd(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseAnd() argument
4964 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kAnd); in VisitVarHandleGetAndBitwiseAnd()
4967 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseAnd(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseAnd() argument
4968 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kAnd, std::memory_order_seq_cst); in VisitVarHandleGetAndBitwiseAnd()
4971 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseAndAcquire(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseAndAcquire() argument
4972 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kAnd); in VisitVarHandleGetAndBitwiseAndAcquire()
4975 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseAndAcquire(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseAndAcquire() argument
4976 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kAnd, std::memory_order_acquire); in VisitVarHandleGetAndBitwiseAndAcquire()
4979 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseAndRelease(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseAndRelease() argument
4980 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kAnd); in VisitVarHandleGetAndBitwiseAndRelease()
4983 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseAndRelease(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseAndRelease() argument
4984 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kAnd, std::memory_order_release); in VisitVarHandleGetAndBitwiseAndRelease()
4987 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseOr(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseOr() argument
4988 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kOr); in VisitVarHandleGetAndBitwiseOr()
4991 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseOr(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseOr() argument
4992 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kOr, std::memory_order_seq_cst); in VisitVarHandleGetAndBitwiseOr()
4995 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseOrAcquire(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseOrAcquire() argument
4996 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kOr); in VisitVarHandleGetAndBitwiseOrAcquire()
4999 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseOrAcquire(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseOrAcquire() argument
5000 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kOr, std::memory_order_acquire); in VisitVarHandleGetAndBitwiseOrAcquire()
5003 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseOrRelease(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseOrRelease() argument
5004 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kOr); in VisitVarHandleGetAndBitwiseOrRelease()
5007 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseOrRelease(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseOrRelease() argument
5008 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kOr, std::memory_order_release); in VisitVarHandleGetAndBitwiseOrRelease()
5011 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseXor(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseXor() argument
5012 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kXor); in VisitVarHandleGetAndBitwiseXor()
5015 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseXor(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseXor() argument
5016 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kXor, std::memory_order_seq_cst); in VisitVarHandleGetAndBitwiseXor()
5019 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseXorAcquire(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseXorAcquire() argument
5020 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kXor); in VisitVarHandleGetAndBitwiseXorAcquire()
5023 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseXorAcquire(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseXorAcquire() argument
5024 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kXor, std::memory_order_acquire); in VisitVarHandleGetAndBitwiseXorAcquire()
5027 void IntrinsicLocationsBuilderRISCV64::VisitVarHandleGetAndBitwiseXorRelease(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseXorRelease() argument
5028 CreateVarHandleGetAndUpdateLocations(invoke, codegen_, GetAndUpdateOp::kXor); in VisitVarHandleGetAndBitwiseXorRelease()
5031 void IntrinsicCodeGeneratorRISCV64::VisitVarHandleGetAndBitwiseXorRelease(HInvoke* invoke) { in VisitVarHandleGetAndBitwiseXorRelease() argument
5032 GenerateVarHandleGetAndUpdate(invoke, codegen_, GetAndUpdateOp::kXor, std::memory_order_release); in VisitVarHandleGetAndBitwiseXorRelease()
5039 HInvoke* invoke = GetInvoke(); in EmitByteArrayViewCode() local
5042 GetVarHandleExpectedValueType(invoke, /*expected_coordinates_count=*/ 2u); in EmitByteArrayViewCode()
5046 LocationSummary* locations = invoke->GetLocations(); in EmitByteArrayViewCode()
5058 VarHandleTarget target = GetVarHandleTarget(invoke); in EmitByteArrayViewCode()
5088 IsZeroBitPattern(invoke->InputAt(invoke->GetNumberOfArguments() - 1u))) { in EmitByteArrayViewCode()
5100 GenerateVarHandleGet(invoke, codegen, order_, /*byte_swap=*/ true); in EmitByteArrayViewCode()
5103 GenerateVarHandleSet(invoke, codegen, order_, /*byte_swap=*/ true); in EmitByteArrayViewCode()
5108 invoke, codegen, order_, return_success_, strong_, /*byte_swap=*/ true); in EmitByteArrayViewCode()
5112 invoke, codegen, get_and_update_op_, order_, /*byte_swap=*/ true); in EmitByteArrayViewCode()
5118 void IntrinsicLocationsBuilderRISCV64::VisitThreadCurrentThread(HInvoke* invoke) { in VisitThreadCurrentThread() argument
5120 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitThreadCurrentThread()
5124 void IntrinsicCodeGeneratorRISCV64::VisitThreadCurrentThread(HInvoke* invoke) { in VisitThreadCurrentThread() argument
5126 XRegister out = invoke->GetLocations()->Out().AsRegister<XRegister>(); in VisitThreadCurrentThread()
5130 void IntrinsicLocationsBuilderRISCV64::VisitThreadInterrupted(HInvoke* invoke) { in VisitThreadInterrupted() argument
5132 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitThreadInterrupted()
5136 void IntrinsicCodeGeneratorRISCV64::VisitThreadInterrupted(HInvoke* invoke) { in VisitThreadInterrupted() argument
5137 LocationSummary* locations = invoke->GetLocations(); in VisitThreadInterrupted()
5150 void IntrinsicLocationsBuilderRISCV64::VisitReachabilityFence(HInvoke* invoke) { in VisitReachabilityFence() argument
5152 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitReachabilityFence()
5156 void IntrinsicCodeGeneratorRISCV64::VisitReachabilityFence([[maybe_unused]] HInvoke* invoke) {} in VisitReachabilityFence() argument
5158 void IntrinsicLocationsBuilderRISCV64::VisitMathFmaDouble(HInvoke* invoke) { in VisitMathFmaDouble() argument
5159 CreateFpFpFpToFpNoOverlapLocations(allocator_, invoke); in VisitMathFmaDouble()
5162 void IntrinsicCodeGeneratorRISCV64::VisitMathFmaDouble(HInvoke* invoke) { in VisitMathFmaDouble() argument
5163 LocationSummary* locations = invoke->GetLocations(); in VisitMathFmaDouble()
5173 void IntrinsicLocationsBuilderRISCV64::VisitMathFmaFloat(HInvoke* invoke) { in VisitMathFmaFloat() argument
5174 CreateFpFpFpToFpNoOverlapLocations(allocator_, invoke); in VisitMathFmaFloat()
5177 void IntrinsicCodeGeneratorRISCV64::VisitMathFmaFloat(HInvoke* invoke) { in VisitMathFmaFloat() argument
5178 LocationSummary* locations = invoke->GetLocations(); in VisitMathFmaFloat()
5189 void IntrinsicLocationsBuilderRISCV64::VisitMathCos(HInvoke* invoke) { in VisitMathCos() argument
5190 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCos()
5193 void IntrinsicCodeGeneratorRISCV64::VisitMathCos(HInvoke* invoke) { in VisitMathCos() argument
5194 codegen_->InvokeRuntime(kQuickCos, invoke, invoke->GetDexPc()); in VisitMathCos()
5197 void IntrinsicLocationsBuilderRISCV64::VisitMathSin(HInvoke* invoke) { in VisitMathSin() argument
5198 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathSin()
5201 void IntrinsicCodeGeneratorRISCV64::VisitMathSin(HInvoke* invoke) { in VisitMathSin() argument
5202 codegen_->InvokeRuntime(kQuickSin, invoke, invoke->GetDexPc()); in VisitMathSin()
5205 void IntrinsicLocationsBuilderRISCV64::VisitMathAcos(HInvoke* invoke) { in VisitMathAcos() argument
5206 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAcos()
5209 void IntrinsicCodeGeneratorRISCV64::VisitMathAcos(HInvoke* invoke) { in VisitMathAcos() argument
5210 codegen_->InvokeRuntime(kQuickAcos, invoke, invoke->GetDexPc()); in VisitMathAcos()
5213 void IntrinsicLocationsBuilderRISCV64::VisitMathAsin(HInvoke* invoke) { in VisitMathAsin() argument
5214 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAsin()
5217 void IntrinsicCodeGeneratorRISCV64::VisitMathAsin(HInvoke* invoke) { in VisitMathAsin() argument
5218 codegen_->InvokeRuntime(kQuickAsin, invoke, invoke->GetDexPc()); in VisitMathAsin()
5221 void IntrinsicLocationsBuilderRISCV64::VisitMathAtan(HInvoke* invoke) { in VisitMathAtan() argument
5222 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathAtan()
5225 void IntrinsicCodeGeneratorRISCV64::VisitMathAtan(HInvoke* invoke) { in VisitMathAtan() argument
5226 codegen_->InvokeRuntime(kQuickAtan, invoke, invoke->GetDexPc()); in VisitMathAtan()
5229 void IntrinsicLocationsBuilderRISCV64::VisitMathAtan2(HInvoke* invoke) { in VisitMathAtan2() argument
5230 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathAtan2()
5233 void IntrinsicCodeGeneratorRISCV64::VisitMathAtan2(HInvoke* invoke) { in VisitMathAtan2() argument
5234 codegen_->InvokeRuntime(kQuickAtan2, invoke, invoke->GetDexPc()); in VisitMathAtan2()
5237 void IntrinsicLocationsBuilderRISCV64::VisitMathPow(HInvoke* invoke) { in VisitMathPow() argument
5238 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathPow()
5241 void IntrinsicCodeGeneratorRISCV64::VisitMathPow(HInvoke* invoke) { in VisitMathPow() argument
5242 codegen_->InvokeRuntime(kQuickPow, invoke, invoke->GetDexPc()); in VisitMathPow()
5245 void IntrinsicLocationsBuilderRISCV64::VisitMathCbrt(HInvoke* invoke) { in VisitMathCbrt() argument
5246 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCbrt()
5249 void IntrinsicCodeGeneratorRISCV64::VisitMathCbrt(HInvoke* invoke) { in VisitMathCbrt() argument
5250 codegen_->InvokeRuntime(kQuickCbrt, invoke, invoke->GetDexPc()); in VisitMathCbrt()
5253 void IntrinsicLocationsBuilderRISCV64::VisitMathCosh(HInvoke* invoke) { in VisitMathCosh() argument
5254 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathCosh()
5257 void IntrinsicCodeGeneratorRISCV64::VisitMathCosh(HInvoke* invoke) { in VisitMathCosh() argument
5258 codegen_->InvokeRuntime(kQuickCosh, invoke, invoke->GetDexPc()); in VisitMathCosh()
5261 void IntrinsicLocationsBuilderRISCV64::VisitMathExp(HInvoke* invoke) { in VisitMathExp() argument
5262 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathExp()
5265 void IntrinsicCodeGeneratorRISCV64::VisitMathExp(HInvoke* invoke) { in VisitMathExp() argument
5266 codegen_->InvokeRuntime(kQuickExp, invoke, invoke->GetDexPc()); in VisitMathExp()
5269 void IntrinsicLocationsBuilderRISCV64::VisitMathExpm1(HInvoke* invoke) { in VisitMathExpm1() argument
5270 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathExpm1()
5273 void IntrinsicCodeGeneratorRISCV64::VisitMathExpm1(HInvoke* invoke) { in VisitMathExpm1() argument
5274 codegen_->InvokeRuntime(kQuickExpm1, invoke, invoke->GetDexPc()); in VisitMathExpm1()
5277 void IntrinsicLocationsBuilderRISCV64::VisitMathHypot(HInvoke* invoke) { in VisitMathHypot() argument
5278 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathHypot()
5281 void IntrinsicCodeGeneratorRISCV64::VisitMathHypot(HInvoke* invoke) { in VisitMathHypot() argument
5282 codegen_->InvokeRuntime(kQuickHypot, invoke, invoke->GetDexPc()); in VisitMathHypot()
5285 void IntrinsicLocationsBuilderRISCV64::VisitMathLog(HInvoke* invoke) { in VisitMathLog() argument
5286 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathLog()
5289 void IntrinsicCodeGeneratorRISCV64::VisitMathLog(HInvoke* invoke) { in VisitMathLog() argument
5290 codegen_->InvokeRuntime(kQuickLog, invoke, invoke->GetDexPc()); in VisitMathLog()
5293 void IntrinsicLocationsBuilderRISCV64::VisitMathLog10(HInvoke* invoke) { in VisitMathLog10() argument
5294 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathLog10()
5297 void IntrinsicCodeGeneratorRISCV64::VisitMathLog10(HInvoke* invoke) { in VisitMathLog10() argument
5298 codegen_->InvokeRuntime(kQuickLog10, invoke, invoke->GetDexPc()); in VisitMathLog10()
5301 void IntrinsicLocationsBuilderRISCV64::VisitMathNextAfter(HInvoke* invoke) { in VisitMathNextAfter() argument
5302 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathNextAfter()
5305 void IntrinsicCodeGeneratorRISCV64::VisitMathNextAfter(HInvoke* invoke) { in VisitMathNextAfter() argument
5306 codegen_->InvokeRuntime(kQuickNextAfter, invoke, invoke->GetDexPc()); in VisitMathNextAfter()
5309 void IntrinsicLocationsBuilderRISCV64::VisitMathSinh(HInvoke* invoke) { in VisitMathSinh() argument
5310 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathSinh()
5313 void IntrinsicCodeGeneratorRISCV64::VisitMathSinh(HInvoke* invoke) { in VisitMathSinh() argument
5314 codegen_->InvokeRuntime(kQuickSinh, invoke, invoke->GetDexPc()); in VisitMathSinh()
5317 void IntrinsicLocationsBuilderRISCV64::VisitMathTan(HInvoke* invoke) { in VisitMathTan() argument
5318 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathTan()
5321 void IntrinsicCodeGeneratorRISCV64::VisitMathTan(HInvoke* invoke) { in VisitMathTan() argument
5322 codegen_->InvokeRuntime(kQuickTan, invoke, invoke->GetDexPc()); in VisitMathTan()
5325 void IntrinsicLocationsBuilderRISCV64::VisitMathTanh(HInvoke* invoke) { in VisitMathTanh() argument
5326 CreateFPToFPCallLocations(allocator_, invoke); in VisitMathTanh()
5329 void IntrinsicCodeGeneratorRISCV64::VisitMathTanh(HInvoke* invoke) { in VisitMathTanh() argument
5330 codegen_->InvokeRuntime(kQuickTanh, invoke, invoke->GetDexPc()); in VisitMathTanh()
5333 void IntrinsicLocationsBuilderRISCV64::VisitMathSqrt(HInvoke* invoke) { in VisitMathSqrt() argument
5334 CreateFPToFPLocations(allocator_, invoke, Location::kNoOutputOverlap); in VisitMathSqrt()
5337 void IntrinsicCodeGeneratorRISCV64::VisitMathSqrt(HInvoke* invoke) { in VisitMathSqrt() argument
5338 DCHECK_EQ(invoke->InputAt(0)->GetType(), DataType::Type::kFloat64); in VisitMathSqrt()
5339 DCHECK_EQ(invoke->GetType(), DataType::Type::kFloat64); in VisitMathSqrt()
5341 LocationSummary* locations = invoke->GetLocations(); in VisitMathSqrt()
5349 static void GenDoubleRound(Riscv64Assembler* assembler, HInvoke* invoke, FPRoundingMode mode) { in GenDoubleRound() argument
5350 LocationSummary* locations = invoke->GetLocations(); in GenDoubleRound()
5377 void IntrinsicLocationsBuilderRISCV64::VisitMathFloor(HInvoke* invoke) { in VisitMathFloor() argument
5378 CreateFPToFPLocations(allocator_, invoke); in VisitMathFloor()
5381 void IntrinsicCodeGeneratorRISCV64::VisitMathFloor(HInvoke* invoke) { in VisitMathFloor() argument
5382 GenDoubleRound(GetAssembler(), invoke, FPRoundingMode::kRDN); in VisitMathFloor()
5385 void IntrinsicLocationsBuilderRISCV64::VisitMathCeil(HInvoke* invoke) { in VisitMathCeil() argument
5386 CreateFPToFPLocations(allocator_, invoke); in VisitMathCeil()
5389 void IntrinsicCodeGeneratorRISCV64::VisitMathCeil(HInvoke* invoke) { in VisitMathCeil() argument
5390 GenDoubleRound(GetAssembler(), invoke, FPRoundingMode::kRUP); in VisitMathCeil()
5393 void IntrinsicLocationsBuilderRISCV64::VisitMathRint(HInvoke* invoke) { in VisitMathRint() argument
5394 CreateFPToFPLocations(allocator_, invoke); in VisitMathRint()
5397 void IntrinsicCodeGeneratorRISCV64::VisitMathRint(HInvoke* invoke) { in VisitMathRint() argument
5398 GenDoubleRound(GetAssembler(), invoke, FPRoundingMode::kRNE); in VisitMathRint()
5401 void GenMathRound(CodeGeneratorRISCV64* codegen, HInvoke* invoke, DataType::Type type) { in GenMathRound() argument
5403 LocationSummary* locations = invoke->GetLocations(); in GenMathRound()
5436 void IntrinsicLocationsBuilderRISCV64::VisitMathRoundDouble(HInvoke* invoke) { in VisitMathRoundDouble() argument
5437 CreateFPToIntLocations(allocator_, invoke); in VisitMathRoundDouble()
5440 void IntrinsicCodeGeneratorRISCV64::VisitMathRoundDouble(HInvoke* invoke) { in VisitMathRoundDouble() argument
5441 GenMathRound(codegen_, invoke, DataType::Type::kFloat64); in VisitMathRoundDouble()
5444 void IntrinsicLocationsBuilderRISCV64::VisitMathRoundFloat(HInvoke* invoke) { in VisitMathRoundFloat() argument
5445 CreateFPToIntLocations(allocator_, invoke); in VisitMathRoundFloat()
5448 void IntrinsicCodeGeneratorRISCV64::VisitMathRoundFloat(HInvoke* invoke) { in VisitMathRoundFloat() argument
5449 GenMathRound(codegen_, invoke, DataType::Type::kFloat32); in VisitMathRoundFloat()
5452 void IntrinsicLocationsBuilderRISCV64::VisitMathMultiplyHigh(HInvoke* invoke) { in VisitMathMultiplyHigh() argument
5454 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitMathMultiplyHigh()
5460 void IntrinsicCodeGeneratorRISCV64::VisitMathMultiplyHigh(HInvoke* invoke) { in VisitMathMultiplyHigh() argument
5461 LocationSummary* locations = invoke->GetLocations(); in VisitMathMultiplyHigh()
5463 DCHECK(invoke->GetType() == DataType::Type::kInt64); in VisitMathMultiplyHigh()
5473 void IntrinsicLocationsBuilderRISCV64::VisitStringGetCharsNoCheck(HInvoke* invoke) { in VisitStringGetCharsNoCheck() argument
5475 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitStringGetCharsNoCheck()
5486 void IntrinsicCodeGeneratorRISCV64::VisitStringGetCharsNoCheck(HInvoke* invoke) { in VisitStringGetCharsNoCheck() argument
5488 LocationSummary* locations = invoke->GetLocations(); in VisitStringGetCharsNoCheck()
5650 void GenMathSignum(CodeGeneratorRISCV64* codegen, HInvoke* invoke, DataType::Type type) { in GenMathSignum() argument
5651 LocationSummary* locations = invoke->GetLocations(); in GenMathSignum()
5684 void IntrinsicLocationsBuilderRISCV64::VisitMathSignumDouble(HInvoke* invoke) { in VisitMathSignumDouble() argument
5686 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitMathSignumDouble()
5691 void IntrinsicCodeGeneratorRISCV64::VisitMathSignumDouble(HInvoke* invoke) { in VisitMathSignumDouble() argument
5692 GenMathSignum(codegen_, invoke, DataType::Type::kFloat64); in VisitMathSignumDouble()
5695 void IntrinsicLocationsBuilderRISCV64::VisitMathSignumFloat(HInvoke* invoke) { in VisitMathSignumFloat() argument
5697 new (allocator_) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified); in VisitMathSignumFloat()
5702 void IntrinsicCodeGeneratorRISCV64::VisitMathSignumFloat(HInvoke* invoke) { in VisitMathSignumFloat() argument
5703 GenMathSignum(codegen_, invoke, DataType::Type::kFloat32); in VisitMathSignumFloat()
5706 void GenMathCopySign(CodeGeneratorRISCV64* codegen, HInvoke* invoke, DataType::Type type) { in GenMathCopySign() argument
5708 LocationSummary* locations = invoke->GetLocations(); in GenMathCopySign()
5720 void IntrinsicLocationsBuilderRISCV64::VisitMathCopySignDouble(HInvoke* invoke) { in VisitMathCopySignDouble() argument
5721 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathCopySignDouble()
5724 void IntrinsicCodeGeneratorRISCV64::VisitMathCopySignDouble(HInvoke* invoke) { in VisitMathCopySignDouble() argument
5725 GenMathCopySign(codegen_, invoke, DataType::Type::kFloat64); in VisitMathCopySignDouble()
5728 void IntrinsicLocationsBuilderRISCV64::VisitMathCopySignFloat(HInvoke* invoke) { in VisitMathCopySignFloat() argument
5729 CreateFPFPToFPCallLocations(allocator_, invoke); in VisitMathCopySignFloat()
5732 void IntrinsicCodeGeneratorRISCV64::VisitMathCopySignFloat(HInvoke* invoke) { in VisitMathCopySignFloat() argument
5733 GenMathCopySign(codegen_, invoke, DataType::Type::kFloat32); in VisitMathCopySignFloat()