5#ifndef V8_CODEGEN_PPC_MACRO_ASSEMBLER_PPC_H_
6#define V8_CODEGEN_PPC_MACRO_ASSEMBLER_PPC_H_
8#ifndef INCLUDED_FROM_MACRO_ASSEMBLER_H
9#error This header must be included via macro-assembler.h
43#define ClearLeftImm clrldi
44#define ClearRightImm clrrdi
48 using MacroAssemblerBase::MacroAssemblerBase;
91 bool load_constant_pool_pointer_reg =
false);
98 if (bytes == 0)
return;
99 AddS64(sp, sp,
Operand(-bytes), r0);
128#ifdef V8_COMPRESS_POINTERS
130 IsolateData::cage_base_offset());
159 CmpS32(src1, src2, cr);
161 CmpS64(src1, src2, cr);
290 template <
class _type>
292 switch (
sizeof(_type)) {
303 if (dst != value) mr(dst, value);
310 template <
class _type>
312 switch (
sizeof(_type)) {
314 ZeroExtByte(dst, value);
317 ZeroExtHalfWord(dst, value);
320 ZeroExtWord32(dst, value);
323 if (dst != value) mr(dst, value);
329 template <
class _type>
331 if (std::is_signed<_type>::value) {
332 SignedExtend<_type>(dst, value);
334 ZeroExtend<_type>(dst, value);
338 template <
class _type>
340 switch (
sizeof(_type)) {
356 if (std::is_signed<_type>::value) {
357 SignedExtend<_type>(output, output);
361 template <
class _type>
363 switch (
sizeof(_type)) {
381 template <
class _type>
387 if (
sizeof(_type) != 8) {
388 ExtendValue<_type>(scratch, old_value);
393 LoadReserve<_type>(output, dst);
394 cmp(output, old_value, cr0);
396 StoreConditional<_type>(new_value, dst);
402 template <
class _type>
407 LoadReserve<_type>(output, dst);
408 StoreConditional<_type>(new_value, dst);
413 template <
class _type,
class bin_op>
419 switch (
sizeof(_type)) {
435 op(
result, output, value);
436 switch (
sizeof(_type)) {
573 Register exclusion3 = no_reg)
const;
650 bool has_function_descriptor =
true);
652 Register function,
int num_arguments,
654 bool has_function_descriptor =
true);
657 int num_double_arguments,
659 bool has_function_descriptor =
true);
661 Register function,
int num_reg_arguments,
int num_double_arguments,
663 bool has_function_descriptor =
true);
696 return ExternalReferenceAsOperand(ExternalReference::Create(
id),
no_reg);
721#ifdef V8_ENABLE_LEAPTIERING
742 Label* jump_deoptimization_entry_label);
759 CanonicalizeNaN(value, value);
762 Label* condition_met);
790 LoadU64(dst, src, r0);
835 int rangeEnd,
RCBit rc = LeaveRC,
839 int width = rangeStart - rangeEnd + 1;
840 if (rc ==
SetRC && rangeStart < 16 && (rangeEnd == 0 || test)) {
842 andi(dst, src,
Operand(((1 << width) - 1) << rangeEnd));
849 RCBit rc = LeaveRC,
bool test =
false) {
850 ExtractBitRange(dst, src, bitNumber, bitNumber, rc, test);
856 RCBit rc = LeaveRC,
bool test =
false) {
859 uintptr_t bit = (1L <<
start);
861 while (bit && (
mask & bit) == 0) {
868 while (bit && (
mask & bit)) {
874 DCHECK(bit == 0 || (
mask & ((bit << 1) - 1)) == 0);
876 ExtractBitRange(dst, src,
start,
end, rc, test);
881 ExtractBitRange(scratch, value, bitNumber, bitNumber,
SetRC,
true);
887 ExtractBitMask(scratch, value,
mask,
SetRC,
true);
893 ExtractBitRange(scratch, value, rangeStart, rangeEnd,
SetRC,
true);
901 TestIfSmi(value, r0);
916 extsw(scratch, value);
917 CmpS64(scratch, value, cr);
955 bind(ConstantPoolPosition());
964#ifdef V8_ENABLE_LEAPTIERING
966 uint16_t argument_count);
968#ifdef V8_ENABLE_WEBASSEMBLY
969 void ResolveWasmCodePointer(
Register target);
970 void CallWasmCodePointer(
Register target,
1032 LoadTrustedPointerField(
destination, field_operand, kCodeIndirectPointerTag,
1038 StoreTrustedPointerField(value, dst_field_operand, scratch);
1051#ifdef V8_ENABLE_SANDBOX
1084#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
1173#define SIMD_BINOP_LIST(V) \
1219 V(I16x8SConvertI32x4) \
1220 V(I16x8UConvertI32x4) \
1221 V(I16x8RoundingAverageU) \
1222 V(I16x8Q15MulRSatS) \
1236 V(I8x16SConvertI16x8) \
1237 V(I8x16UConvertI16x8) \
1238 V(I8x16RoundingAverageU) \
1244#define PROTOTYPE_SIMD_BINOP(name) \
1245 void name(Simd128Register dst, Simd128Register src1, Simd128Register src2);
1247#undef PROTOTYPE_SIMD_BINOP
1248#undef SIMD_BINOP_LIST
1250#define SIMD_BINOP_WITH_SCRATCH_LIST(V) \
1259 V(I64x2ExtMulLowI32x4S) \
1260 V(I64x2ExtMulHighI32x4S) \
1261 V(I64x2ExtMulLowI32x4U) \
1262 V(I64x2ExtMulHighI32x4U) \
1266 V(I32x4ExtMulLowI16x8S) \
1267 V(I32x4ExtMulHighI16x8S) \
1268 V(I32x4ExtMulLowI16x8U) \
1269 V(I32x4ExtMulHighI16x8U) \
1273 V(I16x8ExtMulLowI8x16S) \
1274 V(I16x8ExtMulHighI8x16S) \
1275 V(I16x8ExtMulLowI8x16U) \
1276 V(I16x8ExtMulHighI8x16U) \
1283#define PROTOTYPE_SIMD_BINOP_WITH_SCRATCH(name) \
1284 void name(Simd128Register dst, Simd128Register src1, Simd128Register src2, \
1285 Simd128Register scratch);
1287#undef PROTOTYPE_SIMD_BINOP_WITH_SCRATCH
1288#undef SIMD_BINOP_WITH_SCRATCH_LIST
1290#define SIMD_SHIFT_LIST(V) \
1304#define PROTOTYPE_SIMD_SHIFT(name) \
1305 void name(Simd128Register dst, Simd128Register src1, Register src2, \
1306 Simd128Register scratch); \
1307 void name(Simd128Register dst, Simd128Register src1, const Operand& src2, \
1308 Register scratch1, Simd128Register scratch2);
1310#undef PROTOTYPE_SIMD_SHIFT
1311#undef SIMD_SHIFT_LIST
1313#define SIMD_BITMASK_LIST(V) \
1318#define PROTOTYPE_SIMD_BITMASK(name) \
1319 void name(Register dst, Simd128Register src, Register scratch1, \
1320 Simd128Register scratch2);
1322#undef PROTOTYPE_SIMD_BITMASK
1323#undef SIMD_BITMASK_LIST
1325#define SIMD_UNOP_LIST(V) \
1332 V(F64x2PromoteLowF32x4) \
1339 V(F32x4SConvertI32x4) \
1340 V(F32x4UConvertI32x4) \
1342 V(F64x2ConvertLowI32x4S) \
1343 V(I64x2SConvertI32x4Low) \
1344 V(I64x2SConvertI32x4High) \
1346 V(I32x4SConvertI16x8Low) \
1347 V(I32x4SConvertI16x8High) \
1348 V(I32x4UConvertF32x4) \
1349 V(I16x8SConvertI8x16Low) \
1350 V(I16x8SConvertI8x16High) \
1354#define PROTOTYPE_SIMD_UNOP(name) \
1355 void name(Simd128Register dst, Simd128Register src);
1357#undef PROTOTYPE_SIMD_UNOP
1358#undef SIMD_UNOP_LIST
1360#define SIMD_UNOP_WITH_SCRATCH_LIST(V) \
1361 V(F32x4DemoteF64x2Zero) \
1364 V(I32x4SConvertF32x4) \
1365 V(I32x4TruncSatF64x2SZero) \
1366 V(I32x4TruncSatF64x2UZero) \
1372#define PROTOTYPE_SIMD_UNOP_WITH_SCRATCH(name) \
1373 void name(Simd128Register dst, Simd128Register src, Simd128Register scratch);
1375#undef PROTOTYPE_SIMD_UNOP_WITH_SCRATCH
1376#undef SIMD_UNOP_WITH_SCRATCH_LIST
1378#define SIMD_ALL_TRUE_LIST(V) \
1384#define PROTOTYPE_SIMD_ALL_TRUE(name) \
1385 void name(Register dst, Simd128Register src, Register scratch1, \
1386 Register scratch2, Simd128Register scratch3);
1388#undef PROTOTYPE_SIMD_ALL_TRUE
1389#undef SIMD_ALL_TRUE_LIST
1391#define SIMD_QFM_LIST(V) \
1396#define PROTOTYPE_SIMD_QFM(name) \
1397 void name(Simd128Register dst, Simd128Register src1, Simd128Register src2, \
1398 Simd128Register src3, Simd128Register scratch);
1400#undef PROTOTYPE_SIMD_QFM
1403#define SIMD_EXT_ADD_PAIRWISE_LIST(V) \
1404 V(I32x4ExtAddPairwiseI16x8S) \
1405 V(I32x4ExtAddPairwiseI16x8U) \
1406 V(I16x8ExtAddPairwiseI8x16S) \
1407 V(I16x8ExtAddPairwiseI8x16U)
1408#define PROTOTYPE_SIMD_EXT_ADD_PAIRWISE(name) \
1409 void name(Simd128Register dst, Simd128Register src, \
1410 Simd128Register scratch1, Simd128Register scratch2);
1412#undef PROTOTYPE_SIMD_EXT_ADD_PAIRWISE
1413#undef SIMD_EXT_ADD_PAIRWISE_LIST
1512 Register src2, uint8_t imm_lane_idx,
1515 Register src2, uint8_t imm_lane_idx,
1518 Register src2, uint8_t imm_lane_idx,
1521 Register src2, uint8_t imm_lane_idx,
1596 LoadNativeContextSlot(dst, Context::GLOBAL_PROXY_INDEX);
1681#if V8_STATIC_ROOTS_BOOL
1684 void IsObjectTypeFast(
Register heap_object,
Register compressed_map_scratch,
1686 void CompareInstanceTypeWithUniqueCompressedMap(
Register map,
1721 LoadRoot(r0, index);
1727 CompareRoot(with, index);
1733 CompareRoot(with, index);
1740 unsigned higher_limit);
1742 unsigned higher_limit,
Label* on_in_range);
1751 return JumpIfJSAnyIsNotPrimitive(heap_object, scratch, target, distance,
1752 Condition::kUnsignedLessThan);
1766 Label* flags_need_processing);
1789 CallRuntime(Runtime::FunctionForId(fid), num_arguments);
1797 bool builtin_exit_frame =
false);
1808 if (!
v8_flags.native_code_counters)
return;
1809 EmitIncrementCounter(counter, value, scratch1, scratch2);
1815 if (!
v8_flags.native_code_counters)
return;
1816 EmitDecrementCounter(counter, value, scratch1, scratch2);
1825 Label* stack_overflow);
1834 TestIfSmi(value, r0);
1835 bne(not_smi_label, cr0);
1838#if !defined(V8_COMPRESS_POINTERS) && !defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
1844#if V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN
1845#define SmiWordOffset(offset) (offset + kSystemPointerSize / 2)
1847#define SmiWordOffset(offset) offset
1878 template <
typename Field>
1880 ExtractBitRange(dst, src, Field::kShift + Field::kSize - 1, Field::kShift,
1884 template <
typename Field>
1886 DecodeField<Field>(
reg,
reg, rc);
1897 int num_double_arguments);
1935 Register function_address,
1936 ExternalReference thunk_ref, Register thunk_arg,
1937 int slots_to_drop_on_return,
1941#define ACCESS_MASM(masm) masm->
static constexpr int kFixedSlotCountAboveFp
void JumpIfJSAnyIsPrimitive(Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar)
void F32x4ExtractLane(DoubleRegister dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch1, Register scratch2, Register scratch3)
void LoadSimd128LE(Simd128Register dst, const MemOperand &mem, Register scratch)
void DivF32(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void JumpIfRoot(Register with, RootIndex index, Label *if_equal)
void Abort(AbortReason reason)
void Push(Register src1, Register src2, Register src3, Register src4, Register src5)
void MovToFloatParameters(DoubleRegister src1, DoubleRegister src2)
void SwapSimd128(MemOperand src, MemOperand dst, Simd128Register scratch1, Simd128Register scratch2, Register scratch3)
void MaxF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, DoubleRegister scratch=kScratchDoubleReg)
void ClearByteU64(Register dst, int byte_idx)
void SmiUntag(Register dst, const MemOperand &src, RCBit rc=LeaveRC, Register scratch=no_reg)
void ConvertIntToFloat(Register src, DoubleRegister dst)
void ZeroExtend(Register dst, Register value)
void InsertDoubleHigh(DoubleRegister dst, Register src, Register scratch)
void LoadReceiver(Register dest)
void StoreSandboxedPointerField(Register value, const MemOperand &dst_field_operand, Register scratch=no_reg)
void LoadSimd128Uint64(Simd128Register reg, const MemOperand &mem, Register scratch)
void MultiPushF64AndV128(DoubleRegList dregs, Simd128RegList simd_regs, Register scratch1, Register scratch2, Register location=sp)
void ConvertIntToDouble(Register src, DoubleRegister dst)
void Pop(Register src1, Register src2, Register src3)
void InitializeRootRegister()
void LoadTaggedField(const Register &destination, const MemOperand &field_operand, const Register &scratch=no_reg)
void LoadS16LE(Register dst, const MemOperand &mem, Register scratch)
void S128Select(Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register mask)
void I64x2UConvertI32x4High(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
void CountTrailingZerosU64(Register dst, Register src, Register scratch1=ip, Register scratch2=r0, RCBit r=LeaveRC)
void LoadAndSplat64x2LE(Simd128Register dst, const MemOperand &mem, Register scratch)
void LoadU64LE(Register dst, const MemOperand &mem, Register scratch)
void JumpIfIsInRange(Register value, Register scratch, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
void ByteReverseU64(Register dst, Register val, Register=r0)
void I16x8UConvertI8x16Low(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
int LeaveFrame(StackFrame::Type type, int stack_adjustment=0)
void LoadU8(Register dst, const MemOperand &mem, Register scratch=no_reg)
void CompareInstanceType(Register map, Register type_reg, InstanceType type)
void CallRuntime(Runtime::FunctionId fid)
void LoadAndSplat16x8LE(Simd128Register dst, const MemOperand &me, Register scratch)
int CalculateStackPassedWords(int num_reg_arguments, int num_double_arguments)
void AndU32(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
int CallCFunction(ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
void I32x4UConvertI16x8Low(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
void StoreTaggedField(const Register &value, const MemOperand &dst_field_operand, const Register &scratch=no_reg)
void Call(Address target, RelocInfo::Mode rmode, Condition cond=al)
void XorU32(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
void CompareTagged(Register src1, Register src2, CRegister cr=cr0)
void LoadConstantPoolPointerRegister()
void SignedExtend(Register dst, Register value)
void ModS32(Register dst, Register src, Register value)
void Move(Register dst, Register src, Condition cond=al)
void IsObjectType(Register heap_object, Register scratch1, Register scratch2, InstanceType type)
void ModS64(Register dst, Register src, Register value)
void RecordWrite(Register object, Register slot_address, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
void AssertFunction(Register object) NOOP_UNLESS_DEBUG_CODE
void TestIfSmi(Register value, Register scratch)
void CallIndirectPointerBarrier(Register object, Register slot_address, SaveFPRegsMode fp_mode, IndirectPointerTag tag)
void MovInt64ComponentsToDouble(DoubleRegister dst, Register src_hi, Register src_lo, Register scratch)
void MulS32(Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
void SubF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void AssertGeneratorObject(Register object) NOOP_UNLESS_DEBUG_CODE
void SubSmiLiteral(Register dst, Register src, Tagged< Smi > smi, Register scratch)
void ShiftLeftU32(Register dst, Register src, Register value, RCBit r=LeaveRC)
static int CallSizeNotPredictableCodeSize(Address target, RelocInfo::Mode rmode, Condition cond=al)
void DecodeField(Register reg, RCBit rc=LeaveRC)
void StoreReceiver(Register rec)
void JumpIfNotRoot(Register with, RootIndex index, Label *if_not_equal)
void Pop(Register src1, Register src2, Register src3, Register src4)
void MultiPopF64AndV128(DoubleRegList dregs, Simd128RegList simd_regs, Register scratch1, Register scratch2, Register location=sp)
void LoadLane32LE(Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void LoadEntryFromBuiltin(Builtin builtin, Register destination)
void CopySignF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void PushStandardFrame(Register function_reg)
void AndU64(Register dst, Register src, Register value, RCBit r=SetRC)
void StoreF64(DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
void I32x4ReplaceLane(Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
void I8x16ExtractLaneS(Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
void CompareRoot(Register obj, RootIndex index)
void StoreF64WithUpdate(DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
void I64x2ExtractLane(Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
void CmpU64(Register src1, Register src2, CRegister cr=cr0)
void StoreIndirectPointerField(Register value, MemOperand dst_field_operand, Register scratch)
void LoadReserve(Register output, MemOperand dst)
void LoadV64ZeroLE(Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
void AddF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void MovDoubleLowToInt(Register dst, DoubleRegister src)
void StoreU64WithUpdate(Register src, const MemOperand &mem, Register scratch=no_reg)
void StoreU64LE(Register src, const MemOperand &mem, Register scratch)
void LoadF32(DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
void ConvertUnsignedIntToFloat(Register src, DoubleRegister dst)
void CompareObjectType(Register heap_object, Register map, Register type_reg, InstanceType type)
void ModU64(Register dst, Register src, Register value)
void LoadV32ZeroLE(Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
void Move(Register dst, Tagged< Smi > smi)
void LoadAndExtend32x2SLE(Simd128Register dst, const MemOperand &mem, Register scratch)
void CountTrailingZerosU32(Register dst, Register src, Register scratch1=ip, Register scratch2=r0, RCBit r=LeaveRC)
void MulF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void StoreConditional(Register value, MemOperand dst)
void AddF32(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void Move(Register dst, const MemOperand &src)
void StoreF32LE(DoubleRegister src, const MemOperand &mem, Register scratch, Register scratch2)
void Check(Condition cond, AbortReason reason, CRegister cr=cr0)
void LoadExternalPointerField(Register destination, MemOperand field_operand, ExternalPointerTag tag, Register isolate_root=no_reg, Register scratch=no_reg)
void Call(Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, Condition cond=al)
void StoreReturnAddressAndCall(Register target)
void StoreU16LE(Register src, const MemOperand &mem, Register scratch)
void LeaveExitFrame(Register scratch)
void StackOverflowCheck(Register num_args, Register scratch, Label *stack_overflow)
void AssertFeedbackVector(Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
void CallBuiltinByIndex(Register builtin_index, Register target)
void ZeroExtWord32(Register dst, Register src)
void I16x8Splat(Simd128Register dst, Register src)
void LoadRootRelative(Register destination, int32_t offset) final
void JumpIfSmi(Register value, Label *smi_label)
void LoadRoot(Register destination, RootIndex index, Condition cond)
void StoreSimd128Uint16(Simd128Register reg, const MemOperand &mem, Register scratch)
void LoadPC(Register dst)
static int ActivationFrameAlignment()
void JumpIfObjectType(Register object, Register map, Register type_reg, InstanceType type, Label *if_cond_pass, Condition cond=eq)
void ShiftRightU64(Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
void LoadU16(Register dst, const MemOperand &mem, Register scratch=no_reg)
void Push(Handle< HeapObject > handle)
void PrepareCallCFunction(int num_reg_arguments, Register scratch)
void MultiPopV128(Simd128RegList dregs, Register scratch, Register location=sp)
void CallCodeObject(Register code_object)
void CallEphemeronKeyBarrier(Register object, Register slot_address, SaveFPRegsMode fp_mode)
void SmiTag(Register dst, Register src, RCBit rc=LeaveRC)
void SmiUntag(Register dst, Register src, RCBit rc=LeaveRC)
void SubF32(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void StoreCodePointerField(Register value, MemOperand dst_field_operand, Register scratch=no_reg)
void AtomicExchange(MemOperand dst, Register new_value, Register output)
void DivS32(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void SwapDouble(DoubleRegister src, DoubleRegister dst, DoubleRegister scratch)
void LoadRootRegisterOffset(Register destination, intptr_t offset) final
void CanonicalizeNaN(const DoubleRegister value)
void SubAndCheckForOverflow(Register dst, Register left, Register right, Register overflow_dst, Register scratch=r0)
void LoadS32(Register dst, const MemOperand &mem, Register scratch=no_reg)
void AtomicOps(MemOperand dst, Register value, Register output, Register result, bin_op op)
void AssertSmi(Register object) NOOP_UNLESS_DEBUG_CODE
void LoadCodeInstructionStart(Register destination, Register code_object, CodeEntrypointTag tag=kDefaultCodeEntrypointTag)
void CountLeadingZerosU32(Register dst, Register src, RCBit r=LeaveRC)
void Jump(Address target, RelocInfo::Mode rmode, Condition cond=al, CRegister cr=cr0)
void LoadAndExtend8x8SLE(Simd128Register dst, const MemOperand &mem, Register scratch)
void ShiftLeftU64(Register dst, Register src, Register value, RCBit r=LeaveRC)
void I64x2Mul(Simd128Register dst, Simd128Register src1, Simd128Register src2, Register scratch1, Register scrahc2, Register scratch3, Simd128Register scratch4)
void LoadDoubleLiteral(DoubleRegister result, base::Double value, Register scratch)
void ExtractBitRange(Register dst, Register src, int rangeStart, int rangeEnd, RCBit rc=LeaveRC, bool test=false)
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing(Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
void AddS32(Register dst, Register src, Register value, RCBit r=LeaveRC)
void LoadFeedbackVector(Register dst, Register closure, Register scratch, Label *fbv_undef)
void MulS64(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void F64x2Max(Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch1, Simd128Register scratch2)
void StoreLane8LE(Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void EmitIncrementCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
void LoadSimd128Uint16(Simd128Register reg, const MemOperand &mem, Register scratch)
void Jump(Register target)
void SwapFloat32(DoubleRegister src, DoubleRegister dst, DoubleRegister scratch)
void InvokeFunctionCode(Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
void LoadLane64LE(Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void BailoutIfDeoptimized()
void LoadS32LE(Register dst, const MemOperand &mem, Register scratch)
void DecodeSandboxedPointer(Register value)
void XorU64(Register dst, Register src, Register value, RCBit r=LeaveRC)
void MovDoubleHighToInt(Register dst, DoubleRegister src)
int RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
void CmpU32(Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
void LoadU16LE(Register dst, const MemOperand &mem, Register scratch)
void MinF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, DoubleRegister scratch=kScratchDoubleReg)
void MultiPopDoubles(DoubleRegList dregs, Register location=sp)
void Jump(const ExternalReference &reference)
void ModU32(Register dst, Register src, Register value)
void StoreSimd128Uint64(Simd128Register reg, const MemOperand &mem, Register scratch)
void JumpIfJSAnyIsNotPrimitive(Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar, Condition condition=Condition::kUnsignedGreaterThanEqual)
MemOperand ExternalReferenceAsOperand(IsolateFieldId id)
void OrU64(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
void LoadSimd128Uint32(Simd128Register reg, const MemOperand &mem, Register scratch)
void AtomicCompareExchange(MemOperand dst, Register old_value, Register new_value, Register output, Register scratch)
void InvokePrologue(Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
void EnforceStackAlignment()
void Push(Register src1, Register src2, Register src3)
void StoreSimd128(Simd128Register src, const MemOperand &mem, Register scratch)
void StoreLane32LE(Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void I16x8ReplaceLane(Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
void MovDoubleToInt64(Register dst, DoubleRegister src)
void ReplaceClosureCodeWithOptimizedCode(Register optimized_code, Register closure, Register scratch1, Register slot_address)
void CmpS64(Register src1, Register src2, CRegister cr=cr0)
void F32x4ReplaceLane(Simd128Register dst, Simd128Register src1, DoubleRegister src2, uint8_t imm_lane_idx, Register scratch1, DoubleRegister scratch2, Simd128Register scratch3)
void I8x16Shuffle(Simd128Register dst, Simd128Register src1, Simd128Register src2, uint64_t high, uint64_t low, Register scratch1, Register scratch2, Simd128Register scratch3)
void ZeroExtHalfWord(Register dst, Register src)
void EnterExitFrame(Register scratch, int stack_space, StackFrame::Type frame_type)
void TestIfInt32(Register value, Register scratch, CRegister cr=cr0)
void Zero(const MemOperand &dest1, const MemOperand &dest2)
void AddS64(Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
void ConvertUnsignedInt64ToFloat(Register src, DoubleRegister double_dst)
void SwapP(MemOperand src, MemOperand dst, Register scratch_0, Register scratch_1)
void SetRoundingMode(FPRoundingMode RN)
void LoadF64WithUpdate(DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
void I16x8ExtractLaneS(Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
void CallJSEntry(Register target)
void Assert(Condition cond, AbortReason reason, CRegister cr=cr0) NOOP_UNLESS_DEBUG_CODE
void SubS64(Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
void ShiftRightU32(Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
void SwapFloat32(MemOperand src, MemOperand dst, DoubleRegister scratch_0, DoubleRegister scratch_1)
void StoreF64LE(DoubleRegister src, const MemOperand &mem, Register scratch, Register scratch2)
MemOperand ExternalReferenceAsOperand(ExternalReference reference, Register scratch)
void Zero(const MemOperand &dest)
void IncrementCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
void ShiftRightS32(Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
void AndU64(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
void MovFloatToInt(Register dst, DoubleRegister src, DoubleRegister scratch)
void SwapP(Register src, MemOperand dst, Register scratch)
void I16x8ExtractLaneU(Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
void PushCommonFrame(Register marker_reg=no_reg)
void MovFromFloatParameter(DoubleRegister dst)
void LoadTrustedPointerField(Register destination, MemOperand field_operand, IndirectPointerTag tag, Register scratch=no_reg)
void JumpIfEqual(Register x, int32_t y, Label *dest)
void AndSmiLiteral(Register dst, Register src, Tagged< Smi > smi, Register scratch, RCBit rc=LeaveRC)
void SwapDouble(DoubleRegister src, MemOperand dst, DoubleRegister scratch)
void InsertDoubleLow(DoubleRegister dst, Register src, Register scratch)
void GetLabelAddress(Register dst, Label *target)
void StoreF32(DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
int PopCallerSaved(SaveFPRegsMode fp_mode, Register scratch1, Register scratch2, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
void TestCodeIsMarkedForDeoptimization(Register code, Register scratch1, Register scratch2)
void LoadGlobalProxy(Register dst)
void DecompressTaggedSigned(Register destination, MemOperand field_operand)
void V128AnyTrue(Register dst, Simd128Register src, Register scratch1, Register scratch2, Simd128Register scratch3)
void JumpToExternalReference(const ExternalReference &builtin, bool builtin_exit_frame=false)
void ShiftLeftU32(Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
Operand ClearedValue() const
void SwapSimd128(Simd128Register src, Simd128Register dst, Simd128Register scratch)
int CallCFunction(Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
void CmpU64(Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
void LoadF64(DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
void I32x4Splat(Simd128Register dst, Register src)
void InvokeFunctionWithNewTarget(Register function, Register new_target, Register actual_parameter_count, InvokeType type)
void AddS32(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=LeaveRC)
void MovToFloatParameter(DoubleRegister src)
void LoadSimd128(Simd128Register dst, const MemOperand &mem, Register scratch)
void StoreU32(Register src, const MemOperand &mem, Register scratch)
void BindExceptionHandler(Label *label)
void LoadAndSplat8x16LE(Simd128Register dst, const MemOperand &mem, Register scratch)
void LoadRoot(Register destination, RootIndex index) final
void SubS64(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void OrU64(Register dst, Register src, Register value, RCBit r=LeaveRC)
void AndU32(Register dst, Register src, Register value, RCBit r=SetRC)
void TailCallBuiltin(Builtin builtin, Condition cond=al, CRegister cr=cr0)
void ShiftRightU32(Register dst, Register src, Register value, RCBit r=LeaveRC)
void MovToFloatResult(DoubleRegister src)
void I8x16ExtractLaneU(Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
void PushRoot(RootIndex index)
void MovInt64ToDouble(DoubleRegister dst, Register src)
void Pop(Register src1, Register src2)
void LoadF32LE(DoubleRegister dst, const MemOperand &mem, Register scratch, Register scratch2)
void EnterFrame(StackFrame::Type type, bool load_constant_pool_pointer_reg=false)
void InvokeFunction(Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
void TruncateDoubleToI(Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode)
void LoadU32(Register dst, const MemOperand &mem, Register scratch=no_reg)
void Popcnt32(Register dst, Register src)
void OrU32(Register dst, Register src, Register value, RCBit r=LeaveRC)
void DivF64(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void SwapP(Register src, Register dst, Register scratch)
void CompareRange(Register value, Register scratch, unsigned lower_limit, unsigned higher_limit)
void S128Const(Simd128Register dst, uint64_t high, uint64_t low, Register scratch1, Register scratch2)
void JumpCodeObject(Register code_object, JumpMode jump_mode=JumpMode::kJump)
void PushArray(Register array, Register size, Register scratch, Register scratch2, PushArrayOrder order=kNormal)
void DecrementCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
void I64x2Splat(Simd128Register dst, Register src)
void ConvertUnsignedIntToDouble(Register src, DoubleRegister dst)
void LoadU64WithUpdate(Register dst, const MemOperand &mem, Register scratch=no_reg)
void SwapFloat32(DoubleRegister src, MemOperand dst, DoubleRegister scratch)
void ConvertUnsignedInt64ToDouble(Register src, DoubleRegister double_dst)
void EmitDecrementCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
void I32x4UConvertI16x8High(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
void ShiftRightU64(Register dst, Register src, Register value, RCBit r=LeaveRC)
void LoadFromConstantsTable(Register destination, int constant_index) final
void ShiftRightS64(Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
MemOperand EntryFromBuiltinAsOperand(Builtin builtin)
void LoadS8(Register dst, const MemOperand &mem, Register scratch=no_reg)
void CompareObjectTypeRange(Register heap_object, Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
void AssertNotSmi(Register object) NOOP_UNLESS_DEBUG_CODE
void F64x2Min(Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch1, Simd128Register scratch2)
void ComputeCodeStartAddress(Register dst)
void MaybeSaveRegisters(RegList registers)
void AllocateStackSpace(int bytes)
void LoadTaggedRoot(Register destination, RootIndex index)
DISALLOW_IMPLICIT_CONSTRUCTORS(MacroAssembler)
void CmpU32(Register src1, Register src2, CRegister cr=cr0)
void I32x4ExtractLane(Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
void SubS32(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=LeaveRC)
void JumpIfNotSmi(Register value, Label *not_smi_label)
void MultiPush(RegList regs, Register location=sp)
void SwapDouble(MemOperand src, MemOperand dst, DoubleRegister scratch_0, DoubleRegister scratch_1)
void SmiToInt32(Register smi)
void RecordWriteField(Register object, int offset, Register value, Register slot_address, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
void MulS32(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void LoadStackLimit(Register destination, StackLimitKind kind, Register scratch)
void I64x2ReplaceLane(Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
void CheckDebugHook(Register fun, Register new_target, Register expected_parameter_count, Register actual_parameter_count)
void LoadLane8LE(Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void LoadAndExtend8x8ULE(Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
void TestBitRange(Register value, int rangeStart, int rangeEnd, Register scratch=r0)
void AssertConstructor(Register object) NOOP_UNLESS_DEBUG_CODE
void ConvertDoubleToUnsignedInt64(const DoubleRegister double_input, const Register dst, const DoubleRegister double_dst, FPRoundingMode rounding_mode=kRoundToZero)
void CallRuntime(const Runtime::Function *f, int num_arguments)
void LoadWeakValue(Register out, Register in, Label *target_if_cleared)
void CallBuiltin(Builtin builtin, Condition cond=al)
void ExtractBit(Register dst, Register src, uint32_t bitNumber, RCBit rc=LeaveRC, bool test=false)
void CmplSmiLiteral(Register src1, Tagged< Smi > smi, Register scratch, CRegister cr=cr0)
void DivU32(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void Popcnt64(Register dst, Register src)
int CallCFunction(Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
void ShiftRightS64(Register dst, Register src, Register value, RCBit r=LeaveRC)
void Pop(Register src1, Register src2, Register src3, Register src4, Register src5)
void AbortConstantPoolBuilding()
void AddSmiLiteral(Register dst, Register src, Tagged< Smi > smi, Register scratch)
void CanonicalizeNaN(const DoubleRegister dst, const DoubleRegister src)
void OrU32(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
void I8x16BitMask(Register dst, Simd128Register src, Register scratch1, Register scratch2, Simd128Register scratch3)
void MulS64(Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
void GenerateTailCallToReturnedCode(Runtime::FunctionId function_id)
void LoadAndSplat32x4LE(Simd128Register dst, const MemOperand &mem, Register scratch)
void XorU32(Register dst, Register src, Register value, RCBit r=LeaveRC)
void ShiftLeftU64(Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
void LoadIntLiteral(Register dst, int value)
void CmpS64(Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
void SmiUntag(Register reg, RCBit rc=LeaveRC)
void ReverseBitsU64(Register dst, Register src, Register scratch1, Register scratch2)
void AssertJSAny(Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
void Push(Tagged< Smi > smi)
void LoadSmiLiteral(Register dst, Tagged< Smi > smi)
void SubS32(Register dst, Register src, Register value, RCBit r=LeaveRC)
void ExtractBitMask(Register dst, Register src, uintptr_t mask, RCBit rc=LeaveRC, bool test=false)
void DivU64(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
int CallCFunction(ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
void AssertFeedbackCell(Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
void LoadU32LE(Register dst, const MemOperand &mem, Register scratch)
void MovIntToFloat(DoubleRegister dst, Register src, Register scratch)
void CallForDeoptimization(Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
void I32x4DotI8x16AddS(Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register src3)
void DropArgumentsAndPushNewReceiver(Register argc, Register receiver)
void F64x2ExtractLane(DoubleRegister dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch1, Register scratch2)
void MovUnsignedIntToDouble(DoubleRegister dst, Register src, Register scratch)
void AllocateStackSpace(Register bytes)
void LoadEntryFromBuiltinIndex(Register builtin_index, Register target)
void LoadIndirectPointerField(Register destination, MemOperand field_operand, IndirectPointerTag tag, Register scratch)
void LoadAndExtend16x4SLE(Simd128Register dst, const MemOperand &mem, Register scratch)
void ReverseBitsU32(Register dst, Register src, Register scratch1, Register scratch2)
void ShiftRightS32(Register dst, Register src, Register value, RCBit r=LeaveRC)
void I16x8UConvertI8x16High(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
void LoadAndExtend32x2ULE(Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
void CmpS32(Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
void RestoreFrameStateForTailCall()
void StoreU64(Register src, const MemOperand &mem, Register scratch=no_reg)
void XorU64(Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
void Ret(Condition cond, CRegister cr=cr0)
void MultiPop(RegList regs, Register location=sp)
void Move(Register dst, Handle< HeapObject > value, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
void F64x2ConvertLowI32x4U(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
void StoreU16(Register src, const MemOperand &mem, Register scratch)
void Move(DoubleRegister dst, DoubleRegister src)
void SwapSimd128(Simd128Register src, MemOperand dst, Simd128Register scratch1, Register scratch2)
void StoreU8(Register src, const MemOperand &mem, Register scratch)
void MultiPushV128(Simd128RegList dregs, Register scratch, Register location=sp)
void JumpIfLessThan(Register x, int32_t y, Label *dest)
void Push(Register src1, Register src2, Register src3, Register src4)
void ReverseBitsInSingleByteU64(Register dst, Register src, Register scratch1, Register scratch2, int byte_idx)
void AssertBoundFunction(Register object) NOOP_UNLESS_DEBUG_CODE
void Jump(Handle< Code > code, RelocInfo::Mode rmode, Condition cond=al, CRegister cr=cr0)
void TestBitMask(Register value, uintptr_t mask, Register scratch=r0)
void JumpJSFunction(Register function_object, Register scratch, JumpMode jump_mode=JumpMode::kJump)
void DivS64(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void CallJSFunction(Register function_object, uint16_t argument_count, Register scratch)
void CompareInstanceTypeRange(Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
void ExtendValue(Register dst, Register value)
void DecodeField(Register dst, Register src, RCBit rc=LeaveRC)
void OptimizeCodeOrTailCallOptimizedCodeSlot(Register flags, Register feedback_vector)
void LoadIsolateField(Register dst, IsolateFieldId id)
void StoreSimd128Uint8(Simd128Register reg, const MemOperand &mem, Register scratch)
void LoadU64(Register dst, const MemOperand &mem, Register scratch=no_reg)
void MaybeRestoreRegisters(RegList registers)
void CallRecordWriteStub(Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
void I64x2UConvertI32x4Low(Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
void Call(Register target)
void MovIntToDouble(DoubleRegister dst, Register src, Register scratch)
void PrepareCallCFunction(int num_reg_arguments, int num_double_registers, Register scratch)
void CmpS32(Register src1, Register src2, CRegister cr=cr0)
void SmiTag(Register reg, RCBit rc=LeaveRC)
void I8x16Splat(Simd128Register dst, Register src)
void CmpSmiLiteral(Register src1, Tagged< Smi > smi, Register scratch, CRegister cr=cr0)
void Drop(Register count, Register scratch=r0)
void LoadF64LE(DoubleRegister dst, const MemOperand &mem, Register scratch, Register scratch2)
void F32x4Splat(Simd128Register dst, DoubleRegister src, DoubleRegister scratch1, Register scratch2)
void AssertUndefinedOrAllocationSite(Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
void MulF32(DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
void Move(Register dst, ExternalReference reference)
void LoadF32WithUpdate(DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
void ByteReverseU16(Register dst, Register val, Register scratch)
void CompareTaggedRoot(const Register &with, RootIndex index)
void LoadAndExtend16x4ULE(Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
void LoadSimd128Uint8(Simd128Register reg, const MemOperand &mem, Register scratch)
void ZeroExtByte(Register dst, Register src)
void LoadCodePointerField(Register destination, MemOperand field_operand, Register scratch)
void StubPrologue(StackFrame::Type type)
void StoreTrustedPointerField(Register value, MemOperand dst_field_operand, Register scratch=no_reg)
void StoreU32LE(Register src, const MemOperand &mem, Register scratch)
void DecompressTagged(const Register &destination, Tagged_t immediate)
void DecompressTagged(Register destination, Register source)
void DecompressTagged(Register destination, MemOperand field_operand)
void DecompressTaggedSigned(Register destination, Register src)
void I8x16ReplaceLane(Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
void StoreRootRelative(int32_t offset, Register value) final
void Push(Register src1, Register src2)
void F64x2ReplaceLane(Simd128Register dst, Simd128Register src1, DoubleRegister src2, uint8_t imm_lane_idx, Register scratch1, Simd128Register scratch2)
void CountLeadingZerosU64(Register dst, Register src, RCBit r=LeaveRC)
void LoadMap(Register destination, Register object)
void MovFromFloatResult(DoubleRegister dst)
void LoadSandboxedPointerField(Register destination, const MemOperand &field_operand, Register scratch=no_reg)
void TailCallRuntime(Runtime::FunctionId fid)
void LoadCompressedMap(Register dst, Register object, Register scratch)
void SmiToPtrArrayOffset(Register dst, Register src)
void CallRuntime(Runtime::FunctionId fid, int num_arguments)
void AddAndCheckForOverflow(Register dst, Register left, intptr_t right, Register overflow_dst, Register scratch=r0)
void TestBit(Register value, int bitNumber, Register scratch=r0)
void AddAndCheckForOverflow(Register dst, Register left, Register right, Register overflow_dst, Register scratch=r0)
void LoadNativeContextSlot(Register dst, int index)
void CallRecordWriteStubSaveRegisters(Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
void StoreSimd128Uint32(Simd128Register reg, const MemOperand &mem, Register scratch)
void TryInlineTruncateDoubleToI(Register result, DoubleRegister input, Label *done)
void ConvertInt64ToDouble(Register src, DoubleRegister double_dst)
void StoreSimd128LE(Simd128Register src, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
void LoadConstantPoolPointerRegisterFromCodeTargetAddress(Register code_target_address, Register scratch1, Register scratch2)
void ConvertInt64ToFloat(Register src, DoubleRegister double_dst)
void F64x2Splat(Simd128Register dst, DoubleRegister src, Register scratch)
int PushCallerSaved(SaveFPRegsMode fp_mode, Register scratch1, Register scratch2, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
void LoadS16(Register dst, const MemOperand &mem, Register scratch=no_reg)
void StoreLane16LE(Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void AddS64(Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
void ByteReverseU32(Register dst, Register val, Register scratch)
void ConvertDoubleToInt64(const DoubleRegister double_input, const Register dst, const DoubleRegister double_dst, FPRoundingMode rounding_mode=kRoundToZero)
void LoadTaggedSignedField(Register destination, MemOperand field_operand, Register scratch)
void CheckPageFlag(Register object, Register scratch, int mask, Condition cc, Label *condition_met)
void StoreLane64LE(Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void LoadLane16LE(Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
void DropArguments(Register count)
void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond=al, CRegister cr=cr0)
void StoreF32WithUpdate(DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
void AssertCallableFunction(Register object) NOOP_UNLESS_DEBUG_CODE
void MultiPushDoubles(DoubleRegList dregs, Register location=sp)
#define NOOP_UNLESS_DEBUG_CODE
#define COMPRESS_POINTERS_BOOL
DirectHandle< Object > new_target
RoundingMode rounding_mode
ZoneVector< RpoNumber > & result
#define SIMD_BITMASK_LIST(V)
#define PROTOTYPE_SIMD_ALL_TRUE(name)
#define PROTOTYPE_SIMD_UNOP_WITH_SCRATCH(name)
#define SIMD_UNOP_LIST(V)
#define SIMD_ALL_TRUE_LIST(V)
#define PROTOTYPE_SIMD_QFM(name)
#define PROTOTYPE_SIMD_BINOP(name)
#define PROTOTYPE_SIMD_SHIFT(name)
#define SIMD_BINOP_WITH_SCRATCH_LIST(V)
#define PROTOTYPE_SIMD_BINOP_WITH_SCRATCH(name)
#define SIMD_BINOP_LIST(V)
#define SIMD_UNOP_WITH_SCRATCH_LIST(V)
#define PROTOTYPE_SIMD_BITMASK(name)
#define SIMD_SHIFT_LIST(V)
#define SIMD_EXT_ADD_PAIRWISE_LIST(V)
#define PROTOTYPE_SIMD_EXT_ADD_PAIRWISE(name)
#define PROTOTYPE_SIMD_UNOP(name)
RegListBase< RegisterT > registers
InstructionOperand destination
constexpr Register no_reg
constexpr Register kRootRegister
MemOperand ExitFrameCallerStackSlotOperand(int index)
const int kStackFrameExtraParamSlot
constexpr int kSystemPointerSizeLog2
MemOperand FieldMemOperand(Register object, int offset)
constexpr int kSystemPointerSize
constexpr bool SmiValuesAre31Bits()
V8_EXPORT_PRIVATE FlagValues v8_flags
constexpr bool SmiValuesAre32Bits()
constexpr int kBitsPerSystemPointer
constexpr Register kPtrComprCageBaseRegister
void CallApiFunctionAndReturn(MacroAssembler *masm, bool with_profiling, Register function_address, ExternalReference thunk_ref, Register thunk_arg, int slots_to_drop_on_return, MemOperand *argc_operand, MemOperand return_value_operand)
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2=no_reg, Register reg3=no_reg, Register reg4=no_reg, Register reg5=no_reg, Register reg6=no_reg)
MemOperand ExitFrameStackSlotOperand(int offset)
#define DCHECK_GE(v1, v2)
#define DCHECK(condition)
#define V8_EXPORT_PRIVATE
bool pending_double_scratch_register_use