Flutter Engine
The Flutter Engine
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
dart::compiler::Assembler Class Reference

#include <assembler_arm.h>

Inheritance diagram for dart::compiler::Assembler:
dart::compiler::AssemblerBase dart::compiler::AssemblerBase dart::compiler::AssemblerBase dart::compiler::MicroAssembler dart::compiler::AssemblerBase dart::StackResource dart::StackResource dart::StackResource dart::compiler::AssemblerBase dart::StackResource dart::StackResource

Public Types

enum  RoundingMode {
  kRoundToNearest = 0x0 , kRoundDown = 0x1 , kRoundUp = 0x2 , kRoundToZero = 0x3 ,
  kRoundToNearest = 0x0 , kRoundDown = 0x1 , kRoundUp = 0x2 , kRoundToZero = 0x3
}
 
enum  RoundingMode {
  kRoundToNearest = 0x0 , kRoundDown = 0x1 , kRoundUp = 0x2 , kRoundToZero = 0x3 ,
  kRoundToNearest = 0x0 , kRoundDown = 0x1 , kRoundUp = 0x2 , kRoundToZero = 0x3
}
 
- Public Types inherited from dart::compiler::AssemblerBase
enum  JumpDistance : bool { kFarJump = false , kNearJump = true }
 
enum  CanBeSmi { kValueCanBeSmi , kValueIsNotSmi }
 
enum  MemoryOrder { kRelease , kRelaxedNonAtomic }
 
enum  RangeCheckCondition { kIfNotInRange = 0 , kIfInRange = 1 }
 

Public Member Functions

 Assembler (ObjectPoolBuilder *object_pool_builder, intptr_t far_branch_level=0)
 
 ~Assembler ()
 
void PushRegister (Register r)
 
void PopRegister (Register r)
 
void PushRegisterPair (Register r0, Register r1)
 
void PopRegisterPair (Register r0, Register r1)
 
void PushValueAtOffset (Register base, int32_t offset)
 
void Bind (Label *label) override
 
void Jump (Label *label, JumpDistance distance=kFarJump)
 
void Jump (Register target)
 
void Jump (const Address &address)
 
void LoadMemoryValue (Register dst, Register base, int32_t offset)
 
void StoreMemoryValue (Register src, Register base, int32_t offset)
 
void LoadAcquire (Register dst, const Address &address, OperandSize size=kFourBytes) override
 
void StoreRelease (Register src, const Address &address, OperandSize size=kFourBytes) override
 
void CompareWithMemoryValue (Register value, Address address, OperandSize size=kFourBytes) override
 
bool use_far_branches () const
 
void Breakpoint () override
 
void and_ (Register rd, Register rn, Operand o, Condition cond=AL)
 
void ands (Register rd, Register rn, Operand o, Condition cond=AL)
 
void eor (Register rd, Register rn, Operand o, Condition cond=AL)
 
void sub (Register rd, Register rn, Operand o, Condition cond=AL)
 
void subs (Register rd, Register rn, Operand o, Condition cond=AL)
 
void rsb (Register rd, Register rn, Operand o, Condition cond=AL)
 
void rsbs (Register rd, Register rn, Operand o, Condition cond=AL)
 
void add (Register rd, Register rn, Operand o, Condition cond=AL)
 
void adds (Register rd, Register rn, Operand o, Condition cond=AL)
 
void adc (Register rd, Register rn, Operand o, Condition cond=AL)
 
void adcs (Register rd, Register rn, Operand o, Condition cond=AL)
 
void sbc (Register rd, Register rn, Operand o, Condition cond=AL)
 
void sbcs (Register rd, Register rn, Operand o, Condition cond=AL)
 
void rsc (Register rd, Register rn, Operand o, Condition cond=AL)
 
void tst (Register rn, Operand o, Condition cond=AL)
 
void teq (Register rn, Operand o, Condition cond=AL)
 
void cmp (Register rn, Operand o, Condition cond=AL)
 
void cmn (Register rn, Operand o, Condition cond=AL)
 
void orr (Register rd, Register rn, Operand o, Condition cond=AL)
 
void orrs (Register rd, Register rn, Operand o, Condition cond=AL)
 
void mov (Register rd, Operand o, Condition cond=AL)
 
void movs (Register rd, Operand o, Condition cond=AL)
 
void bic (Register rd, Register rn, Operand o, Condition cond=AL)
 
void bics (Register rd, Register rn, Operand o, Condition cond=AL)
 
void mvn_ (Register rd, Operand o, Condition cond=AL)
 
void mvns (Register rd, Operand o, Condition cond=AL)
 
void clz (Register rd, Register rm, Condition cond=AL)
 
void rbit (Register rd, Register rm, Condition cond=AL)
 
void mul (Register rd, Register rn, Register rm, Condition cond=AL)
 
void muls (Register rd, Register rn, Register rm, Condition cond=AL)
 
void mla (Register rd, Register rn, Register rm, Register ra, Condition cond=AL)
 
void mls (Register rd, Register rn, Register rm, Register ra, Condition cond=AL)
 
void smull (Register rd_lo, Register rd_hi, Register rn, Register rm, Condition cond=AL)
 
void umull (Register rd_lo, Register rd_hi, Register rn, Register rm, Condition cond=AL)
 
void smlal (Register rd_lo, Register rd_hi, Register rn, Register rm, Condition cond=AL)
 
void umlal (Register rd_lo, Register rd_hi, Register rn, Register rm, Condition cond=AL)
 
void umaal (Register rd_lo, Register rd_hi, Register rn, Register rm)
 
void sdiv (Register rd, Register rn, Register rm, Condition cond=AL)
 
void udiv (Register rd, Register rn, Register rm, Condition cond=AL)
 
void ldr (Register rd, Address ad, Condition cond=AL)
 
void str (Register rd, Address ad, Condition cond=AL)
 
void ldrb (Register rd, Address ad, Condition cond=AL)
 
void strb (Register rd, Address ad, Condition cond=AL)
 
void ldrh (Register rd, Address ad, Condition cond=AL)
 
void strh (Register rd, Address ad, Condition cond=AL)
 
void ldrsb (Register rd, Address ad, Condition cond=AL)
 
void ldrsh (Register rd, Address ad, Condition cond=AL)
 
void ldrd (Register rd, Register rd2, Register rn, int32_t offset, Condition cond=AL)
 
void strd (Register rd, Register rd2, Register rn, int32_t offset, Condition cond=AL)
 
void ldm (BlockAddressMode am, Register base, RegList regs, Condition cond=AL)
 
void stm (BlockAddressMode am, Register base, RegList regs, Condition cond=AL)
 
void ldrex (Register rd, Register rn, Condition cond=AL)
 
void strex (Register rd, Register rt, Register rn, Condition cond=AL)
 
void dmb ()
 
void sbfx (Register rd, Register rn, int32_t lsb, int32_t width, Condition cond=AL)
 
void ubfx (Register rd, Register rn, int32_t lsb, int32_t width, Condition cond=AL)
 
void TransitionGeneratedToNative (Register destination_address, Register exit_frame_fp, Register exit_through_ffi, Register scratch0, bool enter_safepoint)
 
void TransitionNativeToGenerated (Register scratch0, Register scratch1, bool exit_safepoint, bool ignore_unwind_in_progress=false, bool set_tag=true)
 
void EnterFullSafepoint (Register scratch0, Register scratch1)
 
void ExitFullSafepoint (Register scratch0, Register scratch1, bool ignore_unwind_in_progress)
 
void clrex ()
 
void nop (Condition cond=AL)
 
void bkpt (uint16_t imm16)
 
void vmovsr (SRegister sn, Register rt, Condition cond=AL)
 
void vmovrs (Register rt, SRegister sn, Condition cond=AL)
 
void vmovsrr (SRegister sm, Register rt, Register rt2, Condition cond=AL)
 
void vmovrrs (Register rt, Register rt2, SRegister sm, Condition cond=AL)
 
void vmovdrr (DRegister dm, Register rt, Register rt2, Condition cond=AL)
 
void vmovrrd (Register rt, Register rt2, DRegister dm, Condition cond=AL)
 
void vmovdr (DRegister dd, int i, Register rt, Condition cond=AL)
 
void vmovs (SRegister sd, SRegister sm, Condition cond=AL)
 
void vmovd (DRegister dd, DRegister dm, Condition cond=AL)
 
void vmovq (QRegister qd, QRegister qm)
 
bool vmovs (SRegister sd, float s_imm, Condition cond=AL)
 
bool vmovd (DRegister dd, double d_imm, Condition cond=AL)
 
void vldrs (SRegister sd, Address ad, Condition cond=AL)
 
void vstrs (SRegister sd, Address ad, Condition cond=AL)
 
void vldrd (DRegister dd, Address ad, Condition cond=AL)
 
void vstrd (DRegister dd, Address ad, Condition cond=AL)
 
void vldms (BlockAddressMode am, Register base, SRegister first, SRegister last, Condition cond=AL)
 
void vstms (BlockAddressMode am, Register base, SRegister first, SRegister last, Condition cond=AL)
 
void vldmd (BlockAddressMode am, Register base, DRegister first, intptr_t count, Condition cond=AL)
 
void vstmd (BlockAddressMode am, Register base, DRegister first, intptr_t count, Condition cond=AL)
 
void vadds (SRegister sd, SRegister sn, SRegister sm, Condition cond=AL)
 
void vaddd (DRegister dd, DRegister dn, DRegister dm, Condition cond=AL)
 
void vaddqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vaddqs (QRegister qd, QRegister qn, QRegister qm)
 
void vsubs (SRegister sd, SRegister sn, SRegister sm, Condition cond=AL)
 
void vsubd (DRegister dd, DRegister dn, DRegister dm, Condition cond=AL)
 
void vsubqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vsubqs (QRegister qd, QRegister qn, QRegister qm)
 
void vmuls (SRegister sd, SRegister sn, SRegister sm, Condition cond=AL)
 
void vmuld (DRegister dd, DRegister dn, DRegister dm, Condition cond=AL)
 
void vmulqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vmulqs (QRegister qd, QRegister qn, QRegister qm)
 
void vshlqi (OperandSize sz, QRegister qd, QRegister qm, QRegister qn)
 
void vshlqu (OperandSize sz, QRegister qd, QRegister qm, QRegister qn)
 
void vmlas (SRegister sd, SRegister sn, SRegister sm, Condition cond=AL)
 
void vmlad (DRegister dd, DRegister dn, DRegister dm, Condition cond=AL)
 
void vmlss (SRegister sd, SRegister sn, SRegister sm, Condition cond=AL)
 
void vmlsd (DRegister dd, DRegister dn, DRegister dm, Condition cond=AL)
 
void vdivs (SRegister sd, SRegister sn, SRegister sm, Condition cond=AL)
 
void vdivd (DRegister dd, DRegister dn, DRegister dm, Condition cond=AL)
 
void vminqs (QRegister qd, QRegister qn, QRegister qm)
 
void vmaxqs (QRegister qd, QRegister qn, QRegister qm)
 
void vrecpeqs (QRegister qd, QRegister qm)
 
void vrecpsqs (QRegister qd, QRegister qn, QRegister qm)
 
void vrsqrteqs (QRegister qd, QRegister qm)
 
void vrsqrtsqs (QRegister qd, QRegister qn, QRegister qm)
 
void veorq (QRegister qd, QRegister qn, QRegister qm)
 
void vorrq (QRegister qd, QRegister qn, QRegister qm)
 
void vornq (QRegister qd, QRegister qn, QRegister qm)
 
void vandq (QRegister qd, QRegister qn, QRegister qm)
 
void vmvnq (QRegister qd, QRegister qm)
 
void vceqqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vceqqs (QRegister qd, QRegister qn, QRegister qm)
 
void vcgeqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vcugeqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vcgeqs (QRegister qd, QRegister qn, QRegister qm)
 
void vcgtqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vcugtqi (OperandSize sz, QRegister qd, QRegister qn, QRegister qm)
 
void vcgtqs (QRegister qd, QRegister qn, QRegister qm)
 
void vabss (SRegister sd, SRegister sm, Condition cond=AL)
 
void vabsd (DRegister dd, DRegister dm, Condition cond=AL)
 
void vabsqs (QRegister qd, QRegister qm)
 
void vnegs (SRegister sd, SRegister sm, Condition cond=AL)
 
void vnegd (DRegister dd, DRegister dm, Condition cond=AL)
 
void vnegqs (QRegister qd, QRegister qm)
 
void vsqrts (SRegister sd, SRegister sm, Condition cond=AL)
 
void vsqrtd (DRegister dd, DRegister dm, Condition cond=AL)
 
void vcvtsd (SRegister sd, DRegister dm, Condition cond=AL)
 
void vcvtds (DRegister dd, SRegister sm, Condition cond=AL)
 
void vcvtis (SRegister sd, SRegister sm, Condition cond=AL)
 
void vcvtid (SRegister sd, DRegister dm, Condition cond=AL)
 
void vcvtsi (SRegister sd, SRegister sm, Condition cond=AL)
 
void vcvtdi (DRegister dd, SRegister sm, Condition cond=AL)
 
void vcvtus (SRegister sd, SRegister sm, Condition cond=AL)
 
void vcvtud (SRegister sd, DRegister dm, Condition cond=AL)
 
void vcvtsu (SRegister sd, SRegister sm, Condition cond=AL)
 
void vcvtdu (DRegister dd, SRegister sm, Condition cond=AL)
 
void vcmps (SRegister sd, SRegister sm, Condition cond=AL)
 
void vcmpd (DRegister dd, DRegister dm, Condition cond=AL)
 
void vcmpsz (SRegister sd, Condition cond=AL)
 
void vcmpdz (DRegister dd, Condition cond=AL)
 
void vmrs (Register rd, Condition cond=AL)
 
void vmstat (Condition cond=AL)
 
void vdup (OperandSize sz, QRegister qd, DRegister dm, int idx)
 
void vtbl (DRegister dd, DRegister dn, int length, DRegister dm)
 
void vzipqw (QRegister qd, QRegister qm)
 
void b (Label *label, Condition cond=AL)
 
void bl (Label *label, Condition cond=AL)
 
void bx (Register rm, Condition cond=AL)
 
void blx (Register rm, Condition cond=AL)
 
void Branch (const Address &address, Condition cond=AL)
 
void BranchLink (const Code &code, ObjectPoolBuilderEntry::Patchability patchable=ObjectPoolBuilderEntry::kNotPatchable, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void BranchLinkPatchable (const Code &code, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void BranchLinkWithEquivalence (const Code &code, const Object &equivalence, CodeEntryKind entry_kind=CodeEntryKind::kNormal)
 
void BranchLinkOffset (Register base, int32_t offset)
 
void Call (Address target, Condition cond=AL)
 
void Call (const Code &code)
 
void CallCFunction (Address target)
 
void CallCFunction (Register target, Condition cond=AL)
 
void AddImmediate (Register rd, int32_t value, Condition cond=AL)
 
void AddImmediate (Register rd, Register rn, int32_t value, Condition cond=AL)
 
void AddImmediateSetFlags (Register rd, Register rn, int32_t value, Condition cond=AL)
 
void AddRegisters (Register dest, Register src)
 
void AddScaled (Register dest, Register base, Register index, ScaleFactor scale, int32_t disp) override
 
void SubImmediate (Register rd, Register rn, int32_t value, Condition cond=AL)
 
void SubImmediateSetFlags (Register rd, Register rn, int32_t value, Condition cond=AL)
 
void SubRegisters (Register dest, Register src)
 
void MulImmediate (Register reg, int32_t imm, OperandSize width=kFourBytes) override
 
void AndImmediate (Register rd, Register rs, int32_t imm, Condition cond=AL)
 
void AndImmediate (Register rd, int32_t imm, Condition cond)
 
void AndImmediate (Register rd, int32_t imm) override
 
void AndImmediateSetFlags (Register rd, Register rn, int32_t value, Condition cond=AL)
 
void AndRegisters (Register dst, Register src1, Register src2=kNoRegister) override
 
void OrImmediate (Register rd, Register rs, int32_t imm, Condition cond=AL)
 
void OrImmediate (Register rd, int32_t imm, Condition cond=AL)
 
void LslImmediate (Register rd, Register rn, int32_t shift)
 
void LslImmediate (Register rd, int32_t shift)
 
void LslRegister (Register dst, Register shift) override
 
void LsrImmediate (Register rd, Register rn, int32_t shift)
 
void LsrImmediate (Register rd, int32_t shift) override
 
void TestImmediate (Register rn, int32_t imm, Condition cond=AL)
 
void CompareImmediate (Register rn, int32_t value, Condition cond)
 
void CompareImmediate (Register rn, int32_t value, OperandSize width=kFourBytes) override
 
void IntegerDivide (Register result, Register left, Register right, DRegister tmpl, DRegister tmpr)
 
void LoadPatchableImmediate (Register rd, int32_t value, Condition cond=AL)
 
void LoadDecodableImmediate (Register rd, int32_t value, Condition cond=AL)
 
void LoadImmediate (Register rd, Immediate value, Condition cond=AL)
 
void LoadImmediate (Register rd, int32_t value, Condition cond)
 
void LoadImmediate (Register rd, int32_t value) override
 
void LoadSImmediate (SRegister sd, float value, Condition cond=AL)
 
void LoadDImmediate (DRegister dd, double value, Register scratch, Condition cond=AL)
 
void LoadQImmediate (QRegister dd, simd128_value_t value)
 
void MarkExceptionHandler (Label *label)
 
void Drop (intptr_t stack_elements)
 
void RestoreCodePointer ()
 
void LoadPoolPointer (Register reg=PP)
 
void SetupGlobalPoolAndDispatchTable ()
 
void LoadIsolate (Register rd)
 
void LoadIsolateGroup (Register dst)
 
void LoadWordFromPoolIndex (Register rd, intptr_t index, Register pp=PP, Condition cond=AL)
 
void StoreWordToPoolIndex (Register value, intptr_t index, Register pp=PP, Condition cond=AL)
 
void LoadObject (Register rd, const Object &object, Condition cond=AL)
 
void LoadUniqueObject (Register rd, const Object &object, Condition cond=AL, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void LoadNativeEntry (Register dst, const ExternalLabel *label, ObjectPoolBuilderEntry::Patchability patchable, Condition cond=AL)
 
void PushObject (const Object &object)
 
void PushImmediate (int32_t immediate)
 
void CompareObject (Register rn, const Object &object)
 
void StoreObjectIntoObjectNoBarrier (Register object, const Address &dest, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes) override
 
void StoreBarrier (Register object, Register value, CanBeSmi can_be_smi, Register scratch) override
 
void ArrayStoreBarrier (Register object, Register slot, Register value, CanBeSmi can_be_smi, Register scratch) override
 
void VerifyStoreNeedsNoWriteBarrier (Register object, Register value) override
 
void StoreInternalPointer (Register object, const Address &dest, Register value)
 
void InitializeFieldsNoBarrier (Register object, Register begin, Register end, Register value_even, Register value_odd)
 
void InitializeFieldsNoBarrierUnrolled (Register object, Register base, intptr_t begin_offset, intptr_t end_offset, Register value_even, Register value_odd)
 
void StoreIntoSmiField (const Address &dest, Register value)
 
void ExtractClassIdFromTags (Register result, Register tags, Condition cond=AL)
 
void ExtractInstanceSizeFromTags (Register result, Register tags)
 
void RangeCheck (Register value, Register temp, intptr_t low, intptr_t high, RangeCheckCondition condition, Label *target) override
 
void LoadClassId (Register result, Register object, Condition cond=AL)
 
void LoadClassById (Register result, Register class_id)
 
void CompareClassId (Register object, intptr_t class_id, Register scratch)
 
void LoadClassIdMayBeSmi (Register result, Register object)
 
void LoadTaggedClassIdMayBeSmi (Register result, Register object)
 
void EnsureHasClassIdInDEBUG (intptr_t cid, Register src, Register scratch, bool can_be_null=false) override
 
bool CanLoadFromObjectPool (const Object &object) const
 
Address PrepareLargeLoadOffset (const Address &addr, OperandSize sz, Condition cond)
 
Address PrepareLargeStoreOffset (const Address &addr, OperandSize sz, Condition cond)
 
void Load (Register reg, const Address &address, OperandSize type, Condition cond)
 
void Load (Register reg, const Address &address, OperandSize type=kFourBytes) override
 
void LoadFromOffset (Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override
 
void LoadFromOffset (Register reg, Register base, int32_t offset, OperandSize type, Condition cond)
 
void LoadFieldFromOffset (Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override
 
void LoadFieldFromOffset (Register reg, Register base, int32_t offset, OperandSize type, Condition cond)
 
void LoadIndexedPayload (Register dst, Register base, int32_t payload_start, Register index, ScaleFactor scale, OperandSize type=kFourBytes) override
 
void LoadFromStack (Register dst, intptr_t depth)
 
void StoreToStack (Register src, intptr_t depth)
 
void CompareToStack (Register src, intptr_t depth)
 
void Store (Register reg, const Address &address, OperandSize type, Condition cond)
 
void Store (Register reg, const Address &address, OperandSize type=kFourBytes) override
 
void StoreToOffset (Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override
 
void StoreToOffset (Register reg, Register base, int32_t offset, OperandSize type, Condition cond)
 
void StoreFieldToOffset (Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override
 
void StoreFieldToOffset (Register reg, Register base, int32_t offset, OperandSize type, Condition cond)
 
void StoreZero (const Address &address, Register temp)
 
void LoadSFromOffset (SRegister reg, Register base, int32_t offset, Condition cond=AL)
 
void StoreSToOffset (SRegister reg, Register base, int32_t offset, Condition cond=AL)
 
void LoadDFromOffset (DRegister reg, Register base, int32_t offset, Condition cond=AL)
 
void StoreDToOffset (DRegister reg, Register base, int32_t offset, Condition cond=AL)
 
void LoadUnboxedDouble (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedDouble (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedDouble (FpuRegister dst, FpuRegister src)
 
void LoadMultipleDFromOffset (DRegister first, intptr_t count, Register base, int32_t offset)
 
void StoreMultipleDToOffset (DRegister first, intptr_t count, Register base, int32_t offset)
 
void LoadUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedSimd128 (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedSimd128 (FpuRegister dst, FpuRegister src)
 
void Push (Register rd, Condition cond=AL)
 
void Pop (Register rd, Condition cond=AL)
 
void PushList (RegList regs, Condition cond=AL)
 
void PopList (RegList regs, Condition cond=AL)
 
void PushQuad (FpuRegister rd, Condition cond=AL)
 
void PopQuad (FpuRegister rd, Condition cond=AL)
 
void PushRegisters (const RegisterSet &regs)
 
void PopRegisters (const RegisterSet &regs)
 
void PushRegistersInOrder (std::initializer_list< Register > regs)
 
void PushNativeCalleeSavedRegisters ()
 
void PopNativeCalleeSavedRegisters ()
 
void CompareRegisters (Register rn, Register rm)
 
void CompareObjectRegisters (Register rn, Register rm)
 
void BranchIf (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfZero (Register rn, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfBit (Register rn, intptr_t bit_number, Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void MoveRegister (Register rd, Register rm, Condition cond)
 
void MoveRegister (Register rd, Register rm) override
 
void MoveAndSmiTagRegister (Register rd, Register rm, Condition cond)
 
void MoveAndSmiTagRegister (Register rd, Register rm) override
 
void ExtendValue (Register rd, Register rm, OperandSize sz, Condition cond)
 
void ExtendValue (Register rd, Register rm, OperandSize sz) override
 
void ExtendAndSmiTagValue (Register rd, Register rm, OperandSize sz, Condition cond)
 
void ExtendAndSmiTagValue (Register rd, Register rm, OperandSize sz=kFourBytes) override
 
void Lsl (Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
 
void Lsl (Register rd, Register rm, Register rs, Condition cond=AL)
 
void Lsr (Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
 
void Lsr (Register rd, Register rm, Register rs, Condition cond=AL)
 
void Asr (Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
 
void Asr (Register rd, Register rm, Register rs, Condition cond=AL)
 
void Asrs (Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
 
void Ror (Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
 
void Ror (Register rd, Register rm, Register rs, Condition cond=AL)
 
void Rrx (Register rd, Register rm, Condition cond=AL)
 
void SignFill (Register rd, Register rm, Condition cond=AL)
 
void Vreciprocalqs (QRegister qd, QRegister qm)
 
void VreciprocalSqrtqs (QRegister qd, QRegister qm)
 
void Vsqrtqs (QRegister qd, QRegister qm, QRegister temp)
 
void Vdivqs (QRegister qd, QRegister qn, QRegister qm)
 
void SmiTag (Register reg, Condition cond)
 
void SmiTag (Register reg) override
 
void SmiTag (Register dst, Register src, Condition cond=AL)
 
void SmiUntag (Register reg, Condition cond=AL)
 
void SmiUntag (Register dst, Register src, Condition cond=AL)
 
void SmiUntag (Register dst, Register src, Label *is_smi)
 
void BranchIfNotSmi (Register reg, Label *label, JumpDistance distance=kFarJump)
 
void LoadInt32FromBoxOrSmi (Register result, Register value) override
 
void BranchIfSmi (Register reg, Label *label, JumpDistance distance=kFarJump) override
 
void CheckCodePointer ()
 
void ArithmeticShiftRightImmediate (Register reg, intptr_t shift) override
 
void CompareWords (Register reg1, Register reg2, intptr_t offset, Register count, Register temp, Label *equals) override
 
void EnterFrame (RegList regs, intptr_t frame_space)
 
void LeaveFrame (RegList regs, bool allow_pop_pc=false)
 
void Ret (Condition cond=AL)
 
void SetReturnAddress (Register value)
 
void ReserveAlignedFrameSpace (intptr_t frame_space)
 
void EmitEntryFrameVerification (Register scratch)
 
void CallRuntime (const RuntimeEntry &entry, intptr_t argument_count)
 
void EnterDartFrame (intptr_t frame_size, bool load_pool_pointer=true)
 
void LeaveDartFrame ()
 
void LeaveDartFrameAndReturn ()
 
void EnterOsrFrame (intptr_t extra_size)
 
void EnterStubFrame ()
 
void LeaveStubFrame ()
 
void EnterCFrame (intptr_t frame_space)
 
void LeaveCFrame ()
 
void MonomorphicCheckedEntryJIT ()
 
void MonomorphicCheckedEntryAOT ()
 
void BranchOnMonomorphicCheckedEntryJIT (Label *label)
 
void CombineHashes (Register dst, Register other) override
 
void FinalizeHashForSize (intptr_t bit_size, Register dst, Register scratch=TMP) override
 
void LoadAllocationTracingStateAddress (Register dest, intptr_t cid)
 
void LoadAllocationTracingStateAddress (Register dest, Register cid)
 
Address ElementAddressForIntIndex (bool is_load, bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index, Register temp)
 
void LoadElementAddressForIntIndex (Register address, bool is_load, bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index)
 
Address ElementAddressForRegIndex (bool is_load, bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index)
 
void LoadElementAddressForRegIndex (Register address, bool is_load, bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index)
 
void LoadStaticFieldAddress (Register address, Register field, Register scratch, bool is_shared)
 
void LoadFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi) override
 
void LoadFieldAddressForOffset (Register address, Register instance, int32_t offset) override
 
void LoadHalfWordUnaligned (Register dst, Register addr, Register tmp)
 
void LoadHalfWordUnsignedUnaligned (Register dst, Register addr, Register tmp)
 
void StoreHalfWordUnaligned (Register src, Register addr, Register tmp)
 
void LoadWordUnaligned (Register dst, Register addr, Register tmp)
 
void StoreWordUnaligned (Register src, Register addr, Register tmp)
 
void MaybeTraceAllocation (Register stats_addr_reg, Label *trace)
 
void MaybeTraceAllocation (intptr_t cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void MaybeTraceAllocation (Register cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void TryAllocateObject (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance_reg, Register temp_reg) override
 
void TryAllocateArray (intptr_t cid, intptr_t instance_size, Label *failure, Register instance, Register end_address, Register temp1, Register temp2)
 
void CheckAllocationCanary (Register top, Register tmp=TMP)
 
void WriteAllocationCanary (Register top)
 
void CopyMemoryWords (Register src, Register dst, Register size, Register temp)
 
void GenerateUnRelocatedPcRelativeCall (Condition cond=AL, intptr_t offset_into_target=0)
 
void GenerateUnRelocatedPcRelativeTailCall (Condition cond=AL, intptr_t offset_into_target=0)
 
void Emit (int32_t value)
 
bool constant_pool_allowed () const
 
void set_constant_pool_allowed (bool b)
 
compiler::LRState lr_state () const
 
void set_lr_state (compiler::LRState b)
 
 Assembler (ObjectPoolBuilder *object_pool_builder, intptr_t far_branch_level=0)
 
 ~Assembler ()
 
void PushRegister (Register r)
 
void PopRegister (Register r)
 
void PushValueAtOffset (Register base, int32_t offset)
 
void PushRegisterPair (Register r0, Register r1)
 
void PopRegisterPair (Register r0, Register r1)
 
void PushRegisters (const RegisterSet &registers)
 
void PopRegisters (const RegisterSet &registers)
 
void PushRegistersInOrder (std::initializer_list< Register > regs)
 
void PushNativeCalleeSavedRegisters ()
 
void PopNativeCalleeSavedRegisters ()
 
void ExtendValue (Register rd, Register rn, OperandSize sz) override
 
void ExtendAndSmiTagValue (Register rd, Register rn, OperandSize sz=kEightBytes) override
 
void Drop (intptr_t stack_elements)
 
void nop ()
 
void Align (intptr_t alignment, intptr_t offset)
 
void Bind (Label *label) override
 
void Jump (Label *label, JumpDistance distance=kFarJump)
 
void Jump (Register target)
 
void Jump (const Address &address)
 
void LoadMemoryValue (Register dst, Register base, int32_t offset)
 
void StoreMemoryValue (Register src, Register base, int32_t offset)
 
void TsanLoadAcquire (Register addr)
 
void TsanStoreRelease (Register addr)
 
void LoadAcquire (Register dst, const Address &address, OperandSize size=kEightBytes) override
 
void StoreRelease (Register src, const Address &address, OperandSize size=kEightBytes) override
 
void CompareWithMemoryValue (Register value, Address address, OperandSize sz=kEightBytes) override
 
bool use_far_branches () const
 
void set_use_far_branches (bool b)
 
void Breakpoint () override
 
void SetPrologueOffset ()
 
void ReserveAlignedFrameSpace (intptr_t frame_space)
 
void EmitEntryFrameVerification ()
 
void Emit (int32_t value)
 
void Emit64 (int64_t value)
 
void add (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void adds (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void sub (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void subs (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void addw (Register rd, Register rn, Operand o)
 
void addsw (Register rd, Register rn, Operand o)
 
void subw (Register rd, Register rn, Operand o)
 
void subsw (Register rd, Register rn, Operand o)
 
void adc (Register rd, Register rn, Register rm)
 
void adcs (Register rd, Register rn, Register rm)
 
void adcw (Register rd, Register rn, Register rm)
 
void adcsw (Register rd, Register rn, Register rm)
 
void sbc (Register rd, Register rn, Register rm)
 
void sbcs (Register rd, Register rn, Register rm)
 
void sbcw (Register rd, Register rn, Register rm)
 
void sbcsw (Register rd, Register rn, Register rm)
 
void adr (Register rd, const Immediate &imm)
 
void bfm (Register rd, Register rn, int r_imm, int s_imm, OperandSize size=kEightBytes)
 
void sbfm (Register rd, Register rn, int r_imm, int s_imm, OperandSize size=kEightBytes)
 
void ubfm (Register rd, Register rn, int r_imm, int s_imm, OperandSize size=kEightBytes)
 
void bfi (Register rd, Register rn, int low_bit, int width, OperandSize size=kEightBytes)
 
void bfxil (Register rd, Register rn, int low_bit, int width, OperandSize size=kEightBytes)
 
void sbfiz (Register rd, Register rn, int low_bit, int width, OperandSize size=kEightBytes)
 
void sbfx (Register rd, Register rn, int low_bit, int width, OperandSize size=kEightBytes)
 
void ubfiz (Register rd, Register rn, int low_bit, int width, OperandSize size=kEightBytes)
 
void ubfx (Register rd, Register rn, int low_bit, int width, OperandSize size=kEightBytes)
 
void sxtb (Register rd, Register rn)
 
void sxth (Register rd, Register rn)
 
void sxtw (Register rd, Register rn)
 
void uxtb (Register rd, Register rn)
 
void uxth (Register rd, Register rn)
 
void uxtw (Register rd, Register rn)
 
void andi (Register rd, Register rn, const Immediate &imm, OperandSize sz=kEightBytes)
 
void orri (Register rd, Register rn, const Immediate &imm, OperandSize sz=kEightBytes)
 
void eori (Register rd, Register rn, const Immediate &imm, OperandSize sz=kEightBytes)
 
void andis (Register rd, Register rn, const Immediate &imm, OperandSize sz=kEightBytes)
 
void and_ (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void bic (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void orr (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void orn (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void eor (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void eon (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void ands (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void bics (Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)
 
void andw_ (Register rd, Register rn, Operand o)
 
void orrw (Register rd, Register rn, Operand o)
 
void ornw (Register rd, Register rn, Operand o)
 
void eorw (Register rd, Register rn, Operand o)
 
void clz (Register rd, Register rn)
 
void clzw (Register rd, Register rn)
 
void rbit (Register rd, Register rn)
 
void udiv (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void sdiv (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void lslv (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void lsrv (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void asrv (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void sdivw (Register rd, Register rn, Register rm)
 
void lslvw (Register rd, Register rn, Register rm)
 
void lsrvw (Register rd, Register rn, Register rm)
 
void asrvw (Register rd, Register rn, Register rm)
 
void madd (Register rd, Register rn, Register rm, Register ra, OperandSize sz=kEightBytes)
 
void msub (Register rd, Register rn, Register rm, Register ra, OperandSize sz=kEightBytes)
 
void smulh (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void umulh (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void umaddl (Register rd, Register rn, Register rm, Register ra, OperandSize sz=kEightBytes)
 
void umull (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void smaddl (Register rd, Register rn, Register rm, Register ra, OperandSize sz=kEightBytes)
 
void smull (Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)
 
void movk (Register rd, const Immediate &imm, int hw_idx)
 
void movn (Register rd, const Immediate &imm, int hw_idx)
 
void movz (Register rd, const Immediate &imm, int hw_idx)
 
void ldr (Register rt, Address a, OperandSize sz=kEightBytes)
 
void str (Register rt, Address a, OperandSize sz=kEightBytes)
 
void ldp (Register rt, Register rt2, Address a, OperandSize sz=kEightBytes)
 
void stp (Register rt, Register rt2, Address a, OperandSize sz=kEightBytes)
 
void fldp (VRegister rt, VRegister rt2, Address a, OperandSize sz)
 
void fstp (VRegister rt, VRegister rt2, Address a, OperandSize sz)
 
void ldxr (Register rt, Register rn, OperandSize size=kEightBytes)
 
void stxr (Register rs, Register rt, Register rn, OperandSize size=kEightBytes)
 
void clrex ()
 
void ldar (Register rt, Register rn, OperandSize sz=kEightBytes)
 
void stlr (Register rt, Register rn, OperandSize sz=kEightBytes)
 
void ldclr (Register rs, Register rt, Register rn, OperandSize sz=kEightBytes)
 
void ldset (Register rs, Register rt, Register rn, OperandSize sz=kEightBytes)
 
void csel (Register rd, Register rn, Register rm, Condition cond)
 
void csinc (Register rd, Register rn, Register rm, Condition cond, OperandSize sz=kEightBytes)
 
void cinc (Register rd, Register rn, Condition cond)
 
void cset (Register rd, Condition cond)
 
void csinv (Register rd, Register rn, Register rm, Condition cond)
 
void cinv (Register rd, Register rn, Condition cond)
 
void csetm (Register rd, Condition cond)
 
void csneg (Register rd, Register rn, Register rm, Condition cond)
 
void cneg (Register rd, Register rn, Condition cond)
 
void cmp (Register rn, Operand o, OperandSize sz=kEightBytes)
 
void cmpw (Register rn, Operand o)
 
void cmn (Register rn, Operand o, OperandSize sz=kEightBytes)
 
void CompareRegisters (Register rn, Register rm)
 
void CompareObjectRegisters (Register rn, Register rm)
 
void b (Label *label, Condition cond=AL)
 
void b (int32_t offset)
 
void bl (int32_t offset)
 
void BranchIf (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfZero (Register rn, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfBit (Register rn, intptr_t bit_number, Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void cbz (Label *label, Register rt, OperandSize sz=kEightBytes)
 
void cbnz (Label *label, Register rt, OperandSize sz=kEightBytes)
 
bool CanGenerateCbzTbz (Register rn, Condition cond)
 
void GenerateCbzTbz (Register rn, Condition cond, Label *label, OperandSize sz=kEightBytes)
 
void tbz (Label *label, Register rt, intptr_t bit_number)
 
void tbnz (Label *label, Register rt, intptr_t bit_number)
 
void br (Register rn)
 
void blr (Register rn)
 
void ret (Register rn=kNoRegister2)
 
void brk (uint16_t imm)
 
bool fmovdi (VRegister vd, double immd)
 
void fmovsr (VRegister vd, Register rn)
 
void fmovrs (Register rd, VRegister vn)
 
void fmovdr (VRegister vd, Register rn)
 
void fmovrd (Register rd, VRegister vn)
 
void scvtfdx (VRegister vd, Register rn)
 
void scvtfdw (VRegister vd, Register rn)
 
void fcvtzsxd (Register rd, VRegister vn)
 
void fcvtzswd (Register rd, VRegister vn)
 
void fcvtmsxd (Register rd, VRegister vn)
 
void fcvtmswd (Register rd, VRegister vn)
 
void fcvtpsxd (Register rd, VRegister vn)
 
void fcvtpswd (Register rd, VRegister vn)
 
void fmovdd (VRegister vd, VRegister vn)
 
void fabsd (VRegister vd, VRegister vn)
 
void fnegd (VRegister vd, VRegister vn)
 
void fsqrtd (VRegister vd, VRegister vn)
 
void fcvtsd (VRegister vd, VRegister vn)
 
void fcvtds (VRegister vd, VRegister vn)
 
void fldrq (VRegister vt, Address a)
 
void fstrq (VRegister vt, Address a)
 
void fldrd (VRegister vt, Address a)
 
void fstrd (VRegister vt, Address a)
 
void fldrs (VRegister vt, Address a)
 
void fstrs (VRegister vt, Address a)
 
void fcmpd (VRegister vn, VRegister vm)
 
void fcmpdz (VRegister vn)
 
void fmuld (VRegister vd, VRegister vn, VRegister vm)
 
void fdivd (VRegister vd, VRegister vn, VRegister vm)
 
void faddd (VRegister vd, VRegister vn, VRegister vm)
 
void fsubd (VRegister vd, VRegister vn, VRegister vm)
 
void vand (VRegister vd, VRegister vn, VRegister vm)
 
void vorr (VRegister vd, VRegister vn, VRegister vm)
 
void veor (VRegister vd, VRegister vn, VRegister vm)
 
void vaddw (VRegister vd, VRegister vn, VRegister vm)
 
void vaddx (VRegister vd, VRegister vn, VRegister vm)
 
void vsubw (VRegister vd, VRegister vn, VRegister vm)
 
void vsubx (VRegister vd, VRegister vn, VRegister vm)
 
void vadds (VRegister vd, VRegister vn, VRegister vm)
 
void vaddd (VRegister vd, VRegister vn, VRegister vm)
 
void vsubs (VRegister vd, VRegister vn, VRegister vm)
 
void vsubd (VRegister vd, VRegister vn, VRegister vm)
 
void vmuls (VRegister vd, VRegister vn, VRegister vm)
 
void vmuld (VRegister vd, VRegister vn, VRegister vm)
 
void vdivs (VRegister vd, VRegister vn, VRegister vm)
 
void vdivd (VRegister vd, VRegister vn, VRegister vm)
 
void vceqs (VRegister vd, VRegister vn, VRegister vm)
 
void vceqd (VRegister vd, VRegister vn, VRegister vm)
 
void vcgts (VRegister vd, VRegister vn, VRegister vm)
 
void vcgtd (VRegister vd, VRegister vn, VRegister vm)
 
void vcges (VRegister vd, VRegister vn, VRegister vm)
 
void vcged (VRegister vd, VRegister vn, VRegister vm)
 
void vmins (VRegister vd, VRegister vn, VRegister vm)
 
void vmind (VRegister vd, VRegister vn, VRegister vm)
 
void vmaxs (VRegister vd, VRegister vn, VRegister vm)
 
void vmaxd (VRegister vd, VRegister vn, VRegister vm)
 
void vrecpss (VRegister vd, VRegister vn, VRegister vm)
 
void vrsqrtss (VRegister vd, VRegister vn, VRegister vm)
 
void vnot (VRegister vd, VRegister vn)
 
void vabss (VRegister vd, VRegister vn)
 
void vabsd (VRegister vd, VRegister vn)
 
void vnegs (VRegister vd, VRegister vn)
 
void vnegd (VRegister vd, VRegister vn)
 
void vsqrts (VRegister vd, VRegister vn)
 
void vsqrtd (VRegister vd, VRegister vn)
 
void vrecpes (VRegister vd, VRegister vn)
 
void vrsqrtes (VRegister vd, VRegister vn)
 
void vdupw (VRegister vd, Register rn)
 
void vdupx (VRegister vd, Register rn)
 
void vdups (VRegister vd, VRegister vn, int32_t idx)
 
void vdupd (VRegister vd, VRegister vn, int32_t idx)
 
void vinsw (VRegister vd, int32_t didx, Register rn)
 
void vinsx (VRegister vd, int32_t didx, Register rn)
 
void vinss (VRegister vd, int32_t didx, VRegister vn, int32_t sidx)
 
void vinsd (VRegister vd, int32_t didx, VRegister vn, int32_t sidx)
 
void vmovrs (Register rd, VRegister vn, int32_t sidx)
 
void vmovrd (Register rd, VRegister vn, int32_t sidx)
 
void mov (Register rd, Register rn)
 
void movw (Register rd, Register rn)
 
void vmov (VRegister vd, VRegister vn)
 
void mvn_ (Register rd, Register rm)
 
void mvnw (Register rd, Register rm)
 
void neg (Register rd, Register rm)
 
void negs (Register rd, Register rm, OperandSize sz=kEightBytes)
 
void negsw (Register rd, Register rm)
 
void mul (Register rd, Register rn, Register rm)
 
void mulw (Register rd, Register rn, Register rm)
 
void Push (Register reg)
 
void Pop (Register reg)
 
void PushPair (Register low, Register high)
 
void PopPair (Register low, Register high)
 
void PushFloat (VRegister reg)
 
void PushDouble (VRegister reg)
 
void PushQuad (VRegister reg)
 
void PopFloat (VRegister reg)
 
void PopDouble (VRegister reg)
 
void PopQuad (VRegister reg)
 
void PushDoublePair (VRegister low, VRegister high)
 
void PopDoublePair (VRegister low, VRegister high)
 
void PushQuadPair (VRegister low, VRegister high)
 
void PopQuadPair (VRegister low, VRegister high)
 
void TagAndPushPP ()
 
void TagAndPushPPAndPcMarker ()
 
void PopAndUntagPP ()
 
void tst (Register rn, Operand o, OperandSize sz=kEightBytes)
 
void tsti (Register rn, const Immediate &imm, OperandSize sz=kEightBytes)
 
void LslImmediate (Register rd, Register rn, int32_t shift, OperandSize sz=kEightBytes)
 
void LslImmediate (Register rd, int32_t shift, OperandSize sz=kEightBytes)
 
void LslRegister (Register dst, Register shift) override
 
void LsrImmediate (Register rd, Register rn, int shift, OperandSize sz=kEightBytes)
 
void LsrImmediate (Register rd, int32_t shift) override
 
void AsrImmediate (Register rd, Register rn, int shift, OperandSize sz=kEightBytes)
 
void VRecps (VRegister vd, VRegister vn)
 
void VRSqrts (VRegister vd, VRegister vn)
 
void SmiUntag (Register reg)
 
void SmiUntag (Register dst, Register src)
 
void SmiTag (Register reg) override
 
void SmiTag (Register dst, Register src)
 
void SmiTagAndBranchIfOverflow (Register reg, Label *label)
 
void LoadInt32FromBoxOrSmi (Register result, Register value) override
 
void LoadInt64FromBoxOrSmi (Register result, Register value) override
 
void BranchIfNotSmi (Register reg, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfSmi (Register reg, Label *label, JumpDistance distance=kFarJump) override
 
void BranchLink (const Code &code, ObjectPoolBuilderEntry::Patchability patchable=ObjectPoolBuilderEntry::kNotPatchable, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void BranchLinkPatchable (const Code &code, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void BranchLinkWithEquivalence (const Code &code, const Object &equivalence, CodeEntryKind entry_kind=CodeEntryKind::kNormal)
 
void Call (Address target)
 
void Call (const Code &code)
 
void CallCFunction (Address target)
 
void CallCFunction (Register target)
 
void AddImmediate (Register dest, int64_t imm)
 
void AddImmediate (Register dest, Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void AddImmediateSetFlags (Register dest, Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void AddRegisters (Register dest, Register src)
 
void AddScaled (Register dest, Register base, Register index, ScaleFactor scale, int32_t disp) override
 
void SubImmediateSetFlags (Register dest, Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void SubRegisters (Register dest, Register src)
 
void MulImmediate (Register reg, int64_t imm, OperandSize width=kEightBytes) override
 
void AndImmediate (Register rd, Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void AndImmediate (Register rd, int64_t imm) override
 
void AndRegisters (Register dst, Register src1, Register src2=kNoRegister) override
 
void OrImmediate (Register rd, Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void OrImmediate (Register rd, int64_t imm)
 
void XorImmediate (Register rd, Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void TestImmediate (Register rn, int64_t imm, OperandSize sz=kEightBytes)
 
void CompareImmediate (Register rn, int64_t imm, OperandSize sz=kEightBytes) override
 
Address PrepareLargeOffset (Register base, int32_t offset, OperandSize sz, Address::AddressType addr_type)
 
void Load (Register dest, const Address &address, OperandSize sz=kEightBytes) override
 
void LoadIndexedPayload (Register dest, Register base, int32_t payload_offset, Register index, ScaleFactor scale, OperandSize sz=kEightBytes) override
 
void LoadSFromOffset (VRegister dest, Register base, int32_t offset)
 
void LoadDFromOffset (VRegister dest, Register base, int32_t offset)
 
void LoadDFieldFromOffset (VRegister dest, Register base, int32_t offset)
 
void LoadQFromOffset (VRegister dest, Register base, int32_t offset)
 
void LoadQFieldFromOffset (VRegister dest, Register base, int32_t offset)
 
void LoadFromStack (Register dst, intptr_t depth)
 
void StoreToStack (Register src, intptr_t depth)
 
void CompareToStack (Register src, intptr_t depth)
 
void Store (Register src, const Address &address, OperandSize sz=kEightBytes) override
 
void StoreZero (const Address &address, Register temp=kNoRegister)
 
void StorePairToOffset (Register low, Register high, Register base, int32_t offset, OperandSize sz=kEightBytes)
 
void StoreSToOffset (VRegister src, Register base, int32_t offset)
 
void StoreDToOffset (VRegister src, Register base, int32_t offset)
 
void StoreDFieldToOffset (VRegister src, Register base, int32_t offset)
 
void StoreQToOffset (VRegister src, Register base, int32_t offset)
 
void StoreQFieldToOffset (VRegister src, Register base, int32_t offset)
 
void LoadUnboxedDouble (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedDouble (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedDouble (FpuRegister dst, FpuRegister src)
 
void LoadUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedSimd128 (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedSimd128 (FpuRegister dst, FpuRegister src)
 
void StoreBarrier (Register object, Register value, CanBeSmi can_value_be_smi, Register scratch) override
 
void ArrayStoreBarrier (Register object, Register slot, Register value, CanBeSmi can_value_be_smi, Register scratch) override
 
void VerifyStoreNeedsNoWriteBarrier (Register object, Register value) override
 
void StoreObjectIntoObjectNoBarrier (Register object, const Address &address, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes) override
 
void StoreInternalPointer (Register object, const Address &dest, Register value)
 
void LoadPoolPointer (Register pp=PP)
 
bool constant_pool_allowed () const
 
void set_constant_pool_allowed (bool b)
 
compiler::LRState lr_state () const
 
void set_lr_state (compiler::LRState state)
 
bool CanLoadFromObjectPool (const Object &object) const
 
void LoadNativeEntry (Register dst, const ExternalLabel *label, ObjectPoolBuilderEntry::Patchability patchable)
 
void LoadIsolate (Register dst)
 
void LoadIsolateGroup (Register dst)
 
void LoadObject (Register dst, const Object &obj)
 
void LoadUniqueObject (Register dst, const Object &obj)
 
void LoadImmediate (Register reg, int64_t imm) override
 
void LoadImmediate (Register reg, Immediate imm)
 
void LoadSImmediate (VRegister reg, float immd)
 
void LoadDImmediate (VRegister reg, double immd)
 
void LoadQImmediate (VRegister reg, simd128_value_t immq)
 
void LoadWordFromPoolIndex (Register dst, intptr_t index, Register pp=PP)
 
void StoreWordToPoolIndex (Register src, intptr_t index, Register pp=PP)
 
void LoadDoubleWordFromPoolIndex (Register lower, Register upper, intptr_t index)
 
void PushObject (const Object &object)
 
void PushImmediate (int64_t immediate)
 
void PushImmediate (Immediate immediate)
 
void CompareObject (Register reg, const Object &object)
 
void ExtractClassIdFromTags (Register result, Register tags)
 
void ExtractInstanceSizeFromTags (Register result, Register tags)
 
void RangeCheck (Register value, Register temp, intptr_t low, intptr_t high, RangeCheckCondition condition, Label *target) override
 
void LoadClassId (Register result, Register object)
 
void LoadClassById (Register result, Register class_id)
 
void CompareClassId (Register object, intptr_t class_id, Register scratch=kNoRegister)
 
void LoadClassIdMayBeSmi (Register result, Register object)
 
void LoadTaggedClassIdMayBeSmi (Register result, Register object)
 
void EnsureHasClassIdInDEBUG (intptr_t cid, Register src, Register scratch, bool can_be_null=false) override
 
void SetupDartSP (intptr_t reserve=4096)
 
void SetupCSPFromThread (Register thr)
 
void RestoreCSP ()
 
void ArithmeticShiftRightImmediate (Register reg, intptr_t shift) override
 
void CompareWords (Register reg1, Register reg2, intptr_t offset, Register count, Register temp, Label *equals) override
 
void EnterFrame (intptr_t frame_size)
 
void LeaveFrame ()
 
void Ret ()
 
void SetReturnAddress (Register value)
 
void TransitionGeneratedToNative (Register destination_address, Register new_exit_frame, Register new_exit_through_ffi, bool enter_safepoint)
 
void TransitionNativeToGenerated (Register scratch, bool exit_safepoint, bool ignore_unwind_in_progress=false, bool set_tag=true)
 
void EnterFullSafepoint (Register scratch)
 
void ExitFullSafepoint (Register scratch, bool ignore_unwind_in_progress)
 
void CheckCodePointer ()
 
void RestoreCodePointer ()
 
void RestorePinnedRegisters ()
 
void SetupGlobalPoolAndDispatchTable ()
 
void EnterDartFrame (intptr_t frame_size, Register new_pp=kNoRegister)
 
void EnterOsrFrame (intptr_t extra_size, Register new_pp=kNoRegister)
 
void LeaveDartFrame ()
 
void CallRuntime (const RuntimeEntry &entry, intptr_t argument_count)
 
void EnterStubFrame ()
 
void LeaveStubFrame ()
 
void EnterCFrame (intptr_t frame_space)
 
void LeaveCFrame ()
 
void MonomorphicCheckedEntryJIT ()
 
void MonomorphicCheckedEntryAOT ()
 
void BranchOnMonomorphicCheckedEntryJIT (Label *label)
 
void CombineHashes (Register hash, Register other) override
 
void FinalizeHashForSize (intptr_t bit_size, Register hash, Register scratch=TMP) override
 
void MaybeTraceAllocation (intptr_t cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void MaybeTraceAllocation (Register cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void TryAllocateObject (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance_reg, Register top_reg) override
 
void TryAllocateArray (intptr_t cid, intptr_t instance_size, Label *failure, Register instance, Register end_address, Register temp1, Register temp2)
 
void CheckAllocationCanary (Register top, Register tmp=TMP)
 
void WriteAllocationCanary (Register top)
 
void CopyMemoryWords (Register src, Register dst, Register size, Register temp)
 
void GenerateUnRelocatedPcRelativeCall (intptr_t offset_into_target=0)
 
void GenerateUnRelocatedPcRelativeTailCall (intptr_t offset_into_target=0)
 
Address ElementAddressForIntIndex (bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index) const
 
void ComputeElementAddressForIntIndex (Register address, bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index)
 
Address ElementAddressForRegIndex (bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index, Register temp)
 
Address ElementAddressForRegIndexWithSize (bool is_external, intptr_t cid, OperandSize size, intptr_t index_scale, bool index_unboxed, Register array, Register index, Register temp)
 
void ComputeElementAddressForRegIndex (Register address, bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index)
 
void LoadStaticFieldAddress (Register address, Register field, Register scratch, bool is_shared)
 
void LoadFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi) override
 
void LoadFieldAddressForOffset (Register address, Register instance, int32_t offset) override
 
 Assembler (ObjectPoolBuilder *object_pool_builder, intptr_t far_branch_level=0)
 
 ~Assembler ()
 
void call (Register reg)
 
void call (const Address &address)
 
void call (Label *label)
 
void call (const ExternalLabel *label)
 
void pushl (Register reg)
 
void pushl (const Address &address)
 
void pushl (const Immediate &imm)
 
void PushImmediate (int32_t value)
 
void popl (Register reg)
 
void popl (const Address &address)
 
void pushal ()
 
void popal ()
 
void setcc (Condition condition, ByteRegister dst)
 
void movl (Register dst, const Immediate &src)
 
void movl (Register dst, Register src)
 
void movl (Register dst, const Address &src)
 
void movl (const Address &dst, Register src)
 
void movl (const Address &dst, const Immediate &imm)
 
void movzxb (Register dst, ByteRegister src)
 
void movzxb (Register dst, const Address &src)
 
void movsxb (Register dst, ByteRegister src)
 
void movsxb (Register dst, const Address &src)
 
void movb (Register dst, const Address &src)
 
void movb (const Address &dst, Register src)
 
void movb (const Address &dst, ByteRegister src)
 
void movb (const Address &dst, const Immediate &imm)
 
void movzxw (Register dst, Register src)
 
void movzxw (Register dst, const Address &src)
 
void movsxw (Register dst, Register src)
 
void movsxw (Register dst, const Address &src)
 
void movw (Register dst, const Address &src)
 
void movw (const Address &dst, Register src)
 
void movw (const Address &dst, const Immediate &imm)
 
void leal (Register dst, const Address &src)
 
void cmovno (Register dst, Register src)
 
void cmove (Register dst, Register src)
 
void cmovne (Register dst, Register src)
 
void cmovs (Register dst, Register src)
 
void cmovns (Register dst, Register src)
 
void cmovgel (Register dst, Register src)
 
void cmovlessl (Register dst, Register src)
 
void rep_movsb ()
 
void rep_movsw ()
 
void rep_movsd ()
 
void movss (XmmRegister dst, const Address &src)
 
void movss (const Address &dst, XmmRegister src)
 
void movss (XmmRegister dst, XmmRegister src)
 
void movd (XmmRegister dst, Register src)
 
void movd (Register dst, XmmRegister src)
 
void movq (const Address &dst, XmmRegister src)
 
void movq (XmmRegister dst, const Address &src)
 
void addss (XmmRegister dst, XmmRegister src)
 
void addss (XmmRegister dst, const Address &src)
 
void subss (XmmRegister dst, XmmRegister src)
 
void subss (XmmRegister dst, const Address &src)
 
void mulss (XmmRegister dst, XmmRegister src)
 
void mulss (XmmRegister dst, const Address &src)
 
void divss (XmmRegister dst, XmmRegister src)
 
void divss (XmmRegister dst, const Address &src)
 
void movsd (XmmRegister dst, const Address &src)
 
void movsd (const Address &dst, XmmRegister src)
 
void movsd (XmmRegister dst, XmmRegister src)
 
void movaps (XmmRegister dst, XmmRegister src)
 
void movups (XmmRegister dst, const Address &src)
 
void movups (const Address &dst, XmmRegister src)
 
void addsd (XmmRegister dst, XmmRegister src)
 
void addsd (XmmRegister dst, const Address &src)
 
void subsd (XmmRegister dst, XmmRegister src)
 
void subsd (XmmRegister dst, const Address &src)
 
void mulsd (XmmRegister dst, XmmRegister src)
 
void mulsd (XmmRegister dst, const Address &src)
 
void divsd (XmmRegister dst, XmmRegister src)
 
void divsd (XmmRegister dst, const Address &src)
 
void addpl (XmmRegister dst, XmmRegister src)
 
void subpl (XmmRegister dst, XmmRegister src)
 
void addps (XmmRegister dst, XmmRegister src)
 
void subps (XmmRegister dst, XmmRegister src)
 
void divps (XmmRegister dst, XmmRegister src)
 
void mulps (XmmRegister dst, XmmRegister src)
 
void minps (XmmRegister dst, XmmRegister src)
 
void maxps (XmmRegister dst, XmmRegister src)
 
void andps (XmmRegister dst, XmmRegister src)
 
void andps (XmmRegister dst, const Address &src)
 
void orps (XmmRegister dst, XmmRegister src)
 
void notps (XmmRegister dst)
 
void negateps (XmmRegister dst)
 
void absps (XmmRegister dst)
 
void zerowps (XmmRegister dst)
 
void cmppseq (XmmRegister dst, XmmRegister src)
 
void cmppsneq (XmmRegister dst, XmmRegister src)
 
void cmppslt (XmmRegister dst, XmmRegister src)
 
void cmppsle (XmmRegister dst, XmmRegister src)
 
void cmppsnlt (XmmRegister dst, XmmRegister src)
 
void cmppsnle (XmmRegister dst, XmmRegister src)
 
void sqrtps (XmmRegister dst)
 
void rsqrtps (XmmRegister dst)
 
void reciprocalps (XmmRegister dst)
 
void movhlps (XmmRegister dst, XmmRegister src)
 
void movlhps (XmmRegister dst, XmmRegister src)
 
void unpcklps (XmmRegister dst, XmmRegister src)
 
void unpckhps (XmmRegister dst, XmmRegister src)
 
void unpcklpd (XmmRegister dst, XmmRegister src)
 
void unpckhpd (XmmRegister dst, XmmRegister src)
 
void set1ps (XmmRegister dst, Register tmp, const Immediate &imm)
 
void shufps (XmmRegister dst, XmmRegister src, const Immediate &mask)
 
void addpd (XmmRegister dst, XmmRegister src)
 
void negatepd (XmmRegister dst)
 
void subpd (XmmRegister dst, XmmRegister src)
 
void mulpd (XmmRegister dst, XmmRegister src)
 
void divpd (XmmRegister dst, XmmRegister src)
 
void abspd (XmmRegister dst)
 
void minpd (XmmRegister dst, XmmRegister src)
 
void maxpd (XmmRegister dst, XmmRegister src)
 
void sqrtpd (XmmRegister dst)
 
void cvtps2pd (XmmRegister dst, XmmRegister src)
 
void cvtpd2ps (XmmRegister dst, XmmRegister src)
 
void shufpd (XmmRegister dst, XmmRegister src, const Immediate &mask)
 
void cvtsi2ss (XmmRegister dst, Register src)
 
void cvtsi2sd (XmmRegister dst, Register src)
 
void cvtss2si (Register dst, XmmRegister src)
 
void cvtss2sd (XmmRegister dst, XmmRegister src)
 
void cvtsd2si (Register dst, XmmRegister src)
 
void cvtsd2ss (XmmRegister dst, XmmRegister src)
 
void cvttss2si (Register dst, XmmRegister src)
 
void cvttsd2si (Register dst, XmmRegister src)
 
void cvtdq2pd (XmmRegister dst, XmmRegister src)
 
void comiss (XmmRegister a, XmmRegister b)
 
void comisd (XmmRegister a, XmmRegister b)
 
void movmskpd (Register dst, XmmRegister src)
 
void movmskps (Register dst, XmmRegister src)
 
void pmovmskb (Register dst, XmmRegister src)
 
void sqrtsd (XmmRegister dst, XmmRegister src)
 
void sqrtss (XmmRegister dst, XmmRegister src)
 
void xorpd (XmmRegister dst, const Address &src)
 
void xorpd (XmmRegister dst, XmmRegister src)
 
void xorps (XmmRegister dst, const Address &src)
 
void xorps (XmmRegister dst, XmmRegister src)
 
void andpd (XmmRegister dst, const Address &src)
 
void andpd (XmmRegister dst, XmmRegister src)
 
void orpd (XmmRegister dst, XmmRegister src)
 
void pextrd (Register dst, XmmRegister src, const Immediate &imm)
 
void pmovsxdq (XmmRegister dst, XmmRegister src)
 
void pcmpeqq (XmmRegister dst, XmmRegister src)
 
void pxor (XmmRegister dst, XmmRegister src)
 
void roundsd (XmmRegister dst, XmmRegister src, RoundingMode mode)
 
void flds (const Address &src)
 
void fstps (const Address &dst)
 
void fldl (const Address &src)
 
void fstpl (const Address &dst)
 
void fnstcw (const Address &dst)
 
void fldcw (const Address &src)
 
void fistpl (const Address &dst)
 
void fistps (const Address &dst)
 
void fildl (const Address &src)
 
void filds (const Address &src)
 
void fincstp ()
 
void ffree (intptr_t value)
 
void fsin ()
 
void fcos ()
 
void fsincos ()
 
void fptan ()
 
void xchgl (Register dst, Register src)
 
void cmpw (const Address &address, const Immediate &imm)
 
void cmpb (const Address &address, const Immediate &imm)
 
void testl (Register reg1, Register reg2)
 
void testl (Register reg, const Immediate &imm)
 
void testl (const Address &address, const Immediate &imm)
 
void testl (const Address &address, Register reg)
 
void testb (const Address &address, const Immediate &imm)
 
void testb (const Address &address, ByteRegister reg)
 
 ALU_OPS (DECLARE_ALU)
 
void cdq ()
 
void idivl (Register reg)
 
void divl (Register reg)
 
void imull (Register dst, Register src)
 
void imull (Register reg, const Immediate &imm)
 
void imull (Register reg, const Address &address)
 
void imull (Register reg)
 
void imull (const Address &address)
 
void mull (Register reg)
 
void mull (const Address &address)
 
void incl (Register reg)
 
void incl (const Address &address)
 
void decl (Register reg)
 
void decl (const Address &address)
 
void shll (Register reg, const Immediate &imm)
 
void shll (Register operand, Register shifter)
 
void shll (const Address &operand, Register shifter)
 
void shrl (Register reg, const Immediate &imm)
 
void shrl (Register operand, Register shifter)
 
void sarl (Register reg, const Immediate &imm)
 
void sarl (Register operand, Register shifter)
 
void sarl (const Address &address, Register shifter)
 
void shldl (Register dst, Register src, Register shifter)
 
void shldl (Register dst, Register src, const Immediate &imm)
 
void shldl (const Address &operand, Register src, Register shifter)
 
void shrdl (Register dst, Register src, Register shifter)
 
void shrdl (Register dst, Register src, const Immediate &imm)
 
void shrdl (const Address &dst, Register src, Register shifter)
 
void negl (Register reg)
 
void notl (Register reg)
 
void bsfl (Register dst, Register src)
 
void bsrl (Register dst, Register src)
 
void popcntl (Register dst, Register src)
 
void lzcntl (Register dst, Register src)
 
void bt (Register base, Register offset)
 
void bt (Register base, int bit)
 
void enter (const Immediate &imm)
 
void leave ()
 
void ret ()
 
void ret (const Immediate &imm)
 
void nop (int size=1)
 
void int3 ()
 
void hlt ()
 
void j (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void j (Condition condition, const ExternalLabel *label)
 
void jmp (Register reg)
 
void jmp (const Address &address)
 
void jmp (Label *label, JumpDistance distance=kFarJump)
 
void jmp (const ExternalLabel *label)
 
void lock ()
 
void cmpxchgl (const Address &address, Register reg)
 
void cld ()
 
void std ()
 
void cpuid ()
 
void Ret ()
 
void SetReturnAddress (Register value)
 
void PushValueAtOffset (Register base, int32_t offset)
 
void CompareRegisters (Register a, Register b)
 
void CompareObjectRegisters (Register a, Register b)
 
void BranchIf (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfZero (Register src, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfBit (Register rn, intptr_t bit_number, Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void Load (Register dst, const Address &address, OperandSize sz=kFourBytes) override
 
void LoadIndexedPayload (Register dst, Register base, int32_t payload_offset, Register index, ScaleFactor scale, OperandSize sz=kFourBytes) override
 
void Store (Register src, const Address &address, OperandSize sz=kFourBytes) override
 
void Store (const Object &value, const Address &address)
 
void StoreZero (const Address &address, Register temp=kNoRegister)
 
void LoadFromStack (Register dst, intptr_t depth)
 
void StoreToStack (Register src, intptr_t depth)
 
void CompareToStack (Register src, intptr_t depth)
 
void LoadMemoryValue (Register dst, Register base, int32_t offset)
 
void StoreMemoryValue (Register src, Register base, int32_t offset)
 
void LoadUnboxedDouble (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedDouble (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedDouble (FpuRegister dst, FpuRegister src)
 
void LoadUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void MoveUnboxedSimd128 (FpuRegister dst, FpuRegister src)
 
void LoadAcquire (Register dst, const Address &address, OperandSize size=kFourBytes) override
 
void StoreRelease (Register src, const Address &address, OperandSize size=kFourBytes) override
 
void CompareWithMemoryValue (Register value, Address address, OperandSize size=kFourBytes) override
 
void ExtendValue (Register to, Register from, OperandSize sz) override
 
void PushRegister (Register r)
 
void PopRegister (Register r)
 
void PushRegisterPair (Register r0, Register r1)
 
void PopRegisterPair (Register r0, Register r1)
 
void PushRegistersInOrder (std::initializer_list< Register > regs)
 
void AddImmediate (Register reg, const Immediate &imm)
 
void AddImmediate (Register reg, int32_t value)
 
void AddImmediate (Register dest, Register src, int32_t value)
 
void AddRegisters (Register dest, Register src)
 
void AddScaled (Register dest, Register base, Register index, ScaleFactor scale, int32_t disp) override
 
void SubImmediate (Register reg, const Immediate &imm)
 
void SubRegisters (Register dest, Register src)
 
void MulImmediate (Register reg, int32_t imm, OperandSize width=kFourBytes) override
 
void AndImmediate (Register dst, int32_t value) override
 
void AndImmediate (Register dst, Register src, int32_t value)
 
void AndRegisters (Register dst, Register src1, Register src2=kNoRegister) override
 
void OrImmediate (Register dst, int32_t value)
 
void LslImmediate (Register dst, int32_t shift)
 
void LslRegister (Register dst, Register shift) override
 
void LsrImmediate (Register dst, int32_t shift) override
 
void CompareImmediate (Register reg, int32_t immediate, OperandSize width=kFourBytes) override
 
void LoadImmediate (Register reg, int32_t immediate) override
 
void LoadImmediate (Register reg, Immediate immediate)
 
void LoadSImmediate (XmmRegister dst, float value)
 
void LoadDImmediate (XmmRegister dst, double value)
 
void LoadQImmediate (XmmRegister dst, simd128_value_t value)
 
void Drop (intptr_t stack_elements)
 
void LoadIsolate (Register dst)
 
void LoadIsolateGroup (Register dst)
 
void LoadUniqueObject (Register dst, const Object &object)
 
void LoadObject (Register dst, const Object &object, bool movable_referent=false)
 
void LoadObjectSafely (Register dst, const Object &object)
 
void PushObject (const Object &object)
 
void CompareObject (Register reg, const Object &object)
 
void StoreObjectIntoObjectNoBarrier (Register object, const Address &dest, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kFourBytes) override
 
void StoreBarrier (Register object, Register value, CanBeSmi can_be_smi, Register scratch) override
 
void ArrayStoreBarrier (Register object, Register slot, Register value, CanBeSmi can_be_smi, Register scratch) override
 
void VerifyStoreNeedsNoWriteBarrier (Register object, Register value) override
 
void StoreInternalPointer (Register object, const Address &dest, Register value)
 
void StoreIntoSmiField (const Address &dest, Register value)
 
void ZeroInitSmiField (const Address &dest)
 
void IncrementSmiField (const Address &dest, int32_t increment)
 
void DoubleNegate (XmmRegister d)
 
void FloatNegate (XmmRegister f)
 
void DoubleAbs (XmmRegister reg)
 
void LockCmpxchgl (const Address &address, Register reg)
 
void EnterFrame (intptr_t frame_space)
 
void LeaveFrame ()
 
void ReserveAlignedFrameSpace (intptr_t frame_space)
 
void MonomorphicCheckedEntryJIT ()
 
void MonomorphicCheckedEntryAOT ()
 
void BranchOnMonomorphicCheckedEntryJIT (Label *label)
 
void CombineHashes (Register dst, Register other) override
 
void FinalizeHashForSize (intptr_t bit_size, Register dst, Register scratch=kNoRegister) override
 
void EmitEntryFrameVerification ()
 
void TransitionGeneratedToNative (Register destination_address, Register new_exit_frame, Register new_exit_through_ffi, bool enter_safepoint)
 
void TransitionNativeToGenerated (Register scratch, bool exit_safepoint, bool ignore_unwind_in_progress=false, bool set_tag=true)
 
void EnterFullSafepoint (Register scratch)
 
void ExitFullSafepoint (Register scratch, bool ignore_unwind_in_progress)
 
void CallRuntime (const RuntimeEntry &entry, intptr_t argument_count)
 
void Call (const Code &code, bool movable_target=false, CodeEntryKind entry_kind=CodeEntryKind::kNormal)
 
void CallVmStub (const Code &code)
 
void Call (Address target)
 
void CallCFunction (Address target)
 
void CallCFunction (Register target)
 
void Jmp (const Code &code)
 
void J (Condition condition, const Code &code)
 
void RangeCheck (Register value, Register temp, intptr_t low, intptr_t high, RangeCheckCondition condition, Label *target) override
 
void LoadClassId (Register result, Register object)
 
void LoadClassById (Register result, Register class_id)
 
void CompareClassId (Register object, intptr_t class_id, Register scratch)
 
void LoadClassIdMayBeSmi (Register result, Register object)
 
void LoadTaggedClassIdMayBeSmi (Register result, Register object)
 
void EnsureHasClassIdInDEBUG (intptr_t cid, Register src, Register scratch, bool can_be_null=false) override
 
void SmiUntagOrCheckClass (Register object, intptr_t class_id, Register scratch, Label *is_smi)
 
void LoadStaticFieldAddress (Register address, Register field, Register scratch, bool is_shared)
 
void LoadFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi) override
 
void LoadFieldAddressForOffset (Register address, Register instance, int32_t offset) override
 
void SmiTag (Register reg) override
 
void SmiUntag (Register reg)
 
void LoadInt32FromBoxOrSmi (Register result, Register value) override
 
void BranchIfNotSmi (Register reg, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfSmi (Register reg, Label *label, JumpDistance distance=kFarJump) override
 
void ArithmeticShiftRightImmediate (Register reg, intptr_t shift) override
 
void CompareWords (Register reg1, Register reg2, intptr_t offset, Register count, Register temp, Label *equals) override
 
void Align (intptr_t alignment, intptr_t offset)
 
void Bind (Label *label) override
 
void Jump (Label *label, JumpDistance distance=kFarJump)
 
void Jump (Register target)
 
void MoveMemoryToMemory (Address to, Address from, Register tmp)
 
void EnterDartFrame (intptr_t frame_size)
 
void LeaveDartFrame ()
 
void EnterOsrFrame (intptr_t extra_size)
 
void EnterStubFrame ()
 
void LeaveStubFrame ()
 
void EnterCFrame (intptr_t frame_space)
 
void LeaveCFrame ()
 
void MaybeTraceAllocation (intptr_t cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void TryAllocateObject (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance_reg, Register temp_reg) override
 
void TryAllocateArray (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance, Register end_address, Register temp)
 
void CheckAllocationCanary (Register top)
 
void WriteAllocationCanary (Register top)
 
void CopyMemoryWords (Register src, Register dst, Register size, Register temp=kNoRegister)
 
void Breakpoint () override
 
ObjectGetSelfHandle () const
 
void PushCodeObject ()
 
 Assembler (ObjectPoolBuilder *object_pool_builder, intptr_t far_branch_level=0)
 
 ~Assembler ()
 
void PushRegister (Register r)
 
void PopRegister (Register r)
 
void PushRegisterPair (Register r0, Register r1)
 
void PopRegisterPair (Register r0, Register r1)
 
void PushRegisters (const RegisterSet &registers)
 
void PopRegisters (const RegisterSet &registers)
 
void PushRegistersInOrder (std::initializer_list< Register > regs)
 
void PushValueAtOffset (Register base, int32_t offset)
 
void PushNativeCalleeSavedRegisters ()
 
void PopNativeCalleeSavedRegisters ()
 
void ExtendValue (Register rd, Register rn, OperandSize sz) override
 
void ExtendAndSmiTagValue (Register rd, Register rn, OperandSize sz=kWordBytes) override
 
void Drop (intptr_t stack_elements)
 
void Bind (Label *label) override
 
void Jump (Label *label, JumpDistance distance=kFarJump)
 
void Jump (Register target)
 
void Jump (const Address &address)
 
void LoadMemoryValue (Register dst, Register base, int32_t offset)
 
void StoreMemoryValue (Register src, Register base, int32_t offset)
 
void TsanLoadAcquire (Register addr)
 
void TsanStoreRelease (Register addr)
 
void LoadAcquire (Register dst, const Address &address, OperandSize size=kWordBytes) override
 
void StoreRelease (Register src, const Address &address, OperandSize size=kWordBytes) override
 
void CompareWithMemoryValue (Register value, Address address, OperandSize size=kWordBytes) override
 
void Breakpoint () override
 
void SetPrologueOffset ()
 
void ReserveAlignedFrameSpace (intptr_t frame_space)
 
void EmitEntryFrameVerification ()
 
void CompareRegisters (Register rn, Register rm)
 
void CompareObjectRegisters (Register rn, Register rm)
 
void TestRegisters (Register rn, Register rm)
 
void BranchIf (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfZero (Register rn, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfBit (Register rn, intptr_t bit_number, Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void SetIf (Condition condition, Register rd)
 
void SmiUntag (Register reg)
 
void SmiUntag (Register dst, Register src)
 
void SmiTag (Register reg) override
 
void SmiTag (Register dst, Register src)
 
void LoadInt32FromBoxOrSmi (Register result, Register value) override
 
void LoadInt64FromBoxOrSmi (Register result, Register value) override
 
void BranchIfNotSmi (Register reg, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfSmi (Register reg, Label *label, JumpDistance distance=kFarJump) override
 
void ArithmeticShiftRightImmediate (Register reg, intptr_t shift) override
 
void CompareWords (Register reg1, Register reg2, intptr_t offset, Register count, Register temp, Label *equals) override
 
void JumpAndLink (const Code &code, ObjectPoolBuilderEntry::Patchability patchable=ObjectPoolBuilderEntry::kNotPatchable, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void JumpAndLinkPatchable (const Code &code, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void JumpAndLinkWithEquivalence (const Code &code, const Object &equivalence, CodeEntryKind entry_kind=CodeEntryKind::kNormal)
 
void Call (Address target)
 
void Call (Register target)
 
void Call (const Code &code)
 
void CallCFunction (Address target)
 
void CallCFunction (Register target)
 
void AddImmediate (Register dest, intx_t imm)
 
void MulImmediate (Register dest, intx_t imm, OperandSize width=kWordBytes) override
 
void AddRegisters (Register dest, Register src)
 
void AddScaled (Register dest, Register base, Register index, ScaleFactor scale, int32_t disp) override
 
void AddShifted (Register dest, Register base, Register index, intx_t shift)
 
void SubRegisters (Register dest, Register src)
 
void AddImmediate (Register dest, Register rn, intx_t imm, OperandSize sz=kWordBytes)
 
void MulImmediate (Register dest, Register rn, intx_t imm, OperandSize width=kWordBytes)
 
void AndImmediate (Register rd, Register rn, intx_t imm, OperandSize sz=kWordBytes)
 
void AndImmediate (Register rd, intx_t imm) override
 
void AndRegisters (Register dst, Register src1, Register src2=kNoRegister) override
 
void OrImmediate (Register rd, Register rn, intx_t imm, OperandSize sz=kWordBytes)
 
void OrImmediate (Register rd, intx_t imm)
 
void XorImmediate (Register rd, Register rn, intx_t imm, OperandSize sz=kWordBytes)
 
void LslImmediate (Register rd, int32_t shift)
 
void LslRegister (Register dst, Register shift) override
 
void LsrImmediate (Register rd, int32_t shift) override
 
void TestImmediate (Register rn, intx_t imm, OperandSize sz=kWordBytes)
 
void CompareImmediate (Register rn, intx_t imm, OperandSize sz=kWordBytes) override
 
Address PrepareLargeOffset (Register base, int32_t offset)
 
Address PrepareAtomicOffset (Register base, int32_t offset)
 
void Load (Register dest, const Address &address, OperandSize sz=kWordBytes) override
 
void LoadIndexedPayload (Register dest, Register base, int32_t payload_offset, Register index, ScaleFactor scale, OperandSize sz=kWordBytes) override
 
void LoadSFromOffset (FRegister dest, Register base, int32_t offset)
 
void LoadDFromOffset (FRegister dest, Register base, int32_t offset)
 
void LoadSFieldFromOffset (FRegister dest, Register base, int32_t offset)
 
void LoadDFieldFromOffset (FRegister dest, Register base, int32_t offset)
 
void LoadFromStack (Register dst, intptr_t depth)
 
void StoreToStack (Register src, intptr_t depth)
 
void CompareToStack (Register src, intptr_t depth)
 
void Store (Register src, const Address &address, OperandSize sz=kWordBytes) override
 
void StoreZero (const Address &address, Register temp=kNoRegister)
 
void StoreSToOffset (FRegister src, Register base, int32_t offset)
 
void StoreSFieldToOffset (FRegister src, Register base, int32_t offset)
 
void StoreDToOffset (FRegister src, Register base, int32_t offset)
 
void StoreDFieldToOffset (FRegister src, Register base, int32_t offset)
 
void LoadUnboxedDouble (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedDouble (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedDouble (FpuRegister dst, FpuRegister src)
 
void LoadUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedSimd128 (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedSimd128 (FpuRegister dst, FpuRegister src)
 
void StoreBarrier (Register object, Register value, CanBeSmi can_value_be_smi, Register scratch) override
 
void ArrayStoreBarrier (Register object, Register slot, Register value, CanBeSmi can_value_be_smi, Register scratch) override
 
void VerifyStoreNeedsNoWriteBarrier (Register object, Register value) override
 
void StoreObjectIntoObjectNoBarrier (Register object, const Address &dest, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes) override
 
void StoreInternalPointer (Register object, const Address &dest, Register value)
 
void LoadPoolPointer (Register pp=PP)
 
bool constant_pool_allowed () const
 
void set_constant_pool_allowed (bool b)
 
bool CanLoadFromObjectPool (const Object &object) const
 
void LoadNativeEntry (Register dst, const ExternalLabel *label, ObjectPoolBuilderEntry::Patchability patchable)
 
void LoadIsolate (Register dst)
 
void LoadIsolateGroup (Register dst)
 
void LoadObject (Register dst, const Object &obj)
 
void LoadUniqueObject (Register dst, const Object &obj, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void LoadImmediate (Register reg, intx_t imm) override
 
void LoadSImmediate (FRegister reg, float imms)
 
void LoadDImmediate (FRegister reg, double immd)
 
void LoadQImmediate (FRegister reg, simd128_value_t immq)
 
void LoadWordFromPoolIndex (Register dst, intptr_t index, Register pp=PP)
 
void StoreWordToPoolIndex (Register src, intptr_t index, Register pp=PP)
 
void PushObject (const Object &object)
 
void PushImmediate (int64_t immediate)
 
void CompareObject (Register reg, const Object &object)
 
void ExtractClassIdFromTags (Register result, Register tags)
 
void ExtractInstanceSizeFromTags (Register result, Register tags)
 
void RangeCheck (Register value, Register temp, intptr_t low, intptr_t high, RangeCheckCondition condition, Label *target) override
 
void LoadClassId (Register result, Register object)
 
void LoadClassById (Register result, Register class_id)
 
void CompareClassId (Register object, intptr_t class_id, Register scratch=kNoRegister)
 
void LoadClassIdMayBeSmi (Register result, Register object)
 
void LoadTaggedClassIdMayBeSmi (Register result, Register object)
 
void EnsureHasClassIdInDEBUG (intptr_t cid, Register src, Register scratch, bool can_be_null=false) override
 
void EnterFrame (intptr_t frame_size)
 
void LeaveFrame ()
 
void Ret ()
 
void SetReturnAddress (Register value)
 
void TransitionGeneratedToNative (Register destination_address, Register new_exit_frame, Register new_exit_through_ffi, bool enter_safepoint)
 
void TransitionNativeToGenerated (Register scratch, bool exit_safepoint, bool ignore_unwind_in_progress=false, bool set_tag=true)
 
void EnterFullSafepoint (Register scratch)
 
void ExitFullSafepoint (Register scratch, bool ignore_unwind_in_progress)
 
void CheckFpSpDist (intptr_t fp_sp_dist)
 
void CheckCodePointer ()
 
void RestoreCodePointer ()
 
void RestorePoolPointer ()
 
void RestorePinnedRegisters ()
 
void SetupGlobalPoolAndDispatchTable ()
 
void EnterDartFrame (intptr_t frame_size, Register new_pp=kNoRegister)
 
void EnterOsrFrame (intptr_t extra_size, Register new_pp=kNoRegister)
 
void LeaveDartFrame ()
 
void LeaveDartFrame (intptr_t fp_sp_dist)
 
void CallRuntime (const RuntimeEntry &entry, intptr_t argument_count)
 
void EnterStubFrame ()
 
void LeaveStubFrame ()
 
void EnterCFrame (intptr_t frame_space)
 
void LeaveCFrame ()
 
void MonomorphicCheckedEntryJIT ()
 
void MonomorphicCheckedEntryAOT ()
 
void BranchOnMonomorphicCheckedEntryJIT (Label *label)
 
void CombineHashes (Register dst, Register other) override
 
void FinalizeHashForSize (intptr_t bit_size, Register dst, Register scratch=TMP) override
 
void MaybeTraceAllocation (intptr_t cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void MaybeTraceAllocation (Register cid, Label *trace, Register temp_reg, JumpDistance distance=JumpDistance::kFarJump)
 
void TryAllocateObject (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance_reg, Register temp_reg) override
 
void TryAllocateArray (intptr_t cid, intptr_t instance_size, Label *failure, Register instance, Register end_address, Register temp1, Register temp2)
 
void CheckAllocationCanary (Register top, Register tmp=TMP)
 
void WriteAllocationCanary (Register top)
 
void CopyMemoryWords (Register src, Register dst, Register size, Register temp)
 
void GenerateUnRelocatedPcRelativeCall (intptr_t offset_into_target=0)
 
void GenerateUnRelocatedPcRelativeTailCall (intptr_t offset_into_target=0)
 
Address ElementAddressForIntIndex (bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index) const
 
void ComputeElementAddressForIntIndex (Register address, bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index)
 
Address ElementAddressForRegIndex (bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index, Register temp)
 
void ComputeElementAddressForRegIndex (Register address, bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index)
 
void LoadStaticFieldAddress (Register address, Register field, Register scratch, bool is_shared)
 
void LoadFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi) override
 
void LoadFieldAddressForOffset (Register address, Register instance, int32_t offset) override
 
void AddImmediateBranchOverflow (Register rd, Register rs1, intx_t imm, Label *overflow)
 
void SubtractImmediateBranchOverflow (Register rd, Register rs1, intx_t imm, Label *overflow)
 
void MultiplyImmediateBranchOverflow (Register rd, Register rs1, intx_t imm, Label *overflow)
 
void AddBranchOverflow (Register rd, Register rs1, Register rs2, Label *overflow)
 
void SubtractBranchOverflow (Register rd, Register rs1, Register rs2, Label *overflow)
 
void MultiplyBranchOverflow (Register rd, Register rs1, Register rs2, Label *overflow)
 
void CountLeadingZeroes (Register rd, Register rs)
 
 Assembler (ObjectPoolBuilder *object_pool_builder, intptr_t far_branch_level=0)
 
 ~Assembler ()
 
void call (Register reg)
 
void call (const Address &address)
 
void call (Label *label)
 
void call (const ExternalLabel *label)
 
void pushq (Register reg)
 
void pushq (const Address &address)
 
void pushq (const Immediate &imm)
 
void PushImmediate (const Immediate &imm)
 
void PushImmediate (int64_t value)
 
void popq (Register reg)
 
void popq (const Address &address)
 
void setcc (Condition condition, ByteRegister dst)
 
void EnterFullSafepoint ()
 
void ExitFullSafepoint (bool ignore_unwind_in_progress)
 
void TransitionGeneratedToNative (Register destination_address, Register new_exit_frame, Register new_exit_through_ffi, bool enter_safepoint)
 
void TransitionNativeToGenerated (bool leave_safepoint, bool ignore_unwind_in_progress=false, bool set_tag=true)
 
 XA (L, movups, 0x10, 0x0F)
 
 AX (L, movups, 0x11, 0x0F)
 
void movl (Register dst, const Immediate &imm)
 
void movl (const Address &dst, const Immediate &imm)
 
void movb (const Address &dst, const Immediate &imm)
 
void movw (Register dst, const Address &src)
 
void movw (const Address &dst, const Immediate &imm)
 
void movq (Register dst, const Immediate &imm)
 
void movq (const Address &dst, const Immediate &imm)
 
void movq (Register dst, XmmRegister src)
 
void movl (Register dst, XmmRegister src)
 
void movss (XmmRegister dst, XmmRegister src)
 
void movsd (XmmRegister dst, XmmRegister src)
 
void movq (Register dst, Register src)
 
void movq (XmmRegister dst, Register src)
 
void movd (XmmRegister dst, Register src)
 
void cvtsi2sdq (XmmRegister dst, Register src)
 
void cvtsi2sdl (XmmRegister dst, Register src)
 
void cvttsd2siq (Register dst, XmmRegister src)
 
void cvttsd2sil (Register dst, XmmRegister src)
 
void movmskpd (Register dst, XmmRegister src)
 
void movmskps (Register dst, XmmRegister src)
 
void pmovmskb (Register dst, XmmRegister src)
 
void btl (Register dst, Register src)
 
void btq (Register dst, Register src)
 
void notps (XmmRegister dst, XmmRegister src)
 
void negateps (XmmRegister dst, XmmRegister src)
 
void absps (XmmRegister dst, XmmRegister src)
 
void zerowps (XmmRegister dst, XmmRegister src)
 
void set1ps (XmmRegister dst, Register tmp, const Immediate &imm)
 
void shufps (XmmRegister dst, XmmRegister src, const Immediate &mask)
 
void negatepd (XmmRegister dst, XmmRegister src)
 
void abspd (XmmRegister dst, XmmRegister src)
 
void shufpd (XmmRegister dst, XmmRegister src, const Immediate &mask)
 
void roundsd (XmmRegister dst, XmmRegister src, RoundingMode mode)
 
void CompareImmediate (Register reg, const Immediate &imm, OperandSize width=kEightBytes)
 
void CompareImmediate (const Address &address, const Immediate &imm, OperandSize width=kEightBytes)
 
void CompareImmediate (Register reg, int64_t immediate, OperandSize width=kEightBytes) override
 
void testl (Register reg, const Immediate &imm)
 
void testb (const Address &address, const Immediate &imm)
 
void testb (const Address &address, Register reg)
 
void testq (Register reg, const Immediate &imm)
 
void TestImmediate (Register dst, const Immediate &imm, OperandSize width=kEightBytes)
 
void AndImmediate (Register dst, const Immediate &imm)
 
void AndImmediate (Register dst, int64_t value) override
 
void AndImmediate (Register dst, Register src, int64_t value)
 
void AndRegisters (Register dst, Register src1, Register src2=kNoRegister) override
 
void OrImmediate (Register dst, const Immediate &imm)
 
void OrImmediate (Register dst, int64_t value)
 
void XorImmediate (Register dst, const Immediate &imm)
 
void LslImmediate (Register dst, int32_t shift)
 
void LslRegister (Register dst, Register shift) override
 
void LsrImmediate (Register dst, int32_t shift) override
 
void shldq (Register dst, Register src, Register shifter)
 
void shrdq (Register dst, Register src, Register shifter)
 
void cqo ()
 
void imull (Register reg, const Immediate &imm)
 
void imulq (Register dst, const Immediate &imm)
 
void MulImmediate (Register reg, const Immediate &imm, OperandSize width=kEightBytes)
 
void MulImmediate (Register reg, int64_t imm, OperandSize width=kEightBytes) override
 
void shll (Register reg, const Immediate &imm)
 
void shll (Register operand, Register shifter)
 
void shrl (Register reg, const Immediate &imm)
 
void shrl (Register operand, Register shifter)
 
void sarl (Register reg, const Immediate &imm)
 
void sarl (Register operand, Register shifter)
 
void shldl (Register dst, Register src, const Immediate &imm)
 
void shlq (Register reg, const Immediate &imm)
 
void shlq (Register operand, Register shifter)
 
void shrq (Register reg, const Immediate &imm)
 
void shrq (Register operand, Register shifter)
 
void sarq (Register reg, const Immediate &imm)
 
void sarq (Register operand, Register shifter)
 
void shldq (Register dst, Register src, const Immediate &imm)
 
void btq (Register base, int bit)
 
void enter (const Immediate &imm)
 
void fldl (const Address &src)
 
void fstpl (const Address &dst)
 
void ffree (intptr_t value)
 
void nop (int size=1)
 
void j (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void jmp (Register reg)
 
void jmp (const Address &address)
 
void jmp (Label *label, JumpDistance distance=kFarJump)
 
void jmp (const ExternalLabel *label)
 
void jmp (const Code &code)
 
void MoveMemoryToMemory (const Address &dst, const Address &src)
 
void Exchange (Register reg, const Address &mem)
 
void Exchange (const Address &mem1, const Address &mem2)
 
void Ret ()
 
void SetReturnAddress (Register value)
 
void CompareRegisters (Register a, Register b)
 
void CompareObjectRegisters (Register a, Register b)
 
void BranchIf (Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfZero (Register src, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfBit (Register rn, intptr_t bit_number, Condition condition, Label *label, JumpDistance distance=kFarJump)
 
void ExtendValue (Register dst, Register src, OperandSize sz) override
 
void PushRegister (Register r)
 
void PopRegister (Register r)
 
void PushRegisterPair (Register r0, Register r1)
 
void PopRegisterPair (Register r0, Register r1)
 
void PushValueAtOffset (Register base, int32_t offset)
 
void AddImmediate (Register reg, const Immediate &imm, OperandSize width=kEightBytes)
 
void AddImmediate (Register reg, int64_t value, OperandSize width=kEightBytes)
 
void AddRegisters (Register dest, Register src)
 
void AddScaled (Register dest, Register base, Register index, ScaleFactor scale, int32_t disp) override
 
void AddImmediate (Register dest, Register src, int64_t value)
 
void AddImmediate (const Address &address, const Immediate &imm)
 
void SubImmediate (Register reg, const Immediate &imm, OperandSize width=kEightBytes)
 
void SubImmediate (const Address &address, const Immediate &imm)
 
void SubRegisters (Register dest, Register src)
 
void Drop (intptr_t stack_elements, Register tmp=TMP)
 
bool constant_pool_allowed () const
 
void set_constant_pool_allowed (bool b)
 
void LoadImmediate (Register reg, const Immediate &imm)
 
void LoadImmediate (Register reg, int64_t immediate) override
 
void LoadSImmediate (FpuRegister dst, float immediate)
 
void LoadDImmediate (FpuRegister dst, double immediate)
 
void LoadQImmediate (FpuRegister dst, simd128_value_t immediate)
 
void LoadIsolate (Register dst)
 
void LoadIsolateGroup (Register dst)
 
void LoadDispatchTable (Register dst)
 
void LoadObject (Register dst, const Object &obj)
 
void LoadUniqueObject (Register dst, const Object &obj, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void LoadNativeEntry (Register dst, const ExternalLabel *label, ObjectPoolBuilderEntry::Patchability patchable)
 
void JmpPatchable (const Code &code, Register pp)
 
void Jmp (const Code &code, Register pp=PP)
 
void J (Condition condition, const Code &code, Register pp)
 
void CallPatchable (const Code &code, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void Call (const Code &stub_entry, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)
 
void CallWithEquivalence (const Code &code, const Object &equivalence, CodeEntryKind entry_kind=CodeEntryKind::kNormal)
 
void Call (Address target)
 
void StoreObject (const Address &dst, const Object &obj, OperandSize size=kWordBytes)
 
void PushObject (const Object &object)
 
void CompareObject (Register reg, const Object &object)
 
void StoreBarrier (Register object, Register value, CanBeSmi can_be_smi, Register scratch) override
 
void ArrayStoreBarrier (Register object, Register slot, Register value, CanBeSmi can_be_smi, Register scratch) override
 
void VerifyStoreNeedsNoWriteBarrier (Register object, Register value) override
 
void StoreObjectIntoObjectNoBarrier (Register object, const Address &dest, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes) override
 
void StoreInternalPointer (Register object, const Address &dest, Register value)
 
void StoreIntoSmiField (const Address &dest, Register value)
 
void ZeroInitSmiField (const Address &dest)
 
void ZeroInitCompressedSmiField (const Address &dest)
 
void IncrementCompressedSmiField (const Address &dest, int64_t increment)
 
void DoubleNegate (XmmRegister dst, XmmRegister src)
 
void DoubleAbs (XmmRegister dst, XmmRegister src)
 
void LockCmpxchgq (const Address &address, Register reg)
 
void LockCmpxchgl (const Address &address, Register reg)
 
void PushRegisters (const RegisterSet &registers)
 
void PopRegisters (const RegisterSet &registers)
 
void PushRegistersInOrder (std::initializer_list< Register > regs)
 
void CheckCodePointer ()
 
void EnterFrame (intptr_t frame_space)
 
void LeaveFrame ()
 
void ReserveAlignedFrameSpace (intptr_t frame_space)
 
void EmitEntryFrameVerification ()
 
void CallRuntime (const RuntimeEntry &entry, intptr_t argument_count)
 
void CallCFunction (Register reg, bool restore_rsp=false)
 
void CallCFunction (Address address, bool restore_rsp=false)
 
void ExtractClassIdFromTags (Register result, Register tags)
 
void ExtractInstanceSizeFromTags (Register result, Register tags)
 
void RangeCheck (Register value, Register temp, intptr_t low, intptr_t high, RangeCheckCondition condition, Label *target) override
 
void LoadClassId (Register result, Register object)
 
void LoadClassById (Register result, Register class_id)
 
void CompareClassId (Register object, intptr_t class_id, Register scratch=kNoRegister)
 
void LoadClassIdMayBeSmi (Register result, Register object)
 
void LoadTaggedClassIdMayBeSmi (Register result, Register object)
 
void EnsureHasClassIdInDEBUG (intptr_t cid, Register src, Register scratch, bool can_be_null=false) override
 
void SmiUntagOrCheckClass (Register object, intptr_t class_id, Label *smi)
 
void SmiTag (Register reg) override
 
void SmiUntag (Register reg)
 
void SmiUntag (Register dst, Register src)
 
void SmiUntagAndSignExtend (Register reg)
 
void SmiUntagAndSignExtend (Register dst, Register src)
 
void LoadInt32FromBoxOrSmi (Register result, Register value) override
 
void LoadInt64FromBoxOrSmi (Register result, Register value) override
 
void BranchIfNotSmi (Register reg, Label *label, JumpDistance distance=kFarJump)
 
void BranchIfSmi (Register reg, Label *label, JumpDistance distance=kFarJump) override
 
void ArithmeticShiftRightImmediate (Register reg, intptr_t shift) override
 
void CompareWords (Register reg1, Register reg2, intptr_t offset, Register count, Register temp, Label *equals) override
 
void Align (int alignment, intptr_t offset)
 
void Bind (Label *label) override
 
void Jump (Label *label, JumpDistance distance=kFarJump)
 
void Jump (Register target)
 
void Jump (const Address &address)
 
void Load (Register dst, const Address &address, OperandSize sz=kEightBytes) override
 
void LoadIndexedPayload (Register dst, Register base, int32_t payload_offset, Register index, ScaleFactor scale, OperandSize sz=kEightBytes) override
 
void Store (Register src, const Address &address, OperandSize sz=kEightBytes) override
 
void StoreZero (const Address &address, Register temp=kNoRegister)
 
void LoadFromStack (Register dst, intptr_t depth)
 
void StoreToStack (Register src, intptr_t depth)
 
void CompareToStack (Register src, intptr_t depth)
 
void LoadMemoryValue (Register dst, Register base, int32_t offset)
 
void LoadCompressedMemoryValue (Register dst, Register base, int32_t offset)
 
void StoreMemoryValue (Register src, Register base, int32_t offset)
 
void LoadUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedSimd128 (FpuRegister dst, Register base, int32_t offset)
 
void MoveUnboxedSimd128 (FpuRegister dst, FpuRegister src)
 
void LoadUnboxedSingle (FpuRegister dst, Register base, int32_t offset)
 
void LoadUnboxedDouble (FpuRegister dst, Register base, int32_t offset)
 
void StoreUnboxedDouble (FpuRegister src, Register base, int32_t offset)
 
void MoveUnboxedDouble (FpuRegister dst, FpuRegister src)
 
void TsanLoadAcquire (Address addr)
 
void TsanStoreRelease (Address addr)
 
void LoadAcquire (Register dst, const Address &address, OperandSize size=kEightBytes) override
 
void StoreRelease (Register src, const Address &address, OperandSize size=kWordBytes) override
 
void CompareWithMemoryValue (Register value, Address address, OperandSize size=kEightBytes) override
 
void RestoreCodePointer ()
 
void LoadPoolPointer (Register pp=PP)
 
void EnterDartFrame (intptr_t frame_size, Register new_pp=kNoRegister)
 
void LeaveDartFrame ()
 
void EnterOsrFrame (intptr_t extra_size)
 
void EnterStubFrame ()
 
void LeaveStubFrame ()
 
void EnterCFrame (intptr_t frame_space)
 
void LeaveCFrame ()
 
void MonomorphicCheckedEntryJIT ()
 
void MonomorphicCheckedEntryAOT ()
 
void BranchOnMonomorphicCheckedEntryJIT (Label *label)
 
void CombineHashes (Register dst, Register other) override
 
void FinalizeHashForSize (intptr_t bit_size, Register dst, Register scratch=TMP) override
 
void MaybeTraceAllocation (intptr_t cid, Label *trace, Register temp_reg=kNoRegister, JumpDistance distance=JumpDistance::kFarJump)
 
void MaybeTraceAllocation (Register cid, Label *trace, Register temp_reg=kNoRegister, JumpDistance distance=JumpDistance::kFarJump)
 
void TryAllocateObject (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance_reg, Register temp) override
 
void TryAllocateArray (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance, Register end_address, Register temp)
 
void CheckAllocationCanary (Register top)
 
void WriteAllocationCanary (Register top)
 
void CopyMemoryWords (Register src, Register dst, Register size, Register temp=kNoRegister)
 
void GenerateUnRelocatedPcRelativeCall (intptr_t offset_into_target=0)
 
void GenerateUnRelocatedPcRelativeTailCall (intptr_t offset_into_target=0)
 
void Breakpoint () override
 
void LoadStaticFieldAddress (Register address, Register field, Register scratch, bool is_shared)
 
void LoadFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi) override
 
void LoadFieldAddressForOffset (Register address, Register instance, int32_t offset) override
 
void LoadWordFromPoolIndex (Register dst, intptr_t index)
 
void StoreWordToPoolIndex (Register src, intptr_t index)
 
- Public Member Functions inherited from dart::compiler::AssemblerBase
 AssemblerBase (ObjectPoolBuilder *object_pool_builder)
 
virtual ~AssemblerBase ()
 
intptr_t CodeSize () const
 
uword CodeAddress (intptr_t offset)
 
bool HasObjectPoolBuilder () const
 
ObjectPoolBuilderobject_pool_builder ()
 
intptr_t prologue_offset () const
 
bool has_monomorphic_entry () const
 
void mark_should_be_aligned ()
 
bool should_be_aligned () const
 
void Comment (const char *format,...) PRINTF_ATTRIBUTE(2
 
virtual void Breakpoint ()=0
 
virtual void SmiTag (Register r)=0
 
virtual void Bind (Label *label)=0
 
void ExtendNonNegativeSmi (Register dst)
 
virtual void ExtendValue (Register dst, Register src, OperandSize sz)=0
 
virtual void ExtendAndSmiTagValue (Register dst, Register src, OperandSize sz)
 
virtual void MoveRegister (Register dst, Register src)
 
virtual void MoveAndSmiTagRegister (Register dst, Register src)
 
virtual void TryAllocateObject (intptr_t cid, intptr_t instance_size, Label *failure, JumpDistance distance, Register instance_reg, Register temp)=0
 
void TryAllocate (const Class &cls, Label *failure, JumpDistance distance, Register instance_reg, Register temp)
 
virtual void BranchIfSmi (Register reg, Label *label, JumpDistance distance=kFarJump)=0
 
virtual void ArithmeticShiftRightImmediate (Register reg, intptr_t shift)=0
 
virtual void CompareWords (Register reg1, Register reg2, intptr_t offset, Register count, Register temp, Label *equals)=0
 
void UnrolledMemCopy (Register dst_base, intptr_t dst_offset, Register src_base, intptr_t src_offset, intptr_t size, Register temp)
 
virtual void LoadFieldAddressForOffset (Register reg, Register base, int32_t offset)=0
 
virtual void LoadFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi)=0
 
virtual void LoadAcquire (Register dst, const Address &address, OperandSize size=kWordBytes)=0
 
virtual void StoreRelease (Register src, const Address &address, OperandSize size=kWordBytes)=0
 
virtual void Load (Register dst, const Address &address, OperandSize sz=kWordBytes)=0
 
virtual void Store (Register src, const Address &address, OperandSize sz=kWordBytes)=0
 
void StoreIntoObject (Register object, const Address &address, Register value, CanBeSmi can_be_smi=kValueCanBeSmi, MemoryOrder memory_order=kRelaxedNonAtomic, Register scratch=TMP, OperandSize size=kWordBytes)
 
void StoreIntoObjectNoBarrier (Register object, const Address &address, Register value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes)
 
virtual void StoreObjectIntoObjectNoBarrier (Register object, const Address &address, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes)=0
 
virtual void LoadIndexedPayload (Register dst, Register base, int32_t offset, Register index, ScaleFactor scale, OperandSize sz=kWordBytes)=0
 
void LoadAcquireFromOffset (Register dst, Register base, int32_t offset=0, OperandSize size=kWordBytes)
 
void StoreReleaseToOffset (Register src, Register base, int32_t offset=0, OperandSize size=kWordBytes)
 
virtual void LoadFromOffset (Register dst, Register base, int32_t offset, OperandSize sz=kWordBytes)
 
virtual void StoreToOffset (Register src, Register base, int32_t offset, OperandSize sz=kWordBytes)
 
virtual void StoreIntoObjectOffset (Register object, int32_t offset, Register value, CanBeSmi can_be_smi=kValueCanBeSmi, MemoryOrder memory_order=kRelaxedNonAtomic, Register scratch=TMP, OperandSize size=kWordBytes)
 
virtual void StoreIntoObjectOffsetNoBarrier (Register object, int32_t offset, Register value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes)
 
void StoreObjectIntoObjectOffsetNoBarrier (Register object, int32_t offset, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic, OperandSize size=kWordBytes)
 
void LoadField (Register dst, const FieldAddress &address, OperandSize sz=kWordBytes)
 
virtual void LoadFieldFromOffset (Register dst, Register base, int32_t offset, OperandSize sz=kWordBytes)
 
virtual void StoreFieldToOffset (Register src, Register base, int32_t offset, OperandSize sz=kWordBytes)
 
void LoadSmi (Register dst, const Address &address)
 
void LoadSmiField (Register dst, const FieldAddress &address)
 
void LoadSmiFromOffset (Register dst, Register base, int32_t offset)
 
void LoadSmiFieldFromOffset (Register dst, Register base, int32_t offset)
 
void LoadCompressedFieldAddressForRegOffset (Register address, Register instance, Register offset_in_words_as_smi)
 
void LoadAcquireCompressed (Register dst, const Address &address)
 
void LoadCompressed (Register dst, const Address &address)
 
void LoadIndexedCompressed (Register dst, Register base, int32_t offset, Register index)
 
void LoadCompressedSmi (Register dst, const Address &address)
 
void StoreReleaseCompressed (Register src, const Address &address)
 
void StoreReleaseCompressedToOffset (Register src, Register base, int32_t offset=0)
 
void StoreCompressedIntoObject (Register object, const Address &address, Register value, CanBeSmi can_be_smi=kValueCanBeSmi, MemoryOrder memory_order=kRelaxedNonAtomic, Register scratch=TMP)
 
void StoreCompressedIntoObjectNoBarrier (Register object, const Address &address, Register value, MemoryOrder memory_order=kRelaxedNonAtomic)
 
virtual void StoreCompressedObjectIntoObjectNoBarrier (Register object, const Address &address, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic)
 
void StoreCompressedIntoObjectOffset (Register object, int32_t offset, Register value, CanBeSmi can_be_smi=kValueCanBeSmi, MemoryOrder memory_order=kRelaxedNonAtomic, Register scratch=TMP)
 
void StoreCompressedIntoObjectOffsetNoBarrier (Register object, int32_t offset, Register value, MemoryOrder memory_order=kRelaxedNonAtomic)
 
void StoreCompressedObjectIntoObjectOffsetNoBarrier (Register object, int32_t offset, const Object &value, MemoryOrder memory_order=kRelaxedNonAtomic)
 
void StoreIntoArray (Register object, Register slot, Register value, CanBeSmi can_value_be_smi=kValueCanBeSmi, Register scratch=TMP, OperandSize size=kWordBytes)
 
void StoreCompressedIntoArray (Register object, Register slot, Register value, CanBeSmi can_value_be_smi=kValueCanBeSmi, Register scratch=TMP)
 
void LoadAcquireCompressedFromOffset (Register dst, Register base, int32_t offset)
 
void LoadCompressedField (Register dst, const FieldAddress &address)
 
void LoadCompressedFromOffset (Register dst, Register base, int32_t offset)
 
void LoadCompressedFieldFromOffset (Register dst, Register base, int32_t offset)
 
void LoadCompressedSmiField (Register dst, const FieldAddress &address)
 
void LoadCompressedSmiFromOffset (Register dst, Register base, int32_t offset)
 
void LoadCompressedSmiFieldFromOffset (Register dst, Register base, int32_t offset)
 
void LoadFromSlot (Register dst, Register base, const Slot &slot)
 
void StoreToSlot (Register src, Register base, const Slot &slot, CanBeSmi can_be_smi, MemoryOrder memory_order=kRelaxedNonAtomic, Register scratch=TMP)
 
void StoreToSlotNoBarrier (Register src, Register base, const Slot &slot, MemoryOrder memory_order=kRelaxedNonAtomic)
 
void StoreToSlot (Register src, Register base, const Slot &slot, MemoryOrder memory_order=kRelaxedNonAtomic, Register scratch=TMP)
 
virtual void LoadInt32FromBoxOrSmi (Register result, Register value)=0
 
virtual void LoadInt64FromBoxOrSmi (Register result, Register value)=0
 
void LoadWordFromBoxOrSmi (Register result, Register value)
 
void LoadAbstractTypeNullability (Register dst, Register type)
 
void CompareAbstractTypeNullabilityWith (Register type, int8_t value, Register scratch)
 
virtual void AddScaled (Register dst, Register base, Register index, ScaleFactor scale, int32_t disp)=0
 
virtual void LoadImmediate (Register dst, target::word imm)=0
 
virtual void CompareImmediate (Register reg, target::word imm, OperandSize width=kWordBytes)=0
 
virtual void CompareWithMemoryValue (Register value, Address address, OperandSize size=kWordBytes)=0
 
virtual void AndImmediate (Register dst, target::word imm)=0
 
virtual void LsrImmediate (Register dst, int32_t shift)=0
 
virtual void MulImmediate (Register dst, target::word imm, OperandSize=kWordBytes)=0
 
virtual void AndRegisters (Register dst, Register src1, Register src2=kNoRegister)=0
 
virtual void LslRegister (Register dst, Register shift)=0
 
virtual void CombineHashes (Register dst, Register other)=0
 
void FinalizeHash (Register hash, Register scratch=TMP)
 
virtual void FinalizeHashForSize (intptr_t bit_size, Register hash, Register scratch=TMP)=0
 
void LoadTypeClassId (Register dst, Register src)
 
virtual void EnsureHasClassIdInDEBUG (intptr_t cid, Register src, Register scratch, bool can_be_null=false)=0
 
intptr_t InsertAlignedRelocation (BSS::Relocation reloc)
 
void MsanUnpoison (Register base, intptr_t length_in_bytes)
 
void MsanUnpoison (Register base, Register length_in_bytes)
 
void Unimplemented (const char *message)
 
void Untested (const char *message)
 
void Unreachable (const char *message)
 
void Stop (const char *message)
 
void FinalizeInstructions (const MemoryRegion &region)
 
intptr_t CountPointerOffsets () const
 
const ZoneGrowableArray< intptr_t > & GetPointerOffsets () const
 
const GrowableArray< CodeComment * > & comments () const
 
void BindUncheckedEntryPoint ()
 
intptr_t UncheckedEntryOffset () const
 
virtual void RangeCheck (Register value, Register temp, intptr_t low, intptr_t high, RangeCheckCondition condition, Label *target)=0
 
void VerifySmi (Register dst)
 
- Public Member Functions inherited from dart::StackResource
 StackResource (ThreadState *thread)
 
virtual ~StackResource ()
 
ThreadStatethread () const
 
- Public Member Functions inherited from dart::compiler::MicroAssembler
 MicroAssembler (ObjectPoolBuilder *object_pool_builder, intptr_t far_branch_level, ExtensionSet extensions)
 
 ~MicroAssembler ()
 
bool Supports (Extension extension) const
 
bool Supports (ExtensionSet extensions) const
 
intptr_t far_branch_level () const
 
void set_far_branch_level (intptr_t level)
 
void Bind (Label *label)
 
void lui (Register rd, intptr_t imm)
 
void lui_fixed (Register rd, intptr_t imm)
 
void auipc (Register rd, intptr_t imm)
 
void jal (Register rd, Label *label, JumpDistance d=kFarJump)
 
void jal (Label *label, JumpDistance d=kFarJump)
 
void j (Label *label, JumpDistance d=kFarJump)
 
void jalr (Register rd, Register rs1, intptr_t offset=0)
 
void jalr_fixed (Register rd, Register rs1, intptr_t offset)
 
void jalr (Register rs1, intptr_t offset=0)
 
void jr (Register rs1, intptr_t offset=0)
 
void ret ()
 
void beq (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bne (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void blt (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bge (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bgt (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void ble (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bltu (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bgeu (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bgtu (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void bleu (Register rs1, Register rs2, Label *l, JumpDistance d=kFarJump)
 
void lb (Register rd, Address addr)
 
void lh (Register rd, Address addr)
 
void lw (Register rd, Address addr)
 
void lbu (Register rd, Address addr)
 
void lhu (Register rd, Address addr)
 
void sb (Register rs2, Address addr)
 
void sh (Register rs2, Address addr)
 
void sw (Register rs2, Address addr)
 
void addi (Register rd, Register rs1, intptr_t imm)
 
void subi (Register rd, Register rs1, intptr_t imm)
 
void slti (Register rd, Register rs1, intptr_t imm)
 
void sltiu (Register rd, Register rs1, intptr_t imm)
 
void xori (Register rd, Register rs1, intptr_t imm)
 
void ori (Register rd, Register rs1, intptr_t imm)
 
void andi (Register rd, Register rs1, intptr_t imm)
 
void slli (Register rd, Register rs1, intptr_t shamt)
 
void srli (Register rd, Register rs1, intptr_t shamt)
 
void srai (Register rd, Register rs1, intptr_t shamt)
 
void add (Register rd, Register rs1, Register rs2)
 
void sub (Register rd, Register rs1, Register rs2)
 
void sll (Register rd, Register rs1, Register rs2)
 
void slt (Register rd, Register rs1, Register rs2)
 
void sltu (Register rd, Register rs1, Register rs2)
 
void xor_ (Register rd, Register rs1, Register rs2)
 
void srl (Register rd, Register rs1, Register rs2)
 
void sra (Register rd, Register rs1, Register rs2)
 
void or_ (Register rd, Register rs1, Register rs2)
 
void and_ (Register rd, Register rs1, Register rs2)
 
void fence (HartEffects predecessor, HartEffects successor)
 
void fence ()
 
void fencei ()
 
void ecall ()
 
void ebreak ()
 
void csrrw (Register rd, uint32_t csr, Register rs1)
 
void csrrs (Register rd, uint32_t csr, Register rs1)
 
void csrrc (Register rd, uint32_t csr, Register rs1)
 
void csrr (Register rd, uint32_t csr)
 
void csrw (uint32_t csr, Register rs)
 
void csrs (uint32_t csr, Register rs)
 
void csrc (uint32_t csr, Register rs)
 
void csrrwi (Register rd, uint32_t csr, uint32_t imm)
 
void csrrsi (Register rd, uint32_t csr, uint32_t imm)
 
void csrrci (Register rd, uint32_t csr, uint32_t imm)
 
void csrwi (uint32_t csr, uint32_t imm)
 
void csrsi (uint32_t csr, uint32_t imm)
 
void csrci (uint32_t csr, uint32_t imm)
 
void trap ()
 
void nop ()
 
void li (Register rd, intptr_t imm)
 
void mv (Register rd, Register rs)
 
void not_ (Register rd, Register rs)
 
void neg (Register rd, Register rs)
 
void snez (Register rd, Register rs)
 
void seqz (Register rd, Register rs)
 
void sltz (Register rd, Register rs)
 
void sgtz (Register rd, Register rs)
 
void beqz (Register rs, Label *label, JumpDistance distance=kFarJump)
 
void bnez (Register rs, Label *label, JumpDistance distance=kFarJump)
 
void blez (Register rs, Label *label, JumpDistance distance=kFarJump)
 
void bgez (Register rs, Label *label, JumpDistance distance=kFarJump)
 
void bltz (Register rs, Label *label, JumpDistance distance=kFarJump)
 
void bgtz (Register rs, Label *label, JumpDistance distance=kFarJump)
 
void mul (Register rd, Register rs1, Register rs2)
 
void mulh (Register rd, Register rs1, Register rs2)
 
void mulhsu (Register rd, Register rs1, Register rs2)
 
void mulhu (Register rd, Register rs1, Register rs2)
 
void div (Register rd, Register rs1, Register rs2)
 
void divu (Register rd, Register rs1, Register rs2)
 
void rem (Register rd, Register rs1, Register rs2)
 
void remu (Register rd, Register rs1, Register rs2)
 
void lrw (Register rd, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void scw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amoswapw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amoaddw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amoxorw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amoandw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amoorw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amominw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amomaxw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amominuw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void amomaxuw (Register rd, Register rs2, Address addr, std::memory_order order=std::memory_order_relaxed)
 
void flw (FRegister rd, Address addr)
 
void fsw (FRegister rs2, Address addr)
 
void fmadds (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fmsubs (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fnmsubs (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fnmadds (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fadds (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fsubs (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fmuls (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fdivs (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fsqrts (FRegister rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fsgnjs (FRegister rd, FRegister rs1, FRegister rs2)
 
void fsgnjns (FRegister rd, FRegister rs1, FRegister rs2)
 
void fsgnjxs (FRegister rd, FRegister rs1, FRegister rs2)
 
void fmins (FRegister rd, FRegister rs1, FRegister rs2)
 
void fmaxs (FRegister rd, FRegister rs1, FRegister rs2)
 
void feqs (Register rd, FRegister rs1, FRegister rs2)
 
void flts (Register rd, FRegister rs1, FRegister rs2)
 
void fles (Register rd, FRegister rs1, FRegister rs2)
 
void fgts (Register rd, FRegister rs1, FRegister rs2)
 
void fges (Register rd, FRegister rs1, FRegister rs2)
 
void fclasss (Register rd, FRegister rs1)
 
void fcvtws (Register rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fcvtwus (Register rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fcvtsw (FRegister rd, Register rs1, RoundingMode rounding=RNE)
 
void fcvtswu (FRegister rd, Register rs1, RoundingMode rounding=RNE)
 
void fmvs (FRegister rd, FRegister rs)
 
void fabss (FRegister rd, FRegister rs)
 
void fnegs (FRegister rd, FRegister rs)
 
void fmvxw (Register rd, FRegister rs1)
 
void fmvwx (FRegister rd, Register rs1)
 
void fld (FRegister rd, Address addr)
 
void fsd (FRegister rs2, Address addr)
 
void fmaddd (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fmsubd (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fnmsubd (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void fnmaddd (FRegister rd, FRegister rs1, FRegister rs2, FRegister rs3, RoundingMode rounding=RNE)
 
void faddd (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fsubd (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fmuld (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fdivd (FRegister rd, FRegister rs1, FRegister rs2, RoundingMode rounding=RNE)
 
void fsqrtd (FRegister rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fsgnjd (FRegister rd, FRegister rs1, FRegister rs2)
 
void fsgnjnd (FRegister rd, FRegister rs1, FRegister rs2)
 
void fsgnjxd (FRegister rd, FRegister rs1, FRegister rs2)
 
void fmind (FRegister rd, FRegister rs1, FRegister rs2)
 
void fmaxd (FRegister rd, FRegister rs1, FRegister rs2)
 
void fcvtsd (FRegister rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fcvtds (FRegister rd, FRegister rs1, RoundingMode rounding=RNE)
 
void feqd (Register rd, FRegister rs1, FRegister rs2)
 
void fltd (Register rd, FRegister rs1, FRegister rs2)
 
void fled (Register rd, FRegister rs1, FRegister rs2)
 
void fgtd (Register rd, FRegister rs1, FRegister rs2)
 
void fged (Register rd, FRegister rs1, FRegister rs2)
 
void fclassd (Register rd, FRegister rs1)
 
void fcvtwd (Register rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fcvtwud (Register rd, FRegister rs1, RoundingMode rounding=RNE)
 
void fcvtdw (FRegister rd, Register rs1, RoundingMode rounding=RNE)
 
void fcvtdwu (FRegister rd, Register rs1, RoundingMode rounding=RNE)
 
void fmvd (FRegister rd, FRegister rs)
 
void fabsd (FRegister rd, FRegister rs)
 
void fnegd (FRegister rd, FRegister rs)
 
void adduw (Register rd, Register rs1, Register rs2)
 
void sh1add (Register rd, Register rs1, Register rs2)
 
void sh1adduw (Register rd, Register rs1, Register rs2)
 
void sh2add (Register rd, Register rs1, Register rs2)
 
void sh2adduw (Register rd, Register rs1, Register rs2)
 
void sh3add (Register rd, Register rs1, Register rs2)
 
void sh3adduw (Register rd, Register rs1, Register rs2)
 
void slliuw (Register rd, Register rs1, intx_t imm)
 
void andn (Register rd, Register rs1, Register rs2)
 
void orn (Register rd, Register rs1, Register rs2)
 
void xnor (Register rd, Register rs1, Register rs2)
 
void clz (Register rd, Register rs)
 
void clzw (Register rd, Register rs)
 
void ctz (Register rd, Register rs)
 
void ctzw (Register rd, Register rs)
 
void cpop (Register rd, Register rs)
 
void cpopw (Register rd, Register rs)
 
void max (Register rd, Register rs1, Register rs2)
 
void maxu (Register rd, Register rs1, Register rs2)
 
void min (Register rd, Register rs1, Register rs2)
 
void minu (Register rd, Register rs1, Register rs2)
 
void sextb (Register rd, Register rs)
 
void sexth (Register rd, Register rs)
 
void zexth (Register rd, Register rs)
 
void rol (Register rd, Register rs1, Register rs2)
 
void rolw (Register rd, Register rs1, Register rs2)
 
void ror (Register rd, Register rs1, Register rs2)
 
void rori (Register rd, Register rs1, intx_t imm)
 
void roriw (Register rd, Register rs1, intx_t imm)
 
void rorw (Register rd, Register rs1, Register rs2)
 
void orcb (Register rd, Register rs)
 
void rev8 (Register rd, Register rs)
 
void clmul (Register rd, Register rs1, Register rs2)
 
void clmulh (Register rd, Register rs1, Register rs2)
 
void clmulr (Register rd, Register rs1, Register rs2)
 
void bclr (Register rd, Register rs1, Register rs2)
 
void bclri (Register rd, Register rs1, intx_t shamt)
 
void bext (Register rd, Register rs1, Register rs2)
 
void bexti (Register rd, Register rs1, intx_t shamt)
 
void binv (Register rd, Register rs1, Register rs2)
 
void binvi (Register rd, Register rs1, intx_t shamt)
 
void bset (Register rd, Register rs1, Register rs2)
 
void bseti (Register rd, Register rs1, intx_t shamt)
 
void lb (Register rd, Address addr, std::memory_order order)
 
void lh (Register rd, Address addr, std::memory_order order)
 
void lw (Register rd, Address addr, std::memory_order order)
 
void sb (Register rs2, Address addr, std::memory_order order)
 
void sh (Register rs2, Address addr, std::memory_order order)
 
void sw (Register rs2, Address addr, std::memory_order order)
 
void SimulatorPrintObject (Register rs1)
 
void Emit32 (uint32_t instruction)
 
void Emit64 (uint64_t instruction)
 

Static Public Member Functions

static int32_t BkptEncoding (uint16_t imm16)
 
static bool AddressCanHoldConstantIndex (const Object &constant, bool is_load, bool is_external, intptr_t cid, intptr_t index_scale, bool *needs_base=nullptr)
 
static bool IsSafe (const Object &object)
 
static bool IsSafeSmi (const Object &object)
 
static bool CanEncodeBranchDistance (int32_t distance)
 
static int32_t EncodeBranchOffset (int32_t offset, int32_t inst)
 
static int32_t DecodeBranchOffset (int32_t inst)
 
static intptr_t EntryPointToPcMarkerOffset ()
 
static bool IsSafe (const Object &object)
 
static bool IsSafeSmi (const Object &object)
 
static bool AddressCanHoldConstantIndex (const Object &constant, bool is_external, intptr_t cid, intptr_t index_scale)
 
static int32_t HeapDataOffset (bool is_external, intptr_t cid)
 
static int32_t EncodeImm26BranchOffset (int64_t imm, int32_t instr)
 
static int64_t DecodeImm26BranchOffset (int32_t instr)
 
static bool AddressCanHoldConstantIndex (const Object &constant, bool is_external, intptr_t cid, intptr_t index_scale)
 
static Address ElementAddressForIntIndex (bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index, intptr_t extra_disp=0)
 
static Address ElementAddressForRegIndex (bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index, intptr_t extra_disp=0)
 
static Address VMTagAddress ()
 
static intptr_t EntryPointToPcMarkerOffset ()
 
static bool IsSafeSmi (const Object &object)
 
static bool IsSafe (const Object &object)
 
static intptr_t EntryPointToPcMarkerOffset ()
 
static bool IsSafe (const Object &object)
 
static bool IsSafeSmi (const Object &object)
 
static bool AddressCanHoldConstantIndex (const Object &constant, bool is_external, intptr_t cid, intptr_t index_scale)
 
static int32_t HeapDataOffset (bool is_external, intptr_t cid)
 
static bool AddressCanHoldConstantIndex (const Object &constant, bool is_external, intptr_t cid, intptr_t index_scale)
 
static Address ElementAddressForIntIndex (bool is_external, intptr_t cid, intptr_t index_scale, Register array, intptr_t index)
 
static Address ElementAddressForRegIndex (bool is_external, intptr_t cid, intptr_t index_scale, bool index_unboxed, Register array, Register index)
 
static Address VMTagAddress ()
 
static bool IsSafe (const Object &object)
 
static bool IsSafeSmi (const Object &object)
 
- Static Public Member Functions inherited from dart::compiler::AssemblerBase
void static bool EmittingComments ()
 
- Static Public Member Functions inherited from dart::StackResource
static void Unwind (ThreadState *thread)
 
static void UnwindAbove (ThreadState *thread, StackResource *new_top)
 

Static Public Attributes

static constexpr intptr_t kEntryPointToPcMarkerOffset = 0
 
static constexpr intptr_t kCallExternalLabelSize = 5
 
static constexpr intptr_t kEnterStubFramePushedWords = 2
 

Friends

class dart::FlowGraphCompiler
 

Additional Inherited Members

- Protected Member Functions inherited from dart::compiler::MicroAssembler
intptr_t UpdateCBOffset (intptr_t branch_position, intptr_t new_offset)
 
intptr_t UpdateCJOffset (intptr_t branch_position, intptr_t new_offset)
 
intptr_t UpdateBOffset (intptr_t branch_position, intptr_t new_offset)
 
intptr_t UpdateJOffset (intptr_t branch_position, intptr_t new_offset)
 
intptr_t UpdateFarOffset (intptr_t branch_position, intptr_t new_offset)
 
intptr_t Position ()
 
void EmitBranch (Register rs1, Register rs2, Label *label, Funct3 func, JumpDistance distance)
 
void EmitJump (Register rd, Label *label, Opcode op, JumpDistance distance)
 
void EmitCBranch (Register rs1p, Label *label, COpcode op)
 
void EmitCJump (Label *label, COpcode op)
 
void EmitRType (Funct5 funct5, std::memory_order order, Register rs2, Register rs1, Funct3 funct3, Register rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, Register rs2, Register rs1, Funct3 funct3, Register rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, FRegister rs2, FRegister rs1, Funct3 funct3, FRegister rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, FRegister rs2, FRegister rs1, RoundingMode round, FRegister rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, FRegister rs2, Register rs1, RoundingMode round, FRegister rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, FRegister rs2, Register rs1, Funct3 funct3, FRegister rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, FRegister rs2, FRegister rs1, Funct3 funct3, Register rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, FRegister rs2, FRegister rs1, RoundingMode round, Register rd, Opcode opcode)
 
void EmitRType (Funct7 funct7, intptr_t shamt, Register rs1, Funct3 funct3, Register rd, Opcode opcode)
 
void EmitR4Type (FRegister rs3, Funct2 funct2, FRegister rs2, FRegister rs1, RoundingMode round, FRegister rd, Opcode opcode)
 
void EmitIType (intptr_t imm, Register rs1, Funct3 funct3, Register rd, Opcode opcode)
 
void EmitIType (intptr_t imm, Register rs1, Funct3 funct3, FRegister rd, Opcode opcode)
 
void EmitSType (intptr_t imm, Register rs2, Register rs1, Funct3 funct3, Opcode opcode)
 
void EmitSType (intptr_t imm, FRegister rs2, Register rs1, Funct3 funct3, Opcode opcode)
 
void EmitBType (intptr_t imm, Register rs2, Register rs1, Funct3 funct3, Opcode opcode)
 
void EmitUType (intptr_t imm, Register rd, Opcode opcode)
 
void EmitJType (intptr_t imm, Register rd, Opcode opcode)
 
uint16_t Read16 (intptr_t position)
 
void Write16 (intptr_t position, uint16_t instruction)
 
void Emit16 (uint16_t instruction)
 
uint32_t Read32 (intptr_t position)
 
void Write32 (intptr_t position, uint32_t instruction)
 
- Protected Attributes inherited from dart::compiler::AssemblerBase
AssemblerBuffer buffer_
 
int32_t prologue_offset_ = -1
 
bool has_monomorphic_entry_ = false
 
bool should_be_aligned_ = false
 
intptr_t unchecked_entry_offset_ = 0
 
- Protected Attributes inherited from dart::compiler::MicroAssembler
ExtensionSet extensions_
 
intptr_t far_branch_level_
 

Detailed Description

Definition at line 385 of file assembler_arm.h.

Member Enumeration Documentation

◆ RoundingMode [1/2]

Enumerator
kRoundToNearest 
kRoundDown 
kRoundUp 
kRoundToZero 
kRoundToNearest 
kRoundDown 
kRoundUp 
kRoundToZero 

Definition at line 430 of file assembler_ia32.h.

◆ RoundingMode [2/2]

Enumerator
kRoundToNearest 
kRoundDown 
kRoundUp 
kRoundToZero 
kRoundToNearest 
kRoundDown 
kRoundUp 
kRoundToZero 

Definition at line 555 of file assembler_x64.h.

555 {
556 kRoundToNearest = 0x0,
557 kRoundDown = 0x1,
558 kRoundUp = 0x2,
559 kRoundToZero = 0x3
560 };

Constructor & Destructor Documentation

◆ Assembler() [1/5]

dart::compiler::Assembler::Assembler ( ObjectPoolBuilder object_pool_builder,
intptr_t  far_branch_level = 0 
)
explicit

◆ ~Assembler() [1/5]

dart::compiler::Assembler::~Assembler ( )
inline

Definition at line 389 of file assembler_arm.h.

389{}

◆ Assembler() [2/5]

dart::compiler::Assembler::Assembler ( ObjectPoolBuilder object_pool_builder,
intptr_t  far_branch_level = 0 
)
explicit

◆ ~Assembler() [2/5]

dart::compiler::Assembler::~Assembler ( )
inline

Definition at line 470 of file assembler_arm64.h.

470{}

◆ Assembler() [3/5]

dart::compiler::Assembler::Assembler ( ObjectPoolBuilder object_pool_builder,
intptr_t  far_branch_level = 0 
)
inlineexplicit

Definition at line 234 of file assembler_ia32.h.

237 jit_cookie_(0),
238 code_(NewZoneHandle(ThreadState::Current()->zone())) {
239 // This mode is only needed and implemented for ARM.
241 }
static ThreadState * Current()
Definition: thread_state.h:27
ObjectPoolBuilder & object_pool_builder()
AssemblerBase(ObjectPoolBuilder *object_pool_builder)
#define ASSERT(E)
Object & NewZoneHandle(Zone *zone)
Definition: runtime_api.cc:141

◆ ~Assembler() [3/5]

dart::compiler::Assembler::~Assembler ( )
inline

Definition at line 242 of file assembler_ia32.h.

242{}

◆ Assembler() [4/5]

dart::compiler::Assembler::Assembler ( ObjectPoolBuilder object_pool_builder,
intptr_t  far_branch_level = 0 
)
explicit

◆ ~Assembler() [4/5]

dart::compiler::Assembler::~Assembler ( )
inline

Definition at line 839 of file assembler_riscv.h.

839{}

◆ Assembler() [5/5]

dart::compiler::Assembler::Assembler ( ObjectPoolBuilder object_pool_builder,
intptr_t  far_branch_level = 0 
)
explicit

◆ ~Assembler() [5/5]

dart::compiler::Assembler::~Assembler ( )
inline

Definition at line 300 of file assembler_x64.h.

300{}

Member Function Documentation

◆ abspd() [1/2]

void dart::compiler::Assembler::abspd ( XmmRegister  dst)

◆ abspd() [2/2]

void dart::compiler::Assembler::abspd ( XmmRegister  dst,
XmmRegister  src 
)

◆ absps() [1/2]

void dart::compiler::Assembler::absps ( XmmRegister  dst)

◆ absps() [2/2]

void dart::compiler::Assembler::absps ( XmmRegister  dst,
XmmRegister  src 
)

◆ adc() [1/2]

void dart::compiler::Assembler::adc ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ adc() [2/2]

void dart::compiler::Assembler::adc ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 638 of file assembler_arm64.h.

638 {
639 AddSubWithCarryHelper(kEightBytes, false, false, rd, rn, rm);
640 }

◆ adcs() [1/2]

void dart::compiler::Assembler::adcs ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ adcs() [2/2]

void dart::compiler::Assembler::adcs ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 641 of file assembler_arm64.h.

641 {
642 AddSubWithCarryHelper(kEightBytes, true, false, rd, rn, rm);
643 }

◆ adcsw()

void dart::compiler::Assembler::adcsw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 647 of file assembler_arm64.h.

647 {
648 AddSubWithCarryHelper(kFourBytes, true, false, rd, rn, rm);
649 }

◆ adcw()

void dart::compiler::Assembler::adcw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 644 of file assembler_arm64.h.

644 {
645 AddSubWithCarryHelper(kFourBytes, false, false, rd, rn, rm);
646 }

◆ add() [1/2]

void dart::compiler::Assembler::add ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ add() [2/2]

void dart::compiler::Assembler::add ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 616 of file assembler_arm64.h.

616 {
617 AddSubHelper(sz, false, false, rd, rn, o);
618 }

◆ AddBranchOverflow()

void dart::compiler::Assembler::AddBranchOverflow ( Register  rd,
Register  rs1,
Register  rs2,
Label overflow 
)

◆ AddImmediate() [1/13]

void dart::compiler::Assembler::AddImmediate ( const Address address,
const Immediate imm 
)

◆ AddImmediate() [2/13]

void dart::compiler::Assembler::AddImmediate ( Register  dest,
int64_t  imm 
)
inline

Definition at line 1767 of file assembler_arm64.h.

1767 {
1768 AddImmediate(dest, dest, imm);
1769 }
void AddImmediate(Register rd, int32_t value, Condition cond=AL)
dest
Definition: zip.py:79

◆ AddImmediate() [3/13]

void dart::compiler::Assembler::AddImmediate ( Register  dest,
intx_t  imm 
)
inline

Definition at line 1033 of file assembler_riscv.h.

1033 {
1034 AddImmediate(dest, dest, imm);
1035 }

◆ AddImmediate() [4/13]

void dart::compiler::Assembler::AddImmediate ( Register  dest,
Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ AddImmediate() [5/13]

void dart::compiler::Assembler::AddImmediate ( Register  dest,
Register  rn,
intx_t  imm,
OperandSize  sz = kWordBytes 
)

◆ AddImmediate() [6/13]

void dart::compiler::Assembler::AddImmediate ( Register  dest,
Register  src,
int32_t  value 
)

◆ AddImmediate() [7/13]

void dart::compiler::Assembler::AddImmediate ( Register  dest,
Register  src,
int64_t  value 
)

◆ AddImmediate() [8/13]

void dart::compiler::Assembler::AddImmediate ( Register  rd,
int32_t  value,
Condition  cond = AL 
)
inline

Definition at line 819 of file assembler_arm.h.

819 {
820 AddImmediate(rd, rd, value, cond);
821 }
uint8_t value

◆ AddImmediate() [9/13]

void dart::compiler::Assembler::AddImmediate ( Register  rd,
Register  rn,
int32_t  value,
Condition  cond = AL 
)

◆ AddImmediate() [10/13]

void dart::compiler::Assembler::AddImmediate ( Register  reg,
const Immediate imm 
)

◆ AddImmediate() [11/13]

void dart::compiler::Assembler::AddImmediate ( Register  reg,
const Immediate imm,
OperandSize  width = kEightBytes 
)

◆ AddImmediate() [12/13]

void dart::compiler::Assembler::AddImmediate ( Register  reg,
int32_t  value 
)
inline

Definition at line 715 of file assembler_ia32.h.

715 {
716 AddImmediate(reg, Immediate(value));
717 }

◆ AddImmediate() [13/13]

void dart::compiler::Assembler::AddImmediate ( Register  reg,
int64_t  value,
OperandSize  width = kEightBytes 
)
inline

Definition at line 781 of file assembler_x64.h.

783 {
784 AddImmediate(reg, Immediate(value), width);
785 }
int32_t width

◆ AddImmediateBranchOverflow()

void dart::compiler::Assembler::AddImmediateBranchOverflow ( Register  rd,
Register  rs1,
intx_t  imm,
Label overflow 
)

◆ AddImmediateSetFlags() [1/2]

void dart::compiler::Assembler::AddImmediateSetFlags ( Register  dest,
Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ AddImmediateSetFlags() [2/2]

void dart::compiler::Assembler::AddImmediateSetFlags ( Register  rd,
Register  rn,
int32_t  value,
Condition  cond = AL 
)

◆ addpd()

void dart::compiler::Assembler::addpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ addpl()

void dart::compiler::Assembler::addpl ( XmmRegister  dst,
XmmRegister  src 
)

◆ addps()

void dart::compiler::Assembler::addps ( XmmRegister  dst,
XmmRegister  src 
)

◆ AddRegisters() [1/5]

void dart::compiler::Assembler::AddRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 832 of file assembler_arm.h.

832 {
833 add(dest, dest, Operand(src));
834 }
void add(Register rd, Register rn, Operand o, Condition cond=AL)

◆ AddRegisters() [2/5]

void dart::compiler::Assembler::AddRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 1784 of file assembler_arm64.h.

1784 {
1785 add(dest, dest, Operand(src));
1786 }

◆ AddRegisters() [3/5]

void dart::compiler::Assembler::AddRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 719 of file assembler_ia32.h.

719{ addl(dest, src); }

◆ AddRegisters() [4/5]

void dart::compiler::Assembler::AddRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 1041 of file assembler_riscv.h.

1041{ add(dest, dest, src); }

◆ AddRegisters() [5/5]

void dart::compiler::Assembler::AddRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 786 of file assembler_x64.h.

786{ addq(dest, src); }

◆ AddressCanHoldConstantIndex() [1/5]

static bool dart::compiler::Assembler::AddressCanHoldConstantIndex ( const Object constant,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale 
)
static

◆ AddressCanHoldConstantIndex() [2/5]

static bool dart::compiler::Assembler::AddressCanHoldConstantIndex ( const Object constant,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale 
)
static

◆ AddressCanHoldConstantIndex() [3/5]

static bool dart::compiler::Assembler::AddressCanHoldConstantIndex ( const Object constant,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale 
)
static

◆ AddressCanHoldConstantIndex() [4/5]

static bool dart::compiler::Assembler::AddressCanHoldConstantIndex ( const Object constant,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale 
)
static

◆ AddressCanHoldConstantIndex() [5/5]

static bool dart::compiler::Assembler::AddressCanHoldConstantIndex ( const Object constant,
bool  is_load,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool *  needs_base = nullptr 
)
static

◆ adds() [1/2]

void dart::compiler::Assembler::adds ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ adds() [2/2]

void dart::compiler::Assembler::adds ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 619 of file assembler_arm64.h.

619 {
620 AddSubHelper(sz, true, false, rd, rn, o);
621 }

◆ AddScaled() [1/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 835 of file assembler_arm.h.

839 {
840 if (base == kNoRegister) {
841 if (scale == TIMES_1) {
842 AddImmediate(dest, index, disp);
843 } else {
844 Lsl(dest, index, Operand(scale));
845 AddImmediate(dest, disp);
846 }
847 } else {
848 add(dest, base, compiler::Operand(index, LSL, scale));
849 AddImmediate(dest, disp);
850 }
851 }
void Lsl(Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
@ kNoRegister
Definition: constants_arm.h:99
const Scalar scale

◆ AddScaled() [2/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1787 of file assembler_arm64.h.

1791 {
1792 if (base == kNoRegister || base == ZR) {
1793 if (scale == TIMES_1) {
1794 AddImmediate(dest, index, disp);
1795 } else {
1796 orr(dest, ZR, Operand(index, LSL, scale));
1797 AddImmediate(dest, disp);
1798 }
1799 } else {
1800 add(dest, base, compiler::Operand(index, LSL, scale));
1801 AddImmediate(dest, disp);
1802 }
1803 }
void orr(Register rd, Register rn, Operand o, Condition cond=AL)

◆ AddScaled() [3/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 720 of file assembler_ia32.h.

724 {
725 if (base == kNoRegister) {
726 leal(dest, Address(index, scale, disp));
727 } else {
728 leal(dest, Address(base, index, scale, disp));
729 }
730 }
void leal(Register dst, const Address &src)

◆ AddScaled() [4/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1042 of file assembler_riscv.h.

1046 {
1047 if (base == kNoRegister || base == ZR) {
1048 if (scale == TIMES_1) {
1049 AddImmediate(dest, index, disp);
1050 } else {
1051 slli(dest, index, scale);
1052 AddImmediate(dest, disp);
1053 }
1054 } else {
1055 AddShifted(dest, base, index, scale);
1056 AddImmediate(dest, disp);
1057 }
1058 }
void AddShifted(Register dest, Register base, Register index, intx_t shift)
void slli(Register rd, Register rs1, intptr_t shamt)

◆ AddScaled() [5/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 787 of file assembler_x64.h.

791 {
792 if (base == kNoRegister) {
793 leaq(dest, Address(index, scale, disp));
794 } else {
795 leaq(dest, Address(base, index, scale, disp));
796 }
797 }

◆ addsd() [1/2]

void dart::compiler::Assembler::addsd ( XmmRegister  dst,
const Address src 
)

◆ addsd() [2/2]

void dart::compiler::Assembler::addsd ( XmmRegister  dst,
XmmRegister  src 
)

◆ AddShifted()

void dart::compiler::Assembler::AddShifted ( Register  dest,
Register  base,
Register  index,
intx_t  shift 
)

◆ addss() [1/2]

void dart::compiler::Assembler::addss ( XmmRegister  dst,
const Address src 
)

◆ addss() [2/2]

void dart::compiler::Assembler::addss ( XmmRegister  dst,
XmmRegister  src 
)

◆ addsw()

void dart::compiler::Assembler::addsw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 629 of file assembler_arm64.h.

629 {
630 adds(rd, rn, o, kFourBytes);
631 }
void adds(Register rd, Register rn, Operand o, Condition cond=AL)

◆ addw()

void dart::compiler::Assembler::addw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 628 of file assembler_arm64.h.

628{ add(rd, rn, o, kFourBytes); }

◆ adr()

void dart::compiler::Assembler::adr ( Register  rd,
const Immediate imm 
)
inline

Definition at line 664 of file assembler_arm64.h.

664{ EmitPCRelOp(ADR, rd, imm); }

◆ Align() [1/3]

void dart::compiler::Assembler::Align ( int  alignment,
intptr_t  offset 
)

◆ Align() [2/3]

void dart::compiler::Assembler::Align ( intptr_t  alignment,
intptr_t  offset 
)

◆ Align() [3/3]

void dart::compiler::Assembler::Align ( intptr_t  alignment,
intptr_t  offset 
)

◆ ALU_OPS()

dart::compiler::Assembler::ALU_OPS ( DECLARE_ALU  )

◆ and_() [1/2]

void dart::compiler::Assembler::and_ ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ and_() [2/2]

void dart::compiler::Assembler::and_ ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 840 of file assembler_arm64.h.

840 {
841 EmitLogicalShiftOp(AND, rd, rn, o, sz);
842 }

◆ andi()

void dart::compiler::Assembler::andi ( Register  rd,
Register  rn,
const Immediate imm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 794 of file assembler_arm64.h.

797 {
798 ASSERT(sz == kEightBytes || sz == kFourBytes);
800 Operand imm_op;
801 const bool immok = Operand::IsImmLogical(imm.value(), width, &imm_op);
802 ASSERT(immok);
803 EmitLogicalImmOp(ANDI, rd, rn, imm_op, sz);
804 }
static bool IsImmLogical(uint64_t value, uint8_t width, Operand *imm_op)
const int kXRegSizeInBits
const int kWRegSizeInBits

◆ AndImmediate() [1/12]

void dart::compiler::Assembler::AndImmediate ( Register  dst,
const Immediate imm 
)

◆ AndImmediate() [2/12]

void dart::compiler::Assembler::AndImmediate ( Register  dst,
int32_t  value 
)
inlineoverride

Definition at line 744 of file assembler_ia32.h.

744 {
745 andl(dst, Immediate(value));
746 }
dst
Definition: cp.py:12

◆ AndImmediate() [3/12]

void dart::compiler::Assembler::AndImmediate ( Register  dst,
int64_t  value 
)
inlineoverride

Definition at line 587 of file assembler_x64.h.

587 {
588 AndImmediate(dst, Immediate(value));
589 }
void AndImmediate(Register rd, Register rs, int32_t imm, Condition cond=AL)

◆ AndImmediate() [4/12]

void dart::compiler::Assembler::AndImmediate ( Register  dst,
Register  src,
int32_t  value 
)
inline

Definition at line 747 of file assembler_ia32.h.

747 {
749 andl(dst, Immediate(value));
750 }
void MoveRegister(Register rd, Register rm, Condition cond)

◆ AndImmediate() [5/12]

void dart::compiler::Assembler::AndImmediate ( Register  dst,
Register  src,
int64_t  value 
)
inline

Definition at line 590 of file assembler_x64.h.

590 {
593 }

◆ AndImmediate() [6/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
int32_t  imm 
)
inlineoverride

Definition at line 878 of file assembler_arm.h.

878 {
879 AndImmediate(rd, rd, imm, AL);
880 }

◆ AndImmediate() [7/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
int32_t  imm,
Condition  cond 
)
inline

Definition at line 875 of file assembler_arm.h.

875 {
876 AndImmediate(rd, rd, imm, cond);
877 }

◆ AndImmediate() [8/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
int64_t  imm 
)
inlineoverride

Definition at line 1830 of file assembler_arm64.h.

1830 {
1831 AndImmediate(rd, rd, imm);
1832 }

◆ AndImmediate() [9/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
intx_t  imm 
)
inlineoverride

Definition at line 1079 of file assembler_riscv.h.

1079 {
1080 AndImmediate(rd, rd, imm);
1081 }

◆ AndImmediate() [10/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ AndImmediate() [11/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
Register  rn,
intx_t  imm,
OperandSize  sz = kWordBytes 
)

◆ AndImmediate() [12/12]

void dart::compiler::Assembler::AndImmediate ( Register  rd,
Register  rs,
int32_t  imm,
Condition  cond = AL 
)

◆ AndImmediateSetFlags()

void dart::compiler::Assembler::AndImmediateSetFlags ( Register  rd,
Register  rn,
int32_t  value,
Condition  cond = AL 
)

◆ andis()

void dart::compiler::Assembler::andis ( Register  rd,
Register  rn,
const Immediate imm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 827 of file assembler_arm64.h.

830 {
831 ASSERT(sz == kEightBytes || sz == kFourBytes);
833 Operand imm_op;
834 const bool immok = Operand::IsImmLogical(imm.value(), width, &imm_op);
835 ASSERT(immok);
836 EmitLogicalImmOp(ANDIS, rd, rn, imm_op, sz);
837 }

◆ andpd() [1/2]

void dart::compiler::Assembler::andpd ( XmmRegister  dst,
const Address src 
)

◆ andpd() [2/2]

void dart::compiler::Assembler::andpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ andps() [1/2]

void dart::compiler::Assembler::andps ( XmmRegister  dst,
const Address src 
)

◆ andps() [2/2]

void dart::compiler::Assembler::andps ( XmmRegister  dst,
XmmRegister  src 
)

◆ AndRegisters() [1/5]

void dart::compiler::Assembler::AndRegisters ( Register  dst,
Register  src1,
Register  src2 = kNoRegister 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 885 of file assembler_arm.h.

887 {
888 ASSERT(src1 != src2); // Likely a mistake.
889 if (src2 == kNoRegister) {
890 src2 = dst;
891 }
892 and_(dst, src2, Operand(src1));
893 }
void and_(Register rd, Register rn, Operand o, Condition cond=AL)

◆ AndRegisters() [2/5]

void dart::compiler::Assembler::AndRegisters ( Register  dst,
Register  src1,
Register  src2 = kNoRegister 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1833 of file assembler_arm64.h.

1835 {
1836 ASSERT(src1 != src2); // Likely a mistake.
1837 if (src2 == kNoRegister) {
1838 src2 = dst;
1839 }
1840 and_(dst, src2, Operand(src1));
1841 }

◆ AndRegisters() [3/5]

void dart::compiler::Assembler::AndRegisters ( Register  dst,
Register  src1,
Register  src2 = kNoRegister 
)
overridevirtual

◆ AndRegisters() [4/5]

void dart::compiler::Assembler::AndRegisters ( Register  dst,
Register  src1,
Register  src2 = kNoRegister 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1082 of file assembler_riscv.h.

1084 {
1085 ASSERT(src1 != src2); // Likely a mistake.
1086 if (src2 == kNoRegister) {
1087 src2 = dst;
1088 }
1089 and_(dst, src2, src1);
1090 }

◆ AndRegisters() [5/5]

void dart::compiler::Assembler::AndRegisters ( Register  dst,
Register  src1,
Register  src2 = kNoRegister 
)
overridevirtual

◆ ands() [1/2]

void dart::compiler::Assembler::ands ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ ands() [2/2]

void dart::compiler::Assembler::ands ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 858 of file assembler_arm64.h.

858 {
859 EmitLogicalShiftOp(ANDS, rd, rn, o, sz);
860 }

◆ andw_()

void dart::compiler::Assembler::andw_ ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 864 of file assembler_arm64.h.

864 {
865 and_(rd, rn, o, kFourBytes);
866 }

◆ ArithmeticShiftRightImmediate() [1/5]

void dart::compiler::Assembler::ArithmeticShiftRightImmediate ( Register  reg,
intptr_t  shift 
)
overridevirtual

◆ ArithmeticShiftRightImmediate() [2/5]

void dart::compiler::Assembler::ArithmeticShiftRightImmediate ( Register  reg,
intptr_t  shift 
)
overridevirtual

◆ ArithmeticShiftRightImmediate() [3/5]

void dart::compiler::Assembler::ArithmeticShiftRightImmediate ( Register  reg,
intptr_t  shift 
)
overridevirtual

◆ ArithmeticShiftRightImmediate() [4/5]

void dart::compiler::Assembler::ArithmeticShiftRightImmediate ( Register  reg,
intptr_t  shift 
)
overridevirtual

◆ ArithmeticShiftRightImmediate() [5/5]

void dart::compiler::Assembler::ArithmeticShiftRightImmediate ( Register  reg,
intptr_t  shift 
)
overridevirtual

◆ ArrayStoreBarrier() [1/5]

void dart::compiler::Assembler::ArrayStoreBarrier ( Register  object,
Register  slot,
Register  value,
CanBeSmi  can_be_smi,
Register  scratch 
)
overridevirtual

◆ ArrayStoreBarrier() [2/5]

void dart::compiler::Assembler::ArrayStoreBarrier ( Register  object,
Register  slot,
Register  value,
CanBeSmi  can_be_smi,
Register  scratch 
)
overridevirtual

◆ ArrayStoreBarrier() [3/5]

void dart::compiler::Assembler::ArrayStoreBarrier ( Register  object,
Register  slot,
Register  value,
CanBeSmi  can_be_smi,
Register  scratch 
)
overridevirtual

◆ ArrayStoreBarrier() [4/5]

void dart::compiler::Assembler::ArrayStoreBarrier ( Register  object,
Register  slot,
Register  value,
CanBeSmi  can_value_be_smi,
Register  scratch 
)
overridevirtual

◆ ArrayStoreBarrier() [5/5]

void dart::compiler::Assembler::ArrayStoreBarrier ( Register  object,
Register  slot,
Register  value,
CanBeSmi  can_value_be_smi,
Register  scratch 
)
overridevirtual

◆ Asr() [1/2]

void dart::compiler::Assembler::Asr ( Register  rd,
Register  rm,
const Operand shift_imm,
Condition  cond = AL 
)

◆ Asr() [2/2]

void dart::compiler::Assembler::Asr ( Register  rd,
Register  rm,
Register  rs,
Condition  cond = AL 
)

◆ AsrImmediate()

void dart::compiler::Assembler::AsrImmediate ( Register  rd,
Register  rn,
int  shift,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1646 of file assembler_arm64.h.

1649 {
1650 const int reg_size =
1652 ASSERT((shift >= 0) && (shift < reg_size));
1653 sbfm(rd, rn, shift, reg_size - 1, sz);
1654 }
void sbfm(Register rd, Register rn, int r_imm, int s_imm, OperandSize size=kEightBytes)

◆ Asrs()

void dart::compiler::Assembler::Asrs ( Register  rd,
Register  rm,
const Operand shift_imm,
Condition  cond = AL 
)

◆ asrv()

void dart::compiler::Assembler::asrv ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 909 of file assembler_arm64.h.

912 {
913 EmitMiscDP2Source(ASRV, rd, rn, rm, sz);
914 }

◆ asrvw()

void dart::compiler::Assembler::asrvw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 924 of file assembler_arm64.h.

924 {
925 asrv(rd, rn, rm, kFourBytes);
926 }
void asrv(Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)

◆ AX()

dart::compiler::Assembler::AX ( L  ,
movups  ,
0x11  ,
0x0F   
)

◆ b() [1/3]

void dart::compiler::Assembler::b ( int32_t  offset)
inline

Definition at line 1176 of file assembler_arm64.h.

1176{ EmitUnconditionalBranchOp(B, offset); }
SeparatedVector2 offset

◆ b() [2/3]

void dart::compiler::Assembler::b ( Label label,
Condition  cond = AL 
)

◆ b() [3/3]

void dart::compiler::Assembler::b ( Label label,
Condition  cond = AL 
)
inline

Definition at line 1168 of file assembler_arm64.h.

1168 {
1169 if (cond == AL) {
1170 EmitUnconditionalBranch(B, label);
1171 } else {
1172 EmitConditionalBranch(BCOND, cond, label);
1173 }
1174 }

◆ bfi()

void dart::compiler::Assembler::bfi ( Register  rd,
Register  rn,
int  low_bit,
int  width,
OperandSize  size = kEightBytes 
)
inline

Definition at line 698 of file assembler_arm64.h.

702 {
703 int wordsize = size == kEightBytes ? 64 : 32;
704 EmitBitfieldOp(BFM, rd, rn, -low_bit & (wordsize - 1), width - 1, size);
705 }
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259

◆ bfm()

void dart::compiler::Assembler::bfm ( Register  rd,
Register  rn,
int  r_imm,
int  s_imm,
OperandSize  size = kEightBytes 
)
inline

Definition at line 670 of file assembler_arm64.h.

674 {
675 EmitBitfieldOp(BFM, rd, rn, r_imm, s_imm, size);
676 }

◆ bfxil()

void dart::compiler::Assembler::bfxil ( Register  rd,
Register  rn,
int  low_bit,
int  width,
OperandSize  size = kEightBytes 
)
inline

Definition at line 709 of file assembler_arm64.h.

713 {
714 EmitBitfieldOp(BFM, rd, rn, low_bit, low_bit + width - 1, size);
715 }

◆ bic() [1/2]

void dart::compiler::Assembler::bic ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ bic() [2/2]

void dart::compiler::Assembler::bic ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 843 of file assembler_arm64.h.

843 {
844 EmitLogicalShiftOp(BIC, rd, rn, o, sz);
845 }

◆ bics() [1/2]

void dart::compiler::Assembler::bics ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ bics() [2/2]

void dart::compiler::Assembler::bics ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 861 of file assembler_arm64.h.

861 {
862 EmitLogicalShiftOp(BICS, rd, rn, o, sz);
863 }

◆ Bind() [1/5]

void dart::compiler::Assembler::Bind ( Label label)
overridevirtual

◆ Bind() [2/5]

void dart::compiler::Assembler::Bind ( Label label)
overridevirtual

◆ Bind() [3/5]

void dart::compiler::Assembler::Bind ( Label label)
overridevirtual

◆ Bind() [4/5]

void dart::compiler::Assembler::Bind ( Label label)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 872 of file assembler_riscv.h.

872{ MicroAssembler::Bind(label); }

◆ Bind() [5/5]

void dart::compiler::Assembler::Bind ( Label label)
overridevirtual

◆ bkpt()

void dart::compiler::Assembler::bkpt ( uint16_t  imm16)

◆ BkptEncoding()

static int32_t dart::compiler::Assembler::BkptEncoding ( uint16_t  imm16)
inlinestatic

Definition at line 639 of file assembler_arm.h.

639 {
640 // bkpt requires that the cond field is AL.
641 return (AL << kConditionShift) | B24 | B21 | ((imm16 >> 4) << 8) | B6 | B5 |
642 B4 | (imm16 & 0xf);
643 }
@ kConditionShift

◆ bl() [1/2]

void dart::compiler::Assembler::bl ( int32_t  offset)
inline

Definition at line 1177 of file assembler_arm64.h.

1177 {
1178 // CLOBBERS_LR uses __ to access the assembler.
1179#define __ this->
1180 CLOBBERS_LR(EmitUnconditionalBranchOp(BL, offset));
1181#undef __
1182 }

◆ bl() [2/2]

void dart::compiler::Assembler::bl ( Label label,
Condition  cond = AL 
)

◆ blr()

void dart::compiler::Assembler::blr ( Register  rn)
inline

Definition at line 1236 of file assembler_arm64.h.

1236 {
1237 // CLOBBERS_LR uses __ to access the assembler.
1238#define __ this->
1239 CLOBBERS_LR(EmitUnconditionalBranchRegOp(BLR, rn));
1240#undef __
1241 }

◆ blx()

void dart::compiler::Assembler::blx ( Register  rm,
Condition  cond = AL 
)

◆ br()

void dart::compiler::Assembler::br ( Register  rn)
inline

Definition at line 1235 of file assembler_arm64.h.

1235{ EmitUnconditionalBranchRegOp(BR, rn); }

◆ Branch()

void dart::compiler::Assembler::Branch ( const Address address,
Condition  cond = AL 
)

◆ BranchIf() [1/5]

void dart::compiler::Assembler::BranchIf ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1237 of file assembler_arm.h.

1239 {
1240 b(label, condition);
1241 }
void b(Label *label, Condition cond=AL)

◆ BranchIf() [2/5]

void dart::compiler::Assembler::BranchIf ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1186 of file assembler_arm64.h.

1188 {
1189 b(label, condition);
1190 }

◆ BranchIf() [3/5]

void dart::compiler::Assembler::BranchIf ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 598 of file assembler_ia32.h.

600 {
601 j(condition, label, distance);
602 }
void j(Condition condition, Label *label, JumpDistance distance=kFarJump)

◆ BranchIf() [4/5]

void dart::compiler::Assembler::BranchIf ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)

◆ BranchIf() [5/5]

void dart::compiler::Assembler::BranchIf ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 738 of file assembler_x64.h.

740 {
741 j(condition, label, distance);
742 }

◆ BranchIfBit() [1/5]

void dart::compiler::Assembler::BranchIfBit ( Register  rn,
intptr_t  bit_number,
Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1248 of file assembler_arm.h.

1252 {
1253 tst(rn, Operand(1 << bit_number));
1254 b(label, condition);
1255 }
void tst(Register rn, Operand o, Condition cond=AL)

◆ BranchIfBit() [2/5]

void dart::compiler::Assembler::BranchIfBit ( Register  rn,
intptr_t  bit_number,
Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1196 of file assembler_arm64.h.

1200 {
1201 if (condition == ZERO) {
1202 tbz(label, rn, bit_number);
1203 } else if (condition == NOT_ZERO) {
1204 tbnz(label, rn, bit_number);
1205 } else {
1206 UNREACHABLE();
1207 }
1208 }
#define UNREACHABLE()
Definition: assert.h:248
void tbz(Label *label, Register rt, intptr_t bit_number)
void tbnz(Label *label, Register rt, intptr_t bit_number)
@ NOT_ZERO

◆ BranchIfBit() [3/5]

void dart::compiler::Assembler::BranchIfBit ( Register  rn,
intptr_t  bit_number,
Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 609 of file assembler_ia32.h.

613 {
614 testl(rn, Immediate(1 << bit_number));
615 j(condition, label, distance);
616 }
void testl(Register reg1, Register reg2)

◆ BranchIfBit() [4/5]

void dart::compiler::Assembler::BranchIfBit ( Register  rn,
intptr_t  bit_number,
Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)

◆ BranchIfBit() [5/5]

void dart::compiler::Assembler::BranchIfBit ( Register  rn,
intptr_t  bit_number,
Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 749 of file assembler_x64.h.

753 {
754 testq(rn, Immediate(1 << bit_number));
755 j(condition, label, distance);
756 }
void testq(Register reg, const Immediate &imm)

◆ BranchIfNotSmi() [1/5]

void dart::compiler::Assembler::BranchIfNotSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1347 of file assembler_arm.h.

1349 {
1350 tst(reg, Operand(kSmiTagMask));
1351 b(label, NE);
1352 }
@ kSmiTagMask

◆ BranchIfNotSmi() [2/5]

void dart::compiler::Assembler::BranchIfNotSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1712 of file assembler_arm64.h.

1714 {
1715 tbnz(label, reg, kSmiTag);
1716 }

◆ BranchIfNotSmi() [3/5]

void dart::compiler::Assembler::BranchIfNotSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1009 of file assembler_ia32.h.

1011 {
1012 testl(reg, Immediate(kSmiTagMask));
1013 j(NOT_ZERO, label, distance);
1014 }

◆ BranchIfNotSmi() [4/5]

void dart::compiler::Assembler::BranchIfNotSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)

◆ BranchIfNotSmi() [5/5]

void dart::compiler::Assembler::BranchIfNotSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1010 of file assembler_x64.h.

1012 {
1013 testq(reg, Immediate(kSmiTagMask));
1014 j(NOT_ZERO, label, distance);
1015 }

◆ BranchIfSmi() [1/5]

void dart::compiler::Assembler::BranchIfSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1369 of file assembler_arm.h.

1371 {
1372 tst(reg, Operand(kSmiTagMask));
1373 b(label, EQ);
1374 }

◆ BranchIfSmi() [2/5]

void dart::compiler::Assembler::BranchIfSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1719 of file assembler_arm64.h.

1721 {
1722 tbz(label, reg, kSmiTag);
1723 }

◆ BranchIfSmi() [3/5]

void dart::compiler::Assembler::BranchIfSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1016 of file assembler_ia32.h.

1018 {
1019 testl(reg, Immediate(kSmiTagMask));
1020 j(ZERO, label, distance);
1021 }

◆ BranchIfSmi() [4/5]

void dart::compiler::Assembler::BranchIfSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
overridevirtual

◆ BranchIfSmi() [5/5]

void dart::compiler::Assembler::BranchIfSmi ( Register  reg,
Label label,
JumpDistance  distance = kFarJump 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1017 of file assembler_x64.h.

1019 {
1020 testq(reg, Immediate(kSmiTagMask));
1021 j(ZERO, label, distance);
1022 }

◆ BranchIfZero() [1/5]

void dart::compiler::Assembler::BranchIfZero ( Register  rn,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1242 of file assembler_arm.h.

1244 {
1245 cmp(rn, Operand(0));
1246 b(label, ZERO);
1247 }
void cmp(Register rn, Operand o, Condition cond=AL)

◆ BranchIfZero() [2/5]

void dart::compiler::Assembler::BranchIfZero ( Register  rn,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1191 of file assembler_arm64.h.

1193 {
1194 cbz(label, rn);
1195 }
void cbz(Label *label, Register rt, OperandSize sz=kEightBytes)

◆ BranchIfZero() [3/5]

void dart::compiler::Assembler::BranchIfZero ( Register  rn,
Label label,
JumpDistance  distance = kFarJump 
)

◆ BranchIfZero() [4/5]

void dart::compiler::Assembler::BranchIfZero ( Register  src,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 603 of file assembler_ia32.h.

605 {
606 cmpl(src, Immediate(0));
607 j(ZERO, label, distance);
608 }

◆ BranchIfZero() [5/5]

void dart::compiler::Assembler::BranchIfZero ( Register  src,
Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 743 of file assembler_x64.h.

745 {
746 cmpq(src, Immediate(0));
747 j(ZERO, label, distance);
748 }

◆ BranchLink() [1/2]

void dart::compiler::Assembler::BranchLink ( const Code code,
ObjectPoolBuilderEntry::Patchability  patchable = ObjectPoolBuilderEntry::kNotPatchable,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ BranchLink() [2/2]

void dart::compiler::Assembler::BranchLink ( const Code code,
ObjectPoolBuilderEntry::Patchability  patchable = ObjectPoolBuilderEntry::kNotPatchable,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ BranchLinkOffset()

void dart::compiler::Assembler::BranchLinkOffset ( Register  base,
int32_t  offset 
)

◆ BranchLinkPatchable() [1/2]

void dart::compiler::Assembler::BranchLinkPatchable ( const Code code,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ BranchLinkPatchable() [2/2]

void dart::compiler::Assembler::BranchLinkPatchable ( const Code code,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)
inline

Definition at line 1732 of file assembler_arm64.h.

1736 {
1738 snapshot_behavior);
1739 }
void BranchLink(const Code &code, ObjectPoolBuilderEntry::Patchability patchable=ObjectPoolBuilderEntry::kNotPatchable, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)

◆ BranchLinkWithEquivalence() [1/2]

void dart::compiler::Assembler::BranchLinkWithEquivalence ( const Code code,
const Object equivalence,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal 
)

◆ BranchLinkWithEquivalence() [2/2]

void dart::compiler::Assembler::BranchLinkWithEquivalence ( const Code code,
const Object equivalence,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal 
)

◆ BranchOnMonomorphicCheckedEntryJIT() [1/5]

void dart::compiler::Assembler::BranchOnMonomorphicCheckedEntryJIT ( Label label)

◆ BranchOnMonomorphicCheckedEntryJIT() [2/5]

void dart::compiler::Assembler::BranchOnMonomorphicCheckedEntryJIT ( Label label)

◆ BranchOnMonomorphicCheckedEntryJIT() [3/5]

void dart::compiler::Assembler::BranchOnMonomorphicCheckedEntryJIT ( Label label)

◆ BranchOnMonomorphicCheckedEntryJIT() [4/5]

void dart::compiler::Assembler::BranchOnMonomorphicCheckedEntryJIT ( Label label)

◆ BranchOnMonomorphicCheckedEntryJIT() [5/5]

void dart::compiler::Assembler::BranchOnMonomorphicCheckedEntryJIT ( Label label)

◆ Breakpoint() [1/5]

void dart::compiler::Assembler::Breakpoint ( )
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 465 of file assembler_arm.h.

465{ bkpt(0); }
void bkpt(uint16_t imm16)

◆ Breakpoint() [2/5]

void dart::compiler::Assembler::Breakpoint ( )
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 581 of file assembler_arm64.h.

581{ brk(0); }

◆ Breakpoint() [3/5]

void dart::compiler::Assembler::Breakpoint ( )
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1152 of file assembler_ia32.h.

1152{ int3(); }

◆ Breakpoint() [4/5]

void dart::compiler::Assembler::Breakpoint ( )
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 905 of file assembler_riscv.h.

◆ Breakpoint() [5/5]

void dart::compiler::Assembler::Breakpoint ( )
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1292 of file assembler_x64.h.

1292{ int3(); }

◆ brk()

void dart::compiler::Assembler::brk ( uint16_t  imm)
inline

Definition at line 1253 of file assembler_arm64.h.

1253{ EmitExceptionGenOp(BRK, imm); }

◆ bsfl()

void dart::compiler::Assembler::bsfl ( Register  dst,
Register  src 
)

◆ bsrl()

void dart::compiler::Assembler::bsrl ( Register  dst,
Register  src 
)

◆ bt() [1/2]

void dart::compiler::Assembler::bt ( Register  base,
int  bit 
)

◆ bt() [2/2]

void dart::compiler::Assembler::bt ( Register  base,
Register  offset 
)

◆ btl()

void dart::compiler::Assembler::btl ( Register  dst,
Register  src 
)
inline

Definition at line 540 of file assembler_x64.h.

540{ EmitL(src, dst, 0xA3, 0x0F); }

◆ btq() [1/2]

void dart::compiler::Assembler::btq ( Register  base,
int  bit 
)

◆ btq() [2/2]

void dart::compiler::Assembler::btq ( Register  dst,
Register  src 
)
inline

Definition at line 541 of file assembler_x64.h.

541{ EmitQ(src, dst, 0xA3, 0x0F); }

◆ bx()

void dart::compiler::Assembler::bx ( Register  rm,
Condition  cond = AL 
)

◆ Call() [1/11]

void dart::compiler::Assembler::Call ( Address  target)
inline

Definition at line 1748 of file assembler_arm64.h.

1748 {
1749 // CLOBBERS_LR uses __ to access the assembler.
1750#define __ this->
1751 CLOBBERS_LR({
1752 ldr(LR, target);
1753 blr(LR);
1754 });
1755#undef __
1756 }
void ldr(Register rd, Address ad, Condition cond=AL)
uint32_t * target

◆ Call() [2/11]

void dart::compiler::Assembler::Call ( Address  target)
inline

Definition at line 896 of file assembler_ia32.h.

896{ call(target); }
void call(Register reg)

◆ Call() [3/11]

void dart::compiler::Assembler::Call ( Address  target)

◆ Call() [4/11]

void dart::compiler::Assembler::Call ( Address  target)
inline

Definition at line 850 of file assembler_x64.h.

850{ call(target); }

◆ Call() [5/11]

void dart::compiler::Assembler::Call ( Address  target,
Condition  cond = AL 
)
inline

Definition at line 801 of file assembler_arm.h.

801 {
802 // CLOBBERS_LR uses __ to access the assembler.
803#define __ this->
804 CLOBBERS_LR({
805 ldr(LR, target, cond);
806 blx(LR, cond);
807 });
808#undef __
809 }
void blx(Register rm, Condition cond=AL)

◆ call() [1/8]

void dart::compiler::Assembler::call ( const Address address)

◆ call() [2/8]

void dart::compiler::Assembler::call ( const Address address)
inline

Definition at line 306 of file assembler_x64.h.

306{ EmitUnaryL(address, 0xFF, 2); }

◆ Call() [6/11]

void dart::compiler::Assembler::Call ( const Code code)
inline

Definition at line 810 of file assembler_arm.h.

810{ BranchLink(code); }

◆ Call() [7/11]

void dart::compiler::Assembler::Call ( const Code code)
inline

Definition at line 1757 of file assembler_arm64.h.

1757{ BranchLink(code); }

◆ Call() [8/11]

void dart::compiler::Assembler::Call ( const Code code)
inline

Definition at line 1028 of file assembler_riscv.h.

1028{ JumpAndLink(code); }
void JumpAndLink(const Code &code, ObjectPoolBuilderEntry::Patchability patchable=ObjectPoolBuilderEntry::kNotPatchable, CodeEntryKind entry_kind=CodeEntryKind::kNormal, ObjectPoolBuilderEntry::SnapshotBehavior snapshot_behavior=ObjectPoolBuilderEntry::kSnapshotable)

◆ Call() [9/11]

void dart::compiler::Assembler::Call ( const Code code,
bool  movable_target = false,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal 
)

◆ Call() [10/11]

void dart::compiler::Assembler::Call ( const Code stub_entry,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ call() [3/8]

void dart::compiler::Assembler::call ( const ExternalLabel label)

◆ call() [4/8]

void dart::compiler::Assembler::call ( const ExternalLabel label)

◆ call() [5/8]

void dart::compiler::Assembler::call ( Label label)

◆ call() [6/8]

void dart::compiler::Assembler::call ( Label label)

◆ call() [7/8]

void dart::compiler::Assembler::call ( Register  reg)

◆ call() [8/8]

void dart::compiler::Assembler::call ( Register  reg)
inline

Definition at line 305 of file assembler_x64.h.

305{ EmitUnaryL(reg, 0xFF, 2); }

◆ Call() [11/11]

void dart::compiler::Assembler::Call ( Register  target)

◆ CallCFunction() [1/10]

void dart::compiler::Assembler::CallCFunction ( Address  address,
bool  restore_rsp = false 
)

◆ CallCFunction() [2/10]

void dart::compiler::Assembler::CallCFunction ( Address  target)
inline

Definition at line 812 of file assembler_arm.h.

812{ Call(target); }
void Call(Address target, Condition cond=AL)

◆ CallCFunction() [3/10]

void dart::compiler::Assembler::CallCFunction ( Address  target)
inline

Definition at line 1760 of file assembler_arm64.h.

1760{ Call(target); }

◆ CallCFunction() [4/10]

void dart::compiler::Assembler::CallCFunction ( Address  target)
inline

Definition at line 898 of file assembler_ia32.h.

898{ Call(target); }

◆ CallCFunction() [5/10]

void dart::compiler::Assembler::CallCFunction ( Address  target)
inline

Definition at line 1030 of file assembler_riscv.h.

1030{ Call(target); }

◆ CallCFunction() [6/10]

void dart::compiler::Assembler::CallCFunction ( Register  reg,
bool  restore_rsp = false 
)

◆ CallCFunction() [7/10]

void dart::compiler::Assembler::CallCFunction ( Register  target)
inline

Definition at line 1761 of file assembler_arm64.h.

1761 {
1762#define __ this->
1763 CLOBBERS_LR({ blr(target); });
1764#undef __
1765 }

◆ CallCFunction() [8/10]

void dart::compiler::Assembler::CallCFunction ( Register  target)
inline

Definition at line 900 of file assembler_ia32.h.

900{ call(target); }

◆ CallCFunction() [9/10]

void dart::compiler::Assembler::CallCFunction ( Register  target)
inline

Definition at line 1031 of file assembler_riscv.h.

1031{ Call(target); }

◆ CallCFunction() [10/10]

void dart::compiler::Assembler::CallCFunction ( Register  target,
Condition  cond = AL 
)
inline

Definition at line 814 of file assembler_arm.h.

814 {
815 blx(target, cond);
816 }

◆ CallPatchable()

void dart::compiler::Assembler::CallPatchable ( const Code code,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ CallRuntime() [1/5]

void dart::compiler::Assembler::CallRuntime ( const RuntimeEntry entry,
intptr_t  argument_count 
)

◆ CallRuntime() [2/5]

void dart::compiler::Assembler::CallRuntime ( const RuntimeEntry entry,
intptr_t  argument_count 
)

◆ CallRuntime() [3/5]

void dart::compiler::Assembler::CallRuntime ( const RuntimeEntry entry,
intptr_t  argument_count 
)

◆ CallRuntime() [4/5]

void dart::compiler::Assembler::CallRuntime ( const RuntimeEntry entry,
intptr_t  argument_count 
)

◆ CallRuntime() [5/5]

void dart::compiler::Assembler::CallRuntime ( const RuntimeEntry entry,
intptr_t  argument_count 
)

◆ CallVmStub()

void dart::compiler::Assembler::CallVmStub ( const Code code)

◆ CallWithEquivalence()

void dart::compiler::Assembler::CallWithEquivalence ( const Code code,
const Object equivalence,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal 
)

◆ CanEncodeBranchDistance()

static bool dart::compiler::Assembler::CanEncodeBranchDistance ( int32_t  distance)
inlinestatic

Definition at line 1626 of file assembler_arm.h.

1626 {
1628 // The distance is off by 8 due to the way the ARM CPUs read PC.
1630 distance >>= 2;
1631 return Utils::IsInt(24, distance);
1632 }
static bool IsInt(intptr_t N, T value)
Definition: utils.h:313
static constexpr bool IsAligned(T x, uintptr_t alignment, uintptr_t offset=0)
Definition: utils.h:92

◆ CanGenerateCbzTbz()

bool dart::compiler::Assembler::CanGenerateCbzTbz ( Register  rn,
Condition  cond 
)

◆ CanLoadFromObjectPool() [1/3]

bool dart::compiler::Assembler::CanLoadFromObjectPool ( const Object object) const

◆ CanLoadFromObjectPool() [2/3]

bool dart::compiler::Assembler::CanLoadFromObjectPool ( const Object object) const

◆ CanLoadFromObjectPool() [3/3]

bool dart::compiler::Assembler::CanLoadFromObjectPool ( const Object object) const

◆ cbnz()

void dart::compiler::Assembler::cbnz ( Label label,
Register  rt,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1214 of file assembler_arm64.h.

1214 {
1215 EmitCompareAndBranch(CBNZ, rt, label, sz);
1216 }

◆ cbz()

void dart::compiler::Assembler::cbz ( Label label,
Register  rt,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1210 of file assembler_arm64.h.

1210 {
1211 EmitCompareAndBranch(CBZ, rt, label, sz);
1212 }

◆ cdq()

void dart::compiler::Assembler::cdq ( )

◆ CheckAllocationCanary() [1/5]

void dart::compiler::Assembler::CheckAllocationCanary ( Register  top)
inline

Definition at line 1126 of file assembler_ia32.h.

1126 {
1127#if defined(DEBUG)
1128 Label okay;
1129 cmpl(Address(top, 0), Immediate(kAllocationCanary));
1130 j(EQUAL, &okay, Assembler::kNearJump);
1131 Stop("Allocation canary");
1132 Bind(&okay);
1133#endif
1134 }
void Stop(const char *message)
void Bind(Label *label) override
static constexpr intptr_t kAllocationCanary
Definition: globals.h:181

◆ CheckAllocationCanary() [2/5]

void dart::compiler::Assembler::CheckAllocationCanary ( Register  top)
inline

Definition at line 1244 of file assembler_x64.h.

1244 {
1245#if defined(DEBUG)
1246 Label okay;
1247 cmpl(Address(top, 0), Immediate(kAllocationCanary));
1248 j(EQUAL, &okay, Assembler::kNearJump);
1249 Stop("Allocation canary");
1250 Bind(&okay);
1251#endif
1252 }

◆ CheckAllocationCanary() [3/5]

void dart::compiler::Assembler::CheckAllocationCanary ( Register  top,
Register  tmp = TMP 
)
inline

Definition at line 1557 of file assembler_arm.h.

1557 {
1558#if defined(DEBUG)
1559 Label okay;
1560 ldr(tmp, Address(top, 0));
1561 cmp(tmp, Operand(kAllocationCanary));
1562 b(&okay, EQUAL);
1563 Stop("Allocation canary");
1564 Bind(&okay);
1565#endif
1566 }

◆ CheckAllocationCanary() [4/5]

void dart::compiler::Assembler::CheckAllocationCanary ( Register  top,
Register  tmp = TMP 
)
inline

Definition at line 2156 of file assembler_arm64.h.

2156 {
2157#if defined(DEBUG)
2158 Label okay;
2159 ldr(tmp, Address(top, 0));
2160 cmp(tmp, Operand(kAllocationCanary));
2161 b(&okay, EQUAL);
2162 Stop("Allocation canary");
2163 Bind(&okay);
2164#endif
2165 }

◆ CheckAllocationCanary() [5/5]

void dart::compiler::Assembler::CheckAllocationCanary ( Register  top,
Register  tmp = TMP 
)
inline

Definition at line 1376 of file assembler_riscv.h.

1376 {
1377#if defined(DEBUG)
1378 Label okay;
1379 lx(tmp, Address(top, 0));
1380 subi(tmp, tmp, kAllocationCanary);
1381 beqz(tmp, &okay, Assembler::kNearJump);
1382 Stop("Allocation canary");
1383 Bind(&okay);
1384#endif
1385 }
void beqz(Register rs, Label *label, JumpDistance distance=kFarJump)
void subi(Register rd, Register rs1, intptr_t imm)

◆ CheckCodePointer() [1/4]

void dart::compiler::Assembler::CheckCodePointer ( )

◆ CheckCodePointer() [2/4]

void dart::compiler::Assembler::CheckCodePointer ( )

◆ CheckCodePointer() [3/4]

void dart::compiler::Assembler::CheckCodePointer ( )

◆ CheckCodePointer() [4/4]

void dart::compiler::Assembler::CheckCodePointer ( )

◆ CheckFpSpDist()

void dart::compiler::Assembler::CheckFpSpDist ( intptr_t  fp_sp_dist)

◆ cinc()

void dart::compiler::Assembler::cinc ( Register  rd,
Register  rn,
Condition  cond 
)
inline

Definition at line 1116 of file assembler_arm64.h.

1116 {
1117 csinc(rd, rn, rn, InvertCondition(cond));
1118 }
void csinc(Register rd, Register rn, Register rm, Condition cond, OperandSize sz=kEightBytes)
static Condition InvertCondition(Condition c)

◆ cinv()

void dart::compiler::Assembler::cinv ( Register  rd,
Register  rn,
Condition  cond 
)
inline

Definition at line 1125 of file assembler_arm64.h.

1125 {
1126 csinv(rd, rn, rn, InvertCondition(cond));
1127 }
void csinv(Register rd, Register rn, Register rm, Condition cond)

◆ cld()

void dart::compiler::Assembler::cld ( )

◆ clrex() [1/2]

void dart::compiler::Assembler::clrex ( )

◆ clrex() [2/2]

void dart::compiler::Assembler::clrex ( )
inline

Definition at line 1073 of file assembler_arm64.h.

1073 {
1074 const int32_t encoding = static_cast<int32_t>(CLREX);
1075 Emit(encoding);
1076 }
void Emit(int32_t value)

◆ clz() [1/2]

void dart::compiler::Assembler::clz ( Register  rd,
Register  rm,
Condition  cond = AL 
)

◆ clz() [2/2]

void dart::compiler::Assembler::clz ( Register  rd,
Register  rn 
)
inline

Definition at line 872 of file assembler_arm64.h.

872 {
873 EmitMiscDP1Source(CLZ, rd, rn, kEightBytes);
874 }

◆ clzw()

void dart::compiler::Assembler::clzw ( Register  rd,
Register  rn 
)
inline

Definition at line 875 of file assembler_arm64.h.

875 {
876 EmitMiscDP1Source(CLZ, rd, rn, kFourBytes);
877 }

◆ cmn() [1/2]

void dart::compiler::Assembler::cmn ( Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ cmn() [2/2]

void dart::compiler::Assembler::cmn ( Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1148 of file assembler_arm64.h.

1148 {
1149 adds(ZR, rn, o, sz);
1150 }

◆ cmove()

void dart::compiler::Assembler::cmove ( Register  dst,
Register  src 
)

◆ cmovgel()

void dart::compiler::Assembler::cmovgel ( Register  dst,
Register  src 
)

◆ cmovlessl()

void dart::compiler::Assembler::cmovlessl ( Register  dst,
Register  src 
)

◆ cmovne()

void dart::compiler::Assembler::cmovne ( Register  dst,
Register  src 
)

◆ cmovno()

void dart::compiler::Assembler::cmovno ( Register  dst,
Register  src 
)

◆ cmovns()

void dart::compiler::Assembler::cmovns ( Register  dst,
Register  src 
)

◆ cmovs()

void dart::compiler::Assembler::cmovs ( Register  dst,
Register  src 
)

◆ cmp() [1/2]

void dart::compiler::Assembler::cmp ( Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ cmp() [2/2]

void dart::compiler::Assembler::cmp ( Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1143 of file assembler_arm64.h.

1143 {
1144 subs(ZR, rn, o, sz);
1145 }
void subs(Register rd, Register rn, Operand o, Condition cond=AL)

◆ cmpb()

void dart::compiler::Assembler::cmpb ( const Address address,
const Immediate imm 
)

◆ cmppseq()

void dart::compiler::Assembler::cmppseq ( XmmRegister  dst,
XmmRegister  src 
)

◆ cmppsle()

void dart::compiler::Assembler::cmppsle ( XmmRegister  dst,
XmmRegister  src 
)

◆ cmppslt()

void dart::compiler::Assembler::cmppslt ( XmmRegister  dst,
XmmRegister  src 
)

◆ cmppsneq()

void dart::compiler::Assembler::cmppsneq ( XmmRegister  dst,
XmmRegister  src 
)

◆ cmppsnle()

void dart::compiler::Assembler::cmppsnle ( XmmRegister  dst,
XmmRegister  src 
)

◆ cmppsnlt()

void dart::compiler::Assembler::cmppsnlt ( XmmRegister  dst,
XmmRegister  src 
)

◆ cmpw() [1/2]

void dart::compiler::Assembler::cmpw ( const Address address,
const Immediate imm 
)

◆ cmpw() [2/2]

void dart::compiler::Assembler::cmpw ( Register  rn,
Operand  o 
)
inline

Definition at line 1146 of file assembler_arm64.h.

1146{ cmp(rn, o, kFourBytes); }

◆ cmpxchgl()

void dart::compiler::Assembler::cmpxchgl ( const Address address,
Register  reg 
)

◆ cneg()

void dart::compiler::Assembler::cneg ( Register  rd,
Register  rn,
Condition  cond 
)
inline

Definition at line 1134 of file assembler_arm64.h.

1134 {
1135 EmitConditionalSelect(CSNEG, rd, rn, rn, InvertCondition(cond),
1136 kEightBytes);
1137 }

◆ CombineHashes() [1/5]

void dart::compiler::Assembler::CombineHashes ( Register  dst,
Register  other 
)
overridevirtual

◆ CombineHashes() [2/5]

void dart::compiler::Assembler::CombineHashes ( Register  dst,
Register  other 
)
overridevirtual

◆ CombineHashes() [3/5]

void dart::compiler::Assembler::CombineHashes ( Register  dst,
Register  other 
)
overridevirtual

◆ CombineHashes() [4/5]

void dart::compiler::Assembler::CombineHashes ( Register  dst,
Register  other 
)
overridevirtual

◆ CombineHashes() [5/5]

void dart::compiler::Assembler::CombineHashes ( Register  hash,
Register  other 
)
overridevirtual

◆ comisd()

void dart::compiler::Assembler::comisd ( XmmRegister  a,
XmmRegister  b 
)

◆ comiss()

void dart::compiler::Assembler::comiss ( XmmRegister  a,
XmmRegister  b 
)

◆ CompareClassId() [1/5]

void dart::compiler::Assembler::CompareClassId ( Register  object,
intptr_t  class_id,
Register  scratch 
)

◆ CompareClassId() [2/5]

void dart::compiler::Assembler::CompareClassId ( Register  object,
intptr_t  class_id,
Register  scratch 
)

◆ CompareClassId() [3/5]

void dart::compiler::Assembler::CompareClassId ( Register  object,
intptr_t  class_id,
Register  scratch = kNoRegister 
)

◆ CompareClassId() [4/5]

void dart::compiler::Assembler::CompareClassId ( Register  object,
intptr_t  class_id,
Register  scratch = kNoRegister 
)

◆ CompareClassId() [5/5]

void dart::compiler::Assembler::CompareClassId ( Register  object,
intptr_t  class_id,
Register  scratch = kNoRegister 
)

◆ CompareImmediate() [1/8]

void dart::compiler::Assembler::CompareImmediate ( const Address address,
const Immediate imm,
OperandSize  width = kEightBytes 
)

◆ CompareImmediate() [2/8]

void dart::compiler::Assembler::CompareImmediate ( Register  reg,
const Immediate imm,
OperandSize  width = kEightBytes 
)

◆ CompareImmediate() [3/8]

void dart::compiler::Assembler::CompareImmediate ( Register  reg,
int32_t  immediate,
OperandSize  width = kFourBytes 
)
inlineoverride

Definition at line 766 of file assembler_ia32.h.

768 {
770 cmpl(reg, Immediate(immediate));
771 }
#define ASSERT_EQUAL(expected, actual)
Definition: assert.h:309

◆ CompareImmediate() [4/8]

void dart::compiler::Assembler::CompareImmediate ( Register  reg,
int64_t  immediate,
OperandSize  width = kEightBytes 
)
inlineoverride

Definition at line 569 of file assembler_x64.h.

571 {
572 return CompareImmediate(reg, Immediate(immediate), width);
573 }
void CompareImmediate(Register rn, int32_t value, Condition cond)

◆ CompareImmediate() [5/8]

void dart::compiler::Assembler::CompareImmediate ( Register  rn,
int32_t  value,
Condition  cond 
)

◆ CompareImmediate() [6/8]

void dart::compiler::Assembler::CompareImmediate ( Register  rn,
int32_t  value,
OperandSize  width = kFourBytes 
)
inlineoverride

Definition at line 919 of file assembler_arm.h.

921 {
924 }

◆ CompareImmediate() [7/8]

void dart::compiler::Assembler::CompareImmediate ( Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)
override

◆ CompareImmediate() [8/8]

void dart::compiler::Assembler::CompareImmediate ( Register  rn,
intx_t  imm,
OperandSize  sz = kWordBytes 
)
override

◆ CompareObject() [1/5]

void dart::compiler::Assembler::CompareObject ( Register  reg,
const Object object 
)

◆ CompareObject() [2/5]

void dart::compiler::Assembler::CompareObject ( Register  reg,
const Object object 
)

◆ CompareObject() [3/5]

void dart::compiler::Assembler::CompareObject ( Register  reg,
const Object object 
)

◆ CompareObject() [4/5]

void dart::compiler::Assembler::CompareObject ( Register  reg,
const Object object 
)

◆ CompareObject() [5/5]

void dart::compiler::Assembler::CompareObject ( Register  rn,
const Object object 
)

◆ CompareObjectRegisters() [1/5]

void dart::compiler::Assembler::CompareObjectRegisters ( Register  a,
Register  b 
)
inline

Definition at line 595 of file assembler_ia32.h.

595 {
597 }
void CompareRegisters(Register rn, Register rm)
struct MyStruct a[10]

◆ CompareObjectRegisters() [2/5]

void dart::compiler::Assembler::CompareObjectRegisters ( Register  a,
Register  b 
)
inline

Definition at line 737 of file assembler_x64.h.

737{ OBJ(cmp)(a, b); }
#define OBJ(op)

◆ CompareObjectRegisters() [3/5]

void dart::compiler::Assembler::CompareObjectRegisters ( Register  rn,
Register  rm 
)
inline

Definition at line 1232 of file assembler_arm.h.

1232 {
1233 CompareRegisters(rn, rm);
1234 }

◆ CompareObjectRegisters() [4/5]

void dart::compiler::Assembler::CompareObjectRegisters ( Register  rn,
Register  rm 
)
inline

Definition at line 1162 of file assembler_arm64.h.

1162 {
1163 ASSERT(rn != CSP);
1164 cmp(rn, Operand(rm), kObjectBytes);
1165 }

◆ CompareObjectRegisters() [5/5]

void dart::compiler::Assembler::CompareObjectRegisters ( Register  rn,
Register  rm 
)

◆ CompareRegisters() [1/5]

void dart::compiler::Assembler::CompareRegisters ( Register  a,
Register  b 
)

◆ CompareRegisters() [2/5]

void dart::compiler::Assembler::CompareRegisters ( Register  a,
Register  b 
)

◆ CompareRegisters() [3/5]

void dart::compiler::Assembler::CompareRegisters ( Register  rn,
Register  rm 
)
inline

Definition at line 1231 of file assembler_arm.h.

1231{ cmp(rn, Operand(rm)); }

◆ CompareRegisters() [4/5]

void dart::compiler::Assembler::CompareRegisters ( Register  rn,
Register  rm 
)
inline

Definition at line 1152 of file assembler_arm64.h.

1152 {
1153 if (rn == CSP) {
1154 // UXTX 0 on a 64-bit register (rm) is a nop, but forces R31 to be
1155 // interpreted as CSP.
1156 cmp(CSP, Operand(rm, UXTX, 0));
1157 } else {
1158 cmp(rn, Operand(rm));
1159 }
1160 }

◆ CompareRegisters() [5/5]

void dart::compiler::Assembler::CompareRegisters ( Register  rn,
Register  rm 
)

◆ CompareToStack() [1/5]

void dart::compiler::Assembler::CompareToStack ( Register  src,
intptr_t  depth 
)

◆ CompareToStack() [2/5]

void dart::compiler::Assembler::CompareToStack ( Register  src,
intptr_t  depth 
)

◆ CompareToStack() [3/5]

void dart::compiler::Assembler::CompareToStack ( Register  src,
intptr_t  depth 
)

◆ CompareToStack() [4/5]

void dart::compiler::Assembler::CompareToStack ( Register  src,
intptr_t  depth 
)

◆ CompareToStack() [5/5]

void dart::compiler::Assembler::CompareToStack ( Register  src,
intptr_t  depth 
)

◆ CompareWithMemoryValue() [1/5]

void dart::compiler::Assembler::CompareWithMemoryValue ( Register  value,
Address  address,
OperandSize  size = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1144 of file assembler_x64.h.

1146 {
1148 if (size == kFourBytes) {
1149 cmpl(value, address);
1150 } else {
1151 cmpq(value, address);
1152 }
1153 }

◆ CompareWithMemoryValue() [2/5]

void dart::compiler::Assembler::CompareWithMemoryValue ( Register  value,
Address  address,
OperandSize  size = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 445 of file assembler_arm.h.

447 {
449 Load(TMP, address, size);
450 cmp(value, Operand(TMP));
451 }
void Load(Register reg, const Address &address, OperandSize type, Condition cond)
const Register TMP

◆ CompareWithMemoryValue() [3/5]

void dart::compiler::Assembler::CompareWithMemoryValue ( Register  value,
Address  address,
OperandSize  size = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 692 of file assembler_ia32.h.

694 {
696 cmpl(value, address);
697 }

◆ CompareWithMemoryValue() [4/5]

void dart::compiler::Assembler::CompareWithMemoryValue ( Register  value,
Address  address,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ CompareWithMemoryValue() [5/5]

void dart::compiler::Assembler::CompareWithMemoryValue ( Register  value,
Address  address,
OperandSize  sz = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 567 of file assembler_arm64.h.

569 {
570 Load(TMP, address, sz);
571 cmp(value, Operand(TMP), sz);
572 }

◆ CompareWords() [1/5]

void dart::compiler::Assembler::CompareWords ( Register  reg1,
Register  reg2,
intptr_t  offset,
Register  count,
Register  temp,
Label equals 
)
overridevirtual

◆ CompareWords() [2/5]

void dart::compiler::Assembler::CompareWords ( Register  reg1,
Register  reg2,
intptr_t  offset,
Register  count,
Register  temp,
Label equals 
)
overridevirtual

◆ CompareWords() [3/5]

void dart::compiler::Assembler::CompareWords ( Register  reg1,
Register  reg2,
intptr_t  offset,
Register  count,
Register  temp,
Label equals 
)
overridevirtual

◆ CompareWords() [4/5]

void dart::compiler::Assembler::CompareWords ( Register  reg1,
Register  reg2,
intptr_t  offset,
Register  count,
Register  temp,
Label equals 
)
overridevirtual

◆ CompareWords() [5/5]

void dart::compiler::Assembler::CompareWords ( Register  reg1,
Register  reg2,
intptr_t  offset,
Register  count,
Register  temp,
Label equals 
)
overridevirtual

◆ ComputeElementAddressForIntIndex() [1/2]

void dart::compiler::Assembler::ComputeElementAddressForIntIndex ( Register  address,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index 
)

◆ ComputeElementAddressForIntIndex() [2/2]

void dart::compiler::Assembler::ComputeElementAddressForIntIndex ( Register  address,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index 
)

◆ ComputeElementAddressForRegIndex() [1/2]

void dart::compiler::Assembler::ComputeElementAddressForRegIndex ( Register  address,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index 
)

◆ ComputeElementAddressForRegIndex() [2/2]

void dart::compiler::Assembler::ComputeElementAddressForRegIndex ( Register  address,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index 
)

◆ constant_pool_allowed() [1/4]

bool dart::compiler::Assembler::constant_pool_allowed ( ) const
inline

Definition at line 1615 of file assembler_arm.h.

1615{ return constant_pool_allowed_; }

◆ constant_pool_allowed() [2/4]

bool dart::compiler::Assembler::constant_pool_allowed ( ) const
inline

Definition at line 1975 of file assembler_arm64.h.

1975{ return constant_pool_allowed_; }

◆ constant_pool_allowed() [3/4]

bool dart::compiler::Assembler::constant_pool_allowed ( ) const
inline

Definition at line 1201 of file assembler_riscv.h.

1201{ return constant_pool_allowed_; }

◆ constant_pool_allowed() [4/4]

bool dart::compiler::Assembler::constant_pool_allowed ( ) const
inline

Definition at line 808 of file assembler_x64.h.

808{ return constant_pool_allowed_; }

◆ CopyMemoryWords() [1/5]

void dart::compiler::Assembler::CopyMemoryWords ( Register  src,
Register  dst,
Register  size,
Register  temp 
)

◆ CopyMemoryWords() [2/5]

void dart::compiler::Assembler::CopyMemoryWords ( Register  src,
Register  dst,
Register  size,
Register  temp 
)

◆ CopyMemoryWords() [3/5]

void dart::compiler::Assembler::CopyMemoryWords ( Register  src,
Register  dst,
Register  size,
Register  temp 
)

◆ CopyMemoryWords() [4/5]

void dart::compiler::Assembler::CopyMemoryWords ( Register  src,
Register  dst,
Register  size,
Register  temp = kNoRegister 
)

◆ CopyMemoryWords() [5/5]

void dart::compiler::Assembler::CopyMemoryWords ( Register  src,
Register  dst,
Register  size,
Register  temp = kNoRegister 
)

◆ CountLeadingZeroes()

void dart::compiler::Assembler::CountLeadingZeroes ( Register  rd,
Register  rs 
)

◆ cpuid()

void dart::compiler::Assembler::cpuid ( )

◆ cqo()

void dart::compiler::Assembler::cqo ( )

◆ csel()

void dart::compiler::Assembler::csel ( Register  rd,
Register  rn,
Register  rm,
Condition  cond 
)
inline

Definition at line 1106 of file assembler_arm64.h.

1106 {
1107 EmitConditionalSelect(CSEL, rd, rn, rm, cond, kEightBytes);
1108 }

◆ cset()

void dart::compiler::Assembler::cset ( Register  rd,
Condition  cond 
)
inline

Definition at line 1119 of file assembler_arm64.h.

1119 {
1120 csinc(rd, ZR, ZR, InvertCondition(cond));
1121 }

◆ csetm()

void dart::compiler::Assembler::csetm ( Register  rd,
Condition  cond 
)
inline

Definition at line 1128 of file assembler_arm64.h.

1128 {
1129 csinv(rd, ZR, ZR, InvertCondition(cond));
1130 }

◆ csinc()

void dart::compiler::Assembler::csinc ( Register  rd,
Register  rn,
Register  rm,
Condition  cond,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1109 of file assembler_arm64.h.

1113 {
1114 EmitConditionalSelect(CSINC, rd, rn, rm, cond, sz);
1115 }

◆ csinv()

void dart::compiler::Assembler::csinv ( Register  rd,
Register  rn,
Register  rm,
Condition  cond 
)
inline

Definition at line 1122 of file assembler_arm64.h.

1122 {
1123 EmitConditionalSelect(CSINV, rd, rn, rm, cond, kEightBytes);
1124 }

◆ csneg()

void dart::compiler::Assembler::csneg ( Register  rd,
Register  rn,
Register  rm,
Condition  cond 
)
inline

Definition at line 1131 of file assembler_arm64.h.

1131 {
1132 EmitConditionalSelect(CSNEG, rd, rn, rm, cond, kEightBytes);
1133 }

◆ cvtdq2pd()

void dart::compiler::Assembler::cvtdq2pd ( XmmRegister  dst,
XmmRegister  src 
)

◆ cvtpd2ps()

void dart::compiler::Assembler::cvtpd2ps ( XmmRegister  dst,
XmmRegister  src 
)

◆ cvtps2pd()

void dart::compiler::Assembler::cvtps2pd ( XmmRegister  dst,
XmmRegister  src 
)

◆ cvtsd2si()

void dart::compiler::Assembler::cvtsd2si ( Register  dst,
XmmRegister  src 
)

◆ cvtsd2ss()

void dart::compiler::Assembler::cvtsd2ss ( XmmRegister  dst,
XmmRegister  src 
)

◆ cvtsi2sd()

void dart::compiler::Assembler::cvtsi2sd ( XmmRegister  dst,
Register  src 
)

◆ cvtsi2sdl()

void dart::compiler::Assembler::cvtsi2sdl ( XmmRegister  dst,
Register  src 
)
inline

Definition at line 523 of file assembler_x64.h.

523 {
524 EmitL(dst, src, 0x2A, 0x0F, 0xF2);
525 }

◆ cvtsi2sdq()

void dart::compiler::Assembler::cvtsi2sdq ( XmmRegister  dst,
Register  src 
)
inline

Definition at line 520 of file assembler_x64.h.

520 {
521 EmitQ(dst, src, 0x2A, 0x0F, 0xF2);
522 }

◆ cvtsi2ss()

void dart::compiler::Assembler::cvtsi2ss ( XmmRegister  dst,
Register  src 
)

◆ cvtss2sd()

void dart::compiler::Assembler::cvtss2sd ( XmmRegister  dst,
XmmRegister  src 
)

◆ cvtss2si()

void dart::compiler::Assembler::cvtss2si ( Register  dst,
XmmRegister  src 
)

◆ cvttsd2si()

void dart::compiler::Assembler::cvttsd2si ( Register  dst,
XmmRegister  src 
)

◆ cvttsd2sil()

void dart::compiler::Assembler::cvttsd2sil ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 529 of file assembler_x64.h.

529 {
530 EmitL(dst, src, 0x2C, 0x0F, 0xF2);
531 }

◆ cvttsd2siq()

void dart::compiler::Assembler::cvttsd2siq ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 526 of file assembler_x64.h.

526 {
527 EmitQ(dst, src, 0x2C, 0x0F, 0xF2);
528 }

◆ cvttss2si()

void dart::compiler::Assembler::cvttss2si ( Register  dst,
XmmRegister  src 
)

◆ decl() [1/2]

void dart::compiler::Assembler::decl ( const Address address)

◆ decl() [2/2]

void dart::compiler::Assembler::decl ( Register  reg)

◆ DecodeBranchOffset()

static int32_t dart::compiler::Assembler::DecodeBranchOffset ( int32_t  inst)
static

◆ DecodeImm26BranchOffset()

static int64_t dart::compiler::Assembler::DecodeImm26BranchOffset ( int32_t  instr)
inlinestatic

Definition at line 2284 of file assembler_arm64.h.

2284 {
2285 const int32_t off = (((instr & kImm26Mask) >> kImm26Shift) << 6) >> 4;
2286 return static_cast<int64_t>(off);
2287 }

◆ divl()

void dart::compiler::Assembler::divl ( Register  reg)

◆ divpd()

void dart::compiler::Assembler::divpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ divps()

void dart::compiler::Assembler::divps ( XmmRegister  dst,
XmmRegister  src 
)

◆ divsd() [1/2]

void dart::compiler::Assembler::divsd ( XmmRegister  dst,
const Address src 
)

◆ divsd() [2/2]

void dart::compiler::Assembler::divsd ( XmmRegister  dst,
XmmRegister  src 
)

◆ divss() [1/2]

void dart::compiler::Assembler::divss ( XmmRegister  dst,
const Address src 
)

◆ divss() [2/2]

void dart::compiler::Assembler::divss ( XmmRegister  dst,
XmmRegister  src 
)

◆ dmb()

void dart::compiler::Assembler::dmb ( )

◆ DoubleAbs() [1/2]

void dart::compiler::Assembler::DoubleAbs ( XmmRegister  dst,
XmmRegister  src 
)

◆ DoubleAbs() [2/2]

void dart::compiler::Assembler::DoubleAbs ( XmmRegister  reg)

◆ DoubleNegate() [1/2]

void dart::compiler::Assembler::DoubleNegate ( XmmRegister  d)

◆ DoubleNegate() [2/2]

void dart::compiler::Assembler::DoubleNegate ( XmmRegister  dst,
XmmRegister  src 
)

◆ Drop() [1/5]

void dart::compiler::Assembler::Drop ( intptr_t  stack_elements)

◆ Drop() [2/5]

void dart::compiler::Assembler::Drop ( intptr_t  stack_elements)
inline

Definition at line 496 of file assembler_arm64.h.

496 {
497 ASSERT(stack_elements >= 0);
498 if (stack_elements > 0) {
499 AddImmediate(SP, SP, stack_elements * target::kWordSize);
500 }
501 }
static constexpr intptr_t kWordSize
Definition: runtime_api.h:274

◆ Drop() [3/5]

void dart::compiler::Assembler::Drop ( intptr_t  stack_elements)

◆ Drop() [4/5]

void dart::compiler::Assembler::Drop ( intptr_t  stack_elements)
inline

Definition at line 865 of file assembler_riscv.h.

865 {
866 ASSERT(stack_elements >= 0);
867 if (stack_elements > 0) {
868 AddImmediate(SP, SP, stack_elements * target::kWordSize);
869 }
870 }

◆ Drop() [5/5]

void dart::compiler::Assembler::Drop ( intptr_t  stack_elements,
Register  tmp = TMP 
)

◆ ElementAddressForIntIndex() [1/5]

static Address dart::compiler::Assembler::ElementAddressForIntIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index 
)
static

◆ ElementAddressForIntIndex() [2/5]

Address dart::compiler::Assembler::ElementAddressForIntIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index 
) const

◆ ElementAddressForIntIndex() [3/5]

Address dart::compiler::Assembler::ElementAddressForIntIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index 
) const

◆ ElementAddressForIntIndex() [4/5]

static Address dart::compiler::Assembler::ElementAddressForIntIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index,
intptr_t  extra_disp = 0 
)
static

◆ ElementAddressForIntIndex() [5/5]

Address dart::compiler::Assembler::ElementAddressForIntIndex ( bool  is_load,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index,
Register  temp 
)

◆ ElementAddressForRegIndex() [1/5]

static Address dart::compiler::Assembler::ElementAddressForRegIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index 
)
static

◆ ElementAddressForRegIndex() [2/5]

static Address dart::compiler::Assembler::ElementAddressForRegIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index,
intptr_t  extra_disp = 0 
)
static

◆ ElementAddressForRegIndex() [3/5]

Address dart::compiler::Assembler::ElementAddressForRegIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index,
Register  temp 
)

◆ ElementAddressForRegIndex() [4/5]

Address dart::compiler::Assembler::ElementAddressForRegIndex ( bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index,
Register  temp 
)

◆ ElementAddressForRegIndex() [5/5]

Address dart::compiler::Assembler::ElementAddressForRegIndex ( bool  is_load,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index 
)

◆ ElementAddressForRegIndexWithSize()

Address dart::compiler::Assembler::ElementAddressForRegIndexWithSize ( bool  is_external,
intptr_t  cid,
OperandSize  size,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index,
Register  temp 
)

◆ Emit() [1/2]

void dart::compiler::Assembler::Emit ( int32_t  value)

◆ Emit() [2/2]

void dart::compiler::Assembler::Emit ( int32_t  value)

◆ Emit64()

void dart::compiler::Assembler::Emit64 ( int64_t  value)

◆ EmitEntryFrameVerification() [1/5]

void dart::compiler::Assembler::EmitEntryFrameVerification ( )

◆ EmitEntryFrameVerification() [2/5]

void dart::compiler::Assembler::EmitEntryFrameVerification ( )

◆ EmitEntryFrameVerification() [3/5]

void dart::compiler::Assembler::EmitEntryFrameVerification ( )

◆ EmitEntryFrameVerification() [4/5]

void dart::compiler::Assembler::EmitEntryFrameVerification ( )

◆ EmitEntryFrameVerification() [5/5]

void dart::compiler::Assembler::EmitEntryFrameVerification ( Register  scratch)

◆ EncodeBranchOffset()

static int32_t dart::compiler::Assembler::EncodeBranchOffset ( int32_t  offset,
int32_t  inst 
)
static

◆ EncodeImm26BranchOffset()

static int32_t dart::compiler::Assembler::EncodeImm26BranchOffset ( int64_t  imm,
int32_t  instr 
)
inlinestatic

Definition at line 2278 of file assembler_arm64.h.

2278 {
2279 const int32_t imm32 = static_cast<int32_t>(imm);
2280 const int32_t off = (((imm32 >> 2) << kImm26Shift) & kImm26Mask);
2281 return (instr & ~kImm26Mask) | off;
2282 }

◆ EnsureHasClassIdInDEBUG() [1/5]

void dart::compiler::Assembler::EnsureHasClassIdInDEBUG ( intptr_t  cid,
Register  src,
Register  scratch,
bool  can_be_null = false 
)
overridevirtual

◆ EnsureHasClassIdInDEBUG() [2/5]

void dart::compiler::Assembler::EnsureHasClassIdInDEBUG ( intptr_t  cid,
Register  src,
Register  scratch,
bool  can_be_null = false 
)
overridevirtual

◆ EnsureHasClassIdInDEBUG() [3/5]

void dart::compiler::Assembler::EnsureHasClassIdInDEBUG ( intptr_t  cid,
Register  src,
Register  scratch,
bool  can_be_null = false 
)
overridevirtual

◆ EnsureHasClassIdInDEBUG() [4/5]

void dart::compiler::Assembler::EnsureHasClassIdInDEBUG ( intptr_t  cid,
Register  src,
Register  scratch,
bool  can_be_null = false 
)
overridevirtual

◆ EnsureHasClassIdInDEBUG() [5/5]

void dart::compiler::Assembler::EnsureHasClassIdInDEBUG ( intptr_t  cid,
Register  src,
Register  scratch,
bool  can_be_null = false 
)
overridevirtual

◆ enter() [1/2]

void dart::compiler::Assembler::enter ( const Immediate imm)

◆ enter() [2/2]

void dart::compiler::Assembler::enter ( const Immediate imm)

◆ EnterCFrame() [1/5]

void dart::compiler::Assembler::EnterCFrame ( intptr_t  frame_space)

◆ EnterCFrame() [2/5]

void dart::compiler::Assembler::EnterCFrame ( intptr_t  frame_space)

◆ EnterCFrame() [3/5]

void dart::compiler::Assembler::EnterCFrame ( intptr_t  frame_space)

◆ EnterCFrame() [4/5]

void dart::compiler::Assembler::EnterCFrame ( intptr_t  frame_space)

◆ EnterCFrame() [5/5]

void dart::compiler::Assembler::EnterCFrame ( intptr_t  frame_space)

◆ EnterDartFrame() [1/5]

void dart::compiler::Assembler::EnterDartFrame ( intptr_t  frame_size)

◆ EnterDartFrame() [2/5]

void dart::compiler::Assembler::EnterDartFrame ( intptr_t  frame_size,
bool  load_pool_pointer = true 
)

◆ EnterDartFrame() [3/5]

void dart::compiler::Assembler::EnterDartFrame ( intptr_t  frame_size,
Register  new_pp = kNoRegister 
)

◆ EnterDartFrame() [4/5]

void dart::compiler::Assembler::EnterDartFrame ( intptr_t  frame_size,
Register  new_pp = kNoRegister 
)

◆ EnterDartFrame() [5/5]

void dart::compiler::Assembler::EnterDartFrame ( intptr_t  frame_size,
Register  new_pp = kNoRegister 
)

◆ EnterFrame() [1/5]

void dart::compiler::Assembler::EnterFrame ( intptr_t  frame_size)

◆ EnterFrame() [2/5]

void dart::compiler::Assembler::EnterFrame ( intptr_t  frame_size)

◆ EnterFrame() [3/5]

void dart::compiler::Assembler::EnterFrame ( intptr_t  frame_space)

◆ EnterFrame() [4/5]

void dart::compiler::Assembler::EnterFrame ( intptr_t  frame_space)

◆ EnterFrame() [5/5]

void dart::compiler::Assembler::EnterFrame ( RegList  regs,
intptr_t  frame_space 
)

◆ EnterFullSafepoint() [1/5]

void dart::compiler::Assembler::EnterFullSafepoint ( )

◆ EnterFullSafepoint() [2/5]

void dart::compiler::Assembler::EnterFullSafepoint ( Register  scratch)

◆ EnterFullSafepoint() [3/5]

void dart::compiler::Assembler::EnterFullSafepoint ( Register  scratch)

◆ EnterFullSafepoint() [4/5]

void dart::compiler::Assembler::EnterFullSafepoint ( Register  scratch)

◆ EnterFullSafepoint() [5/5]

void dart::compiler::Assembler::EnterFullSafepoint ( Register  scratch0,
Register  scratch1 
)

◆ EnterOsrFrame() [1/5]

void dart::compiler::Assembler::EnterOsrFrame ( intptr_t  extra_size)

◆ EnterOsrFrame() [2/5]

void dart::compiler::Assembler::EnterOsrFrame ( intptr_t  extra_size)

◆ EnterOsrFrame() [3/5]

void dart::compiler::Assembler::EnterOsrFrame ( intptr_t  extra_size)

◆ EnterOsrFrame() [4/5]

void dart::compiler::Assembler::EnterOsrFrame ( intptr_t  extra_size,
Register  new_pp = kNoRegister 
)

◆ EnterOsrFrame() [5/5]

void dart::compiler::Assembler::EnterOsrFrame ( intptr_t  extra_size,
Register  new_pp = kNoRegister 
)

◆ EnterStubFrame() [1/5]

void dart::compiler::Assembler::EnterStubFrame ( )

◆ EnterStubFrame() [2/5]

void dart::compiler::Assembler::EnterStubFrame ( )

◆ EnterStubFrame() [3/5]

void dart::compiler::Assembler::EnterStubFrame ( )

◆ EnterStubFrame() [4/5]

void dart::compiler::Assembler::EnterStubFrame ( )
inline

Definition at line 1330 of file assembler_riscv.h.

1330{ EnterDartFrame(0); }
void EnterDartFrame(intptr_t frame_size, bool load_pool_pointer=true)

◆ EnterStubFrame() [5/5]

void dart::compiler::Assembler::EnterStubFrame ( )

◆ EntryPointToPcMarkerOffset() [1/3]

static intptr_t dart::compiler::Assembler::EntryPointToPcMarkerOffset ( )
inlinestatic

Definition at line 600 of file assembler_arm64.h.

600 {
602 }
static constexpr intptr_t kEntryPointToPcMarkerOffset

◆ EntryPointToPcMarkerOffset() [2/3]

static intptr_t dart::compiler::Assembler::EntryPointToPcMarkerOffset ( )
inlinestatic

Definition at line 1100 of file assembler_ia32.h.

1100 {
1102 }

◆ EntryPointToPcMarkerOffset() [3/3]

static intptr_t dart::compiler::Assembler::EntryPointToPcMarkerOffset ( )
inlinestatic

Definition at line 924 of file assembler_riscv.h.

924 {
926 }

◆ eon()

void dart::compiler::Assembler::eon ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 855 of file assembler_arm64.h.

855 {
856 EmitLogicalShiftOp(EON, rd, rn, o, sz);
857 }

◆ eor() [1/2]

void dart::compiler::Assembler::eor ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ eor() [2/2]

void dart::compiler::Assembler::eor ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 852 of file assembler_arm64.h.

852 {
853 EmitLogicalShiftOp(EOR, rd, rn, o, sz);
854 }

◆ eori()

void dart::compiler::Assembler::eori ( Register  rd,
Register  rn,
const Immediate imm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 816 of file assembler_arm64.h.

819 {
820 ASSERT(sz == kEightBytes || sz == kFourBytes);
822 Operand imm_op;
823 const bool immok = Operand::IsImmLogical(imm.value(), width, &imm_op);
824 ASSERT(immok);
825 EmitLogicalImmOp(EORI, rd, rn, imm_op, sz);
826 }

◆ eorw()

void dart::compiler::Assembler::eorw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 869 of file assembler_arm64.h.

869{ eor(rd, rn, o, kFourBytes); }
void eor(Register rd, Register rn, Operand o, Condition cond=AL)

◆ Exchange() [1/2]

void dart::compiler::Assembler::Exchange ( const Address mem1,
const Address mem2 
)
inline

Definition at line 722 of file assembler_x64.h.

722 {
723 movq(TMP, mem1);
724 xorq(TMP, mem2);
725 xorq(mem1, TMP);
726 xorq(mem2, TMP);
727 }
void movq(const Address &dst, XmmRegister src)

◆ Exchange() [2/2]

void dart::compiler::Assembler::Exchange ( Register  reg,
const Address mem 
)
inline

Definition at line 716 of file assembler_x64.h.

716 {
717 movq(TMP, mem);
718 movq(mem, reg);
719 movq(reg, TMP);
720 }

◆ ExitFullSafepoint() [1/5]

void dart::compiler::Assembler::ExitFullSafepoint ( bool  ignore_unwind_in_progress)

◆ ExitFullSafepoint() [2/5]

void dart::compiler::Assembler::ExitFullSafepoint ( Register  scratch,
bool  ignore_unwind_in_progress 
)

◆ ExitFullSafepoint() [3/5]

void dart::compiler::Assembler::ExitFullSafepoint ( Register  scratch,
bool  ignore_unwind_in_progress 
)

◆ ExitFullSafepoint() [4/5]

void dart::compiler::Assembler::ExitFullSafepoint ( Register  scratch,
bool  ignore_unwind_in_progress 
)

◆ ExitFullSafepoint() [5/5]

void dart::compiler::Assembler::ExitFullSafepoint ( Register  scratch0,
Register  scratch1,
bool  ignore_unwind_in_progress 
)

◆ ExtendAndSmiTagValue() [1/4]

void dart::compiler::Assembler::ExtendAndSmiTagValue ( Register  rd,
Register  rm,
OperandSize  sz,
Condition  cond 
)
inline

Definition at line 1273 of file assembler_arm.h.

1276 {
1277 ExtendValue(rd, rm, sz, cond);
1278 SmiTag(rd, cond);
1279 }
void SmiTag(Register reg, Condition cond)
void ExtendValue(Register rd, Register rm, OperandSize sz, Condition cond)

◆ ExtendAndSmiTagValue() [2/4]

void dart::compiler::Assembler::ExtendAndSmiTagValue ( Register  rd,
Register  rm,
OperandSize  sz = kFourBytes 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1280 of file assembler_arm.h.

1282 {
1283 ExtendAndSmiTagValue(rd, rm, sz, AL);
1284 }
void ExtendAndSmiTagValue(Register rd, Register rm, OperandSize sz, Condition cond)

◆ ExtendAndSmiTagValue() [3/4]

void dart::compiler::Assembler::ExtendAndSmiTagValue ( Register  rd,
Register  rn,
OperandSize  sz = kEightBytes 
)
overridevirtual

Reimplemented from dart::compiler::AssemblerBase.

◆ ExtendAndSmiTagValue() [4/4]

void dart::compiler::Assembler::ExtendAndSmiTagValue ( Register  rd,
Register  rn,
OperandSize  sz = kWordBytes 
)
overridevirtual

Reimplemented from dart::compiler::AssemblerBase.

◆ ExtendValue() [1/6]

void dart::compiler::Assembler::ExtendValue ( Register  dst,
Register  src,
OperandSize  sz 
)
overridevirtual

◆ ExtendValue() [2/6]

void dart::compiler::Assembler::ExtendValue ( Register  rd,
Register  rm,
OperandSize  sz 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1270 of file assembler_arm.h.

1270 {
1271 ExtendValue(rd, rm, sz, AL);
1272 }

◆ ExtendValue() [3/6]

void dart::compiler::Assembler::ExtendValue ( Register  rd,
Register  rm,
OperandSize  sz,
Condition  cond 
)

◆ ExtendValue() [4/6]

void dart::compiler::Assembler::ExtendValue ( Register  rd,
Register  rn,
OperandSize  sz 
)
overridevirtual

◆ ExtendValue() [5/6]

void dart::compiler::Assembler::ExtendValue ( Register  rd,
Register  rn,
OperandSize  sz 
)
overridevirtual

◆ ExtendValue() [6/6]

void dart::compiler::Assembler::ExtendValue ( Register  to,
Register  from,
OperandSize  sz 
)
overridevirtual

◆ ExtractClassIdFromTags() [1/4]

void dart::compiler::Assembler::ExtractClassIdFromTags ( Register  result,
Register  tags 
)

◆ ExtractClassIdFromTags() [2/4]

void dart::compiler::Assembler::ExtractClassIdFromTags ( Register  result,
Register  tags 
)

◆ ExtractClassIdFromTags() [3/4]

void dart::compiler::Assembler::ExtractClassIdFromTags ( Register  result,
Register  tags 
)

◆ ExtractClassIdFromTags() [4/4]

void dart::compiler::Assembler::ExtractClassIdFromTags ( Register  result,
Register  tags,
Condition  cond = AL 
)

◆ ExtractInstanceSizeFromTags() [1/4]

void dart::compiler::Assembler::ExtractInstanceSizeFromTags ( Register  result,
Register  tags 
)

◆ ExtractInstanceSizeFromTags() [2/4]

void dart::compiler::Assembler::ExtractInstanceSizeFromTags ( Register  result,
Register  tags 
)

◆ ExtractInstanceSizeFromTags() [3/4]

void dart::compiler::Assembler::ExtractInstanceSizeFromTags ( Register  result,
Register  tags 
)

◆ ExtractInstanceSizeFromTags() [4/4]

void dart::compiler::Assembler::ExtractInstanceSizeFromTags ( Register  result,
Register  tags 
)

◆ fabsd()

void dart::compiler::Assembler::fabsd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1343 of file assembler_arm64.h.

1343{ EmitFPOneSourceOp(FABSD, vd, vn); }

◆ faddd()

void dart::compiler::Assembler::faddd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1380 of file assembler_arm64.h.

1380 {
1381 EmitFPTwoSourceOp(FADDD, vd, vn, vm);
1382 }

◆ fcmpd()

void dart::compiler::Assembler::fcmpd ( VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1372 of file assembler_arm64.h.

1372{ EmitFPCompareOp(FCMPD, vn, vm); }

◆ fcmpdz()

void dart::compiler::Assembler::fcmpdz ( VRegister  vn)
inline

Definition at line 1373 of file assembler_arm64.h.

1373{ EmitFPCompareOp(FCMPZD, vn, V0); }

◆ fcos()

void dart::compiler::Assembler::fcos ( )

◆ fcvtds()

void dart::compiler::Assembler::fcvtds ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1347 of file assembler_arm64.h.

1347{ EmitFPOneSourceOp(FCVTDS, vd, vn); }

◆ fcvtmswd()

void dart::compiler::Assembler::fcvtmswd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1324 of file assembler_arm64.h.

1324 {
1325 ASSERT(rd != R31);
1326 ASSERT(rd != CSP);
1327 const Register crd = ConcreteRegister(rd);
1328 EmitFPIntCvtOp(FCVTMS_D, crd, static_cast<Register>(vn), kFourBytes);
1329 }
Register ConcreteRegister(LinkRegister)

◆ fcvtmsxd()

void dart::compiler::Assembler::fcvtmsxd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1318 of file assembler_arm64.h.

1318 {
1319 ASSERT(rd != R31);
1320 ASSERT(rd != CSP);
1321 const Register crd = ConcreteRegister(rd);
1322 EmitFPIntCvtOp(FCVTMS_D, crd, static_cast<Register>(vn));
1323 }

◆ fcvtpswd()

void dart::compiler::Assembler::fcvtpswd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1336 of file assembler_arm64.h.

1336 {
1337 ASSERT(rd != R31);
1338 ASSERT(rd != CSP);
1339 const Register crd = ConcreteRegister(rd);
1340 EmitFPIntCvtOp(FCVTPS_D, crd, static_cast<Register>(vn), kFourBytes);
1341 }

◆ fcvtpsxd()

void dart::compiler::Assembler::fcvtpsxd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1330 of file assembler_arm64.h.

1330 {
1331 ASSERT(rd != R31);
1332 ASSERT(rd != CSP);
1333 const Register crd = ConcreteRegister(rd);
1334 EmitFPIntCvtOp(FCVTPS_D, crd, static_cast<Register>(vn));
1335 }

◆ fcvtsd()

void dart::compiler::Assembler::fcvtsd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1346 of file assembler_arm64.h.

1346{ EmitFPOneSourceOp(FCVTSD, vd, vn); }

◆ fcvtzswd()

void dart::compiler::Assembler::fcvtzswd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1312 of file assembler_arm64.h.

1312 {
1313 ASSERT(rd != R31);
1314 ASSERT(rd != CSP);
1315 const Register crd = ConcreteRegister(rd);
1316 EmitFPIntCvtOp(FCVTZS_D, crd, static_cast<Register>(vn), kFourBytes);
1317 }

◆ fcvtzsxd()

void dart::compiler::Assembler::fcvtzsxd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1306 of file assembler_arm64.h.

1306 {
1307 ASSERT(rd != R31);
1308 ASSERT(rd != CSP);
1309 const Register crd = ConcreteRegister(rd);
1310 EmitFPIntCvtOp(FCVTZS_D, crd, static_cast<Register>(vn));
1311 }

◆ fdivd()

void dart::compiler::Assembler::fdivd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1377 of file assembler_arm64.h.

1377 {
1378 EmitFPTwoSourceOp(FDIVD, vd, vn, vm);
1379 }

◆ ffree() [1/2]

void dart::compiler::Assembler::ffree ( intptr_t  value)

◆ ffree() [2/2]

void dart::compiler::Assembler::ffree ( intptr_t  value)

◆ fildl()

void dart::compiler::Assembler::fildl ( const Address src)

◆ filds()

void dart::compiler::Assembler::filds ( const Address src)

◆ FinalizeHashForSize() [1/5]

void dart::compiler::Assembler::FinalizeHashForSize ( intptr_t  bit_size,
Register  dst,
Register  scratch = kNoRegister 
)
overridevirtual

◆ FinalizeHashForSize() [2/5]

void dart::compiler::Assembler::FinalizeHashForSize ( intptr_t  bit_size,
Register  dst,
Register  scratch = TMP 
)
overridevirtual

◆ FinalizeHashForSize() [3/5]

void dart::compiler::Assembler::FinalizeHashForSize ( intptr_t  bit_size,
Register  dst,
Register  scratch = TMP 
)
overridevirtual

◆ FinalizeHashForSize() [4/5]

void dart::compiler::Assembler::FinalizeHashForSize ( intptr_t  bit_size,
Register  dst,
Register  scratch = TMP 
)
overridevirtual

◆ FinalizeHashForSize() [5/5]

void dart::compiler::Assembler::FinalizeHashForSize ( intptr_t  bit_size,
Register  hash,
Register  scratch = TMP 
)
overridevirtual

◆ fincstp()

void dart::compiler::Assembler::fincstp ( )

◆ fistpl()

void dart::compiler::Assembler::fistpl ( const Address dst)

◆ fistps()

void dart::compiler::Assembler::fistps ( const Address dst)

◆ fldcw()

void dart::compiler::Assembler::fldcw ( const Address src)

◆ fldl() [1/2]

void dart::compiler::Assembler::fldl ( const Address src)

◆ fldl() [2/2]

void dart::compiler::Assembler::fldl ( const Address src)

◆ fldp()

void dart::compiler::Assembler::fldp ( VRegister  rt,
VRegister  rt2,
Address  a,
OperandSize  sz 
)
inline

Definition at line 1044 of file assembler_arm64.h.

1044 {
1045 ASSERT((a.type() == Address::PairOffset) ||
1046 (a.type() == Address::PairPostIndex) ||
1047 (a.type() == Address::PairPreIndex));
1048 EmitLoadStoreVRegPair(FLDP, rt, rt2, a, sz);
1049 }

◆ fldrd()

void dart::compiler::Assembler::fldrd ( VRegister  vt,
Address  a 
)
inline

Definition at line 1356 of file assembler_arm64.h.

1356 {
1357 ASSERT(a.type() != Address::PCOffset);
1358 EmitLoadStoreReg(FLDR, static_cast<Register>(vt), a, kDWord);
1359 }

◆ fldrq()

void dart::compiler::Assembler::fldrq ( VRegister  vt,
Address  a 
)
inline

Definition at line 1348 of file assembler_arm64.h.

1348 {
1349 ASSERT(a.type() != Address::PCOffset);
1350 EmitLoadStoreReg(FLDRQ, static_cast<Register>(vt), a, kQWord);
1351 }

◆ fldrs()

void dart::compiler::Assembler::fldrs ( VRegister  vt,
Address  a 
)
inline

Definition at line 1364 of file assembler_arm64.h.

1364 {
1365 ASSERT(a.type() != Address::PCOffset);
1366 EmitLoadStoreReg(FLDR, static_cast<Register>(vt), a, kSWord);
1367 }

◆ flds()

void dart::compiler::Assembler::flds ( const Address src)

◆ FloatNegate()

void dart::compiler::Assembler::FloatNegate ( XmmRegister  f)

◆ fmovdd()

void dart::compiler::Assembler::fmovdd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1342 of file assembler_arm64.h.

1342{ EmitFPOneSourceOp(FMOVDD, vd, vn); }

◆ fmovdi()

bool dart::compiler::Assembler::fmovdi ( VRegister  vd,
double  immd 
)
inline

Definition at line 1256 of file assembler_arm64.h.

1256 {
1257 int64_t imm64 = bit_cast<int64_t, double>(immd);
1258 const uint8_t bit7 = imm64 >> 63;
1259 const uint8_t bit6 = (~(imm64 >> 62)) & 0x1;
1260 const uint8_t bit54 = (imm64 >> 52) & 0x3;
1261 const uint8_t bit30 = (imm64 >> 48) & 0xf;
1262 const uint8_t imm8 = (bit7 << 7) | (bit6 << 6) | (bit54 << 4) | bit30;
1263 const int64_t expimm8 = Instr::VFPExpandImm(imm8);
1264 if (imm64 != expimm8) {
1265 return false;
1266 }
1267 EmitFPImm(FMOVDI, vd, imm8);
1268 return true;
1269 }
static int64_t VFPExpandImm(uint8_t imm8)

◆ fmovdr()

void dart::compiler::Assembler::fmovdr ( VRegister  vd,
Register  rn 
)
inline

Definition at line 1282 of file assembler_arm64.h.

1282 {
1283 ASSERT(rn != R31);
1284 ASSERT(rn != CSP);
1285 const Register crn = ConcreteRegister(rn);
1286 EmitFPIntCvtOp(FMOVDR, static_cast<Register>(vd), crn);
1287 }

◆ fmovrd()

void dart::compiler::Assembler::fmovrd ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1288 of file assembler_arm64.h.

1288 {
1289 ASSERT(rd != R31);
1290 ASSERT(rd != CSP);
1291 const Register crd = ConcreteRegister(rd);
1292 EmitFPIntCvtOp(FMOVRD, crd, static_cast<Register>(vn));
1293 }

◆ fmovrs()

void dart::compiler::Assembler::fmovrs ( Register  rd,
VRegister  vn 
)
inline

Definition at line 1276 of file assembler_arm64.h.

1276 {
1277 ASSERT(rd != R31);
1278 ASSERT(rd != CSP);
1279 const Register crd = ConcreteRegister(rd);
1280 EmitFPIntCvtOp(FMOVRS, crd, static_cast<Register>(vn), kFourBytes);
1281 }

◆ fmovsr()

void dart::compiler::Assembler::fmovsr ( VRegister  vd,
Register  rn 
)
inline

Definition at line 1270 of file assembler_arm64.h.

1270 {
1271 ASSERT(rn != R31);
1272 ASSERT(rn != CSP);
1273 const Register crn = ConcreteRegister(rn);
1274 EmitFPIntCvtOp(FMOVSR, static_cast<Register>(vd), crn, kFourBytes);
1275 }

◆ fmuld()

void dart::compiler::Assembler::fmuld ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1374 of file assembler_arm64.h.

1374 {
1375 EmitFPTwoSourceOp(FMULD, vd, vn, vm);
1376 }

◆ fnegd()

void dart::compiler::Assembler::fnegd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1344 of file assembler_arm64.h.

1344{ EmitFPOneSourceOp(FNEGD, vd, vn); }

◆ fnstcw()

void dart::compiler::Assembler::fnstcw ( const Address dst)

◆ fptan()

void dart::compiler::Assembler::fptan ( )

◆ fsin()

void dart::compiler::Assembler::fsin ( )

◆ fsincos()

void dart::compiler::Assembler::fsincos ( )

◆ fsqrtd()

void dart::compiler::Assembler::fsqrtd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1345 of file assembler_arm64.h.

1345{ EmitFPOneSourceOp(FSQRTD, vd, vn); }

◆ fstp()

void dart::compiler::Assembler::fstp ( VRegister  rt,
VRegister  rt2,
Address  a,
OperandSize  sz 
)
inline

Definition at line 1050 of file assembler_arm64.h.

1050 {
1051 ASSERT((a.type() == Address::PairOffset) ||
1052 (a.type() == Address::PairPostIndex) ||
1053 (a.type() == Address::PairPreIndex));
1054 EmitLoadStoreVRegPair(FSTP, rt, rt2, a, sz);
1055 }

◆ fstpl() [1/2]

void dart::compiler::Assembler::fstpl ( const Address dst)

◆ fstpl() [2/2]

void dart::compiler::Assembler::fstpl ( const Address dst)

◆ fstps()

void dart::compiler::Assembler::fstps ( const Address dst)

◆ fstrd()

void dart::compiler::Assembler::fstrd ( VRegister  vt,
Address  a 
)
inline

Definition at line 1360 of file assembler_arm64.h.

1360 {
1361 ASSERT(a.type() != Address::PCOffset);
1362 EmitLoadStoreReg(FSTR, static_cast<Register>(vt), a, kDWord);
1363 }

◆ fstrq()

void dart::compiler::Assembler::fstrq ( VRegister  vt,
Address  a 
)
inline

Definition at line 1352 of file assembler_arm64.h.

1352 {
1353 ASSERT(a.type() != Address::PCOffset);
1354 EmitLoadStoreReg(FSTRQ, static_cast<Register>(vt), a, kQWord);
1355 }

◆ fstrs()

void dart::compiler::Assembler::fstrs ( VRegister  vt,
Address  a 
)
inline

Definition at line 1368 of file assembler_arm64.h.

1368 {
1369 ASSERT(a.type() != Address::PCOffset);
1370 EmitLoadStoreReg(FSTR, static_cast<Register>(vt), a, kSWord);
1371 }

◆ fsubd()

void dart::compiler::Assembler::fsubd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1383 of file assembler_arm64.h.

1383 {
1384 EmitFPTwoSourceOp(FSUBD, vd, vn, vm);
1385 }

◆ GenerateCbzTbz()

void dart::compiler::Assembler::GenerateCbzTbz ( Register  rn,
Condition  cond,
Label label,
OperandSize  sz = kEightBytes 
)

◆ GenerateUnRelocatedPcRelativeCall() [1/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeCall ( Condition  cond = AL,
intptr_t  offset_into_target = 0 
)

◆ GenerateUnRelocatedPcRelativeCall() [2/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeCall ( intptr_t  offset_into_target = 0)

◆ GenerateUnRelocatedPcRelativeCall() [3/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeCall ( intptr_t  offset_into_target = 0)

◆ GenerateUnRelocatedPcRelativeCall() [4/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeCall ( intptr_t  offset_into_target = 0)

◆ GenerateUnRelocatedPcRelativeTailCall() [1/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeTailCall ( Condition  cond = AL,
intptr_t  offset_into_target = 0 
)

◆ GenerateUnRelocatedPcRelativeTailCall() [2/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeTailCall ( intptr_t  offset_into_target = 0)

◆ GenerateUnRelocatedPcRelativeTailCall() [3/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeTailCall ( intptr_t  offset_into_target = 0)

◆ GenerateUnRelocatedPcRelativeTailCall() [4/4]

void dart::compiler::Assembler::GenerateUnRelocatedPcRelativeTailCall ( intptr_t  offset_into_target = 0)

◆ GetSelfHandle()

Object & dart::compiler::Assembler::GetSelfHandle ( ) const
inline

Definition at line 1173 of file assembler_ia32.h.

1173{ return code_; }

◆ HeapDataOffset() [1/2]

static int32_t dart::compiler::Assembler::HeapDataOffset ( bool  is_external,
intptr_t  cid 
)
inlinestatic

Definition at line 2272 of file assembler_arm64.h.

2272 {
2273 return is_external
2274 ? 0
2276 }
static word DataOffsetFor(intptr_t cid)
Definition: runtime_api.cc:555
const intptr_t cid
@ kHeapObjectTag

◆ HeapDataOffset() [2/2]

static int32_t dart::compiler::Assembler::HeapDataOffset ( bool  is_external,
intptr_t  cid 
)
inlinestatic

Definition at line 1473 of file assembler_riscv.h.

1473 {
1474 return is_external
1475 ? 0
1477 }

◆ hlt()

void dart::compiler::Assembler::hlt ( )

◆ idivl()

void dart::compiler::Assembler::idivl ( Register  reg)

◆ imull() [1/6]

void dart::compiler::Assembler::imull ( const Address address)

◆ imull() [2/6]

void dart::compiler::Assembler::imull ( Register  dst,
Register  src 
)

◆ imull() [3/6]

void dart::compiler::Assembler::imull ( Register  reg)

◆ imull() [4/6]

void dart::compiler::Assembler::imull ( Register  reg,
const Address address 
)

◆ imull() [5/6]

void dart::compiler::Assembler::imull ( Register  reg,
const Immediate imm 
)

◆ imull() [6/6]

void dart::compiler::Assembler::imull ( Register  reg,
const Immediate imm 
)

◆ imulq()

void dart::compiler::Assembler::imulq ( Register  dst,
const Immediate imm 
)

◆ incl() [1/2]

void dart::compiler::Assembler::incl ( const Address address)

◆ incl() [2/2]

void dart::compiler::Assembler::incl ( Register  reg)

◆ IncrementCompressedSmiField()

void dart::compiler::Assembler::IncrementCompressedSmiField ( const Address dest,
int64_t  increment 
)

◆ IncrementSmiField()

void dart::compiler::Assembler::IncrementSmiField ( const Address dest,
int32_t  increment 
)

◆ InitializeFieldsNoBarrier()

void dart::compiler::Assembler::InitializeFieldsNoBarrier ( Register  object,
Register  begin,
Register  end,
Register  value_even,
Register  value_odd 
)

◆ InitializeFieldsNoBarrierUnrolled()

void dart::compiler::Assembler::InitializeFieldsNoBarrierUnrolled ( Register  object,
Register  base,
intptr_t  begin_offset,
intptr_t  end_offset,
Register  value_even,
Register  value_odd 
)

◆ int3()

void dart::compiler::Assembler::int3 ( )

◆ IntegerDivide()

void dart::compiler::Assembler::IntegerDivide ( Register  result,
Register  left,
Register  right,
DRegister  tmpl,
DRegister  tmpr 
)

◆ IsSafe() [1/5]

static bool dart::compiler::Assembler::IsSafe ( const Object object)
inlinestatic

Definition at line 1612 of file assembler_arm.h.

1612{ return true; }

◆ IsSafe() [2/5]

static bool dart::compiler::Assembler::IsSafe ( const Object object)
inlinestatic

Definition at line 610 of file assembler_arm64.h.

610{ return true; }

◆ IsSafe() [3/5]

static bool dart::compiler::Assembler::IsSafe ( const Object object)
inlinestatic

Definition at line 1169 of file assembler_ia32.h.

1169 {
1170 return !target::IsSmi(object) || IsSafeSmi(object);
1171 }
static bool IsSafeSmi(const Object &object)
bool IsSmi(int64_t v)
Definition: runtime_api.cc:31

◆ IsSafe() [4/5]

static bool dart::compiler::Assembler::IsSafe ( const Object object)
inlinestatic

Definition at line 930 of file assembler_riscv.h.

930{ return true; }

◆ IsSafe() [5/5]

static bool dart::compiler::Assembler::IsSafe ( const Object object)
inlinestatic

Definition at line 1354 of file assembler_x64.h.

1354{ return true; }

◆ IsSafeSmi() [1/5]

static bool dart::compiler::Assembler::IsSafeSmi ( const Object object)
inlinestatic

Definition at line 1613 of file assembler_arm.h.

1613{ return target::IsSmi(object); }

◆ IsSafeSmi() [2/5]

static bool dart::compiler::Assembler::IsSafeSmi ( const Object object)
inlinestatic

Definition at line 611 of file assembler_arm64.h.

611{ return target::IsSmi(object); }

◆ IsSafeSmi() [3/5]

static bool dart::compiler::Assembler::IsSafeSmi ( const Object object)
inlinestatic

Definition at line 1158 of file assembler_ia32.h.

1158 {
1159 if (!target::IsSmi(object)) {
1160 return false;
1161 }
1162 int64_t value;
1163 if (HasIntegerValue(object, &value)) {
1164 return Utils::IsInt(16, value) || Utils::IsPowerOfTwo(value) ||
1166 }
1167 return false;
1168 }
static constexpr bool IsPowerOfTwo(T x)
Definition: utils.h:76
bool HasIntegerValue(const dart::Object &object, int64_t *value)
Definition: runtime_api.cc:239

◆ IsSafeSmi() [4/5]

static bool dart::compiler::Assembler::IsSafeSmi ( const Object object)
inlinestatic

Definition at line 931 of file assembler_riscv.h.

931{ return target::IsSmi(object); }

◆ IsSafeSmi() [5/5]

static bool dart::compiler::Assembler::IsSafeSmi ( const Object object)
inlinestatic

Definition at line 1355 of file assembler_x64.h.

1355{ return target::IsSmi(object); }

◆ J() [1/2]

void dart::compiler::Assembler::J ( Condition  condition,
const Code code 
)

◆ J() [2/2]

void dart::compiler::Assembler::J ( Condition  condition,
const Code code,
Register  pp 
)

◆ j() [1/3]

void dart::compiler::Assembler::j ( Condition  condition,
const ExternalLabel label 
)

◆ j() [2/3]

void dart::compiler::Assembler::j ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)

◆ j() [3/3]

void dart::compiler::Assembler::j ( Condition  condition,
Label label,
JumpDistance  distance = kFarJump 
)

◆ jmp() [1/9]

void dart::compiler::Assembler::jmp ( const Address address)

◆ jmp() [2/9]

void dart::compiler::Assembler::jmp ( const Address address)
inline

Definition at line 704 of file assembler_x64.h.

704{ EmitUnaryL(address, 0xFF, 4); }

◆ Jmp() [1/2]

void dart::compiler::Assembler::Jmp ( const Code code)

◆ jmp() [3/9]

void dart::compiler::Assembler::jmp ( const Code code)

◆ Jmp() [2/2]

void dart::compiler::Assembler::Jmp ( const Code code,
Register  pp = PP 
)

◆ jmp() [4/9]

void dart::compiler::Assembler::jmp ( const ExternalLabel label)

◆ jmp() [5/9]

void dart::compiler::Assembler::jmp ( const ExternalLabel label)

◆ jmp() [6/9]

void dart::compiler::Assembler::jmp ( Label label,
JumpDistance  distance = kFarJump 
)

◆ jmp() [7/9]

void dart::compiler::Assembler::jmp ( Label label,
JumpDistance  distance = kFarJump 
)

◆ jmp() [8/9]

void dart::compiler::Assembler::jmp ( Register  reg)

◆ jmp() [9/9]

void dart::compiler::Assembler::jmp ( Register  reg)
inline

Definition at line 703 of file assembler_x64.h.

703{ EmitUnaryL(reg, 0xFF, 4); }

◆ JmpPatchable()

void dart::compiler::Assembler::JmpPatchable ( const Code code,
Register  pp 
)

◆ Jump() [1/14]

void dart::compiler::Assembler::Jump ( const Address address)
inline

Definition at line 424 of file assembler_arm.h.

424{ Branch(address); }
void Branch(const Address &address, Condition cond=AL)

◆ Jump() [2/14]

void dart::compiler::Assembler::Jump ( const Address address)
inline

Definition at line 513 of file assembler_arm64.h.

513 {
514 ldr(TMP, address);
515 br(TMP);
516 }

◆ Jump() [3/14]

void dart::compiler::Assembler::Jump ( const Address address)

◆ Jump() [4/14]

void dart::compiler::Assembler::Jump ( const Address address)
inline

Definition at line 1041 of file assembler_x64.h.

1041{ jmp(address); }
void jmp(Register reg)

◆ Jump() [5/14]

void dart::compiler::Assembler::Jump ( Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 420 of file assembler_arm.h.

420{ b(label); }

◆ Jump() [6/14]

void dart::compiler::Assembler::Jump ( Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 509 of file assembler_arm64.h.

509{ b(label); }

◆ Jump() [7/14]

void dart::compiler::Assembler::Jump ( Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1033 of file assembler_ia32.h.

1033 {
1034 jmp(label, distance);
1035 }

◆ Jump() [8/14]

void dart::compiler::Assembler::Jump ( Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 874 of file assembler_riscv.h.

874 {
875 j(label, distance);
876 }

◆ Jump() [9/14]

void dart::compiler::Assembler::Jump ( Label label,
JumpDistance  distance = kFarJump 
)
inline

Definition at line 1035 of file assembler_x64.h.

1035 {
1036 jmp(label, distance);
1037 }

◆ Jump() [10/14]

void dart::compiler::Assembler::Jump ( Register  target)
inline

Definition at line 422 of file assembler_arm.h.

422{ bx(target); }
void bx(Register rm, Condition cond=AL)

◆ Jump() [11/14]

void dart::compiler::Assembler::Jump ( Register  target)
inline

Definition at line 511 of file assembler_arm64.h.

511{ br(target); }

◆ Jump() [12/14]

void dart::compiler::Assembler::Jump ( Register  target)
inline

Definition at line 1037 of file assembler_ia32.h.

1037{ jmp(target); }

◆ Jump() [13/14]

void dart::compiler::Assembler::Jump ( Register  target)
inline

Definition at line 878 of file assembler_riscv.h.

878{ jr(target); }
void jr(Register rs1, intptr_t offset=0)

◆ Jump() [14/14]

void dart::compiler::Assembler::Jump ( Register  target)
inline

Definition at line 1039 of file assembler_x64.h.

1039{ jmp(target); }

◆ JumpAndLink()

void dart::compiler::Assembler::JumpAndLink ( const Code code,
ObjectPoolBuilderEntry::Patchability  patchable = ObjectPoolBuilderEntry::kNotPatchable,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ JumpAndLinkPatchable()

void dart::compiler::Assembler::JumpAndLinkPatchable ( const Code code,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)
inline

Definition at line 1010 of file assembler_riscv.h.

1014 {
1016 snapshot_behavior);
1017 }

◆ JumpAndLinkWithEquivalence()

void dart::compiler::Assembler::JumpAndLinkWithEquivalence ( const Code code,
const Object equivalence,
CodeEntryKind  entry_kind = CodeEntryKind::kNormal 
)

◆ ldar()

void dart::compiler::Assembler::ldar ( Register  rt,
Register  rn,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1078 of file assembler_arm64.h.

1078 {
1079 EmitLoadStoreExclusive(LDAR, R31, rn, rt, sz);
1080 }

◆ ldclr()

void dart::compiler::Assembler::ldclr ( Register  rs,
Register  rt,
Register  rn,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1086 of file assembler_arm64.h.

1089 {
1090 // rs = value in
1091 // rt = value out
1092 // rn = address
1093 EmitAtomicMemory(LDCLR, rs, rn, rt, sz);
1094 }

◆ ldm()

void dart::compiler::Assembler::ldm ( BlockAddressMode  am,
Register  base,
RegList  regs,
Condition  cond = AL 
)

◆ ldp()

void dart::compiler::Assembler::ldp ( Register  rt,
Register  rt2,
Address  a,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1030 of file assembler_arm64.h.

1030 {
1031 ASSERT((rt != CSP) && (rt != R31));
1032 ASSERT((a.type() == Address::PairOffset) ||
1033 (a.type() == Address::PairPostIndex) ||
1034 (a.type() == Address::PairPreIndex));
1035 EmitLoadStoreRegPair(LDP, rt, rt2, a, sz);
1036 }

◆ ldr() [1/2]

void dart::compiler::Assembler::ldr ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ ldr() [2/2]

void dart::compiler::Assembler::ldr ( Register  rt,
Address  a,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1006 of file assembler_arm64.h.

1006 {
1007 ASSERT((rt != CSP) && (rt != R31));
1008 ASSERT((a.type() != Address::PairOffset) &&
1009 (a.type() != Address::PairPostIndex) &&
1010 (a.type() != Address::PairPreIndex));
1011 if (a.type() == Address::PCOffset) {
1012 ASSERT(sz == kEightBytes);
1013 EmitLoadRegLiteral(LDRpc, rt, a, sz);
1014 } else {
1015 if (IsSignedOperand(sz)) {
1016 EmitLoadStoreReg(LDRS, rt, a, sz);
1017 } else {
1018 EmitLoadStoreReg(LDR, rt, a, sz);
1019 }
1020 }
1021 }
static bool IsSignedOperand(OperandSize os)

◆ ldrb()

void dart::compiler::Assembler::ldrb ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ ldrd()

void dart::compiler::Assembler::ldrd ( Register  rd,
Register  rd2,
Register  rn,
int32_t  offset,
Condition  cond = AL 
)

◆ ldrex()

void dart::compiler::Assembler::ldrex ( Register  rd,
Register  rn,
Condition  cond = AL 
)

◆ ldrh()

void dart::compiler::Assembler::ldrh ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ ldrsb()

void dart::compiler::Assembler::ldrsb ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ ldrsh()

void dart::compiler::Assembler::ldrsh ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ ldset()

void dart::compiler::Assembler::ldset ( Register  rs,
Register  rt,
Register  rn,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1095 of file assembler_arm64.h.

1098 {
1099 // rs = value in
1100 // rt = value out
1101 // rn = address
1102 EmitAtomicMemory(LDSET, rs, rn, rt, sz);
1103 }

◆ ldxr()

void dart::compiler::Assembler::ldxr ( Register  rt,
Register  rn,
OperandSize  size = kEightBytes 
)
inline

Definition at line 1057 of file assembler_arm64.h.

1057 {
1058 // rt = value
1059 // rn = address
1060 EmitLoadStoreExclusive(LDXR, R31, rn, rt, size);
1061 }

◆ leal()

void dart::compiler::Assembler::leal ( Register  dst,
const Address src 
)

◆ leave()

void dart::compiler::Assembler::leave ( )

◆ LeaveCFrame() [1/5]

void dart::compiler::Assembler::LeaveCFrame ( )

◆ LeaveCFrame() [2/5]

void dart::compiler::Assembler::LeaveCFrame ( )

◆ LeaveCFrame() [3/5]

void dart::compiler::Assembler::LeaveCFrame ( )

◆ LeaveCFrame() [4/5]

void dart::compiler::Assembler::LeaveCFrame ( )

◆ LeaveCFrame() [5/5]

void dart::compiler::Assembler::LeaveCFrame ( )

◆ LeaveDartFrame() [1/6]

void dart::compiler::Assembler::LeaveDartFrame ( )

◆ LeaveDartFrame() [2/6]

void dart::compiler::Assembler::LeaveDartFrame ( )

◆ LeaveDartFrame() [3/6]

void dart::compiler::Assembler::LeaveDartFrame ( )

◆ LeaveDartFrame() [4/6]

void dart::compiler::Assembler::LeaveDartFrame ( )

◆ LeaveDartFrame() [5/6]

void dart::compiler::Assembler::LeaveDartFrame ( )

◆ LeaveDartFrame() [6/6]

void dart::compiler::Assembler::LeaveDartFrame ( intptr_t  fp_sp_dist)

◆ LeaveDartFrameAndReturn()

void dart::compiler::Assembler::LeaveDartFrameAndReturn ( )

◆ LeaveFrame() [1/5]

void dart::compiler::Assembler::LeaveFrame ( )

◆ LeaveFrame() [2/5]

void dart::compiler::Assembler::LeaveFrame ( )

◆ LeaveFrame() [3/5]

void dart::compiler::Assembler::LeaveFrame ( )

◆ LeaveFrame() [4/5]

void dart::compiler::Assembler::LeaveFrame ( )

◆ LeaveFrame() [5/5]

void dart::compiler::Assembler::LeaveFrame ( RegList  regs,
bool  allow_pop_pc = false 
)

◆ LeaveStubFrame() [1/5]

void dart::compiler::Assembler::LeaveStubFrame ( )

◆ LeaveStubFrame() [2/5]

void dart::compiler::Assembler::LeaveStubFrame ( )

◆ LeaveStubFrame() [3/5]

void dart::compiler::Assembler::LeaveStubFrame ( )

◆ LeaveStubFrame() [4/5]

void dart::compiler::Assembler::LeaveStubFrame ( )
inline

Definition at line 1331 of file assembler_riscv.h.

◆ LeaveStubFrame() [5/5]

void dart::compiler::Assembler::LeaveStubFrame ( )

◆ Load() [1/6]

void dart::compiler::Assembler::Load ( Register  dest,
const Address address,
OperandSize  sz = kEightBytes 
)
overridevirtual

◆ Load() [2/6]

void dart::compiler::Assembler::Load ( Register  dest,
const Address address,
OperandSize  sz = kWordBytes 
)
overridevirtual

◆ Load() [3/6]

void dart::compiler::Assembler::Load ( Register  dst,
const Address address,
OperandSize  sz = kEightBytes 
)
overridevirtual

◆ Load() [4/6]

void dart::compiler::Assembler::Load ( Register  dst,
const Address address,
OperandSize  sz = kFourBytes 
)
overridevirtual

◆ Load() [5/6]

void dart::compiler::Assembler::Load ( Register  reg,
const Address address,
OperandSize  type,
Condition  cond 
)

◆ Load() [6/6]

void dart::compiler::Assembler::Load ( Register  reg,
const Address address,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1075 of file assembler_arm.h.

1077 {
1078 Load(reg, address, type, AL);
1079 }
GLenum type

◆ LoadAcquire() [1/5]

void dart::compiler::Assembler::LoadAcquire ( Register  dst,
const Address address,
OperandSize  size = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 528 of file assembler_arm64.h.

530 {
531 // ldar does not feature an address operand.
532 ASSERT(address.type() == Address::AddressType::Offset);
533 Register src = address.base();
534 if (address.offset() != 0) {
535 AddImmediate(TMP2, src, address.offset());
536 src = TMP2;
537 }
538 ldar(dst, src, size);
539 if (FLAG_target_thread_sanitizer) {
541 }
542 }
void TsanLoadAcquire(Register addr)
void ldar(Register rt, Register rn, OperandSize sz=kEightBytes)
const Register TMP2

◆ LoadAcquire() [2/5]

void dart::compiler::Assembler::LoadAcquire ( Register  dst,
const Address address,
OperandSize  size = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1113 of file assembler_x64.h.

1115 {
1116 // On intel loads have load-acquire behavior (i.e. loads are not re-ordered
1117 // with other loads).
1118 Load(dst, address, size);
1119 if (FLAG_target_thread_sanitizer) {
1120 TsanLoadAcquire(address);
1121 }
1122 }

◆ LoadAcquire() [3/5]

void dart::compiler::Assembler::LoadAcquire ( Register  dst,
const Address address,
OperandSize  size = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 432 of file assembler_arm.h.

434 {
435 Load(dst, address, size);
436 dmb();
437 }

◆ LoadAcquire() [4/5]

void dart::compiler::Assembler::LoadAcquire ( Register  dst,
const Address address,
OperandSize  size = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 671 of file assembler_ia32.h.

673 {
674 // On intel loads have load-acquire behavior (i.e. loads are not re-ordered
675 // with other loads).
676 Load(dst, address, size);
677 if (FLAG_target_thread_sanitizer) {
678 FATAL("No support for TSAN on IA32.");
679 }
680 }
#define FATAL(error)

◆ LoadAcquire() [5/5]

void dart::compiler::Assembler::LoadAcquire ( Register  dst,
const Address address,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ LoadAllocationTracingStateAddress() [1/2]

void dart::compiler::Assembler::LoadAllocationTracingStateAddress ( Register  dest,
intptr_t  cid 
)

◆ LoadAllocationTracingStateAddress() [2/2]

void dart::compiler::Assembler::LoadAllocationTracingStateAddress ( Register  dest,
Register  cid 
)

◆ LoadClassById() [1/5]

void dart::compiler::Assembler::LoadClassById ( Register  result,
Register  class_id 
)

◆ LoadClassById() [2/5]

void dart::compiler::Assembler::LoadClassById ( Register  result,
Register  class_id 
)

◆ LoadClassById() [3/5]

void dart::compiler::Assembler::LoadClassById ( Register  result,
Register  class_id 
)

◆ LoadClassById() [4/5]

void dart::compiler::Assembler::LoadClassById ( Register  result,
Register  class_id 
)

◆ LoadClassById() [5/5]

void dart::compiler::Assembler::LoadClassById ( Register  result,
Register  class_id 
)

◆ LoadClassId() [1/5]

void dart::compiler::Assembler::LoadClassId ( Register  result,
Register  object 
)

◆ LoadClassId() [2/5]

void dart::compiler::Assembler::LoadClassId ( Register  result,
Register  object 
)

◆ LoadClassId() [3/5]

void dart::compiler::Assembler::LoadClassId ( Register  result,
Register  object 
)

◆ LoadClassId() [4/5]

void dart::compiler::Assembler::LoadClassId ( Register  result,
Register  object 
)

◆ LoadClassId() [5/5]

void dart::compiler::Assembler::LoadClassId ( Register  result,
Register  object,
Condition  cond = AL 
)

◆ LoadClassIdMayBeSmi() [1/5]

void dart::compiler::Assembler::LoadClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadClassIdMayBeSmi() [2/5]

void dart::compiler::Assembler::LoadClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadClassIdMayBeSmi() [3/5]

void dart::compiler::Assembler::LoadClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadClassIdMayBeSmi() [4/5]

void dart::compiler::Assembler::LoadClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadClassIdMayBeSmi() [5/5]

void dart::compiler::Assembler::LoadClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadCompressedMemoryValue()

void dart::compiler::Assembler::LoadCompressedMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1076 of file assembler_x64.h.

1076 {
1077 OBJ(mov)(dst, Address(base, offset));
1078 }
void mov(Register rd, Operand o, Condition cond=AL)

◆ LoadDecodableImmediate()

void dart::compiler::Assembler::LoadDecodableImmediate ( Register  rd,
int32_t  value,
Condition  cond = AL 
)

◆ LoadDFieldFromOffset() [1/2]

void dart::compiler::Assembler::LoadDFieldFromOffset ( FRegister  dest,
Register  base,
int32_t  offset 
)
inline

Definition at line 1131 of file assembler_riscv.h.

1131 {
1133 }
void LoadDFromOffset(DRegister reg, Register base, int32_t offset, Condition cond=AL)

◆ LoadDFieldFromOffset() [2/2]

void dart::compiler::Assembler::LoadDFieldFromOffset ( VRegister  dest,
Register  base,
int32_t  offset 
)
inline

Definition at line 1886 of file assembler_arm64.h.

1886 {
1888 }

◆ LoadDFromOffset() [1/3]

void dart::compiler::Assembler::LoadDFromOffset ( DRegister  reg,
Register  base,
int32_t  offset,
Condition  cond = AL 
)

◆ LoadDFromOffset() [2/3]

void dart::compiler::Assembler::LoadDFromOffset ( FRegister  dest,
Register  base,
int32_t  offset 
)

◆ LoadDFromOffset() [3/3]

void dart::compiler::Assembler::LoadDFromOffset ( VRegister  dest,
Register  base,
int32_t  offset 
)

◆ LoadDImmediate() [1/5]

void dart::compiler::Assembler::LoadDImmediate ( DRegister  dd,
double  value,
Register  scratch,
Condition  cond = AL 
)

◆ LoadDImmediate() [2/5]

void dart::compiler::Assembler::LoadDImmediate ( FpuRegister  dst,
double  immediate 
)

◆ LoadDImmediate() [3/5]

void dart::compiler::Assembler::LoadDImmediate ( FRegister  reg,
double  immd 
)

◆ LoadDImmediate() [4/5]

void dart::compiler::Assembler::LoadDImmediate ( VRegister  reg,
double  immd 
)

◆ LoadDImmediate() [5/5]

void dart::compiler::Assembler::LoadDImmediate ( XmmRegister  dst,
double  value 
)

◆ LoadDispatchTable()

void dart::compiler::Assembler::LoadDispatchTable ( Register  dst)

◆ LoadDoubleWordFromPoolIndex()

void dart::compiler::Assembler::LoadDoubleWordFromPoolIndex ( Register  lower,
Register  upper,
intptr_t  index 
)

◆ LoadElementAddressForIntIndex()

void dart::compiler::Assembler::LoadElementAddressForIntIndex ( Register  address,
bool  is_load,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
Register  array,
intptr_t  index 
)

◆ LoadElementAddressForRegIndex()

void dart::compiler::Assembler::LoadElementAddressForRegIndex ( Register  address,
bool  is_load,
bool  is_external,
intptr_t  cid,
intptr_t  index_scale,
bool  index_unboxed,
Register  array,
Register  index 
)

◆ LoadFieldAddressForOffset() [1/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1514 of file assembler_arm.h.

1516 {
1518 }
VkInstance instance
Definition: main.cc:48

◆ LoadFieldAddressForOffset() [2/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 2264 of file assembler_arm64.h.

2266 {
2268 }

◆ LoadFieldAddressForOffset() [3/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 974 of file assembler_ia32.h.

976 {
977 leal(address, FieldAddress(instance, offset));
978 }

◆ LoadFieldAddressForOffset() [4/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1465 of file assembler_riscv.h.

1467 {
1469 }

◆ LoadFieldAddressForOffset() [5/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1344 of file assembler_x64.h.

1346 {
1347 leaq(address, FieldAddress(instance, offset));
1348 }

◆ LoadFieldAddressForRegOffset() [1/5]

void dart::compiler::Assembler::LoadFieldAddressForRegOffset ( Register  address,
Register  instance,
Register  offset_in_words_as_smi 
)
overridevirtual

◆ LoadFieldAddressForRegOffset() [2/5]

void dart::compiler::Assembler::LoadFieldAddressForRegOffset ( Register  address,
Register  instance,
Register  offset_in_words_as_smi 
)
overridevirtual

◆ LoadFieldAddressForRegOffset() [3/5]

void dart::compiler::Assembler::LoadFieldAddressForRegOffset ( Register  address,
Register  instance,
Register  offset_in_words_as_smi 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 967 of file assembler_ia32.h.

969 {
970 static_assert(kSmiTagShift == 1, "adjust scale factor");
971 leal(address, FieldAddress(instance, offset_in_words_as_smi, TIMES_2, 0));
972 }
@ kSmiTagShift

◆ LoadFieldAddressForRegOffset() [4/5]

void dart::compiler::Assembler::LoadFieldAddressForRegOffset ( Register  address,
Register  instance,
Register  offset_in_words_as_smi 
)
overridevirtual

◆ LoadFieldAddressForRegOffset() [5/5]

void dart::compiler::Assembler::LoadFieldAddressForRegOffset ( Register  address,
Register  instance,
Register  offset_in_words_as_smi 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1326 of file assembler_x64.h.

1328 {
1329 static_assert(kSmiTagShift == 1, "adjust scale factor");
1330 leaq(address, FieldAddress(instance, offset_in_words_as_smi, TIMES_4, 0));
1331 }

◆ LoadFieldFromOffset() [1/2]

void dart::compiler::Assembler::LoadFieldFromOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type,
Condition  cond 
)
inline

Definition at line 1099 of file assembler_arm.h.

1103 {
1104 Load(reg, FieldAddress(base, offset), type, cond);
1105 }

◆ LoadFieldFromOffset() [2/2]

void dart::compiler::Assembler::LoadFieldFromOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1093 of file assembler_arm.h.

1096 {
1098 }
void LoadFieldFromOffset(Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override

◆ LoadFromOffset() [1/2]

void dart::compiler::Assembler::LoadFromOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type,
Condition  cond 
)
inline

Definition at line 1086 of file assembler_arm.h.

1090 {
1091 Load(reg, Address(base, offset), type, cond);
1092 }

◆ LoadFromOffset() [2/2]

void dart::compiler::Assembler::LoadFromOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1080 of file assembler_arm.h.

1083 {
1084 LoadFromOffset(reg, base, offset, type, AL);
1085 }
void LoadFromOffset(Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override

◆ LoadFromStack() [1/5]

void dart::compiler::Assembler::LoadFromStack ( Register  dst,
intptr_t  depth 
)

◆ LoadFromStack() [2/5]

void dart::compiler::Assembler::LoadFromStack ( Register  dst,
intptr_t  depth 
)

◆ LoadFromStack() [3/5]

void dart::compiler::Assembler::LoadFromStack ( Register  dst,
intptr_t  depth 
)

◆ LoadFromStack() [4/5]

void dart::compiler::Assembler::LoadFromStack ( Register  dst,
intptr_t  depth 
)

◆ LoadFromStack() [5/5]

void dart::compiler::Assembler::LoadFromStack ( Register  dst,
intptr_t  depth 
)

◆ LoadHalfWordUnaligned()

void dart::compiler::Assembler::LoadHalfWordUnaligned ( Register  dst,
Register  addr,
Register  tmp 
)

◆ LoadHalfWordUnsignedUnaligned()

void dart::compiler::Assembler::LoadHalfWordUnsignedUnaligned ( Register  dst,
Register  addr,
Register  tmp 
)

◆ LoadImmediate() [1/10]

void dart::compiler::Assembler::LoadImmediate ( Register  rd,
Immediate  value,
Condition  cond = AL 
)

◆ LoadImmediate() [2/10]

void dart::compiler::Assembler::LoadImmediate ( Register  rd,
int32_t  value 
)
inlineoverride

Definition at line 942 of file assembler_arm.h.

942 {
943 LoadImmediate(rd, value, AL);
944 }
void LoadImmediate(Register rd, Immediate value, Condition cond=AL)

◆ LoadImmediate() [3/10]

void dart::compiler::Assembler::LoadImmediate ( Register  rd,
int32_t  value,
Condition  cond 
)

◆ LoadImmediate() [4/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
const Immediate imm 
)

◆ LoadImmediate() [5/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
Immediate  imm 
)
inline

Definition at line 1994 of file assembler_arm64.h.

1994 {
1995 LoadImmediate(reg, imm.value());
1996 }

◆ LoadImmediate() [6/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
Immediate  immediate 
)
inline

Definition at line 781 of file assembler_ia32.h.

781 {
782 LoadImmediate(reg, immediate.value());
783 }

◆ LoadImmediate() [7/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
int32_t  immediate 
)
inlineoverride

Definition at line 773 of file assembler_ia32.h.

773 {
774 if (immediate == 0) {
775 xorl(reg, reg);
776 } else {
777 movl(reg, Immediate(immediate));
778 }
779 }
void movl(Register dst, const Immediate &src)

◆ LoadImmediate() [8/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
int64_t  imm 
)
override

◆ LoadImmediate() [9/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
int64_t  immediate 
)
inlineoverride

Definition at line 813 of file assembler_x64.h.

813 {
814 LoadImmediate(reg, Immediate(immediate));
815 }

◆ LoadImmediate() [10/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
intx_t  imm 
)
override

◆ LoadIndexedPayload() [1/5]

void dart::compiler::Assembler::LoadIndexedPayload ( Register  dest,
Register  base,
int32_t  payload_offset,
Register  index,
ScaleFactor  scale,
OperandSize  sz = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1866 of file assembler_arm64.h.

1871 {
1872 add(dest, base, Operand(index, LSL, scale));
1873 LoadFromOffset(dest, dest, payload_offset - kHeapObjectTag, sz);
1874 }

◆ LoadIndexedPayload() [2/5]

void dart::compiler::Assembler::LoadIndexedPayload ( Register  dest,
Register  base,
int32_t  payload_offset,
Register  index,
ScaleFactor  scale,
OperandSize  sz = kWordBytes 
)
overridevirtual

◆ LoadIndexedPayload() [3/5]

void dart::compiler::Assembler::LoadIndexedPayload ( Register  dst,
Register  base,
int32_t  payload_offset,
Register  index,
ScaleFactor  scale,
OperandSize  sz = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1047 of file assembler_x64.h.

1052 {
1053 Load(dst, FieldAddress(base, index, scale, payload_offset), sz);
1054 }

◆ LoadIndexedPayload() [4/5]

void dart::compiler::Assembler::LoadIndexedPayload ( Register  dst,
Register  base,
int32_t  payload_offset,
Register  index,
ScaleFactor  scale,
OperandSize  sz = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 622 of file assembler_ia32.h.

627 {
628 Load(dst, FieldAddress(base, index, scale, payload_offset), sz);
629 }

◆ LoadIndexedPayload() [5/5]

void dart::compiler::Assembler::LoadIndexedPayload ( Register  dst,
Register  base,
int32_t  payload_start,
Register  index,
ScaleFactor  scale,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1109 of file assembler_arm.h.

1114 {
1115 add(dst, base, Operand(index, LSL, scale));
1116 LoadFromOffset(dst, dst, payload_start - kHeapObjectTag, type);
1117 }

◆ LoadInt32FromBoxOrSmi() [1/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1355 of file assembler_arm.h.

1355 {
1356 if (result == value) {
1357 ASSERT(TMP != value);
1359 value = TMP;
1360 }
1361 ASSERT(value != result);
1362 compiler::Label done;
1365 Bind(&done);
1366 }
static void done(const char *config, const char *src, const char *srcOptions, const char *name)
Definition: DM.cpp:263
void SmiUntag(Register reg, Condition cond=AL)
GAsyncResult * result

◆ LoadInt32FromBoxOrSmi() [2/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1681 of file assembler_arm64.h.

1681 {
1682 if (result == value) {
1683 ASSERT(TMP != value);
1685 value = TMP;
1686 }
1687 ASSERT(value != result);
1688 compiler::Label done;
1690 Utils::Minimum(static_cast<intptr_t>(32), compiler::target::kSmiBits));
1694 Bind(&done);
1695 }
static T Minimum(T x, T y)
Definition: utils.h:36
void BranchIfSmi(Register reg, Label *label, JumpDistance distance=kFarJump) override
void sbfx(Register rd, Register rn, int32_t lsb, int32_t width, Condition cond=AL)
constexpr intptr_t kSmiBits
Definition: runtime_api.h:301
@ kSmiTagSize

◆ LoadInt32FromBoxOrSmi() [3/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 992 of file assembler_ia32.h.

992 {
993 if (result != value) {
995 value = result;
996 }
997 ASSERT(value == result);
998 compiler::Label done;
999 SmiUntag(result); // Leaves CF after SmiUntag.
1001 // Undo untagging by multiplying value by 2.
1002 // [reg + reg + disp8] has a shorter encoding than [reg*2 + disp32]
1004 movl(result, compiler::Address(result, result, TIMES_1,
1006 Bind(&done);
1007 }
@ NOT_CARRY
Definition: constants_x86.h:35
COMPILE_ASSERT(kUnreachableReference==WeakTable::kNoValue)

◆ LoadInt32FromBoxOrSmi() [4/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 957 of file assembler_riscv.h.

957 {
958 if (result == value) {
959 ASSERT(TMP != value);
961 value = TMP;
962 }
963 ASSERT(value != result);
964 compiler::Label done;
969 Bind(&done);
970 }

◆ LoadInt32FromBoxOrSmi() [5/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
overridevirtual

◆ LoadInt64FromBoxOrSmi() [1/3]

void dart::compiler::Assembler::LoadInt64FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1697 of file assembler_arm64.h.

1697 {
1698 if (result == value) {
1699 ASSERT(TMP != value);
1701 value = TMP;
1702 }
1703 ASSERT(value != result);
1704 compiler::Label done;
1708 Bind(&done);
1709 }

◆ LoadInt64FromBoxOrSmi() [2/3]

void dart::compiler::Assembler::LoadInt64FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 973 of file assembler_riscv.h.

973 {
974 if (result == value) {
975 ASSERT(TMP != value);
977 value = TMP;
978 }
979 ASSERT(value != result);
980 compiler::Label done;
984 Bind(&done);
985 }

◆ LoadInt64FromBoxOrSmi() [3/3]

void dart::compiler::Assembler::LoadInt64FromBoxOrSmi ( Register  result,
Register  value 
)
overridevirtual

◆ LoadIsolate() [1/5]

void dart::compiler::Assembler::LoadIsolate ( Register  dst)

◆ LoadIsolate() [2/5]

void dart::compiler::Assembler::LoadIsolate ( Register  dst)

◆ LoadIsolate() [3/5]

void dart::compiler::Assembler::LoadIsolate ( Register  dst)

◆ LoadIsolate() [4/5]

void dart::compiler::Assembler::LoadIsolate ( Register  dst)

◆ LoadIsolate() [5/5]

void dart::compiler::Assembler::LoadIsolate ( Register  rd)

◆ LoadIsolateGroup() [1/5]

void dart::compiler::Assembler::LoadIsolateGroup ( Register  dst)

◆ LoadIsolateGroup() [2/5]

void dart::compiler::Assembler::LoadIsolateGroup ( Register  dst)

◆ LoadIsolateGroup() [3/5]

void dart::compiler::Assembler::LoadIsolateGroup ( Register  dst)

◆ LoadIsolateGroup() [4/5]

void dart::compiler::Assembler::LoadIsolateGroup ( Register  dst)

◆ LoadIsolateGroup() [5/5]

void dart::compiler::Assembler::LoadIsolateGroup ( Register  dst)

◆ LoadMemoryValue() [1/5]

void dart::compiler::Assembler::LoadMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 426 of file assembler_arm.h.

426 {
428 }

◆ LoadMemoryValue() [2/5]

void dart::compiler::Assembler::LoadMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 518 of file assembler_arm64.h.

518 {
520 }

◆ LoadMemoryValue() [3/5]

void dart::compiler::Assembler::LoadMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 640 of file assembler_ia32.h.

640 {
641 movl(dst, Address(base, offset));
642 }

◆ LoadMemoryValue() [4/5]

void dart::compiler::Assembler::LoadMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 882 of file assembler_riscv.h.

882 {
884 }
constexpr OperandSize kWordBytes

◆ LoadMemoryValue() [5/5]

void dart::compiler::Assembler::LoadMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1073 of file assembler_x64.h.

1073 {
1074 movq(dst, Address(base, offset));
1075 }

◆ LoadMultipleDFromOffset()

void dart::compiler::Assembler::LoadMultipleDFromOffset ( DRegister  first,
intptr_t  count,
Register  base,
int32_t  offset 
)

◆ LoadNativeEntry() [1/4]

void dart::compiler::Assembler::LoadNativeEntry ( Register  dst,
const ExternalLabel label,
ObjectPoolBuilderEntry::Patchability  patchable 
)

◆ LoadNativeEntry() [2/4]

void dart::compiler::Assembler::LoadNativeEntry ( Register  dst,
const ExternalLabel label,
ObjectPoolBuilderEntry::Patchability  patchable 
)

◆ LoadNativeEntry() [3/4]

void dart::compiler::Assembler::LoadNativeEntry ( Register  dst,
const ExternalLabel label,
ObjectPoolBuilderEntry::Patchability  patchable 
)

◆ LoadNativeEntry() [4/4]

void dart::compiler::Assembler::LoadNativeEntry ( Register  dst,
const ExternalLabel label,
ObjectPoolBuilderEntry::Patchability  patchable,
Condition  cond = AL 
)

◆ LoadObject() [1/5]

void dart::compiler::Assembler::LoadObject ( Register  dst,
const Object obj 
)

◆ LoadObject() [2/5]

void dart::compiler::Assembler::LoadObject ( Register  dst,
const Object obj 
)
inline

Definition at line 1212 of file assembler_riscv.h.

1212 {
1213 LoadObjectHelper(dst, obj, false);
1214 }

◆ LoadObject() [3/5]

void dart::compiler::Assembler::LoadObject ( Register  dst,
const Object obj 
)

◆ LoadObject() [4/5]

void dart::compiler::Assembler::LoadObject ( Register  dst,
const Object object,
bool  movable_referent = false 
)

◆ LoadObject() [5/5]

void dart::compiler::Assembler::LoadObject ( Register  rd,
const Object object,
Condition  cond = AL 
)

◆ LoadObjectSafely()

void dart::compiler::Assembler::LoadObjectSafely ( Register  dst,
const Object object 
)

◆ LoadPatchableImmediate()

void dart::compiler::Assembler::LoadPatchableImmediate ( Register  rd,
int32_t  value,
Condition  cond = AL 
)

◆ LoadPoolPointer() [1/4]

void dart::compiler::Assembler::LoadPoolPointer ( Register  pp = PP)

◆ LoadPoolPointer() [2/4]

void dart::compiler::Assembler::LoadPoolPointer ( Register  pp = PP)

◆ LoadPoolPointer() [3/4]

void dart::compiler::Assembler::LoadPoolPointer ( Register  pp = PP)

◆ LoadPoolPointer() [4/4]

void dart::compiler::Assembler::LoadPoolPointer ( Register  reg = PP)

◆ LoadQFieldFromOffset()

void dart::compiler::Assembler::LoadQFieldFromOffset ( VRegister  dest,
Register  base,
int32_t  offset 
)
inline

Definition at line 1890 of file assembler_arm64.h.

1890 {
1892 }
void LoadQFromOffset(VRegister dest, Register base, int32_t offset)

◆ LoadQFromOffset()

void dart::compiler::Assembler::LoadQFromOffset ( VRegister  dest,
Register  base,
int32_t  offset 
)

◆ LoadQImmediate() [1/5]

void dart::compiler::Assembler::LoadQImmediate ( FpuRegister  dst,
simd128_value_t  immediate 
)

◆ LoadQImmediate() [2/5]

void dart::compiler::Assembler::LoadQImmediate ( FRegister  reg,
simd128_value_t  immq 
)

◆ LoadQImmediate() [3/5]

void dart::compiler::Assembler::LoadQImmediate ( QRegister  dd,
simd128_value_t  value 
)

◆ LoadQImmediate() [4/5]

void dart::compiler::Assembler::LoadQImmediate ( VRegister  reg,
simd128_value_t  immq 
)

◆ LoadQImmediate() [5/5]

void dart::compiler::Assembler::LoadQImmediate ( XmmRegister  dst,
simd128_value_t  value 
)

◆ LoadSFieldFromOffset()

void dart::compiler::Assembler::LoadSFieldFromOffset ( FRegister  dest,
Register  base,
int32_t  offset 
)
inline

Definition at line 1128 of file assembler_riscv.h.

1128 {
1130 }
void LoadSFromOffset(SRegister reg, Register base, int32_t offset, Condition cond=AL)

◆ LoadSFromOffset() [1/3]

void dart::compiler::Assembler::LoadSFromOffset ( FRegister  dest,
Register  base,
int32_t  offset 
)

◆ LoadSFromOffset() [2/3]

void dart::compiler::Assembler::LoadSFromOffset ( SRegister  reg,
Register  base,
int32_t  offset,
Condition  cond = AL 
)

◆ LoadSFromOffset() [3/3]

void dart::compiler::Assembler::LoadSFromOffset ( VRegister  dest,
Register  base,
int32_t  offset 
)

◆ LoadSImmediate() [1/5]

void dart::compiler::Assembler::LoadSImmediate ( FpuRegister  dst,
float  immediate 
)

◆ LoadSImmediate() [2/5]

void dart::compiler::Assembler::LoadSImmediate ( FRegister  reg,
float  imms 
)

◆ LoadSImmediate() [3/5]

void dart::compiler::Assembler::LoadSImmediate ( SRegister  sd,
float  value,
Condition  cond = AL 
)

◆ LoadSImmediate() [4/5]

void dart::compiler::Assembler::LoadSImmediate ( VRegister  reg,
float  immd 
)

◆ LoadSImmediate() [5/5]

void dart::compiler::Assembler::LoadSImmediate ( XmmRegister  dst,
float  value 
)

◆ LoadStaticFieldAddress() [1/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch,
bool  is_shared 
)

◆ LoadStaticFieldAddress() [2/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch,
bool  is_shared 
)

◆ LoadStaticFieldAddress() [3/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch,
bool  is_shared 
)
inline

Definition at line 953 of file assembler_ia32.h.

956 {
957 LoadFieldFromOffset(scratch, field,
959 const intptr_t field_table_offset =
961 : compiler::target::Thread::field_table_values_offset();
962 LoadMemoryValue(address, THR, static_cast<int32_t>(field_table_offset));
963 static_assert(kSmiTagShift == 1, "adjust scale factor");
964 leal(address, Address(address, scratch, TIMES_HALF_WORD_SIZE, 0));
965 }
void LoadMemoryValue(Register dst, Register base, int32_t offset)
static word host_offset_or_field_id_offset()
static word shared_field_table_values_offset()
const Register THR

◆ LoadStaticFieldAddress() [4/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch,
bool  is_shared 
)

◆ LoadStaticFieldAddress() [5/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch,
bool  is_shared 
)
inline

Definition at line 1311 of file assembler_x64.h.

1314 {
1316 scratch, compiler::FieldAddress(
1318 const intptr_t field_table_offset =
1320 : compiler::target::Thread::field_table_values_offset();
1321 LoadMemoryValue(address, THR, static_cast<int32_t>(field_table_offset));
1322 static_assert(kSmiTagShift == 1, "adjust scale factor");
1323 leaq(address, Address(address, scratch, TIMES_HALF_WORD_SIZE, 0));
1324 }
void LoadCompressedSmi(Register dst, const Address &address)

◆ LoadTaggedClassIdMayBeSmi() [1/5]

void dart::compiler::Assembler::LoadTaggedClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadTaggedClassIdMayBeSmi() [2/5]

void dart::compiler::Assembler::LoadTaggedClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadTaggedClassIdMayBeSmi() [3/5]

void dart::compiler::Assembler::LoadTaggedClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadTaggedClassIdMayBeSmi() [4/5]

void dart::compiler::Assembler::LoadTaggedClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadTaggedClassIdMayBeSmi() [5/5]

void dart::compiler::Assembler::LoadTaggedClassIdMayBeSmi ( Register  result,
Register  object 
)

◆ LoadUnboxedDouble() [1/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1178 of file assembler_arm.h.

1178 {
1180 }
static DRegister EvenDRegisterOf(QRegister q)

◆ LoadUnboxedDouble() [2/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1921 of file assembler_arm64.h.

1921 {
1923 }

◆ LoadUnboxedDouble() [3/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 647 of file assembler_ia32.h.

647 {
648 movsd(dst, Address(base, offset));
649 }
void movsd(XmmRegister dst, const Address &src)

◆ LoadUnboxedDouble() [4/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1154 of file assembler_riscv.h.

1154 {
1156 }

◆ LoadUnboxedDouble() [5/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1098 of file assembler_x64.h.

1098 {
1099 movsd(dst, Address(base, offset));
1100 }

◆ LoadUnboxedSimd128() [1/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1199 of file assembler_arm.h.

1199 {
1201 }
void LoadMultipleDFromOffset(DRegister first, intptr_t count, Register base, int32_t offset)

◆ LoadUnboxedSimd128() [2/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1933 of file assembler_arm64.h.

1933 {
1935 }

◆ LoadUnboxedSimd128() [3/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 659 of file assembler_ia32.h.

659 {
660 movups(dst, Address(base, offset));
661 }
void movups(XmmRegister dst, const Address &src)

◆ LoadUnboxedSimd128() [4/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1162 of file assembler_riscv.h.

1162 {
1163 // No single register SIMD on RISC-V.
1164 UNREACHABLE();
1165 }

◆ LoadUnboxedSimd128() [5/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1083 of file assembler_x64.h.

1083 {
1084 movups(dst, Address(base, offset));
1085 }

◆ LoadUnboxedSingle()

void dart::compiler::Assembler::LoadUnboxedSingle ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1095 of file assembler_x64.h.

1095 {
1096 movss(dst, Address(base, offset));
1097 }
void movss(XmmRegister dst, const Address &src)

◆ LoadUniqueObject() [1/5]

void dart::compiler::Assembler::LoadUniqueObject ( Register  dst,
const Object obj 
)

◆ LoadUniqueObject() [2/5]

void dart::compiler::Assembler::LoadUniqueObject ( Register  dst,
const Object obj,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)
inline

Definition at line 1216 of file assembler_riscv.h.

1220 {
1221 LoadObjectHelper(dst, obj, true, snapshot_behavior);
1222 }

◆ LoadUniqueObject() [3/5]

void dart::compiler::Assembler::LoadUniqueObject ( Register  dst,
const Object obj,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ LoadUniqueObject() [4/5]

void dart::compiler::Assembler::LoadUniqueObject ( Register  dst,
const Object object 
)
inline

Definition at line 794 of file assembler_ia32.h.

794 {
795 LoadObject(dst, object, /*movable_referent=*/true);
796 }
void LoadObject(Register rd, const Object &object, Condition cond=AL)

◆ LoadUniqueObject() [5/5]

void dart::compiler::Assembler::LoadUniqueObject ( Register  rd,
const Object object,
Condition  cond = AL,
ObjectPoolBuilderEntry::SnapshotBehavior  snapshot_behavior = ObjectPoolBuilderEntry::kSnapshotable 
)

◆ LoadWordFromPoolIndex() [1/4]

void dart::compiler::Assembler::LoadWordFromPoolIndex ( Register  dst,
intptr_t  index 
)

◆ LoadWordFromPoolIndex() [2/4]

void dart::compiler::Assembler::LoadWordFromPoolIndex ( Register  dst,
intptr_t  index,
Register  pp = PP 
)

◆ LoadWordFromPoolIndex() [3/4]

void dart::compiler::Assembler::LoadWordFromPoolIndex ( Register  dst,
intptr_t  index,
Register  pp = PP 
)

◆ LoadWordFromPoolIndex() [4/4]

void dart::compiler::Assembler::LoadWordFromPoolIndex ( Register  rd,
intptr_t  index,
Register  pp = PP,
Condition  cond = AL 
)

◆ LoadWordUnaligned()

void dart::compiler::Assembler::LoadWordUnaligned ( Register  dst,
Register  addr,
Register  tmp 
)

◆ lock()

void dart::compiler::Assembler::lock ( )

◆ LockCmpxchgl() [1/2]

void dart::compiler::Assembler::LockCmpxchgl ( const Address address,
Register  reg 
)
inline

Definition at line 843 of file assembler_ia32.h.

843 {
844 lock();
845 cmpxchgl(address, reg);
846 }
void cmpxchgl(const Address &address, Register reg)

◆ LockCmpxchgl() [2/2]

void dart::compiler::Assembler::LockCmpxchgl ( const Address address,
Register  reg 
)
inline

Definition at line 901 of file assembler_x64.h.

901 {
902 lock();
903 cmpxchgl(address, reg);
904 }

◆ LockCmpxchgq()

void dart::compiler::Assembler::LockCmpxchgq ( const Address address,
Register  reg 
)
inline

Definition at line 896 of file assembler_x64.h.

896 {
897 lock();
898 cmpxchgq(address, reg);
899 }

◆ lr_state() [1/2]

compiler::LRState dart::compiler::Assembler::lr_state ( ) const
inline

Definition at line 1618 of file assembler_arm.h.

1618{ return lr_state_; }

◆ lr_state() [2/2]

compiler::LRState dart::compiler::Assembler::lr_state ( ) const
inline

Definition at line 1978 of file assembler_arm64.h.

1978{ return lr_state_; }

◆ Lsl() [1/2]

void dart::compiler::Assembler::Lsl ( Register  rd,
Register  rm,
const Operand shift_imm,
Condition  cond = AL 
)

◆ Lsl() [2/2]

void dart::compiler::Assembler::Lsl ( Register  rd,
Register  rm,
Register  rs,
Condition  cond = AL 
)

◆ LslImmediate() [1/7]

void dart::compiler::Assembler::LslImmediate ( Register  dst,
int32_t  shift 
)
inline

Definition at line 755 of file assembler_ia32.h.

755 {
756 shll(dst, Immediate(shift));
757 }
void shll(Register reg, const Immediate &imm)

◆ LslImmediate() [2/7]

void dart::compiler::Assembler::LslImmediate ( Register  dst,
int32_t  shift 
)
inline

Definition at line 602 of file assembler_x64.h.

602 {
603 shlq(dst, Immediate(shift));
604 }
void shlq(Register reg, const Immediate &imm)

◆ LslImmediate() [3/7]

void dart::compiler::Assembler::LslImmediate ( Register  rd,
int32_t  shift 
)
inline

Definition at line 902 of file assembler_arm.h.

902{ LslImmediate(rd, rd, shift); }
void LslImmediate(Register rd, Register rn, int32_t shift)

◆ LslImmediate() [4/7]

void dart::compiler::Assembler::LslImmediate ( Register  rd,
int32_t  shift 
)
inline

Definition at line 1100 of file assembler_riscv.h.

1100{ slli(rd, rd, shift); }

◆ LslImmediate() [5/7]

void dart::compiler::Assembler::LslImmediate ( Register  rd,
int32_t  shift,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1628 of file assembler_arm64.h.

1628 {
1629 LslImmediate(rd, rd, shift, sz);
1630 }

◆ LslImmediate() [6/7]

void dart::compiler::Assembler::LslImmediate ( Register  rd,
Register  rn,
int32_t  shift 
)
inline

Definition at line 898 of file assembler_arm.h.

898 {
899 ASSERT((shift >= 0) && (shift < kBitsPerInt32));
900 Lsl(rd, rn, Operand(shift));
901 }
constexpr intptr_t kBitsPerInt32
Definition: globals.h:466

◆ LslImmediate() [7/7]

void dart::compiler::Assembler::LslImmediate ( Register  rd,
Register  rn,
int32_t  shift,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1619 of file assembler_arm64.h.

1622 {
1623 const int32_t reg_size =
1625 ASSERT((shift >= 0) && (shift < reg_size));
1626 ubfm(rd, rn, (reg_size - shift) % reg_size, reg_size - shift - 1, sz);
1627 }
void ubfm(Register rd, Register rn, int r_imm, int s_imm, OperandSize size=kEightBytes)

◆ LslRegister() [1/5]

void dart::compiler::Assembler::LslRegister ( Register  dst,
Register  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 903 of file assembler_arm.h.

903 {
904 Lsl(dst, dst, shift);
905 }

◆ LslRegister() [2/5]

void dart::compiler::Assembler::LslRegister ( Register  dst,
Register  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1631 of file assembler_arm64.h.

1631 {
1632 lslv(dst, dst, shift);
1633 }
void lslv(Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)

◆ LslRegister() [3/5]

void dart::compiler::Assembler::LslRegister ( Register  dst,
Register  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 758 of file assembler_ia32.h.

758 {
759 ASSERT_EQUAL(shift, ECX); // IA32 does not have a TMP.
760 shll(dst, shift);
761 }

◆ LslRegister() [4/5]

void dart::compiler::Assembler::LslRegister ( Register  dst,
Register  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1101 of file assembler_riscv.h.

1101 {
1102 sll(dst, dst, shift);
1103 }
void sll(Register rd, Register rs1, Register rs2)

◆ LslRegister() [5/5]

void dart::compiler::Assembler::LslRegister ( Register  dst,
Register  shift 
)
overridevirtual

◆ lslv()

void dart::compiler::Assembler::lslv ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 897 of file assembler_arm64.h.

900 {
901 EmitMiscDP2Source(LSLV, rd, rn, rm, sz);
902 }

◆ lslvw()

void dart::compiler::Assembler::lslvw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 918 of file assembler_arm64.h.

918 {
919 lslv(rd, rn, rm, kFourBytes);
920 }

◆ Lsr() [1/2]

void dart::compiler::Assembler::Lsr ( Register  rd,
Register  rm,
const Operand shift_imm,
Condition  cond = AL 
)

◆ Lsr() [2/2]

void dart::compiler::Assembler::Lsr ( Register  rd,
Register  rm,
Register  rs,
Condition  cond = AL 
)

◆ LsrImmediate() [1/7]

void dart::compiler::Assembler::LsrImmediate ( Register  dst,
int32_t  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 762 of file assembler_ia32.h.

762 {
763 shrl(dst, Immediate(shift));
764 }
void shrl(Register reg, const Immediate &imm)

◆ LsrImmediate() [2/7]

void dart::compiler::Assembler::LsrImmediate ( Register  dst,
int32_t  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 606 of file assembler_x64.h.

606 {
607 shrq(dst, Immediate(shift));
608 }
void shrq(Register reg, const Immediate &imm)

◆ LsrImmediate() [3/7]

void dart::compiler::Assembler::LsrImmediate ( Register  rd,
int32_t  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 910 of file assembler_arm.h.

910 {
911 LsrImmediate(rd, rd, shift);
912 }
void LsrImmediate(Register rd, Register rn, int32_t shift)

◆ LsrImmediate() [4/7]

void dart::compiler::Assembler::LsrImmediate ( Register  rd,
int32_t  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1643 of file assembler_arm64.h.

1643 {
1644 LsrImmediate(rd, rd, shift);
1645 }

◆ LsrImmediate() [5/7]

void dart::compiler::Assembler::LsrImmediate ( Register  rd,
int32_t  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1104 of file assembler_riscv.h.

1104 {
1105 srli(rd, rd, shift);
1106 }
void srli(Register rd, Register rs1, intptr_t shamt)

◆ LsrImmediate() [6/7]

void dart::compiler::Assembler::LsrImmediate ( Register  rd,
Register  rn,
int  shift,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1634 of file assembler_arm64.h.

1637 {
1638 const int reg_size =
1640 ASSERT((shift >= 0) && (shift < reg_size));
1641 ubfm(rd, rn, shift, reg_size - 1, sz);
1642 }

◆ LsrImmediate() [7/7]

void dart::compiler::Assembler::LsrImmediate ( Register  rd,
Register  rn,
int32_t  shift 
)
inline

Definition at line 906 of file assembler_arm.h.

906 {
907 ASSERT((shift >= 0) && (shift < kBitsPerInt32));
908 Lsr(rd, rn, Operand(shift));
909 }
void Lsr(Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)

◆ lsrv()

void dart::compiler::Assembler::lsrv ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 903 of file assembler_arm64.h.

906 {
907 EmitMiscDP2Source(LSRV, rd, rn, rm, sz);
908 }

◆ lsrvw()

void dart::compiler::Assembler::lsrvw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 921 of file assembler_arm64.h.

921 {
922 lsrv(rd, rn, rm, kFourBytes);
923 }
void lsrv(Register rd, Register rn, Register rm, OperandSize sz=kEightBytes)

◆ lzcntl()

void dart::compiler::Assembler::lzcntl ( Register  dst,
Register  src 
)

◆ madd()

void dart::compiler::Assembler::madd ( Register  rd,
Register  rn,
Register  rm,
Register  ra,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 927 of file assembler_arm64.h.

931 {
932 EmitMiscDP3Source(MADD, rd, rn, rm, ra, sz);
933 }

◆ MarkExceptionHandler()

void dart::compiler::Assembler::MarkExceptionHandler ( Label label)

◆ maxpd()

void dart::compiler::Assembler::maxpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ maxps()

void dart::compiler::Assembler::maxps ( XmmRegister  dst,
XmmRegister  src 
)

◆ MaybeTraceAllocation() [1/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( intptr_t  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [2/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( intptr_t  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [3/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( intptr_t  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [4/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( intptr_t  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [5/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( intptr_t  cid,
Label trace,
Register  temp_reg = kNoRegister,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [6/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( Register  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [7/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( Register  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [8/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( Register  cid,
Label trace,
Register  temp_reg,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [9/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( Register  cid,
Label trace,
Register  temp_reg = kNoRegister,
JumpDistance  distance = JumpDistance::kFarJump 
)

◆ MaybeTraceAllocation() [10/10]

void dart::compiler::Assembler::MaybeTraceAllocation ( Register  stats_addr_reg,
Label trace 
)

◆ minpd()

void dart::compiler::Assembler::minpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ minps()

void dart::compiler::Assembler::minps ( XmmRegister  dst,
XmmRegister  src 
)

◆ mla()

void dart::compiler::Assembler::mla ( Register  rd,
Register  rn,
Register  rm,
Register  ra,
Condition  cond = AL 
)

◆ mls()

void dart::compiler::Assembler::mls ( Register  rd,
Register  rn,
Register  rm,
Register  ra,
Condition  cond = AL 
)

◆ MonomorphicCheckedEntryAOT() [1/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryAOT ( )

◆ MonomorphicCheckedEntryAOT() [2/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryAOT ( )

◆ MonomorphicCheckedEntryAOT() [3/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryAOT ( )

◆ MonomorphicCheckedEntryAOT() [4/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryAOT ( )

◆ MonomorphicCheckedEntryAOT() [5/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryAOT ( )

◆ MonomorphicCheckedEntryJIT() [1/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryJIT ( )

◆ MonomorphicCheckedEntryJIT() [2/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryJIT ( )

◆ MonomorphicCheckedEntryJIT() [3/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryJIT ( )

◆ MonomorphicCheckedEntryJIT() [4/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryJIT ( )

◆ MonomorphicCheckedEntryJIT() [5/5]

void dart::compiler::Assembler::MonomorphicCheckedEntryJIT ( )

◆ mov() [1/2]

void dart::compiler::Assembler::mov ( Register  rd,
Operand  o,
Condition  cond = AL 
)

◆ mov() [2/2]

void dart::compiler::Assembler::mov ( Register  rd,
Register  rn 
)
inline

Definition at line 1520 of file assembler_arm64.h.

1520 {
1521 if ((rd == CSP) || (rn == CSP)) {
1522 add(rd, rn, Operand(0));
1523 } else {
1524 orr(rd, ZR, Operand(rn));
1525 }
1526 }

◆ movaps()

void dart::compiler::Assembler::movaps ( XmmRegister  dst,
XmmRegister  src 
)

◆ movb() [1/5]

void dart::compiler::Assembler::movb ( const Address dst,
ByteRegister  src 
)

◆ movb() [2/5]

void dart::compiler::Assembler::movb ( const Address dst,
const Immediate imm 
)

◆ movb() [3/5]

void dart::compiler::Assembler::movb ( const Address dst,
const Immediate imm 
)

◆ movb() [4/5]

void dart::compiler::Assembler::movb ( const Address dst,
Register  src 
)

◆ movb() [5/5]

void dart::compiler::Assembler::movb ( Register  dst,
const Address src 
)

◆ movd() [1/3]

void dart::compiler::Assembler::movd ( Register  dst,
XmmRegister  src 
)

◆ movd() [2/3]

void dart::compiler::Assembler::movd ( XmmRegister  dst,
Register  src 
)

◆ movd() [3/3]

void dart::compiler::Assembler::movd ( XmmRegister  dst,
Register  src 
)
inline

Definition at line 517 of file assembler_x64.h.

517 {
518 EmitL(dst, src, 0x6E, 0x0F, 0x66);
519 }

◆ MoveAndSmiTagRegister() [1/2]

void dart::compiler::Assembler::MoveAndSmiTagRegister ( Register  rd,
Register  rm 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1266 of file assembler_arm.h.

1266 {
1267 MoveAndSmiTagRegister(rd, rm, AL);
1268 }
void MoveAndSmiTagRegister(Register rd, Register rm, Condition cond)

◆ MoveAndSmiTagRegister() [2/2]

void dart::compiler::Assembler::MoveAndSmiTagRegister ( Register  rd,
Register  rm,
Condition  cond 
)
inline

Definition at line 1263 of file assembler_arm.h.

1263 {
1264 ExtendAndSmiTagValue(rd, rm, kFourBytes, cond);
1265 }

◆ MoveMemoryToMemory() [1/2]

void dart::compiler::Assembler::MoveMemoryToMemory ( Address  to,
Address  from,
Register  tmp 
)

◆ MoveMemoryToMemory() [2/2]

void dart::compiler::Assembler::MoveMemoryToMemory ( const Address dst,
const Address src 
)
inline

Definition at line 711 of file assembler_x64.h.

711 {
712 movq(TMP, src);
713 movq(dst, TMP);
714 }

◆ MoveRegister() [1/2]

void dart::compiler::Assembler::MoveRegister ( Register  rd,
Register  rm 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1260 of file assembler_arm.h.

1260 {
1261 MoveRegister(rd, rm, AL);
1262 }

◆ MoveRegister() [2/2]

void dart::compiler::Assembler::MoveRegister ( Register  rd,
Register  rm,
Condition  cond 
)
inline

Definition at line 1257 of file assembler_arm.h.

1257 {
1258 ExtendValue(rd, rm, kFourBytes, cond);
1259 }

◆ MoveUnboxedDouble() [1/5]

void dart::compiler::Assembler::MoveUnboxedDouble ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1184 of file assembler_arm.h.

1184 {
1185 if (src != dst) {
1187 }
1188 }
void vmovd(DRegister dd, DRegister dm, Condition cond=AL)

◆ MoveUnboxedDouble() [2/5]

void dart::compiler::Assembler::MoveUnboxedDouble ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1927 of file assembler_arm64.h.

1927 {
1928 if (src != dst) {
1929 fmovdd(dst, src);
1930 }
1931 }
void fmovdd(VRegister vd, VRegister vn)

◆ MoveUnboxedDouble() [3/5]

void dart::compiler::Assembler::MoveUnboxedDouble ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 653 of file assembler_ia32.h.

653 {
654 if (src != dst) {
655 movaps(dst, src);
656 }
657 }
void movaps(XmmRegister dst, XmmRegister src)

◆ MoveUnboxedDouble() [4/5]

void dart::compiler::Assembler::MoveUnboxedDouble ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1160 of file assembler_riscv.h.

1160{ fmvd(dst, src); }
void fmvd(FRegister rd, FRegister rs)

◆ MoveUnboxedDouble() [5/5]

void dart::compiler::Assembler::MoveUnboxedDouble ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1104 of file assembler_x64.h.

1104 {
1105 if (src != dst) {
1106 movaps(dst, src);
1107 }
1108 }

◆ MoveUnboxedSimd128() [1/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1205 of file assembler_arm.h.

1205 {
1206 if (src != dst) {
1207 vmovq(dst, src);
1208 }
1209 }
void vmovq(QRegister qd, QRegister qm)

◆ MoveUnboxedSimd128() [2/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1939 of file assembler_arm64.h.

1939 {
1940 if (src != dst) {
1941 vmov(dst, src);
1942 }
1943 }
void vmov(VRegister vd, VRegister vn)

◆ MoveUnboxedSimd128() [3/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 665 of file assembler_ia32.h.

665 {
666 if (src != dst) {
667 movaps(dst, src);
668 }
669 }

◆ MoveUnboxedSimd128() [4/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1170 of file assembler_riscv.h.

1170 {
1171 // No single register SIMD on RISC-V.
1172 UNREACHABLE();
1173 }

◆ MoveUnboxedSimd128() [5/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1089 of file assembler_x64.h.

1089 {
1090 if (src != dst) {
1091 movaps(dst, src);
1092 }
1093 }

◆ movhlps()

void dart::compiler::Assembler::movhlps ( XmmRegister  dst,
XmmRegister  src 
)

◆ movk()

void dart::compiler::Assembler::movk ( Register  rd,
const Immediate imm,
int  hw_idx 
)
inline

Definition at line 989 of file assembler_arm64.h.

989 {
990 ASSERT(rd != CSP);
991 const Register crd = ConcreteRegister(rd);
992 EmitMoveWideOp(MOVK, crd, imm, hw_idx, kEightBytes);
993 }

◆ movl() [1/8]

void dart::compiler::Assembler::movl ( const Address dst,
const Immediate imm 
)

◆ movl() [2/8]

void dart::compiler::Assembler::movl ( const Address dst,
const Immediate imm 
)

◆ movl() [3/8]

void dart::compiler::Assembler::movl ( const Address dst,
Register  src 
)

◆ movl() [4/8]

void dart::compiler::Assembler::movl ( Register  dst,
const Address src 
)

◆ movl() [5/8]

void dart::compiler::Assembler::movl ( Register  dst,
const Immediate imm 
)

◆ movl() [6/8]

void dart::compiler::Assembler::movl ( Register  dst,
const Immediate src 
)

◆ movl() [7/8]

void dart::compiler::Assembler::movl ( Register  dst,
Register  src 
)

◆ movl() [8/8]

void dart::compiler::Assembler::movl ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 497 of file assembler_x64.h.

497 {
498 EmitL(src, dst, 0x7E, 0x0F, 0x66);
499 }

◆ movlhps()

void dart::compiler::Assembler::movlhps ( XmmRegister  dst,
XmmRegister  src 
)

◆ movmskpd() [1/2]

void dart::compiler::Assembler::movmskpd ( Register  dst,
XmmRegister  src 
)

◆ movmskpd() [2/2]

void dart::compiler::Assembler::movmskpd ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 532 of file assembler_x64.h.

532 {
533 EmitL(dst, src, 0x50, 0x0F, 0x66);
534 }

◆ movmskps() [1/2]

void dart::compiler::Assembler::movmskps ( Register  dst,
XmmRegister  src 
)

◆ movmskps() [2/2]

void dart::compiler::Assembler::movmskps ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 535 of file assembler_x64.h.

535{ EmitL(dst, src, 0x50, 0x0F); }

◆ movn()

void dart::compiler::Assembler::movn ( Register  rd,
const Immediate imm,
int  hw_idx 
)
inline

Definition at line 994 of file assembler_arm64.h.

994 {
995 ASSERT(rd != CSP);
996 const Register crd = ConcreteRegister(rd);
997 EmitMoveWideOp(MOVN, crd, imm, hw_idx, kEightBytes);
998 }

◆ movq() [1/7]

void dart::compiler::Assembler::movq ( const Address dst,
const Immediate imm 
)

◆ movq() [2/7]

void dart::compiler::Assembler::movq ( const Address dst,
XmmRegister  src 
)

◆ movq() [3/7]

void dart::compiler::Assembler::movq ( Register  dst,
const Immediate imm 
)

◆ movq() [4/7]

void dart::compiler::Assembler::movq ( Register  dst,
Register  src 
)
inline

Definition at line 511 of file assembler_x64.h.

511{ EmitQ(src, dst, 0x89); }

◆ movq() [5/7]

void dart::compiler::Assembler::movq ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 494 of file assembler_x64.h.

494 {
495 EmitQ(src, dst, 0x7E, 0x0F, 0x66);
496 }

◆ movq() [6/7]

void dart::compiler::Assembler::movq ( XmmRegister  dst,
const Address src 
)

◆ movq() [7/7]

void dart::compiler::Assembler::movq ( XmmRegister  dst,
Register  src 
)
inline

Definition at line 513 of file assembler_x64.h.

513 {
514 EmitQ(dst, src, 0x6E, 0x0F, 0x66);
515 }

◆ movs()

void dart::compiler::Assembler::movs ( Register  rd,
Operand  o,
Condition  cond = AL 
)

◆ movsd() [1/4]

void dart::compiler::Assembler::movsd ( const Address dst,
XmmRegister  src 
)

◆ movsd() [2/4]

void dart::compiler::Assembler::movsd ( XmmRegister  dst,
const Address src 
)

◆ movsd() [3/4]

void dart::compiler::Assembler::movsd ( XmmRegister  dst,
XmmRegister  src 
)

◆ movsd() [4/4]

void dart::compiler::Assembler::movsd ( XmmRegister  dst,
XmmRegister  src 
)
inline

Definition at line 503 of file assembler_x64.h.

503 {
504 EmitL(src, dst, 0x11, 0x0F, 0xF2);
505 }

◆ movss() [1/4]

void dart::compiler::Assembler::movss ( const Address dst,
XmmRegister  src 
)

◆ movss() [2/4]

void dart::compiler::Assembler::movss ( XmmRegister  dst,
const Address src 
)

◆ movss() [3/4]

void dart::compiler::Assembler::movss ( XmmRegister  dst,
XmmRegister  src 
)

◆ movss() [4/4]

void dart::compiler::Assembler::movss ( XmmRegister  dst,
XmmRegister  src 
)
inline

Definition at line 500 of file assembler_x64.h.

500 {
501 EmitL(src, dst, 0x11, 0x0F, 0xF3);
502 }

◆ movsxb() [1/2]

void dart::compiler::Assembler::movsxb ( Register  dst,
ByteRegister  src 
)

◆ movsxb() [2/2]

void dart::compiler::Assembler::movsxb ( Register  dst,
const Address src 
)

◆ movsxw() [1/2]

void dart::compiler::Assembler::movsxw ( Register  dst,
const Address src 
)

◆ movsxw() [2/2]

void dart::compiler::Assembler::movsxw ( Register  dst,
Register  src 
)

◆ movups() [1/2]

void dart::compiler::Assembler::movups ( const Address dst,
XmmRegister  src 
)

◆ movups() [2/2]

void dart::compiler::Assembler::movups ( XmmRegister  dst,
const Address src 
)

◆ movw() [1/6]

void dart::compiler::Assembler::movw ( const Address dst,
const Immediate imm 
)

◆ movw() [2/6]

void dart::compiler::Assembler::movw ( const Address dst,
const Immediate imm 
)

◆ movw() [3/6]

void dart::compiler::Assembler::movw ( const Address dst,
Register  src 
)

◆ movw() [4/6]

void dart::compiler::Assembler::movw ( Register  dst,
const Address src 
)

◆ movw() [5/6]

void dart::compiler::Assembler::movw ( Register  dst,
const Address src 
)

◆ movw() [6/6]

void dart::compiler::Assembler::movw ( Register  rd,
Register  rn 
)
inline

Definition at line 1527 of file assembler_arm64.h.

1527 {
1528 if ((rd == CSP) || (rn == CSP)) {
1529 addw(rd, rn, Operand(0));
1530 } else {
1531 orrw(rd, ZR, Operand(rn));
1532 }
1533 }
void addw(Register rd, Register rn, Operand o)
void orrw(Register rd, Register rn, Operand o)

◆ movz()

void dart::compiler::Assembler::movz ( Register  rd,
const Immediate imm,
int  hw_idx 
)
inline

Definition at line 999 of file assembler_arm64.h.

999 {
1000 ASSERT(rd != CSP);
1001 const Register crd = ConcreteRegister(rd);
1002 EmitMoveWideOp(MOVZ, crd, imm, hw_idx, kEightBytes);
1003 }

◆ movzxb() [1/2]

void dart::compiler::Assembler::movzxb ( Register  dst,
ByteRegister  src 
)

◆ movzxb() [2/2]

void dart::compiler::Assembler::movzxb ( Register  dst,
const Address src 
)

◆ movzxw() [1/2]

void dart::compiler::Assembler::movzxw ( Register  dst,
const Address src 
)

◆ movzxw() [2/2]

void dart::compiler::Assembler::movzxw ( Register  dst,
Register  src 
)

◆ msub()

void dart::compiler::Assembler::msub ( Register  rd,
Register  rn,
Register  rm,
Register  ra,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 934 of file assembler_arm64.h.

938 {
939 EmitMiscDP3Source(MSUB, rd, rn, rm, ra, sz);
940 }

◆ mul() [1/2]

void dart::compiler::Assembler::mul ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 1542 of file assembler_arm64.h.

1542 {
1543 madd(rd, rn, rm, ZR, kEightBytes);
1544 }
void madd(Register rd, Register rn, Register rm, Register ra, OperandSize sz=kEightBytes)

◆ mul() [2/2]

void dart::compiler::Assembler::mul ( Register  rd,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ MulImmediate() [1/7]

void dart::compiler::Assembler::MulImmediate ( Register  dest,
intx_t  imm,
OperandSize  width = kWordBytes 
)
inlineoverride

Definition at line 1036 of file assembler_riscv.h.

1038 {
1039 MulImmediate(dest, dest, imm, width);
1040 }
void MulImmediate(Register reg, int32_t imm, OperandSize width=kFourBytes) override

◆ MulImmediate() [2/7]

void dart::compiler::Assembler::MulImmediate ( Register  dest,
Register  rn,
intx_t  imm,
OperandSize  width = kWordBytes 
)

◆ MulImmediate() [3/7]

void dart::compiler::Assembler::MulImmediate ( Register  reg,
const Immediate imm,
OperandSize  width = kEightBytes 
)

◆ MulImmediate() [4/7]

void dart::compiler::Assembler::MulImmediate ( Register  reg,
int32_t  imm,
OperandSize  width = kFourBytes 
)
inlineoverride

Definition at line 863 of file assembler_arm.h.

865 {
867 if (Utils::IsPowerOfTwo(imm)) {
869 } else {
870 LoadImmediate(TMP, imm);
871 mul(reg, reg, TMP);
872 }
873 }
static constexpr int ShiftForPowerOfTwo(T x)
Definition: utils.h:81
void mul(Register rd, Register rn, Register rm, Condition cond=AL)

◆ MulImmediate() [5/7]

void dart::compiler::Assembler::MulImmediate ( Register  reg,
int32_t  imm,
OperandSize  width = kFourBytes 
)
inlineoverride

Definition at line 733 of file assembler_ia32.h.

735 {
737 if (Utils::IsPowerOfTwo(imm)) {
738 const intptr_t shift = Utils::ShiftForPowerOfTwo(imm);
739 shll(reg, Immediate(shift));
740 } else {
741 imull(reg, Immediate(imm));
742 }
743 }
void imull(Register dst, Register src)

◆ MulImmediate() [6/7]

void dart::compiler::Assembler::MulImmediate ( Register  reg,
int64_t  imm,
OperandSize  width = kEightBytes 
)
inlineoverride

Definition at line 1811 of file assembler_arm64.h.

1813 {
1815 if (Utils::IsPowerOfTwo(imm)) {
1817 } else {
1818 LoadImmediate(TMP, imm);
1819 if (width == kFourBytes) {
1820 mulw(reg, reg, TMP);
1821 } else {
1822 mul(reg, reg, TMP);
1823 }
1824 }
1825 }
void mulw(Register rd, Register rn, Register rm)

◆ MulImmediate() [7/7]

void dart::compiler::Assembler::MulImmediate ( Register  reg,
int64_t  imm,
OperandSize  width = kEightBytes 
)
inlineoverride

Definition at line 668 of file assembler_x64.h.

670 {
671 MulImmediate(reg, Immediate(imm), width);
672 }

◆ mull() [1/2]

void dart::compiler::Assembler::mull ( const Address address)

◆ mull() [2/2]

void dart::compiler::Assembler::mull ( Register  reg)

◆ mulpd()

void dart::compiler::Assembler::mulpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ mulps()

void dart::compiler::Assembler::mulps ( XmmRegister  dst,
XmmRegister  src 
)

◆ muls()

void dart::compiler::Assembler::muls ( Register  rd,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ mulsd() [1/2]

void dart::compiler::Assembler::mulsd ( XmmRegister  dst,
const Address src 
)

◆ mulsd() [2/2]

void dart::compiler::Assembler::mulsd ( XmmRegister  dst,
XmmRegister  src 
)

◆ mulss() [1/2]

void dart::compiler::Assembler::mulss ( XmmRegister  dst,
const Address src 
)

◆ mulss() [2/2]

void dart::compiler::Assembler::mulss ( XmmRegister  dst,
XmmRegister  src 
)

◆ MultiplyBranchOverflow()

void dart::compiler::Assembler::MultiplyBranchOverflow ( Register  rd,
Register  rs1,
Register  rs2,
Label overflow 
)

◆ MultiplyImmediateBranchOverflow()

void dart::compiler::Assembler::MultiplyImmediateBranchOverflow ( Register  rd,
Register  rs1,
intx_t  imm,
Label overflow 
)

◆ mulw()

void dart::compiler::Assembler::mulw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 1545 of file assembler_arm64.h.

1545 {
1546 madd(rd, rn, rm, ZR, kFourBytes);
1547 }

◆ mvn_() [1/2]

void dart::compiler::Assembler::mvn_ ( Register  rd,
Operand  o,
Condition  cond = AL 
)

◆ mvn_() [2/2]

void dart::compiler::Assembler::mvn_ ( Register  rd,
Register  rm 
)
inline

Definition at line 1535 of file assembler_arm64.h.

1535{ orn(rd, ZR, Operand(rm)); }
void orn(Register rd, Register rn, Operand o, OperandSize sz=kEightBytes)

◆ mvns()

void dart::compiler::Assembler::mvns ( Register  rd,
Operand  o,
Condition  cond = AL 
)

◆ mvnw()

void dart::compiler::Assembler::mvnw ( Register  rd,
Register  rm 
)
inline

Definition at line 1536 of file assembler_arm64.h.

1536{ ornw(rd, ZR, Operand(rm)); }
void ornw(Register rd, Register rn, Operand o)

◆ neg()

void dart::compiler::Assembler::neg ( Register  rd,
Register  rm 
)
inline

Definition at line 1537 of file assembler_arm64.h.

1537{ sub(rd, ZR, Operand(rm)); }
void sub(Register rd, Register rn, Operand o, Condition cond=AL)

◆ negatepd() [1/2]

void dart::compiler::Assembler::negatepd ( XmmRegister  dst)

◆ negatepd() [2/2]

void dart::compiler::Assembler::negatepd ( XmmRegister  dst,
XmmRegister  src 
)

◆ negateps() [1/2]

void dart::compiler::Assembler::negateps ( XmmRegister  dst)

◆ negateps() [2/2]

void dart::compiler::Assembler::negateps ( XmmRegister  dst,
XmmRegister  src 
)

◆ negl()

void dart::compiler::Assembler::negl ( Register  reg)

◆ negs()

void dart::compiler::Assembler::negs ( Register  rd,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1538 of file assembler_arm64.h.

1538 {
1539 subs(rd, ZR, Operand(rm), sz);
1540 }

◆ negsw()

void dart::compiler::Assembler::negsw ( Register  rd,
Register  rm 
)
inline

Definition at line 1541 of file assembler_arm64.h.

1541{ negs(rd, rm, kFourBytes); }
void negs(Register rd, Register rm, OperandSize sz=kEightBytes)

◆ nop() [1/4]

void dart::compiler::Assembler::nop ( )
inline

Definition at line 503 of file assembler_arm64.h.

static constexpr int32_t kNopInstruction

◆ nop() [2/4]

void dart::compiler::Assembler::nop ( Condition  cond = AL)

◆ nop() [3/4]

void dart::compiler::Assembler::nop ( int  size = 1)

◆ nop() [4/4]

void dart::compiler::Assembler::nop ( int  size = 1)

◆ notl()

void dart::compiler::Assembler::notl ( Register  reg)

◆ notps() [1/2]

void dart::compiler::Assembler::notps ( XmmRegister  dst)

◆ notps() [2/2]

void dart::compiler::Assembler::notps ( XmmRegister  dst,
XmmRegister  src 
)

◆ OrImmediate() [1/9]

void dart::compiler::Assembler::OrImmediate ( Register  dst,
const Immediate imm 
)

◆ OrImmediate() [2/9]

void dart::compiler::Assembler::OrImmediate ( Register  dst,
int32_t  value 
)
inline

Definition at line 754 of file assembler_ia32.h.

754{ orl(dst, Immediate(value)); }

◆ OrImmediate() [3/9]

void dart::compiler::Assembler::OrImmediate ( Register  dst,
int64_t  value 
)
inline

Definition at line 598 of file assembler_x64.h.

598 {
599 OrImmediate(dst, Immediate(value));
600 }
void OrImmediate(Register rd, Register rs, int32_t imm, Condition cond=AL)

◆ OrImmediate() [4/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
int32_t  imm,
Condition  cond = AL 
)
inline

Definition at line 895 of file assembler_arm.h.

895 {
896 OrImmediate(rd, rd, imm, cond);
897 }

◆ OrImmediate() [5/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
int64_t  imm 
)
inline

Definition at line 1846 of file assembler_arm64.h.

1846{ OrImmediate(rd, rd, imm); }

◆ OrImmediate() [6/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
intx_t  imm 
)
inline

Definition at line 1095 of file assembler_riscv.h.

1095{ OrImmediate(rd, rd, imm); }

◆ OrImmediate() [7/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ OrImmediate() [8/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
Register  rn,
intx_t  imm,
OperandSize  sz = kWordBytes 
)

◆ OrImmediate() [9/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
Register  rs,
int32_t  imm,
Condition  cond = AL 
)

◆ orn()

void dart::compiler::Assembler::orn ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 849 of file assembler_arm64.h.

849 {
850 EmitLogicalShiftOp(ORN, rd, rn, o, sz);
851 }

◆ ornw()

void dart::compiler::Assembler::ornw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 868 of file assembler_arm64.h.

868{ orn(rd, rn, o, kFourBytes); }

◆ orpd()

void dart::compiler::Assembler::orpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ orps()

void dart::compiler::Assembler::orps ( XmmRegister  dst,
XmmRegister  src 
)

◆ orr() [1/2]

void dart::compiler::Assembler::orr ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ orr() [2/2]

void dart::compiler::Assembler::orr ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 846 of file assembler_arm64.h.

846 {
847 EmitLogicalShiftOp(ORR, rd, rn, o, sz);
848 }

◆ orri()

void dart::compiler::Assembler::orri ( Register  rd,
Register  rn,
const Immediate imm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 805 of file assembler_arm64.h.

808 {
809 ASSERT(sz == kEightBytes || sz == kFourBytes);
811 Operand imm_op;
812 const bool immok = Operand::IsImmLogical(imm.value(), width, &imm_op);
813 ASSERT(immok);
814 EmitLogicalImmOp(ORRI, rd, rn, imm_op, sz);
815 }

◆ orrs()

void dart::compiler::Assembler::orrs ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ orrw()

void dart::compiler::Assembler::orrw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 867 of file assembler_arm64.h.

867{ orr(rd, rn, o, kFourBytes); }

◆ pcmpeqq()

void dart::compiler::Assembler::pcmpeqq ( XmmRegister  dst,
XmmRegister  src 
)

◆ pextrd()

void dart::compiler::Assembler::pextrd ( Register  dst,
XmmRegister  src,
const Immediate imm 
)

◆ pmovmskb() [1/2]

void dart::compiler::Assembler::pmovmskb ( Register  dst,
XmmRegister  src 
)

◆ pmovmskb() [2/2]

void dart::compiler::Assembler::pmovmskb ( Register  dst,
XmmRegister  src 
)
inline

Definition at line 536 of file assembler_x64.h.

536 {
537 EmitL(dst, src, 0xD7, 0x0F, 0x66);
538 }

◆ pmovsxdq()

void dart::compiler::Assembler::pmovsxdq ( XmmRegister  dst,
XmmRegister  src 
)

◆ Pop() [1/2]

void dart::compiler::Assembler::Pop ( Register  rd,
Condition  cond = AL 
)

◆ Pop() [2/2]

void dart::compiler::Assembler::Pop ( Register  reg)
inline

Definition at line 1552 of file assembler_arm64.h.

1552 {
1553 ASSERT(reg != PP); // Only pop PP with PopAndUntagPP().
1554 ldr(reg, Address(SP, 1 * target::kWordSize, Address::PostIndex));
1555 }
const Register PP

◆ popal()

void dart::compiler::Assembler::popal ( )

◆ PopAndUntagPP()

void dart::compiler::Assembler::PopAndUntagPP ( )
inline

Definition at line 1606 of file assembler_arm64.h.

1606 {
1607 ldr(PP, Address(SP, 1 * target::kWordSize, Address::PostIndex));
1608 sub(PP, PP, Operand(kHeapObjectTag));
1609 // The caller of PopAndUntagPP() must explicitly allow use of popped PP.
1611 }
void set_constant_pool_allowed(bool b)

◆ popcntl()

void dart::compiler::Assembler::popcntl ( Register  dst,
Register  src 
)

◆ PopDouble()

void dart::compiler::Assembler::PopDouble ( VRegister  reg)
inline

Definition at line 1574 of file assembler_arm64.h.

1574 {
1575 fldrd(reg, Address(SP, 1 * kDoubleSize, Address::PostIndex));
1576 }
void fldrd(VRegister vt, Address a)
constexpr intptr_t kDoubleSize
Definition: globals.h:456

◆ PopDoublePair()

void dart::compiler::Assembler::PopDoublePair ( VRegister  low,
VRegister  high 
)
inline

Definition at line 1584 of file assembler_arm64.h.

1584 {
1585 fldp(low, high, Address(SP, 2 * kDoubleSize, Address::PairPostIndex),
1586 kDWord);
1587 }
void fldp(VRegister rt, VRegister rt2, Address a, OperandSize sz)

◆ PopFloat()

void dart::compiler::Assembler::PopFloat ( VRegister  reg)
inline

Definition at line 1571 of file assembler_arm64.h.

1571 {
1572 fldrs(reg, Address(SP, 1 * kFloatSize, Address::PostIndex));
1573 }
void fldrs(VRegister vt, Address a)
constexpr intptr_t kFloatSize
Definition: globals.h:457

◆ popl() [1/2]

void dart::compiler::Assembler::popl ( const Address address)

◆ popl() [2/2]

void dart::compiler::Assembler::popl ( Register  reg)

◆ PopList()

void dart::compiler::Assembler::PopList ( RegList  regs,
Condition  cond = AL 
)

◆ PopNativeCalleeSavedRegisters() [1/3]

void dart::compiler::Assembler::PopNativeCalleeSavedRegisters ( )

◆ PopNativeCalleeSavedRegisters() [2/3]

void dart::compiler::Assembler::PopNativeCalleeSavedRegisters ( )

◆ PopNativeCalleeSavedRegisters() [3/3]

void dart::compiler::Assembler::PopNativeCalleeSavedRegisters ( )

◆ PopPair()

void dart::compiler::Assembler::PopPair ( Register  low,
Register  high 
)
inline

Definition at line 1559 of file assembler_arm64.h.

1559 {
1560 ldp(low, high, Address(SP, 2 * target::kWordSize, Address::PairPostIndex));
1561 }
void ldp(Register rt, Register rt2, Address a, OperandSize sz=kEightBytes)

◆ popq() [1/2]

void dart::compiler::Assembler::popq ( const Address address)
inline

Definition at line 317 of file assembler_x64.h.

317{ EmitUnaryL(address, 0x8F, 0); }

◆ popq() [2/2]

void dart::compiler::Assembler::popq ( Register  reg)

◆ PopQuad() [1/2]

void dart::compiler::Assembler::PopQuad ( FpuRegister  rd,
Condition  cond = AL 
)

◆ PopQuad() [2/2]

void dart::compiler::Assembler::PopQuad ( VRegister  reg)
inline

Definition at line 1577 of file assembler_arm64.h.

1577 {
1578 fldrq(reg, Address(SP, 1 * kQuadSize, Address::PostIndex));
1579 }
void fldrq(VRegister vt, Address a)
constexpr intptr_t kQuadSize
Definition: globals.h:458

◆ PopQuadPair()

void dart::compiler::Assembler::PopQuadPair ( VRegister  low,
VRegister  high 
)
inline

Definition at line 1591 of file assembler_arm64.h.

1591 {
1592 fldp(low, high, Address(SP, 2 * kQuadSize, Address::PairPostIndex), kQWord);
1593 }

◆ PopRegister() [1/5]

void dart::compiler::Assembler::PopRegister ( Register  r)
inline

Definition at line 392 of file assembler_arm.h.

392{ Pop(r); }
void Pop(Register rd, Condition cond=AL)

◆ PopRegister() [2/5]

void dart::compiler::Assembler::PopRegister ( Register  r)
inline

Definition at line 473 of file assembler_arm64.h.

473{ Pop(r); }

◆ PopRegister() [3/5]

void dart::compiler::Assembler::PopRegister ( Register  r)

◆ PopRegister() [4/5]

void dart::compiler::Assembler::PopRegister ( Register  r)

◆ PopRegister() [5/5]

void dart::compiler::Assembler::PopRegister ( Register  r)

◆ PopRegisterPair() [1/5]

void dart::compiler::Assembler::PopRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 406 of file assembler_arm.h.

406 {
407 if ((r0 < r1) && (r0 != SP) && (r1 != SP)) {
408 RegList reg_list = (1 << r0) | (1 << r1);
409 PopList(reg_list);
410 } else {
411 PopRegister(r0);
412 PopRegister(r1);
413 }
414 }
void PopList(RegList regs, Condition cond=AL)
void PopRegister(Register r)
uint16_t RegList

◆ PopRegisterPair() [2/5]

void dart::compiler::Assembler::PopRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 478 of file assembler_arm64.h.

478{ PopPair(r0, r1); }
void PopPair(Register low, Register high)

◆ PopRegisterPair() [3/5]

void dart::compiler::Assembler::PopRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 707 of file assembler_ia32.h.

707 {
708 PopRegister(r0);
709 PopRegister(r1);
710 }

◆ PopRegisterPair() [4/5]

void dart::compiler::Assembler::PopRegisterPair ( Register  r0,
Register  r1 
)

◆ PopRegisterPair() [5/5]

void dart::compiler::Assembler::PopRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 766 of file assembler_x64.h.

766 {
767 PopRegister(r0);
768 PopRegister(r1);
769 }

◆ PopRegisters() [1/4]

void dart::compiler::Assembler::PopRegisters ( const RegisterSet registers)

◆ PopRegisters() [2/4]

void dart::compiler::Assembler::PopRegisters ( const RegisterSet registers)

◆ PopRegisters() [3/4]

void dart::compiler::Assembler::PopRegisters ( const RegisterSet registers)

◆ PopRegisters() [4/4]

void dart::compiler::Assembler::PopRegisters ( const RegisterSet regs)

◆ PrepareAtomicOffset()

Address dart::compiler::Assembler::PrepareAtomicOffset ( Register  base,
int32_t  offset 
)

◆ PrepareLargeLoadOffset()

Address dart::compiler::Assembler::PrepareLargeLoadOffset ( const Address addr,
OperandSize  sz,
Condition  cond 
)

◆ PrepareLargeOffset() [1/2]

Address dart::compiler::Assembler::PrepareLargeOffset ( Register  base,
int32_t  offset 
)

◆ PrepareLargeOffset() [2/2]

Address dart::compiler::Assembler::PrepareLargeOffset ( Register  base,
int32_t  offset,
OperandSize  sz,
Address::AddressType  addr_type 
)

◆ PrepareLargeStoreOffset()

Address dart::compiler::Assembler::PrepareLargeStoreOffset ( const Address addr,
OperandSize  sz,
Condition  cond 
)

◆ Push() [1/2]

void dart::compiler::Assembler::Push ( Register  rd,
Condition  cond = AL 
)

◆ Push() [2/2]

void dart::compiler::Assembler::Push ( Register  reg)
inline

Definition at line 1548 of file assembler_arm64.h.

1548 {
1549 ASSERT(reg != PP); // Only push PP with TagAndPushPP().
1550 str(reg, Address(SP, -1 * target::kWordSize, Address::PreIndex));
1551 }
void str(Register rd, Address ad, Condition cond=AL)

◆ pushal()

void dart::compiler::Assembler::pushal ( )

◆ PushCodeObject()

void dart::compiler::Assembler::PushCodeObject ( )

◆ PushDouble()

void dart::compiler::Assembler::PushDouble ( VRegister  reg)
inline

Definition at line 1565 of file assembler_arm64.h.

1565 {
1566 fstrd(reg, Address(SP, -1 * kDoubleSize, Address::PreIndex));
1567 }
void fstrd(VRegister vt, Address a)

◆ PushDoublePair()

void dart::compiler::Assembler::PushDoublePair ( VRegister  low,
VRegister  high 
)
inline

Definition at line 1580 of file assembler_arm64.h.

1580 {
1581 fstp(low, high, Address(SP, -2 * kDoubleSize, Address::PairPreIndex),
1582 kDWord);
1583 }
void fstp(VRegister rt, VRegister rt2, Address a, OperandSize sz)

◆ PushFloat()

void dart::compiler::Assembler::PushFloat ( VRegister  reg)
inline

Definition at line 1562 of file assembler_arm64.h.

1562 {
1563 fstrs(reg, Address(SP, -1 * kFloatSize, Address::PreIndex));
1564 }
void fstrs(VRegister vt, Address a)

◆ PushImmediate() [1/7]

void dart::compiler::Assembler::PushImmediate ( const Immediate imm)
inline

Definition at line 313 of file assembler_x64.h.

313{ pushq(imm); }
void pushq(Register reg)

◆ PushImmediate() [2/7]

void dart::compiler::Assembler::PushImmediate ( Immediate  immediate)
inline

Definition at line 2029 of file assembler_arm64.h.

2029{ PushImmediate(immediate.value()); }
void PushImmediate(int32_t immediate)

◆ PushImmediate() [3/7]

void dart::compiler::Assembler::PushImmediate ( int32_t  immediate)
inline

Definition at line 990 of file assembler_arm.h.

990 {
991 LoadImmediate(TMP, immediate);
992 Push(TMP);
993 }
void Push(Register rd, Condition cond=AL)

◆ PushImmediate() [4/7]

void dart::compiler::Assembler::PushImmediate ( int32_t  value)
inline

Definition at line 257 of file assembler_ia32.h.

257{ pushl(Immediate(value)); }
void pushl(Register reg)

◆ PushImmediate() [5/7]

void dart::compiler::Assembler::PushImmediate ( int64_t  immediate)
inline

Definition at line 2025 of file assembler_arm64.h.

2025 {
2026 LoadImmediate(TMP, immediate);
2027 Push(TMP);
2028 }

◆ PushImmediate() [6/7]

void dart::compiler::Assembler::PushImmediate ( int64_t  immediate)
inline

Definition at line 1251 of file assembler_riscv.h.

1251 {
1252 if (immediate == 0) {
1254 } else {
1255 LoadImmediate(TMP, immediate);
1257 }
1258 }
void PushRegister(Register r)

◆ PushImmediate() [7/7]

void dart::compiler::Assembler::PushImmediate ( int64_t  value)
inline

Definition at line 314 of file assembler_x64.h.

314{ PushImmediate(Immediate(value)); }

◆ pushl() [1/3]

void dart::compiler::Assembler::pushl ( const Address address)

◆ pushl() [2/3]

void dart::compiler::Assembler::pushl ( const Immediate imm)

◆ pushl() [3/3]

void dart::compiler::Assembler::pushl ( Register  reg)

◆ PushList()

void dart::compiler::Assembler::PushList ( RegList  regs,
Condition  cond = AL 
)

◆ PushNativeCalleeSavedRegisters() [1/3]

void dart::compiler::Assembler::PushNativeCalleeSavedRegisters ( )

◆ PushNativeCalleeSavedRegisters() [2/3]

void dart::compiler::Assembler::PushNativeCalleeSavedRegisters ( )

◆ PushNativeCalleeSavedRegisters() [3/3]

void dart::compiler::Assembler::PushNativeCalleeSavedRegisters ( )

◆ PushObject() [1/5]

void dart::compiler::Assembler::PushObject ( const Object object)

◆ PushObject() [2/5]

void dart::compiler::Assembler::PushObject ( const Object object)
inline

Definition at line 2017 of file assembler_arm64.h.

2017 {
2018 if (IsSameObject(compiler::NullObject(), object)) {
2019 Push(NULL_REG);
2020 } else {
2021 LoadObject(TMP, object);
2022 Push(TMP);
2023 }
2024 }
bool IsSameObject(const Object &a, const Object &b)
Definition: runtime_api.cc:60
const Object & NullObject()
Definition: runtime_api.cc:149
const Register NULL_REG

◆ PushObject() [3/5]

void dart::compiler::Assembler::PushObject ( const Object object)

◆ PushObject() [4/5]

void dart::compiler::Assembler::PushObject ( const Object object)
inline

Definition at line 1241 of file assembler_riscv.h.

1241 {
1242 if (IsSameObject(compiler::NullObject(), object)) {
1244 } else if (target::IsSmi(object) && (target::ToRawSmi(object) == 0)) {
1246 } else {
1247 LoadObject(TMP, object);
1249 }
1250 }
word ToRawSmi(const dart::Object &a)
Definition: runtime_api.cc:960

◆ PushObject() [5/5]

void dart::compiler::Assembler::PushObject ( const Object object)

◆ PushPair()

void dart::compiler::Assembler::PushPair ( Register  low,
Register  high 
)
inline

Definition at line 1556 of file assembler_arm64.h.

1556 {
1557 stp(low, high, Address(SP, -2 * target::kWordSize, Address::PairPreIndex));
1558 }
void stp(Register rt, Register rt2, Address a, OperandSize sz=kEightBytes)

◆ pushq() [1/3]

void dart::compiler::Assembler::pushq ( const Address address)
inline

Definition at line 311 of file assembler_x64.h.

311{ EmitUnaryL(address, 0xFF, 6); }

◆ pushq() [2/3]

void dart::compiler::Assembler::pushq ( const Immediate imm)

◆ pushq() [3/3]

void dart::compiler::Assembler::pushq ( Register  reg)

◆ PushQuad() [1/2]

void dart::compiler::Assembler::PushQuad ( FpuRegister  rd,
Condition  cond = AL 
)

◆ PushQuad() [2/2]

void dart::compiler::Assembler::PushQuad ( VRegister  reg)
inline

Definition at line 1568 of file assembler_arm64.h.

1568 {
1569 fstrq(reg, Address(SP, -1 * kQuadSize, Address::PreIndex));
1570 }
void fstrq(VRegister vt, Address a)

◆ PushQuadPair()

void dart::compiler::Assembler::PushQuadPair ( VRegister  low,
VRegister  high 
)
inline

Definition at line 1588 of file assembler_arm64.h.

1588 {
1589 fstp(low, high, Address(SP, -2 * kQuadSize, Address::PairPreIndex), kQWord);
1590 }

◆ PushRegister() [1/5]

void dart::compiler::Assembler::PushRegister ( Register  r)
inline

Definition at line 391 of file assembler_arm.h.

391{ Push(r); }

◆ PushRegister() [2/5]

void dart::compiler::Assembler::PushRegister ( Register  r)
inline

Definition at line 472 of file assembler_arm64.h.

472{ Push(r); }

◆ PushRegister() [3/5]

void dart::compiler::Assembler::PushRegister ( Register  r)

◆ PushRegister() [4/5]

void dart::compiler::Assembler::PushRegister ( Register  r)

◆ PushRegister() [5/5]

void dart::compiler::Assembler::PushRegister ( Register  r)

◆ PushRegisterPair() [1/5]

void dart::compiler::Assembler::PushRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 395 of file assembler_arm.h.

395 {
396 if ((r0 < r1) && (r0 != SP) && (r1 != SP)) {
397 RegList reg_list = (1 << r0) | (1 << r1);
398 PushList(reg_list);
399 } else {
400 PushRegister(r1);
401 PushRegister(r0);
402 }
403 }
void PushList(RegList regs, Condition cond=AL)

◆ PushRegisterPair() [2/5]

void dart::compiler::Assembler::PushRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 477 of file assembler_arm64.h.

477{ PushPair(r0, r1); }
void PushPair(Register low, Register high)

◆ PushRegisterPair() [3/5]

void dart::compiler::Assembler::PushRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 703 of file assembler_ia32.h.

703 {
704 PushRegister(r1);
705 PushRegister(r0);
706 }

◆ PushRegisterPair() [4/5]

void dart::compiler::Assembler::PushRegisterPair ( Register  r0,
Register  r1 
)

◆ PushRegisterPair() [5/5]

void dart::compiler::Assembler::PushRegisterPair ( Register  r0,
Register  r1 
)
inline

Definition at line 762 of file assembler_x64.h.

762 {
763 PushRegister(r1);
764 PushRegister(r0);
765 }

◆ PushRegisters() [1/4]

void dart::compiler::Assembler::PushRegisters ( const RegisterSet registers)

◆ PushRegisters() [2/4]

void dart::compiler::Assembler::PushRegisters ( const RegisterSet registers)

◆ PushRegisters() [3/4]

void dart::compiler::Assembler::PushRegisters ( const RegisterSet registers)

◆ PushRegisters() [4/4]

void dart::compiler::Assembler::PushRegisters ( const RegisterSet regs)

◆ PushRegistersInOrder() [1/5]

void dart::compiler::Assembler::PushRegistersInOrder ( std::initializer_list< Register regs)

◆ PushRegistersInOrder() [2/5]

void dart::compiler::Assembler::PushRegistersInOrder ( std::initializer_list< Register regs)

◆ PushRegistersInOrder() [3/5]

void dart::compiler::Assembler::PushRegistersInOrder ( std::initializer_list< Register regs)

◆ PushRegistersInOrder() [4/5]

void dart::compiler::Assembler::PushRegistersInOrder ( std::initializer_list< Register regs)

◆ PushRegistersInOrder() [5/5]

void dart::compiler::Assembler::PushRegistersInOrder ( std::initializer_list< Register regs)

◆ PushValueAtOffset() [1/5]

void dart::compiler::Assembler::PushValueAtOffset ( Register  base,
int32_t  offset 
)
inline

Definition at line 416 of file assembler_arm.h.

416{ UNIMPLEMENTED(); }
#define UNIMPLEMENTED

◆ PushValueAtOffset() [2/5]

void dart::compiler::Assembler::PushValueAtOffset ( Register  base,
int32_t  offset 
)
inline

Definition at line 475 of file assembler_arm64.h.

475{ UNIMPLEMENTED(); }

◆ PushValueAtOffset() [3/5]

void dart::compiler::Assembler::PushValueAtOffset ( Register  base,
int32_t  offset 
)
inline

Definition at line 590 of file assembler_ia32.h.

590 {
591 pushl(Address(base, offset));
592 }

◆ PushValueAtOffset() [4/5]

void dart::compiler::Assembler::PushValueAtOffset ( Register  base,
int32_t  offset 
)
inline

Definition at line 852 of file assembler_riscv.h.

852{ UNIMPLEMENTED(); }

◆ PushValueAtOffset() [5/5]

void dart::compiler::Assembler::PushValueAtOffset ( Register  base,
int32_t  offset 
)
inline

Definition at line 771 of file assembler_x64.h.

771 {
772 pushq(Address(base, offset));
773 }

◆ pxor()

void dart::compiler::Assembler::pxor ( XmmRegister  dst,
XmmRegister  src 
)

◆ RangeCheck() [1/5]

void dart::compiler::Assembler::RangeCheck ( Register  value,
Register  temp,
intptr_t  low,
intptr_t  high,
RangeCheckCondition  condition,
Label target 
)
overridevirtual

◆ RangeCheck() [2/5]

void dart::compiler::Assembler::RangeCheck ( Register  value,
Register  temp,
intptr_t  low,
intptr_t  high,
RangeCheckCondition  condition,
Label target 
)
overridevirtual

◆ RangeCheck() [3/5]

void dart::compiler::Assembler::RangeCheck ( Register  value,
Register  temp,
intptr_t  low,
intptr_t  high,
RangeCheckCondition  condition,
Label target 
)
overridevirtual

◆ RangeCheck() [4/5]

void dart::compiler::Assembler::RangeCheck ( Register  value,
Register  temp,
intptr_t  low,
intptr_t  high,
RangeCheckCondition  condition,
Label target 
)
overridevirtual

◆ RangeCheck() [5/5]

void dart::compiler::Assembler::RangeCheck ( Register  value,
Register  temp,
intptr_t  low,
intptr_t  high,
RangeCheckCondition  condition,
Label target 
)
overridevirtual

◆ rbit() [1/2]

void dart::compiler::Assembler::rbit ( Register  rd,
Register  rm,
Condition  cond = AL 
)

◆ rbit() [2/2]

void dart::compiler::Assembler::rbit ( Register  rd,
Register  rn 
)
inline

Definition at line 880 of file assembler_arm64.h.

880 {
881 EmitMiscDP1Source(RBIT, rd, rn, kEightBytes);
882 }

◆ reciprocalps()

void dart::compiler::Assembler::reciprocalps ( XmmRegister  dst)

◆ rep_movsb()

void dart::compiler::Assembler::rep_movsb ( )

◆ rep_movsd()

void dart::compiler::Assembler::rep_movsd ( )

◆ rep_movsw()

void dart::compiler::Assembler::rep_movsw ( )

◆ ReserveAlignedFrameSpace() [1/5]

void dart::compiler::Assembler::ReserveAlignedFrameSpace ( intptr_t  frame_space)

◆ ReserveAlignedFrameSpace() [2/5]

void dart::compiler::Assembler::ReserveAlignedFrameSpace ( intptr_t  frame_space)

◆ ReserveAlignedFrameSpace() [3/5]

void dart::compiler::Assembler::ReserveAlignedFrameSpace ( intptr_t  frame_space)

◆ ReserveAlignedFrameSpace() [4/5]

void dart::compiler::Assembler::ReserveAlignedFrameSpace ( intptr_t  frame_space)

◆ ReserveAlignedFrameSpace() [5/5]

void dart::compiler::Assembler::ReserveAlignedFrameSpace ( intptr_t  frame_space)

◆ RestoreCodePointer() [1/4]

void dart::compiler::Assembler::RestoreCodePointer ( )

◆ RestoreCodePointer() [2/4]

void dart::compiler::Assembler::RestoreCodePointer ( )

◆ RestoreCodePointer() [3/4]

void dart::compiler::Assembler::RestoreCodePointer ( )

◆ RestoreCodePointer() [4/4]

void dart::compiler::Assembler::RestoreCodePointer ( )

◆ RestoreCSP()

void dart::compiler::Assembler::RestoreCSP ( )

◆ RestorePinnedRegisters() [1/2]

void dart::compiler::Assembler::RestorePinnedRegisters ( )

◆ RestorePinnedRegisters() [2/2]

void dart::compiler::Assembler::RestorePinnedRegisters ( )

◆ RestorePoolPointer()

void dart::compiler::Assembler::RestorePoolPointer ( )

◆ Ret() [1/5]

void dart::compiler::Assembler::Ret ( )
inline

Definition at line 2070 of file assembler_arm64.h.

2070{ ret(); }

◆ ret() [1/3]

void dart::compiler::Assembler::ret ( )

◆ Ret() [2/5]

void dart::compiler::Assembler::Ret ( )
inline

Definition at line 584 of file assembler_ia32.h.

584{ ret(); }

◆ Ret() [3/5]

void dart::compiler::Assembler::Ret ( )
inline

Definition at line 1286 of file assembler_riscv.h.

1286{ ret(); }

◆ Ret() [4/5]

void dart::compiler::Assembler::Ret ( )
inline

Definition at line 730 of file assembler_x64.h.

730{ ret(); }

◆ Ret() [5/5]

void dart::compiler::Assembler::Ret ( Condition  cond = AL)

◆ ret() [2/3]

void dart::compiler::Assembler::ret ( const Immediate imm)

◆ ret() [3/3]

void dart::compiler::Assembler::ret ( Register  rn = kNoRegister2)
inline

Definition at line 1242 of file assembler_arm64.h.

1242 {
1243 if (rn == kNoRegister2) {
1244 // READS_RETURN_ADDRESS_FROM_LR uses __ to access the assembler.
1245#define __ this->
1246 READS_RETURN_ADDRESS_FROM_LR(rn = LR);
1247#undef __
1248 }
1249 EmitUnconditionalBranchRegOp(RET, rn);
1250 }
@ kNoRegister2

◆ Ror() [1/2]

void dart::compiler::Assembler::Ror ( Register  rd,
Register  rm,
const Operand shift_imm,
Condition  cond = AL 
)

◆ Ror() [2/2]

void dart::compiler::Assembler::Ror ( Register  rd,
Register  rm,
Register  rs,
Condition  cond = AL 
)

◆ roundsd() [1/2]

void dart::compiler::Assembler::roundsd ( XmmRegister  dst,
XmmRegister  src,
RoundingMode  mode 
)

◆ roundsd() [2/2]

void dart::compiler::Assembler::roundsd ( XmmRegister  dst,
XmmRegister  src,
RoundingMode  mode 
)

◆ Rrx()

void dart::compiler::Assembler::Rrx ( Register  rd,
Register  rm,
Condition  cond = AL 
)

◆ rsb()

void dart::compiler::Assembler::rsb ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ rsbs()

void dart::compiler::Assembler::rsbs ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ rsc()

void dart::compiler::Assembler::rsc ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ rsqrtps()

void dart::compiler::Assembler::rsqrtps ( XmmRegister  dst)

◆ sarl() [1/5]

void dart::compiler::Assembler::sarl ( const Address address,
Register  shifter 
)

◆ sarl() [2/5]

void dart::compiler::Assembler::sarl ( Register  operand,
Register  shifter 
)

◆ sarl() [3/5]

void dart::compiler::Assembler::sarl ( Register  operand,
Register  shifter 
)

◆ sarl() [4/5]

void dart::compiler::Assembler::sarl ( Register  reg,
const Immediate imm 
)

◆ sarl() [5/5]

void dart::compiler::Assembler::sarl ( Register  reg,
const Immediate imm 
)

◆ sarq() [1/2]

void dart::compiler::Assembler::sarq ( Register  operand,
Register  shifter 
)

◆ sarq() [2/2]

void dart::compiler::Assembler::sarq ( Register  reg,
const Immediate imm 
)

◆ sbc() [1/2]

void dart::compiler::Assembler::sbc ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ sbc() [2/2]

void dart::compiler::Assembler::sbc ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 650 of file assembler_arm64.h.

650 {
651 AddSubWithCarryHelper(kEightBytes, false, true, rd, rn, rm);
652 }

◆ sbcs() [1/2]

void dart::compiler::Assembler::sbcs ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ sbcs() [2/2]

void dart::compiler::Assembler::sbcs ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 653 of file assembler_arm64.h.

653 {
654 AddSubWithCarryHelper(kEightBytes, true, true, rd, rn, rm);
655 }

◆ sbcsw()

void dart::compiler::Assembler::sbcsw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 659 of file assembler_arm64.h.

659 {
660 AddSubWithCarryHelper(kFourBytes, true, true, rd, rn, rm);
661 }

◆ sbcw()

void dart::compiler::Assembler::sbcw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 656 of file assembler_arm64.h.

656 {
657 AddSubWithCarryHelper(kFourBytes, false, true, rd, rn, rm);
658 }

◆ sbfiz()

void dart::compiler::Assembler::sbfiz ( Register  rd,
Register  rn,
int  low_bit,
int  width,
OperandSize  size = kEightBytes 
)
inline

Definition at line 720 of file assembler_arm64.h.

724 {
725 int wordsize = size == kEightBytes ? 64 : 32;
726 EmitBitfieldOp(SBFM, rd, rn, (wordsize - low_bit) & (wordsize - 1),
727 width - 1, size);
728 }

◆ sbfm()

void dart::compiler::Assembler::sbfm ( Register  rd,
Register  rn,
int  r_imm,
int  s_imm,
OperandSize  size = kEightBytes 
)
inline

Definition at line 679 of file assembler_arm64.h.

683 {
684 EmitBitfieldOp(SBFM, rd, rn, r_imm, s_imm, size);
685 }

◆ sbfx() [1/2]

void dart::compiler::Assembler::sbfx ( Register  rd,
Register  rn,
int  low_bit,
int  width,
OperandSize  size = kEightBytes 
)
inline

Definition at line 732 of file assembler_arm64.h.

736 {
737 EmitBitfieldOp(SBFM, rd, rn, low_bit, low_bit + width - 1, size);
738 }

◆ sbfx() [2/2]

void dart::compiler::Assembler::sbfx ( Register  rd,
Register  rn,
int32_t  lsb,
int32_t  width,
Condition  cond = AL 
)

◆ scvtfdw()

void dart::compiler::Assembler::scvtfdw ( VRegister  vd,
Register  rn 
)
inline

Definition at line 1300 of file assembler_arm64.h.

1300 {
1301 ASSERT(rn != R31);
1302 ASSERT(rn != CSP);
1303 const Register crn = ConcreteRegister(rn);
1304 EmitFPIntCvtOp(SCVTFD, static_cast<Register>(vd), crn, kFourBytes);
1305 }

◆ scvtfdx()

void dart::compiler::Assembler::scvtfdx ( VRegister  vd,
Register  rn 
)
inline

Definition at line 1294 of file assembler_arm64.h.

1294 {
1295 ASSERT(rn != R31);
1296 ASSERT(rn != CSP);
1297 const Register crn = ConcreteRegister(rn);
1298 EmitFPIntCvtOp(SCVTFD, static_cast<Register>(vd), crn);
1299 }

◆ sdiv() [1/2]

void dart::compiler::Assembler::sdiv ( Register  rd,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ sdiv() [2/2]

void dart::compiler::Assembler::sdiv ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 891 of file assembler_arm64.h.

894 {
895 EmitMiscDP2Source(SDIV, rd, rn, rm, sz);
896 }

◆ sdivw()

void dart::compiler::Assembler::sdivw ( Register  rd,
Register  rn,
Register  rm 
)
inline

Definition at line 915 of file assembler_arm64.h.

915 {
916 sdiv(rd, rn, rm, kFourBytes);
917 }
void sdiv(Register rd, Register rn, Register rm, Condition cond=AL)

◆ set1ps() [1/2]

void dart::compiler::Assembler::set1ps ( XmmRegister  dst,
Register  tmp,
const Immediate imm 
)

◆ set1ps() [2/2]

void dart::compiler::Assembler::set1ps ( XmmRegister  dst,
Register  tmp,
const Immediate imm 
)

◆ set_constant_pool_allowed() [1/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 1616 of file assembler_arm.h.

1616{ constant_pool_allowed_ = b; }

◆ set_constant_pool_allowed() [2/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 1976 of file assembler_arm64.h.

1976{ constant_pool_allowed_ = b; }

◆ set_constant_pool_allowed() [3/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 1202 of file assembler_riscv.h.

1202{ constant_pool_allowed_ = b; }

◆ set_constant_pool_allowed() [4/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 809 of file assembler_x64.h.

809{ constant_pool_allowed_ = b; }

◆ set_lr_state() [1/2]

void dart::compiler::Assembler::set_lr_state ( compiler::LRState  b)
inline

Definition at line 1619 of file assembler_arm.h.

1619{ lr_state_ = b; }

◆ set_lr_state() [2/2]

void dart::compiler::Assembler::set_lr_state ( compiler::LRState  state)
inline

Definition at line 1979 of file assembler_arm64.h.

1979{ lr_state_ = state; }
AtkStateType state

◆ set_use_far_branches()

void dart::compiler::Assembler::set_use_far_branches ( bool  b)
inline

Definition at line 578 of file assembler_arm64.h.

578{ use_far_branches_ = b; }

◆ setcc() [1/2]

void dart::compiler::Assembler::setcc ( Condition  condition,
ByteRegister  dst 
)

◆ setcc() [2/2]

void dart::compiler::Assembler::setcc ( Condition  condition,
ByteRegister  dst 
)

◆ SetIf()

void dart::compiler::Assembler::SetIf ( Condition  condition,
Register  rd 
)

◆ SetPrologueOffset() [1/2]

void dart::compiler::Assembler::SetPrologueOffset ( )
inline

Definition at line 583 of file assembler_arm64.h.

583 {
584 if (prologue_offset_ == -1) {
586 }
587 }

◆ SetPrologueOffset() [2/2]

void dart::compiler::Assembler::SetPrologueOffset ( )
inline

Definition at line 907 of file assembler_riscv.h.

907 {
908 if (prologue_offset_ == -1) {
910 }
911 }

◆ SetReturnAddress() [1/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)

◆ SetReturnAddress() [2/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)

◆ SetReturnAddress() [3/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)
inline

Definition at line 588 of file assembler_ia32.h.

◆ SetReturnAddress() [4/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)
inline

Definition at line 1290 of file assembler_riscv.h.

1290{ mv(RA, value); }
void mv(Register rd, Register rs)

◆ SetReturnAddress() [5/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)
inline

Definition at line 734 of file assembler_x64.h.

◆ SetupCSPFromThread()

void dart::compiler::Assembler::SetupCSPFromThread ( Register  thr)

◆ SetupDartSP()

void dart::compiler::Assembler::SetupDartSP ( intptr_t  reserve = 4096)

◆ SetupGlobalPoolAndDispatchTable() [1/3]

void dart::compiler::Assembler::SetupGlobalPoolAndDispatchTable ( )

◆ SetupGlobalPoolAndDispatchTable() [2/3]

void dart::compiler::Assembler::SetupGlobalPoolAndDispatchTable ( )

◆ SetupGlobalPoolAndDispatchTable() [3/3]

void dart::compiler::Assembler::SetupGlobalPoolAndDispatchTable ( )

◆ shldl() [1/4]

void dart::compiler::Assembler::shldl ( const Address operand,
Register  src,
Register  shifter 
)

◆ shldl() [2/4]

void dart::compiler::Assembler::shldl ( Register  dst,
Register  src,
const Immediate imm 
)

◆ shldl() [3/4]

void dart::compiler::Assembler::shldl ( Register  dst,
Register  src,
const Immediate imm 
)

◆ shldl() [4/4]

void dart::compiler::Assembler::shldl ( Register  dst,
Register  src,
Register  shifter 
)

◆ shldq() [1/2]

void dart::compiler::Assembler::shldq ( Register  dst,
Register  src,
const Immediate imm 
)

◆ shldq() [2/2]

void dart::compiler::Assembler::shldq ( Register  dst,
Register  src,
Register  shifter 
)
inline

Definition at line 610 of file assembler_x64.h.

610 {
611 ASSERT(shifter == RCX);
612 EmitQ(src, dst, 0xA5, 0x0F);
613 }

◆ shll() [1/5]

void dart::compiler::Assembler::shll ( const Address operand,
Register  shifter 
)

◆ shll() [2/5]

void dart::compiler::Assembler::shll ( Register  operand,
Register  shifter 
)

◆ shll() [3/5]

void dart::compiler::Assembler::shll ( Register  operand,
Register  shifter 
)

◆ shll() [4/5]

void dart::compiler::Assembler::shll ( Register  reg,
const Immediate imm 
)

◆ shll() [5/5]

void dart::compiler::Assembler::shll ( Register  reg,
const Immediate imm 
)

◆ shlq() [1/2]

void dart::compiler::Assembler::shlq ( Register  operand,
Register  shifter 
)

◆ shlq() [2/2]

void dart::compiler::Assembler::shlq ( Register  reg,
const Immediate imm 
)

◆ shrdl() [1/3]

void dart::compiler::Assembler::shrdl ( const Address dst,
Register  src,
Register  shifter 
)

◆ shrdl() [2/3]

void dart::compiler::Assembler::shrdl ( Register  dst,
Register  src,
const Immediate imm 
)

◆ shrdl() [3/3]

void dart::compiler::Assembler::shrdl ( Register  dst,
Register  src,
Register  shifter 
)

◆ shrdq()

void dart::compiler::Assembler::shrdq ( Register  dst,
Register  src,
Register  shifter 
)
inline

Definition at line 614 of file assembler_x64.h.

614 {
615 ASSERT(shifter == RCX);
616 EmitQ(src, dst, 0xAD, 0x0F);
617 }

◆ shrl() [1/4]

void dart::compiler::Assembler::shrl ( Register  operand,
Register  shifter 
)

◆ shrl() [2/4]

void dart::compiler::Assembler::shrl ( Register  operand,
Register  shifter 
)

◆ shrl() [3/4]

void dart::compiler::Assembler::shrl ( Register  reg,
const Immediate imm 
)

◆ shrl() [4/4]

void dart::compiler::Assembler::shrl ( Register  reg,
const Immediate imm 
)

◆ shrq() [1/2]

void dart::compiler::Assembler::shrq ( Register  operand,
Register  shifter 
)

◆ shrq() [2/2]

void dart::compiler::Assembler::shrq ( Register  reg,
const Immediate imm 
)

◆ shufpd() [1/2]

void dart::compiler::Assembler::shufpd ( XmmRegister  dst,
XmmRegister  src,
const Immediate mask 
)

◆ shufpd() [2/2]

void dart::compiler::Assembler::shufpd ( XmmRegister  dst,
XmmRegister  src,
const Immediate mask 
)

◆ shufps() [1/2]

void dart::compiler::Assembler::shufps ( XmmRegister  dst,
XmmRegister  src,
const Immediate mask 
)

◆ shufps() [2/2]

void dart::compiler::Assembler::shufps ( XmmRegister  dst,
XmmRegister  src,
const Immediate mask 
)

◆ SignFill()

void dart::compiler::Assembler::SignFill ( Register  rd,
Register  rm,
Condition  cond = AL 
)

◆ smaddl()

void dart::compiler::Assembler::smaddl ( Register  rd,
Register  rn,
Register  rm,
Register  ra,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 972 of file assembler_arm64.h.

976 {
977 EmitMiscDP3Source(SMADDL, rd, rn, rm, ra, sz);
978 }

◆ SmiTag() [1/9]

void dart::compiler::Assembler::SmiTag ( Register  dst,
Register  src 
)
inline

Definition at line 1664 of file assembler_arm64.h.

1664 {
1666 }

◆ SmiTag() [2/9]

void dart::compiler::Assembler::SmiTag ( Register  dst,
Register  src 
)
inline

Definition at line 954 of file assembler_riscv.h.

954{ slli(dst, src, kSmiTagSize); }

◆ SmiTag() [3/9]

void dart::compiler::Assembler::SmiTag ( Register  dst,
Register  src,
Condition  cond = AL 
)
inline

Definition at line 1326 of file assembler_arm.h.

1326 {
1327 Lsl(dst, src, Operand(kSmiTagSize), cond);
1328 }

◆ SmiTag() [4/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1324 of file assembler_arm.h.

1324{ SmiTag(reg, AL); }

◆ SmiTag() [5/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1663 of file assembler_arm64.h.

1663{ SmiTag(reg, reg); }

◆ SmiTag() [6/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 987 of file assembler_ia32.h.

987{ addl(reg, reg); }

◆ SmiTag() [7/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 953 of file assembler_riscv.h.

953{ SmiTag(reg, reg); }

◆ SmiTag() [8/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 971 of file assembler_x64.h.

971{ OBJ(add)(reg, reg); }

◆ SmiTag() [9/9]

void dart::compiler::Assembler::SmiTag ( Register  reg,
Condition  cond 
)
inline

Definition at line 1323 of file assembler_arm.h.

1323{ SmiTag(reg, reg, cond); }

◆ SmiTagAndBranchIfOverflow()

void dart::compiler::Assembler::SmiTagAndBranchIfOverflow ( Register  reg,
Label label 
)
inline

Definition at line 1668 of file assembler_arm64.h.

1668 {
1669 COMPILE_ASSERT(kSmiTag == 0);
1670 adds(reg, reg, compiler::Operand(reg)); // SmiTag
1671 // If the value doesn't fit in a smi, the tagging changes the sign,
1672 // which causes the overflow flag to be set.
1673 b(label, OVERFLOW);
1674#if defined(DART_COMPRESSED_POINTERS)
1675 cmp(reg, compiler::Operand(reg, SXTW, 0));
1676 b(label, NOT_EQUAL);
1677#endif // defined(DART_COMPRESSED_POINTERS)
1678 }
@ OVERFLOW
@ NOT_EQUAL

◆ SmiUntag() [1/10]

void dart::compiler::Assembler::SmiUntag ( Register  dst,
Register  src 
)
inline

Definition at line 1660 of file assembler_arm64.h.

1660 {
1662 }

◆ SmiUntag() [2/10]

void dart::compiler::Assembler::SmiUntag ( Register  dst,
Register  src 
)
inline

Definition at line 952 of file assembler_riscv.h.

952{ srai(dst, src, kSmiTagSize); }
void srai(Register rd, Register rs1, intptr_t shamt)

◆ SmiUntag() [3/10]

void dart::compiler::Assembler::SmiUntag ( Register  dst,
Register  src 
)
inline

Definition at line 974 of file assembler_x64.h.

974 {
975 if (dst != src) {
976 OBJ(mov)(dst, src);
977 }
978 OBJ(sar)(dst, Immediate(kSmiTagSize));
979 }

◆ SmiUntag() [4/10]

void dart::compiler::Assembler::SmiUntag ( Register  dst,
Register  src,
Condition  cond = AL 
)
inline

Definition at line 1332 of file assembler_arm.h.

1332 {
1333 Asr(dst, src, Operand(kSmiTagSize), cond);
1334 }
void Asr(Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)

◆ SmiUntag() [5/10]

void dart::compiler::Assembler::SmiUntag ( Register  dst,
Register  src,
Label is_smi 
)
inline

Definition at line 1340 of file assembler_arm.h.

1340 {
1341 ASSERT(kSmiTagSize == 1);
1342 Asrs(dst, src, Operand(kSmiTagSize));
1343 b(is_smi, CC);
1344 }
void Asrs(Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)

◆ SmiUntag() [6/10]

void dart::compiler::Assembler::SmiUntag ( Register  reg)
inline

Definition at line 1659 of file assembler_arm64.h.

1659{ SmiUntag(reg, reg); }

◆ SmiUntag() [7/10]

void dart::compiler::Assembler::SmiUntag ( Register  reg)
inline

Definition at line 989 of file assembler_ia32.h.

989{ sarl(reg, Immediate(kSmiTagSize)); }
void sarl(Register reg, const Immediate &imm)

◆ SmiUntag() [8/10]

void dart::compiler::Assembler::SmiUntag ( Register  reg)
inline

Definition at line 951 of file assembler_riscv.h.

951{ SmiUntag(reg, reg); }

◆ SmiUntag() [9/10]

void dart::compiler::Assembler::SmiUntag ( Register  reg)
inline

Definition at line 973 of file assembler_x64.h.

973{ OBJ(sar)(reg, Immediate(kSmiTagSize)); }

◆ SmiUntag() [10/10]

void dart::compiler::Assembler::SmiUntag ( Register  reg,
Condition  cond = AL 
)
inline

Definition at line 1330 of file assembler_arm.h.

1330{ SmiUntag(reg, reg, cond); }

◆ SmiUntagAndSignExtend() [1/2]

void dart::compiler::Assembler::SmiUntagAndSignExtend ( Register  dst,
Register  src 
)
inline

Definition at line 993 of file assembler_x64.h.

993 {
994#if !defined(DART_COMPRESSED_POINTERS)
995 if (dst != src) {
996 movq(dst, src);
997 }
998 sarq(dst, Immediate(kSmiTagSize));
999#else
1000 movsxd(dst, src);
1001 sarq(dst, Immediate(kSmiTagSize));
1002#endif
1003 }
void sarq(Register reg, const Immediate &imm)

◆ SmiUntagAndSignExtend() [2/2]

void dart::compiler::Assembler::SmiUntagAndSignExtend ( Register  reg)
inline

Definition at line 981 of file assembler_x64.h.

981 {
982#if !defined(DART_COMPRESSED_POINTERS)
983 sarq(reg, Immediate(kSmiTagSize));
984#else
985 // This is shorter than
986 // shlq reg, 32
987 // sraq reg, 33
988 sarl(reg, Immediate(kSmiTagSize));
989 movsxd(reg, reg);
990#endif
991 }

◆ SmiUntagOrCheckClass() [1/2]

void dart::compiler::Assembler::SmiUntagOrCheckClass ( Register  object,
intptr_t  class_id,
Label smi 
)

◆ SmiUntagOrCheckClass() [2/2]

void dart::compiler::Assembler::SmiUntagOrCheckClass ( Register  object,
intptr_t  class_id,
Register  scratch,
Label is_smi 
)

◆ smlal()

void dart::compiler::Assembler::smlal ( Register  rd_lo,
Register  rd_hi,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ smulh()

void dart::compiler::Assembler::smulh ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 943 of file assembler_arm64.h.

946 {
947 EmitMiscDP3Source(SMULH, rd, rn, rm, R31, sz);
948 }

◆ smull() [1/2]

void dart::compiler::Assembler::smull ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 981 of file assembler_arm64.h.

984 {
985 EmitMiscDP3Source(SMADDL, rd, rn, rm, ZR, sz);
986 }

◆ smull() [2/2]

void dart::compiler::Assembler::smull ( Register  rd_lo,
Register  rd_hi,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ sqrtpd()

void dart::compiler::Assembler::sqrtpd ( XmmRegister  dst)

◆ sqrtps()

void dart::compiler::Assembler::sqrtps ( XmmRegister  dst)

◆ sqrtsd()

void dart::compiler::Assembler::sqrtsd ( XmmRegister  dst,
XmmRegister  src 
)

◆ sqrtss()

void dart::compiler::Assembler::sqrtss ( XmmRegister  dst,
XmmRegister  src 
)

◆ std()

void dart::compiler::Assembler::std ( )

◆ stlr()

void dart::compiler::Assembler::stlr ( Register  rt,
Register  rn,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1082 of file assembler_arm64.h.

1082 {
1083 EmitLoadStoreExclusive(STLR, R31, rn, rt, sz);
1084 }

◆ stm()

void dart::compiler::Assembler::stm ( BlockAddressMode  am,
Register  base,
RegList  regs,
Condition  cond = AL 
)

◆ Store() [1/7]

void dart::compiler::Assembler::Store ( const Object value,
const Address address 
)

◆ Store() [2/7]

void dart::compiler::Assembler::Store ( Register  reg,
const Address address,
OperandSize  type,
Condition  cond 
)

◆ Store() [3/7]

void dart::compiler::Assembler::Store ( Register  reg,
const Address address,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1126 of file assembler_arm.h.

1128 {
1129 Store(reg, address, type, AL);
1130 }
void Store(Register reg, const Address &address, OperandSize type, Condition cond)

◆ Store() [4/7]

void dart::compiler::Assembler::Store ( Register  src,
const Address address,
OperandSize  sz = kEightBytes 
)
overridevirtual

◆ Store() [5/7]

void dart::compiler::Assembler::Store ( Register  src,
const Address address,
OperandSize  sz = kEightBytes 
)
overridevirtual

◆ Store() [6/7]

void dart::compiler::Assembler::Store ( Register  src,
const Address address,
OperandSize  sz = kFourBytes 
)
overridevirtual

◆ Store() [7/7]

void dart::compiler::Assembler::Store ( Register  src,
const Address address,
OperandSize  sz = kWordBytes 
)
overridevirtual

◆ StoreBarrier() [1/5]

void dart::compiler::Assembler::StoreBarrier ( Register  object,
Register  value,
CanBeSmi  can_be_smi,
Register  scratch 
)
overridevirtual

◆ StoreBarrier() [2/5]

void dart::compiler::Assembler::StoreBarrier ( Register  object,
Register  value,
CanBeSmi  can_be_smi,
Register  scratch 
)
overridevirtual

◆ StoreBarrier() [3/5]

void dart::compiler::Assembler::StoreBarrier ( Register  object,
Register  value,
CanBeSmi  can_be_smi,
Register  scratch 
)
overridevirtual

◆ StoreBarrier() [4/5]

void dart::compiler::Assembler::StoreBarrier ( Register  object,
Register  value,
CanBeSmi  can_value_be_smi,
Register  scratch 
)
overridevirtual

◆ StoreBarrier() [5/5]

void dart::compiler::Assembler::StoreBarrier ( Register  object,
Register  value,
CanBeSmi  can_value_be_smi,
Register  scratch 
)
overridevirtual

◆ StoreDFieldToOffset() [1/2]

void dart::compiler::Assembler::StoreDFieldToOffset ( FRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1150 of file assembler_riscv.h.

1150 {
1152 }
void StoreDToOffset(DRegister reg, Register base, int32_t offset, Condition cond=AL)

◆ StoreDFieldToOffset() [2/2]

void dart::compiler::Assembler::StoreDFieldToOffset ( VRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1913 of file assembler_arm64.h.

1913 {
1915 }

◆ StoreDToOffset() [1/3]

void dart::compiler::Assembler::StoreDToOffset ( DRegister  reg,
Register  base,
int32_t  offset,
Condition  cond = AL 
)

◆ StoreDToOffset() [2/3]

void dart::compiler::Assembler::StoreDToOffset ( FRegister  src,
Register  base,
int32_t  offset 
)

◆ StoreDToOffset() [3/3]

void dart::compiler::Assembler::StoreDToOffset ( VRegister  src,
Register  base,
int32_t  offset 
)

◆ StoreFieldToOffset() [1/2]

void dart::compiler::Assembler::StoreFieldToOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type,
Condition  cond 
)
inline

Definition at line 1150 of file assembler_arm.h.

1154 {
1155 Store(reg, FieldAddress(base, offset), type, cond);
1156 }

◆ StoreFieldToOffset() [2/2]

void dart::compiler::Assembler::StoreFieldToOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1144 of file assembler_arm.h.

1147 {
1149 }
void StoreFieldToOffset(Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override

◆ StoreHalfWordUnaligned()

void dart::compiler::Assembler::StoreHalfWordUnaligned ( Register  src,
Register  addr,
Register  tmp 
)

◆ StoreInternalPointer() [1/5]

void dart::compiler::Assembler::StoreInternalPointer ( Register  object,
const Address dest,
Register  value 
)

◆ StoreInternalPointer() [2/5]

void dart::compiler::Assembler::StoreInternalPointer ( Register  object,
const Address dest,
Register  value 
)

◆ StoreInternalPointer() [3/5]

void dart::compiler::Assembler::StoreInternalPointer ( Register  object,
const Address dest,
Register  value 
)

◆ StoreInternalPointer() [4/5]

void dart::compiler::Assembler::StoreInternalPointer ( Register  object,
const Address dest,
Register  value 
)

◆ StoreInternalPointer() [5/5]

void dart::compiler::Assembler::StoreInternalPointer ( Register  object,
const Address dest,
Register  value 
)

◆ StoreIntoSmiField() [1/3]

void dart::compiler::Assembler::StoreIntoSmiField ( const Address dest,
Register  value 
)

◆ StoreIntoSmiField() [2/3]

void dart::compiler::Assembler::StoreIntoSmiField ( const Address dest,
Register  value 
)

◆ StoreIntoSmiField() [3/3]

void dart::compiler::Assembler::StoreIntoSmiField ( const Address dest,
Register  value 
)

◆ StoreMemoryValue() [1/5]

void dart::compiler::Assembler::StoreMemoryValue ( Register  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 429 of file assembler_arm.h.

429 {
431 }
void StoreToOffset(Register reg, Register base, int32_t offset, OperandSize type=kFourBytes) override

◆ StoreMemoryValue() [2/5]

void dart::compiler::Assembler::StoreMemoryValue ( Register  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 521 of file assembler_arm64.h.

521 {
523 }

◆ StoreMemoryValue() [3/5]

void dart::compiler::Assembler::StoreMemoryValue ( Register  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 643 of file assembler_ia32.h.

643 {
644 movl(Address(base, offset), src);
645 }

◆ StoreMemoryValue() [4/5]

void dart::compiler::Assembler::StoreMemoryValue ( Register  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 885 of file assembler_riscv.h.

885 {
887 }

◆ StoreMemoryValue() [5/5]

void dart::compiler::Assembler::StoreMemoryValue ( Register  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1079 of file assembler_x64.h.

1079 {
1080 movq(Address(base, offset), src);
1081 }

◆ StoreMultipleDToOffset()

void dart::compiler::Assembler::StoreMultipleDToOffset ( DRegister  first,
intptr_t  count,
Register  base,
int32_t  offset 
)

◆ StoreObject()

void dart::compiler::Assembler::StoreObject ( const Address dst,
const Object obj,
OperandSize  size = kWordBytes 
)

◆ StoreObjectIntoObjectNoBarrier() [1/5]

void dart::compiler::Assembler::StoreObjectIntoObjectNoBarrier ( Register  object,
const Address address,
const Object value,
MemoryOrder  memory_order = kRelaxedNonAtomic,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ StoreObjectIntoObjectNoBarrier() [2/5]

void dart::compiler::Assembler::StoreObjectIntoObjectNoBarrier ( Register  object,
const Address dest,
const Object value,
MemoryOrder  memory_order = kRelaxedNonAtomic,
OperandSize  size = kFourBytes 
)
overridevirtual

◆ StoreObjectIntoObjectNoBarrier() [3/5]

void dart::compiler::Assembler::StoreObjectIntoObjectNoBarrier ( Register  object,
const Address dest,
const Object value,
MemoryOrder  memory_order = kRelaxedNonAtomic,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ StoreObjectIntoObjectNoBarrier() [4/5]

void dart::compiler::Assembler::StoreObjectIntoObjectNoBarrier ( Register  object,
const Address dest,
const Object value,
MemoryOrder  memory_order = kRelaxedNonAtomic,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ StoreObjectIntoObjectNoBarrier() [5/5]

void dart::compiler::Assembler::StoreObjectIntoObjectNoBarrier ( Register  object,
const Address dest,
const Object value,
MemoryOrder  memory_order = kRelaxedNonAtomic,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ StorePairToOffset()

void dart::compiler::Assembler::StorePairToOffset ( Register  low,
Register  high,
Register  base,
int32_t  offset,
OperandSize  sz = kEightBytes 
)

◆ StoreQFieldToOffset()

void dart::compiler::Assembler::StoreQFieldToOffset ( VRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1917 of file assembler_arm64.h.

1917 {
1919 }
void StoreQToOffset(VRegister src, Register base, int32_t offset)

◆ StoreQToOffset()

void dart::compiler::Assembler::StoreQToOffset ( VRegister  src,
Register  base,
int32_t  offset 
)

◆ StoreRelease() [1/5]

void dart::compiler::Assembler::StoreRelease ( Register  src,
const Address address,
OperandSize  size = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 551 of file assembler_arm64.h.

553 {
554 // stlr does not feature an address operand.
555 ASSERT(address.type() == Address::AddressType::Offset);
556 Register dst = address.base();
557 if (address.offset() != 0) {
558 AddImmediate(TMP2, dst, address.offset());
559 dst = TMP2;
560 }
561 stlr(src, dst, size);
562 if (FLAG_target_thread_sanitizer) {
564 }
565 }
void stlr(Register rt, Register rn, OperandSize sz=kEightBytes)
void TsanStoreRelease(Register addr)

◆ StoreRelease() [2/5]

void dart::compiler::Assembler::StoreRelease ( Register  src,
const Address address,
OperandSize  size = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 438 of file assembler_arm.h.

440 {
441 dmb();
442 Store(src, address, size);
443 }

◆ StoreRelease() [3/5]

void dart::compiler::Assembler::StoreRelease ( Register  src,
const Address address,
OperandSize  size = kFourBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 681 of file assembler_ia32.h.

683 {
684 // On intel stores have store-release behavior (i.e. stores are not
685 // re-ordered with other stores).
686 Store(src, address, size);
687 if (FLAG_target_thread_sanitizer) {
688 FATAL("No support for TSAN on IA32.");
689 }
690 }

◆ StoreRelease() [4/5]

void dart::compiler::Assembler::StoreRelease ( Register  src,
const Address address,
OperandSize  size = kWordBytes 
)
overridevirtual

◆ StoreRelease() [5/5]

void dart::compiler::Assembler::StoreRelease ( Register  src,
const Address address,
OperandSize  size = kWordBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1133 of file assembler_x64.h.

1135 {
1136 // On intel stores have store-release behavior (i.e. stores are not
1137 // re-ordered with other stores).
1138 Store(src, address, size);
1139 if (FLAG_target_thread_sanitizer) {
1140 TsanStoreRelease(address);
1141 }
1142 }

◆ StoreSFieldToOffset()

void dart::compiler::Assembler::StoreSFieldToOffset ( FRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1146 of file assembler_riscv.h.

1146 {
1148 }
void StoreSToOffset(SRegister reg, Register base, int32_t offset, Condition cond=AL)

◆ StoreSToOffset() [1/3]

void dart::compiler::Assembler::StoreSToOffset ( FRegister  src,
Register  base,
int32_t  offset 
)

◆ StoreSToOffset() [2/3]

void dart::compiler::Assembler::StoreSToOffset ( SRegister  reg,
Register  base,
int32_t  offset,
Condition  cond = AL 
)

◆ StoreSToOffset() [3/3]

void dart::compiler::Assembler::StoreSToOffset ( VRegister  src,
Register  base,
int32_t  offset 
)

◆ StoreToOffset() [1/2]

void dart::compiler::Assembler::StoreToOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type,
Condition  cond 
)
inline

Definition at line 1137 of file assembler_arm.h.

1141 {
1142 Store(reg, Address(base, offset), type, cond);
1143 }

◆ StoreToOffset() [2/2]

void dart::compiler::Assembler::StoreToOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type = kFourBytes 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1131 of file assembler_arm.h.

1134 {
1135 StoreToOffset(reg, base, offset, type, AL);
1136 }

◆ StoreToStack() [1/5]

void dart::compiler::Assembler::StoreToStack ( Register  src,
intptr_t  depth 
)

◆ StoreToStack() [2/5]

void dart::compiler::Assembler::StoreToStack ( Register  src,
intptr_t  depth 
)

◆ StoreToStack() [3/5]

void dart::compiler::Assembler::StoreToStack ( Register  src,
intptr_t  depth 
)

◆ StoreToStack() [4/5]

void dart::compiler::Assembler::StoreToStack ( Register  src,
intptr_t  depth 
)

◆ StoreToStack() [5/5]

void dart::compiler::Assembler::StoreToStack ( Register  src,
intptr_t  depth 
)

◆ StoreUnboxedDouble() [1/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1181 of file assembler_arm.h.

1181 {
1183 }

◆ StoreUnboxedDouble() [2/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1924 of file assembler_arm64.h.

1924 {
1926 }

◆ StoreUnboxedDouble() [3/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 650 of file assembler_ia32.h.

650 {
651 movsd(Address(base, offset), src);
652 }

◆ StoreUnboxedDouble() [4/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1157 of file assembler_riscv.h.

1157 {
1159 }

◆ StoreUnboxedDouble() [5/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1101 of file assembler_x64.h.

1101 {
1102 movsd(Address(base, offset), src);
1103 }

◆ StoreUnboxedSimd128() [1/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 662 of file assembler_ia32.h.

662 {
663 movups(Address(base, offset), dst);
664 }

◆ StoreUnboxedSimd128() [2/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1086 of file assembler_x64.h.

1086 {
1087 movups(Address(base, offset), dst);
1088 }

◆ StoreUnboxedSimd128() [3/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1202 of file assembler_arm.h.

1202 {
1204 }
void StoreMultipleDToOffset(DRegister first, intptr_t count, Register base, int32_t offset)

◆ StoreUnboxedSimd128() [4/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1936 of file assembler_arm64.h.

1936 {
1938 }

◆ StoreUnboxedSimd128() [5/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1166 of file assembler_riscv.h.

1166 {
1167 // No single register SIMD on RISC-V.
1168 UNREACHABLE();
1169 }

◆ StoreWordToPoolIndex() [1/4]

void dart::compiler::Assembler::StoreWordToPoolIndex ( Register  src,
intptr_t  index 
)

◆ StoreWordToPoolIndex() [2/4]

void dart::compiler::Assembler::StoreWordToPoolIndex ( Register  src,
intptr_t  index,
Register  pp = PP 
)

◆ StoreWordToPoolIndex() [3/4]

void dart::compiler::Assembler::StoreWordToPoolIndex ( Register  src,
intptr_t  index,
Register  pp = PP 
)

◆ StoreWordToPoolIndex() [4/4]

void dart::compiler::Assembler::StoreWordToPoolIndex ( Register  value,
intptr_t  index,
Register  pp = PP,
Condition  cond = AL 
)

◆ StoreWordUnaligned()

void dart::compiler::Assembler::StoreWordUnaligned ( Register  src,
Register  addr,
Register  tmp 
)

◆ StoreZero() [1/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp 
)
inline

Definition at line 1157 of file assembler_arm.h.

1157 {
1158 mov(temp, Operand(0));
1159 Store(temp, address);
1160 }

◆ StoreZero() [2/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp = kNoRegister 
)
inline

Definition at line 1901 of file assembler_arm64.h.

1901 {
1902 Store(ZR, address);
1903 }

◆ StoreZero() [3/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp = kNoRegister 
)
inline

Definition at line 634 of file assembler_ia32.h.

634 {
635 movl(address, Immediate(0));
636 }

◆ StoreZero() [4/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp = kNoRegister 
)
inline

Definition at line 1142 of file assembler_riscv.h.

1142 {
1143 Store(ZR, address);
1144 }

◆ StoreZero() [5/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp = kNoRegister 
)
inline

Definition at line 1067 of file assembler_x64.h.

1067 {
1068 movq(address, Immediate(0));
1069 }

◆ stp()

void dart::compiler::Assembler::stp ( Register  rt,
Register  rt2,
Address  a,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1037 of file assembler_arm64.h.

1037 {
1038 ASSERT((rt != CSP) && (rt != R31));
1039 ASSERT((a.type() == Address::PairOffset) ||
1040 (a.type() == Address::PairPostIndex) ||
1041 (a.type() == Address::PairPreIndex));
1042 EmitLoadStoreRegPair(STP, rt, rt2, a, sz);
1043 }

◆ str() [1/2]

void dart::compiler::Assembler::str ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ str() [2/2]

void dart::compiler::Assembler::str ( Register  rt,
Address  a,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1022 of file assembler_arm64.h.

1022 {
1023 ASSERT((rt != CSP) && (rt != R31));
1024 ASSERT((a.type() != Address::PairOffset) &&
1025 (a.type() != Address::PairPostIndex) &&
1026 (a.type() != Address::PairPreIndex));
1027 EmitLoadStoreReg(STR, rt, a, sz);
1028 }

◆ strb()

void dart::compiler::Assembler::strb ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ strd()

void dart::compiler::Assembler::strd ( Register  rd,
Register  rd2,
Register  rn,
int32_t  offset,
Condition  cond = AL 
)

◆ strex()

void dart::compiler::Assembler::strex ( Register  rd,
Register  rt,
Register  rn,
Condition  cond = AL 
)

◆ strh()

void dart::compiler::Assembler::strh ( Register  rd,
Address  ad,
Condition  cond = AL 
)

◆ stxr()

void dart::compiler::Assembler::stxr ( Register  rs,
Register  rt,
Register  rn,
OperandSize  size = kEightBytes 
)
inline

Definition at line 1062 of file assembler_arm64.h.

1065 {
1066 // rs = status (1 = failure, 0 = success)
1067 // rt = value
1068 // rn = address
1069 ASSERT(rs != rt);
1070 ASSERT((rs != rn) || (rs == ZR));
1071 EmitLoadStoreExclusive(STXR, rs, rn, rt, size);
1072 }

◆ sub() [1/2]

void dart::compiler::Assembler::sub ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ sub() [2/2]

void dart::compiler::Assembler::sub ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 622 of file assembler_arm64.h.

622 {
623 AddSubHelper(sz, false, true, rd, rn, o);
624 }

◆ SubImmediate() [1/4]

void dart::compiler::Assembler::SubImmediate ( const Address address,
const Immediate imm 
)

◆ SubImmediate() [2/4]

void dart::compiler::Assembler::SubImmediate ( Register  rd,
Register  rn,
int32_t  value,
Condition  cond = AL 
)

◆ SubImmediate() [3/4]

void dart::compiler::Assembler::SubImmediate ( Register  reg,
const Immediate imm 
)

◆ SubImmediate() [4/4]

void dart::compiler::Assembler::SubImmediate ( Register  reg,
const Immediate imm,
OperandSize  width = kEightBytes 
)

◆ SubImmediateSetFlags() [1/2]

void dart::compiler::Assembler::SubImmediateSetFlags ( Register  dest,
Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ SubImmediateSetFlags() [2/2]

void dart::compiler::Assembler::SubImmediateSetFlags ( Register  rd,
Register  rn,
int32_t  value,
Condition  cond = AL 
)

◆ subpd()

void dart::compiler::Assembler::subpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ subpl()

void dart::compiler::Assembler::subpl ( XmmRegister  dst,
XmmRegister  src 
)

◆ subps()

void dart::compiler::Assembler::subps ( XmmRegister  dst,
XmmRegister  src 
)

◆ SubRegisters() [1/5]

void dart::compiler::Assembler::SubRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 860 of file assembler_arm.h.

860 {
861 sub(dest, dest, Operand(src));
862 }

◆ SubRegisters() [2/5]

void dart::compiler::Assembler::SubRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 1808 of file assembler_arm64.h.

1808 {
1809 sub(dest, dest, Operand(src));
1810 }

◆ SubRegisters() [3/5]

void dart::compiler::Assembler::SubRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 732 of file assembler_ia32.h.

732{ subl(dest, src); }

◆ SubRegisters() [4/5]

void dart::compiler::Assembler::SubRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 1060 of file assembler_riscv.h.

1060{ sub(dest, dest, src); }

◆ SubRegisters() [5/5]

void dart::compiler::Assembler::SubRegisters ( Register  dest,
Register  src 
)
inline

Definition at line 804 of file assembler_x64.h.

804{ subq(dest, src); }

◆ subs() [1/2]

void dart::compiler::Assembler::subs ( Register  rd,
Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ subs() [2/2]

void dart::compiler::Assembler::subs ( Register  rd,
Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 625 of file assembler_arm64.h.

625 {
626 AddSubHelper(sz, true, true, rd, rn, o);
627 }

◆ subsd() [1/2]

void dart::compiler::Assembler::subsd ( XmmRegister  dst,
const Address src 
)

◆ subsd() [2/2]

void dart::compiler::Assembler::subsd ( XmmRegister  dst,
XmmRegister  src 
)

◆ subss() [1/2]

void dart::compiler::Assembler::subss ( XmmRegister  dst,
const Address src 
)

◆ subss() [2/2]

void dart::compiler::Assembler::subss ( XmmRegister  dst,
XmmRegister  src 
)

◆ subsw()

void dart::compiler::Assembler::subsw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 633 of file assembler_arm64.h.

633 {
634 subs(rd, rn, o, kFourBytes);
635 }

◆ SubtractBranchOverflow()

void dart::compiler::Assembler::SubtractBranchOverflow ( Register  rd,
Register  rs1,
Register  rs2,
Label overflow 
)

◆ SubtractImmediateBranchOverflow()

void dart::compiler::Assembler::SubtractImmediateBranchOverflow ( Register  rd,
Register  rs1,
intx_t  imm,
Label overflow 
)

◆ subw()

void dart::compiler::Assembler::subw ( Register  rd,
Register  rn,
Operand  o 
)
inline

Definition at line 632 of file assembler_arm64.h.

632{ sub(rd, rn, o, kFourBytes); }

◆ sxtb()

void dart::compiler::Assembler::sxtb ( Register  rd,
Register  rn 
)
inline

Definition at line 764 of file assembler_arm64.h.

764 {
765 EmitBitfieldOp(SBFM, rd, rn, 0, 7, kEightBytes);
766 }

◆ sxth()

void dart::compiler::Assembler::sxth ( Register  rd,
Register  rn 
)
inline

Definition at line 769 of file assembler_arm64.h.

769 {
770 EmitBitfieldOp(SBFM, rd, rn, 0, 15, kEightBytes);
771 }

◆ sxtw()

void dart::compiler::Assembler::sxtw ( Register  rd,
Register  rn 
)
inline

Definition at line 774 of file assembler_arm64.h.

774 {
775 EmitBitfieldOp(SBFM, rd, rn, 0, 31, kEightBytes);
776 }

◆ TagAndPushPP()

void dart::compiler::Assembler::TagAndPushPP ( )
inline

Definition at line 1594 of file assembler_arm64.h.

1594 {
1595 // Add the heap object tag back to PP before putting it on the stack.
1596 add(TMP, PP, Operand(kHeapObjectTag));
1597 str(TMP, Address(SP, -1 * target::kWordSize, Address::PreIndex));
1598 }

◆ TagAndPushPPAndPcMarker()

void dart::compiler::Assembler::TagAndPushPPAndPcMarker ( )
inline

Definition at line 1599 of file assembler_arm64.h.

1599 {
1601 // Add the heap object tag back to PP before putting it on the stack.
1602 add(TMP2, PP, Operand(kHeapObjectTag));
1603 stp(TMP2, CODE_REG,
1605 }
const Register CODE_REG

◆ tbnz()

void dart::compiler::Assembler::tbnz ( Label label,
Register  rt,
intptr_t  bit_number 
)
inline

Definition at line 1230 of file assembler_arm64.h.

1230 {
1231 EmitTestAndBranch(TBNZ, rt, bit_number, label);
1232 }

◆ tbz()

void dart::compiler::Assembler::tbz ( Label label,
Register  rt,
intptr_t  bit_number 
)
inline

Definition at line 1227 of file assembler_arm64.h.

1227 {
1228 EmitTestAndBranch(TBZ, rt, bit_number, label);
1229 }

◆ teq()

void dart::compiler::Assembler::teq ( Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ testb() [1/4]

void dart::compiler::Assembler::testb ( const Address address,
ByteRegister  reg 
)

◆ testb() [2/4]

void dart::compiler::Assembler::testb ( const Address address,
const Immediate imm 
)

◆ testb() [3/4]

void dart::compiler::Assembler::testb ( const Address address,
const Immediate imm 
)

◆ testb() [4/4]

void dart::compiler::Assembler::testb ( const Address address,
Register  reg 
)

◆ TestImmediate() [1/4]

void dart::compiler::Assembler::TestImmediate ( Register  dst,
const Immediate imm,
OperandSize  width = kEightBytes 
)

◆ TestImmediate() [2/4]

void dart::compiler::Assembler::TestImmediate ( Register  rn,
int32_t  imm,
Condition  cond = AL 
)

◆ TestImmediate() [3/4]

void dart::compiler::Assembler::TestImmediate ( Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ TestImmediate() [4/4]

void dart::compiler::Assembler::TestImmediate ( Register  rn,
intx_t  imm,
OperandSize  sz = kWordBytes 
)

◆ testl() [1/5]

void dart::compiler::Assembler::testl ( const Address address,
const Immediate imm 
)

◆ testl() [2/5]

void dart::compiler::Assembler::testl ( const Address address,
Register  reg 
)

◆ testl() [3/5]

void dart::compiler::Assembler::testl ( Register  reg,
const Immediate imm 
)

◆ testl() [4/5]

void dart::compiler::Assembler::testl ( Register  reg,
const Immediate imm 
)
inline

Definition at line 575 of file assembler_x64.h.

575 {
576 testq(reg, Immediate(imm.value() & 0xFFFFFFFF));
577 }

◆ testl() [5/5]

void dart::compiler::Assembler::testl ( Register  reg1,
Register  reg2 
)

◆ testq()

void dart::compiler::Assembler::testq ( Register  reg,
const Immediate imm 
)

◆ TestRegisters()

void dart::compiler::Assembler::TestRegisters ( Register  rn,
Register  rm 
)

◆ TransitionGeneratedToNative() [1/5]

void dart::compiler::Assembler::TransitionGeneratedToNative ( Register  destination_address,
Register  exit_frame_fp,
Register  exit_through_ffi,
Register  scratch0,
bool  enter_safepoint 
)

◆ TransitionGeneratedToNative() [2/5]

void dart::compiler::Assembler::TransitionGeneratedToNative ( Register  destination_address,
Register  new_exit_frame,
Register  new_exit_through_ffi,
bool  enter_safepoint 
)

◆ TransitionGeneratedToNative() [3/5]

void dart::compiler::Assembler::TransitionGeneratedToNative ( Register  destination_address,
Register  new_exit_frame,
Register  new_exit_through_ffi,
bool  enter_safepoint 
)

◆ TransitionGeneratedToNative() [4/5]

void dart::compiler::Assembler::TransitionGeneratedToNative ( Register  destination_address,
Register  new_exit_frame,
Register  new_exit_through_ffi,
bool  enter_safepoint 
)

◆ TransitionGeneratedToNative() [5/5]

void dart::compiler::Assembler::TransitionGeneratedToNative ( Register  destination_address,
Register  new_exit_frame,
Register  new_exit_through_ffi,
bool  enter_safepoint 
)

◆ TransitionNativeToGenerated() [1/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( bool  leave_safepoint,
bool  ignore_unwind_in_progress = false,
bool  set_tag = true 
)

◆ TransitionNativeToGenerated() [2/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false,
bool  set_tag = true 
)

◆ TransitionNativeToGenerated() [3/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false,
bool  set_tag = true 
)

◆ TransitionNativeToGenerated() [4/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false,
bool  set_tag = true 
)

◆ TransitionNativeToGenerated() [5/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch0,
Register  scratch1,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false,
bool  set_tag = true 
)

◆ TryAllocateArray() [1/5]

void dart::compiler::Assembler::TryAllocateArray ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance,
Register  end_address,
Register  temp 
)

◆ TryAllocateArray() [2/5]

void dart::compiler::Assembler::TryAllocateArray ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance,
Register  end_address,
Register  temp 
)

◆ TryAllocateArray() [3/5]

void dart::compiler::Assembler::TryAllocateArray ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
Register  instance,
Register  end_address,
Register  temp1,
Register  temp2 
)

◆ TryAllocateArray() [4/5]

void dart::compiler::Assembler::TryAllocateArray ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
Register  instance,
Register  end_address,
Register  temp1,
Register  temp2 
)

◆ TryAllocateArray() [5/5]

void dart::compiler::Assembler::TryAllocateArray ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
Register  instance,
Register  end_address,
Register  temp1,
Register  temp2 
)

◆ TryAllocateObject() [1/5]

void dart::compiler::Assembler::TryAllocateObject ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance_reg,
Register  temp 
)
overridevirtual

◆ TryAllocateObject() [2/5]

void dart::compiler::Assembler::TryAllocateObject ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance_reg,
Register  temp_reg 
)
overridevirtual

◆ TryAllocateObject() [3/5]

void dart::compiler::Assembler::TryAllocateObject ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance_reg,
Register  temp_reg 
)
overridevirtual

◆ TryAllocateObject() [4/5]

void dart::compiler::Assembler::TryAllocateObject ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance_reg,
Register  temp_reg 
)
overridevirtual

◆ TryAllocateObject() [5/5]

void dart::compiler::Assembler::TryAllocateObject ( intptr_t  cid,
intptr_t  instance_size,
Label failure,
JumpDistance  distance,
Register  instance_reg,
Register  top_reg 
)
overridevirtual

◆ TsanLoadAcquire() [1/3]

void dart::compiler::Assembler::TsanLoadAcquire ( Address  addr)

◆ TsanLoadAcquire() [2/3]

void dart::compiler::Assembler::TsanLoadAcquire ( Register  addr)

◆ TsanLoadAcquire() [3/3]

void dart::compiler::Assembler::TsanLoadAcquire ( Register  addr)

◆ TsanStoreRelease() [1/3]

void dart::compiler::Assembler::TsanStoreRelease ( Address  addr)

◆ TsanStoreRelease() [2/3]

void dart::compiler::Assembler::TsanStoreRelease ( Register  addr)

◆ TsanStoreRelease() [3/3]

void dart::compiler::Assembler::TsanStoreRelease ( Register  addr)

◆ tst() [1/2]

void dart::compiler::Assembler::tst ( Register  rn,
Operand  o,
Condition  cond = AL 
)

◆ tst() [2/2]

void dart::compiler::Assembler::tst ( Register  rn,
Operand  o,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1612 of file assembler_arm64.h.

1612 {
1613 ands(ZR, rn, o, sz);
1614 }
void ands(Register rd, Register rn, Operand o, Condition cond=AL)

◆ tsti()

void dart::compiler::Assembler::tsti ( Register  rn,
const Immediate imm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1615 of file assembler_arm64.h.

1615 {
1616 andis(ZR, rn, imm, sz);
1617 }
void andis(Register rd, Register rn, const Immediate &imm, OperandSize sz=kEightBytes)

◆ ubfiz()

void dart::compiler::Assembler::ubfiz ( Register  rd,
Register  rn,
int  low_bit,
int  width,
OperandSize  size = kEightBytes 
)
inline

Definition at line 742 of file assembler_arm64.h.

746 {
747 int wordsize = size == kEightBytes ? 64 : 32;
748 ASSERT(width > 0);
749 ASSERT(low_bit < wordsize);
750 EmitBitfieldOp(UBFM, rd, rn, (-low_bit) & (wordsize - 1), width - 1, size);
751 }

◆ ubfm()

void dart::compiler::Assembler::ubfm ( Register  rd,
Register  rn,
int  r_imm,
int  s_imm,
OperandSize  size = kEightBytes 
)
inline

Definition at line 688 of file assembler_arm64.h.

692 {
693 EmitBitfieldOp(UBFM, rd, rn, r_imm, s_imm, size);
694 }

◆ ubfx() [1/2]

void dart::compiler::Assembler::ubfx ( Register  rd,
Register  rn,
int  low_bit,
int  width,
OperandSize  size = kEightBytes 
)
inline

Definition at line 755 of file assembler_arm64.h.

759 {
760 EmitBitfieldOp(UBFM, rd, rn, low_bit, low_bit + width - 1, size);
761 }

◆ ubfx() [2/2]

void dart::compiler::Assembler::ubfx ( Register  rd,
Register  rn,
int32_t  lsb,
int32_t  width,
Condition  cond = AL 
)

◆ udiv() [1/2]

void dart::compiler::Assembler::udiv ( Register  rd,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ udiv() [2/2]

void dart::compiler::Assembler::udiv ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 885 of file assembler_arm64.h.

888 {
889 EmitMiscDP2Source(UDIV, rd, rn, rm, sz);
890 }

◆ umaal()

void dart::compiler::Assembler::umaal ( Register  rd_lo,
Register  rd_hi,
Register  rn,
Register  rm 
)

◆ umaddl()

void dart::compiler::Assembler::umaddl ( Register  rd,
Register  rn,
Register  rm,
Register  ra,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 957 of file assembler_arm64.h.

961 {
962 EmitMiscDP3Source(UMADDL, rd, rn, rm, ra, sz);
963 }

◆ umlal()

void dart::compiler::Assembler::umlal ( Register  rd_lo,
Register  rd_hi,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ umulh()

void dart::compiler::Assembler::umulh ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 951 of file assembler_arm64.h.

954 {
955 EmitMiscDP3Source(UMULH, rd, rn, rm, R31, sz);
956 }

◆ umull() [1/2]

void dart::compiler::Assembler::umull ( Register  rd,
Register  rn,
Register  rm,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 966 of file assembler_arm64.h.

969 {
970 EmitMiscDP3Source(UMADDL, rd, rn, rm, ZR, sz);
971 }

◆ umull() [2/2]

void dart::compiler::Assembler::umull ( Register  rd_lo,
Register  rd_hi,
Register  rn,
Register  rm,
Condition  cond = AL 
)

◆ unpckhpd()

void dart::compiler::Assembler::unpckhpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ unpckhps()

void dart::compiler::Assembler::unpckhps ( XmmRegister  dst,
XmmRegister  src 
)

◆ unpcklpd()

void dart::compiler::Assembler::unpcklpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ unpcklps()

void dart::compiler::Assembler::unpcklps ( XmmRegister  dst,
XmmRegister  src 
)

◆ use_far_branches() [1/2]

bool dart::compiler::Assembler::use_far_branches ( ) const
inline

Definition at line 454 of file assembler_arm.h.

454 {
455 return FLAG_use_far_branches || use_far_branches_;
456 }

◆ use_far_branches() [2/2]

bool dart::compiler::Assembler::use_far_branches ( ) const
inline

Definition at line 574 of file assembler_arm64.h.

574 {
575 return FLAG_use_far_branches || use_far_branches_;
576 }

◆ uxtb()

void dart::compiler::Assembler::uxtb ( Register  rd,
Register  rn 
)
inline

Definition at line 779 of file assembler_arm64.h.

779 {
780 EmitBitfieldOp(UBFM, rd, rn, 0, 7, kEightBytes);
781 }

◆ uxth()

void dart::compiler::Assembler::uxth ( Register  rd,
Register  rn 
)
inline

Definition at line 784 of file assembler_arm64.h.

784 {
785 EmitBitfieldOp(UBFM, rd, rn, 0, 15, kEightBytes);
786 }

◆ uxtw()

void dart::compiler::Assembler::uxtw ( Register  rd,
Register  rn 
)
inline

Definition at line 789 of file assembler_arm64.h.

789 {
790 EmitBitfieldOp(UBFM, rd, rn, 0, 31, kEightBytes);
791 }

◆ vabsd() [1/2]

void dart::compiler::Assembler::vabsd ( DRegister  dd,
DRegister  dm,
Condition  cond = AL 
)

◆ vabsd() [2/2]

void dart::compiler::Assembler::vabsd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1471 of file assembler_arm64.h.

1471{ EmitSIMDTwoRegOp(VABSD, vd, vn); }

◆ vabsqs()

void dart::compiler::Assembler::vabsqs ( QRegister  qd,
QRegister  qm 
)

◆ vabss() [1/2]

void dart::compiler::Assembler::vabss ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vabss() [2/2]

void dart::compiler::Assembler::vabss ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1470 of file assembler_arm64.h.

1470{ EmitSIMDTwoRegOp(VABSS, vd, vn); }

◆ vaddd() [1/2]

void dart::compiler::Assembler::vaddd ( DRegister  dd,
DRegister  dn,
DRegister  dm,
Condition  cond = AL 
)

◆ vaddd() [2/2]

void dart::compiler::Assembler::vaddd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1412 of file assembler_arm64.h.

1412 {
1413 EmitSIMDThreeSameOp(VADDD, vd, vn, vm);
1414 }

◆ vaddqi()

void dart::compiler::Assembler::vaddqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vaddqs()

void dart::compiler::Assembler::vaddqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vadds() [1/2]

void dart::compiler::Assembler::vadds ( SRegister  sd,
SRegister  sn,
SRegister  sm,
Condition  cond = AL 
)

◆ vadds() [2/2]

void dart::compiler::Assembler::vadds ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1409 of file assembler_arm64.h.

1409 {
1410 EmitSIMDThreeSameOp(VADDS, vd, vn, vm);
1411 }

◆ vaddw()

void dart::compiler::Assembler::vaddw ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1397 of file assembler_arm64.h.

1397 {
1398 EmitSIMDThreeSameOp(VADDW, vd, vn, vm);
1399 }

◆ vaddx()

void dart::compiler::Assembler::vaddx ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1400 of file assembler_arm64.h.

1400 {
1401 EmitSIMDThreeSameOp(VADDX, vd, vn, vm);
1402 }

◆ vand()

void dart::compiler::Assembler::vand ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1388 of file assembler_arm64.h.

1388 {
1389 EmitSIMDThreeSameOp(VAND, vd, vn, vm);
1390 }

◆ vandq()

void dart::compiler::Assembler::vandq ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vceqd()

void dart::compiler::Assembler::vceqd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1436 of file assembler_arm64.h.

1436 {
1437 EmitSIMDThreeSameOp(VCEQD, vd, vn, vm);
1438 }

◆ vceqqi()

void dart::compiler::Assembler::vceqqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vceqqs()

void dart::compiler::Assembler::vceqqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vceqs()

void dart::compiler::Assembler::vceqs ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1433 of file assembler_arm64.h.

1433 {
1434 EmitSIMDThreeSameOp(VCEQS, vd, vn, vm);
1435 }

◆ vcged()

void dart::compiler::Assembler::vcged ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1448 of file assembler_arm64.h.

1448 {
1449 EmitSIMDThreeSameOp(VCGED, vd, vn, vm);
1450 }

◆ vcgeqi()

void dart::compiler::Assembler::vcgeqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vcgeqs()

void dart::compiler::Assembler::vcgeqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vcges()

void dart::compiler::Assembler::vcges ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1445 of file assembler_arm64.h.

1445 {
1446 EmitSIMDThreeSameOp(VCGES, vd, vn, vm);
1447 }

◆ vcgtd()

void dart::compiler::Assembler::vcgtd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1442 of file assembler_arm64.h.

1442 {
1443 EmitSIMDThreeSameOp(VCGTD, vd, vn, vm);
1444 }

◆ vcgtqi()

void dart::compiler::Assembler::vcgtqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vcgtqs()

void dart::compiler::Assembler::vcgtqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vcgts()

void dart::compiler::Assembler::vcgts ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1439 of file assembler_arm64.h.

1439 {
1440 EmitSIMDThreeSameOp(VCGTS, vd, vn, vm);
1441 }

◆ vcmpd()

void dart::compiler::Assembler::vcmpd ( DRegister  dd,
DRegister  dm,
Condition  cond = AL 
)

◆ vcmpdz()

void dart::compiler::Assembler::vcmpdz ( DRegister  dd,
Condition  cond = AL 
)

◆ vcmps()

void dart::compiler::Assembler::vcmps ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcmpsz()

void dart::compiler::Assembler::vcmpsz ( SRegister  sd,
Condition  cond = AL 
)

◆ vcugeqi()

void dart::compiler::Assembler::vcugeqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vcugtqi()

void dart::compiler::Assembler::vcugtqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vcvtdi()

void dart::compiler::Assembler::vcvtdi ( DRegister  dd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcvtds()

void dart::compiler::Assembler::vcvtds ( DRegister  dd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcvtdu()

void dart::compiler::Assembler::vcvtdu ( DRegister  dd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcvtid()

void dart::compiler::Assembler::vcvtid ( SRegister  sd,
DRegister  dm,
Condition  cond = AL 
)

◆ vcvtis()

void dart::compiler::Assembler::vcvtis ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcvtsd()

void dart::compiler::Assembler::vcvtsd ( SRegister  sd,
DRegister  dm,
Condition  cond = AL 
)

◆ vcvtsi()

void dart::compiler::Assembler::vcvtsi ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcvtsu()

void dart::compiler::Assembler::vcvtsu ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vcvtud()

void dart::compiler::Assembler::vcvtud ( SRegister  sd,
DRegister  dm,
Condition  cond = AL 
)

◆ vcvtus()

void dart::compiler::Assembler::vcvtus ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vdivd() [1/2]

void dart::compiler::Assembler::vdivd ( DRegister  dd,
DRegister  dn,
DRegister  dm,
Condition  cond = AL 
)

◆ vdivd() [2/2]

void dart::compiler::Assembler::vdivd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1430 of file assembler_arm64.h.

1430 {
1431 EmitSIMDThreeSameOp(VDIVD, vd, vn, vm);
1432 }

◆ Vdivqs()

void dart::compiler::Assembler::Vdivqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vdivs() [1/2]

void dart::compiler::Assembler::vdivs ( SRegister  sd,
SRegister  sn,
SRegister  sm,
Condition  cond = AL 
)

◆ vdivs() [2/2]

void dart::compiler::Assembler::vdivs ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1427 of file assembler_arm64.h.

1427 {
1428 EmitSIMDThreeSameOp(VDIVS, vd, vn, vm);
1429 }

◆ vdup()

void dart::compiler::Assembler::vdup ( OperandSize  sz,
QRegister  qd,
DRegister  dm,
int  idx 
)

◆ vdupd()

void dart::compiler::Assembler::vdupd ( VRegister  vd,
VRegister  vn,
int32_t  idx 
)
inline

Definition at line 1493 of file assembler_arm64.h.

1493 {
1494 EmitSIMDCopyOp(VDUP, vd, vn, kDWord, 0, idx);
1495 }

◆ vdups()

void dart::compiler::Assembler::vdups ( VRegister  vd,
VRegister  vn,
int32_t  idx 
)
inline

Definition at line 1490 of file assembler_arm64.h.

1490 {
1491 EmitSIMDCopyOp(VDUP, vd, vn, kSWord, 0, idx);
1492 }

◆ vdupw()

void dart::compiler::Assembler::vdupw ( VRegister  vd,
Register  rn 
)
inline

Definition at line 1482 of file assembler_arm64.h.

1482 {
1483 const VRegister vn = static_cast<VRegister>(rn);
1484 EmitSIMDCopyOp(VDUPI, vd, vn, kFourBytes, 0, 0);
1485 }

◆ vdupx()

void dart::compiler::Assembler::vdupx ( VRegister  vd,
Register  rn 
)
inline

Definition at line 1486 of file assembler_arm64.h.

1486 {
1487 const VRegister vn = static_cast<VRegister>(rn);
1488 EmitSIMDCopyOp(VDUPI, vd, vn, kEightBytes, 0, 0);
1489 }

◆ veor()

void dart::compiler::Assembler::veor ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1394 of file assembler_arm64.h.

1394 {
1395 EmitSIMDThreeSameOp(VEOR, vd, vn, vm);
1396 }

◆ veorq()

void dart::compiler::Assembler::veorq ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ VerifyStoreNeedsNoWriteBarrier() [1/5]

void dart::compiler::Assembler::VerifyStoreNeedsNoWriteBarrier ( Register  object,
Register  value 
)
overridevirtual

◆ VerifyStoreNeedsNoWriteBarrier() [2/5]

void dart::compiler::Assembler::VerifyStoreNeedsNoWriteBarrier ( Register  object,
Register  value 
)
overridevirtual

◆ VerifyStoreNeedsNoWriteBarrier() [3/5]

void dart::compiler::Assembler::VerifyStoreNeedsNoWriteBarrier ( Register  object,
Register  value 
)
overridevirtual

◆ VerifyStoreNeedsNoWriteBarrier() [4/5]

void dart::compiler::Assembler::VerifyStoreNeedsNoWriteBarrier ( Register  object,
Register  value 
)
overridevirtual

◆ VerifyStoreNeedsNoWriteBarrier() [5/5]

void dart::compiler::Assembler::VerifyStoreNeedsNoWriteBarrier ( Register  object,
Register  value 
)
overridevirtual

◆ vinsd()

void dart::compiler::Assembler::vinsd ( VRegister  vd,
int32_t  didx,
VRegister  vn,
int32_t  sidx 
)
inline

Definition at line 1507 of file assembler_arm64.h.

1507 {
1508 EmitSIMDCopyOp(VINS, vd, vn, kDWord, sidx, didx);
1509 }

◆ vinss()

void dart::compiler::Assembler::vinss ( VRegister  vd,
int32_t  didx,
VRegister  vn,
int32_t  sidx 
)
inline

Definition at line 1504 of file assembler_arm64.h.

1504 {
1505 EmitSIMDCopyOp(VINS, vd, vn, kSWord, sidx, didx);
1506 }

◆ vinsw()

void dart::compiler::Assembler::vinsw ( VRegister  vd,
int32_t  didx,
Register  rn 
)
inline

Definition at line 1496 of file assembler_arm64.h.

1496 {
1497 const VRegister vn = static_cast<VRegister>(rn);
1498 EmitSIMDCopyOp(VINSI, vd, vn, kFourBytes, 0, didx);
1499 }

◆ vinsx()

void dart::compiler::Assembler::vinsx ( VRegister  vd,
int32_t  didx,
Register  rn 
)
inline

Definition at line 1500 of file assembler_arm64.h.

1500 {
1501 const VRegister vn = static_cast<VRegister>(rn);
1502 EmitSIMDCopyOp(VINSI, vd, vn, kEightBytes, 0, didx);
1503 }

◆ vldmd()

void dart::compiler::Assembler::vldmd ( BlockAddressMode  am,
Register  base,
DRegister  first,
intptr_t  count,
Condition  cond = AL 
)

◆ vldms()

void dart::compiler::Assembler::vldms ( BlockAddressMode  am,
Register  base,
SRegister  first,
SRegister  last,
Condition  cond = AL 
)

◆ vldrd()

void dart::compiler::Assembler::vldrd ( DRegister  dd,
Address  ad,
Condition  cond = AL 
)

◆ vldrs()

void dart::compiler::Assembler::vldrs ( SRegister  sd,
Address  ad,
Condition  cond = AL 
)

◆ vmaxd()

void dart::compiler::Assembler::vmaxd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1460 of file assembler_arm64.h.

1460 {
1461 EmitSIMDThreeSameOp(VMAXD, vd, vn, vm);
1462 }

◆ vmaxqs()

void dart::compiler::Assembler::vmaxqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vmaxs()

void dart::compiler::Assembler::vmaxs ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1457 of file assembler_arm64.h.

1457 {
1458 EmitSIMDThreeSameOp(VMAXS, vd, vn, vm);
1459 }

◆ vmind()

void dart::compiler::Assembler::vmind ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1454 of file assembler_arm64.h.

1454 {
1455 EmitSIMDThreeSameOp(VMIND, vd, vn, vm);
1456 }

◆ vminqs()

void dart::compiler::Assembler::vminqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vmins()

void dart::compiler::Assembler::vmins ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1451 of file assembler_arm64.h.

1451 {
1452 EmitSIMDThreeSameOp(VMINS, vd, vn, vm);
1453 }

◆ vmlad()

void dart::compiler::Assembler::vmlad ( DRegister  dd,
DRegister  dn,
DRegister  dm,
Condition  cond = AL 
)

◆ vmlas()

void dart::compiler::Assembler::vmlas ( SRegister  sd,
SRegister  sn,
SRegister  sm,
Condition  cond = AL 
)

◆ vmlsd()

void dart::compiler::Assembler::vmlsd ( DRegister  dd,
DRegister  dn,
DRegister  dm,
Condition  cond = AL 
)

◆ vmlss()

void dart::compiler::Assembler::vmlss ( SRegister  sd,
SRegister  sn,
SRegister  sm,
Condition  cond = AL 
)

◆ vmov()

void dart::compiler::Assembler::vmov ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1534 of file assembler_arm64.h.

1534{ vorr(vd, vn, vn); }
void vorr(VRegister vd, VRegister vn, VRegister vm)

◆ vmovd() [1/2]

bool dart::compiler::Assembler::vmovd ( DRegister  dd,
double  d_imm,
Condition  cond = AL 
)

◆ vmovd() [2/2]

void dart::compiler::Assembler::vmovd ( DRegister  dd,
DRegister  dm,
Condition  cond = AL 
)

◆ vmovdr()

void dart::compiler::Assembler::vmovdr ( DRegister  dd,
int  i,
Register  rt,
Condition  cond = AL 
)

◆ vmovdrr()

void dart::compiler::Assembler::vmovdrr ( DRegister  dm,
Register  rt,
Register  rt2,
Condition  cond = AL 
)

◆ vmovq()

void dart::compiler::Assembler::vmovq ( QRegister  qd,
QRegister  qm 
)

◆ vmovrd()

void dart::compiler::Assembler::vmovrd ( Register  rd,
VRegister  vn,
int32_t  sidx 
)
inline

Definition at line 1514 of file assembler_arm64.h.

1514 {
1515 const VRegister vd = static_cast<VRegister>(rd);
1516 EmitSIMDCopyOp(VMOVX, vd, vn, kEightBytes, 0, sidx);
1517 }

◆ vmovrrd()

void dart::compiler::Assembler::vmovrrd ( Register  rt,
Register  rt2,
DRegister  dm,
Condition  cond = AL 
)

◆ vmovrrs()

void dart::compiler::Assembler::vmovrrs ( Register  rt,
Register  rt2,
SRegister  sm,
Condition  cond = AL 
)

◆ vmovrs() [1/2]

void dart::compiler::Assembler::vmovrs ( Register  rd,
VRegister  vn,
int32_t  sidx 
)
inline

Definition at line 1510 of file assembler_arm64.h.

1510 {
1511 const VRegister vd = static_cast<VRegister>(rd);
1512 EmitSIMDCopyOp(VMOVW, vd, vn, kFourBytes, 0, sidx);
1513 }

◆ vmovrs() [2/2]

void dart::compiler::Assembler::vmovrs ( Register  rt,
SRegister  sn,
Condition  cond = AL 
)

◆ vmovs() [1/2]

bool dart::compiler::Assembler::vmovs ( SRegister  sd,
float  s_imm,
Condition  cond = AL 
)

◆ vmovs() [2/2]

void dart::compiler::Assembler::vmovs ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vmovsr()

void dart::compiler::Assembler::vmovsr ( SRegister  sn,
Register  rt,
Condition  cond = AL 
)

◆ vmovsrr()

void dart::compiler::Assembler::vmovsrr ( SRegister  sm,
Register  rt,
Register  rt2,
Condition  cond = AL 
)

◆ vmrs()

void dart::compiler::Assembler::vmrs ( Register  rd,
Condition  cond = AL 
)

◆ vmstat()

void dart::compiler::Assembler::vmstat ( Condition  cond = AL)

◆ VMTagAddress() [1/2]

static Address dart::compiler::Assembler::VMTagAddress ( )
inlinestatic

Definition at line 980 of file assembler_ia32.h.

980 {
981 return Address(THR, target::Thread::vm_tag_offset());
982 }

◆ VMTagAddress() [2/2]

static Address dart::compiler::Assembler::VMTagAddress ( )
static

◆ vmuld() [1/2]

void dart::compiler::Assembler::vmuld ( DRegister  dd,
DRegister  dn,
DRegister  dm,
Condition  cond = AL 
)

◆ vmuld() [2/2]

void dart::compiler::Assembler::vmuld ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1424 of file assembler_arm64.h.

1424 {
1425 EmitSIMDThreeSameOp(VMULD, vd, vn, vm);
1426 }

◆ vmulqi()

void dart::compiler::Assembler::vmulqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vmulqs()

void dart::compiler::Assembler::vmulqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vmuls() [1/2]

void dart::compiler::Assembler::vmuls ( SRegister  sd,
SRegister  sn,
SRegister  sm,
Condition  cond = AL 
)

◆ vmuls() [2/2]

void dart::compiler::Assembler::vmuls ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1421 of file assembler_arm64.h.

1421 {
1422 EmitSIMDThreeSameOp(VMULS, vd, vn, vm);
1423 }

◆ vmvnq()

void dart::compiler::Assembler::vmvnq ( QRegister  qd,
QRegister  qm 
)

◆ vnegd() [1/2]

void dart::compiler::Assembler::vnegd ( DRegister  dd,
DRegister  dm,
Condition  cond = AL 
)

◆ vnegd() [2/2]

void dart::compiler::Assembler::vnegd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1473 of file assembler_arm64.h.

1473{ EmitSIMDTwoRegOp(VNEGD, vd, vn); }

◆ vnegqs()

void dart::compiler::Assembler::vnegqs ( QRegister  qd,
QRegister  qm 
)

◆ vnegs() [1/2]

void dart::compiler::Assembler::vnegs ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vnegs() [2/2]

void dart::compiler::Assembler::vnegs ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1472 of file assembler_arm64.h.

1472{ EmitSIMDTwoRegOp(VNEGS, vd, vn); }

◆ vnot()

void dart::compiler::Assembler::vnot ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1469 of file assembler_arm64.h.

1469{ EmitSIMDTwoRegOp(VNOT, vd, vn); }

◆ vornq()

void dart::compiler::Assembler::vornq ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vorr()

void dart::compiler::Assembler::vorr ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1391 of file assembler_arm64.h.

1391 {
1392 EmitSIMDThreeSameOp(VORR, vd, vn, vm);
1393 }

◆ vorrq()

void dart::compiler::Assembler::vorrq ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ Vreciprocalqs()

void dart::compiler::Assembler::Vreciprocalqs ( QRegister  qd,
QRegister  qm 
)

◆ VreciprocalSqrtqs()

void dart::compiler::Assembler::VreciprocalSqrtqs ( QRegister  qd,
QRegister  qm 
)

◆ vrecpeqs()

void dart::compiler::Assembler::vrecpeqs ( QRegister  qd,
QRegister  qm 
)

◆ vrecpes()

void dart::compiler::Assembler::vrecpes ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1476 of file assembler_arm64.h.

1476 {
1477 EmitSIMDTwoRegOp(VRECPES, vd, vn);
1478 }

◆ VRecps()

void dart::compiler::Assembler::VRecps ( VRegister  vd,
VRegister  vn 
)

◆ vrecpsqs()

void dart::compiler::Assembler::vrecpsqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vrecpss()

void dart::compiler::Assembler::vrecpss ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1463 of file assembler_arm64.h.

1463 {
1464 EmitSIMDThreeSameOp(VRECPSS, vd, vn, vm);
1465 }

◆ vrsqrteqs()

void dart::compiler::Assembler::vrsqrteqs ( QRegister  qd,
QRegister  qm 
)

◆ vrsqrtes()

void dart::compiler::Assembler::vrsqrtes ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1479 of file assembler_arm64.h.

1479 {
1480 EmitSIMDTwoRegOp(VRSQRTES, vd, vn);
1481 }

◆ VRSqrts()

void dart::compiler::Assembler::VRSqrts ( VRegister  vd,
VRegister  vn 
)

◆ vrsqrtsqs()

void dart::compiler::Assembler::vrsqrtsqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vrsqrtss()

void dart::compiler::Assembler::vrsqrtss ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1466 of file assembler_arm64.h.

1466 {
1467 EmitSIMDThreeSameOp(VRSQRTSS, vd, vn, vm);
1468 }

◆ vshlqi()

void dart::compiler::Assembler::vshlqi ( OperandSize  sz,
QRegister  qd,
QRegister  qm,
QRegister  qn 
)

◆ vshlqu()

void dart::compiler::Assembler::vshlqu ( OperandSize  sz,
QRegister  qd,
QRegister  qm,
QRegister  qn 
)

◆ vsqrtd() [1/2]

void dart::compiler::Assembler::vsqrtd ( DRegister  dd,
DRegister  dm,
Condition  cond = AL 
)

◆ vsqrtd() [2/2]

void dart::compiler::Assembler::vsqrtd ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1475 of file assembler_arm64.h.

1475{ EmitSIMDTwoRegOp(VSQRTD, vd, vn); }

◆ Vsqrtqs()

void dart::compiler::Assembler::Vsqrtqs ( QRegister  qd,
QRegister  qm,
QRegister  temp 
)

◆ vsqrts() [1/2]

void dart::compiler::Assembler::vsqrts ( SRegister  sd,
SRegister  sm,
Condition  cond = AL 
)

◆ vsqrts() [2/2]

void dart::compiler::Assembler::vsqrts ( VRegister  vd,
VRegister  vn 
)
inline

Definition at line 1474 of file assembler_arm64.h.

1474{ EmitSIMDTwoRegOp(VSQRTS, vd, vn); }

◆ vstmd()

void dart::compiler::Assembler::vstmd ( BlockAddressMode  am,
Register  base,
DRegister  first,
intptr_t  count,
Condition  cond = AL 
)

◆ vstms()

void dart::compiler::Assembler::vstms ( BlockAddressMode  am,
Register  base,
SRegister  first,
SRegister  last,
Condition  cond = AL 
)

◆ vstrd()

void dart::compiler::Assembler::vstrd ( DRegister  dd,
Address  ad,
Condition  cond = AL 
)

◆ vstrs()

void dart::compiler::Assembler::vstrs ( SRegister  sd,
Address  ad,
Condition  cond = AL 
)

◆ vsubd() [1/2]

void dart::compiler::Assembler::vsubd ( DRegister  dd,
DRegister  dn,
DRegister  dm,
Condition  cond = AL 
)

◆ vsubd() [2/2]

void dart::compiler::Assembler::vsubd ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1418 of file assembler_arm64.h.

1418 {
1419 EmitSIMDThreeSameOp(VSUBD, vd, vn, vm);
1420 }

◆ vsubqi()

void dart::compiler::Assembler::vsubqi ( OperandSize  sz,
QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vsubqs()

void dart::compiler::Assembler::vsubqs ( QRegister  qd,
QRegister  qn,
QRegister  qm 
)

◆ vsubs() [1/2]

void dart::compiler::Assembler::vsubs ( SRegister  sd,
SRegister  sn,
SRegister  sm,
Condition  cond = AL 
)

◆ vsubs() [2/2]

void dart::compiler::Assembler::vsubs ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1415 of file assembler_arm64.h.

1415 {
1416 EmitSIMDThreeSameOp(VSUBS, vd, vn, vm);
1417 }

◆ vsubw()

void dart::compiler::Assembler::vsubw ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1403 of file assembler_arm64.h.

1403 {
1404 EmitSIMDThreeSameOp(VSUBW, vd, vn, vm);
1405 }

◆ vsubx()

void dart::compiler::Assembler::vsubx ( VRegister  vd,
VRegister  vn,
VRegister  vm 
)
inline

Definition at line 1406 of file assembler_arm64.h.

1406 {
1407 EmitSIMDThreeSameOp(VSUBX, vd, vn, vm);
1408 }

◆ vtbl()

void dart::compiler::Assembler::vtbl ( DRegister  dd,
DRegister  dn,
int  length,
DRegister  dm 
)

◆ vzipqw()

void dart::compiler::Assembler::vzipqw ( QRegister  qd,
QRegister  qm 
)

◆ WriteAllocationCanary() [1/5]

void dart::compiler::Assembler::WriteAllocationCanary ( Register  top)
inline

Definition at line 1567 of file assembler_arm.h.

1567 {
1568#if defined(DEBUG)
1569 ASSERT(top != TMP);
1571 str(TMP, Address(top, 0));
1572#endif
1573 }

◆ WriteAllocationCanary() [2/5]

void dart::compiler::Assembler::WriteAllocationCanary ( Register  top)
inline

Definition at line 2166 of file assembler_arm64.h.

2166 {
2167#if defined(DEBUG)
2168 ASSERT(top != TMP);
2170 str(TMP, Address(top, 0));
2171#endif
2172 }

◆ WriteAllocationCanary() [3/5]

void dart::compiler::Assembler::WriteAllocationCanary ( Register  top)
inline

Definition at line 1135 of file assembler_ia32.h.

1135 {
1136#if defined(DEBUG)
1137 movl(Address(top, 0), Immediate(kAllocationCanary));
1138#endif
1139 }

◆ WriteAllocationCanary() [4/5]

void dart::compiler::Assembler::WriteAllocationCanary ( Register  top)
inline

Definition at line 1386 of file assembler_riscv.h.

1386 {
1387#if defined(DEBUG)
1388 ASSERT(top != TMP);
1390 sx(TMP, Address(top, 0));
1391#endif
1392 }
void li(Register rd, intptr_t imm)

◆ WriteAllocationCanary() [5/5]

void dart::compiler::Assembler::WriteAllocationCanary ( Register  top)
inline

Definition at line 1253 of file assembler_x64.h.

1253 {
1254#if defined(DEBUG)
1255 movl(Address(top, 0), Immediate(kAllocationCanary));
1256#endif
1257 }

◆ XA()

dart::compiler::Assembler::XA ( L  ,
movups  ,
0x10  ,
0x0F   
)

◆ xchgl()

void dart::compiler::Assembler::xchgl ( Register  dst,
Register  src 
)

◆ XorImmediate() [1/3]

void dart::compiler::Assembler::XorImmediate ( Register  dst,
const Immediate imm 
)

◆ XorImmediate() [2/3]

void dart::compiler::Assembler::XorImmediate ( Register  rd,
Register  rn,
int64_t  imm,
OperandSize  sz = kEightBytes 
)

◆ XorImmediate() [3/3]

void dart::compiler::Assembler::XorImmediate ( Register  rd,
Register  rn,
intx_t  imm,
OperandSize  sz = kWordBytes 
)

◆ xorpd() [1/2]

void dart::compiler::Assembler::xorpd ( XmmRegister  dst,
const Address src 
)

◆ xorpd() [2/2]

void dart::compiler::Assembler::xorpd ( XmmRegister  dst,
XmmRegister  src 
)

◆ xorps() [1/2]

void dart::compiler::Assembler::xorps ( XmmRegister  dst,
const Address src 
)

◆ xorps() [2/2]

void dart::compiler::Assembler::xorps ( XmmRegister  dst,
XmmRegister  src 
)

◆ ZeroInitCompressedSmiField()

void dart::compiler::Assembler::ZeroInitCompressedSmiField ( const Address dest)

◆ ZeroInitSmiField() [1/2]

void dart::compiler::Assembler::ZeroInitSmiField ( const Address dest)

◆ ZeroInitSmiField() [2/2]

void dart::compiler::Assembler::ZeroInitSmiField ( const Address dest)

◆ zerowps() [1/2]

void dart::compiler::Assembler::zerowps ( XmmRegister  dst)

◆ zerowps() [2/2]

void dart::compiler::Assembler::zerowps ( XmmRegister  dst,
XmmRegister  src 
)

Friends And Related Function Documentation

◆ dart::FlowGraphCompiler

Definition at line 1759 of file assembler_arm.h.

Member Data Documentation

◆ kCallExternalLabelSize

constexpr intptr_t dart::compiler::Assembler::kCallExternalLabelSize = 5
staticconstexpr

Definition at line 252 of file assembler_ia32.h.

◆ kEnterStubFramePushedWords

constexpr intptr_t dart::compiler::Assembler::kEnterStubFramePushedWords = 2
staticconstexpr

Definition at line 1082 of file assembler_ia32.h.

◆ kEntryPointToPcMarkerOffset

static constexpr intptr_t dart::compiler::Assembler::kEntryPointToPcMarkerOffset = 0
staticconstexpr

Definition at line 599 of file assembler_arm64.h.


The documentation for this class was generated from the following files: