Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
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)
 
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 src, ScaleFactor scale, int32_t value)
 
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)
 
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 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 src, ScaleFactor scale, int32_t value)
 
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)
 
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)
 
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 src, ScaleFactor scale, int32_t value)
 
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)
 
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)
 
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 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 src, ScaleFactor scale, int32_t value)
 
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)
 
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)
 
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)
 
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)
 
 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 src, ScaleFactor scale, int32_t value)
 
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 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)
 
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
 
void ExtendNonNegativeSmi (Register dst)
 
void TryAllocate (const Class &cls, Label *failure, JumpDistance distance, Register instance_reg, Register temp)
 
void UnrolledMemCopy (Register dst_base, intptr_t dst_offset, Register src_base, intptr_t src_offset, intptr_t size, Register temp)
 
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)
 
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 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)
 
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)
 
void LoadWordFromBoxOrSmi (Register result, Register value)
 
void LoadAbstractTypeNullability (Register dst, Register type)
 
void CompareAbstractTypeNullabilityWith (Register type, int8_t value, Register scratch)
 
virtual void LoadImmediate (Register dst, target::word imm)=0
 
virtual void CompareImmediate (Register reg, target::word imm, OperandSize width=kWordBytes)=0
 
virtual void AndImmediate (Register dst, target::word imm)=0
 
virtual void MulImmediate (Register dst, target::word imm, OperandSize=kWordBytes)=0
 
void FinalizeHash (Register hash, Register scratch=TMP)
 
void LoadTypeClassId (Register dst, Register src)
 
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
 
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 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 554 of file assembler_x64.h.

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

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()
ObjectPoolBuilder & object_pool_builder()
AssemblerBase(ObjectPoolBuilder *object_pool_builder)
#define ASSERT(E)
Object & NewZoneHandle(Zone *zone)

◆ ~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 826 of file assembler_riscv.h.

826{}

◆ 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 640 of file assembler_arm64.h.

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

◆ 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 643 of file assembler_arm64.h.

643 {
644 AddSubWithCarryHelper(kEightBytes, true, false, rd, rn, rm);
645 }

◆ adcsw()

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

Definition at line 649 of file assembler_arm64.h.

649 {
650 AddSubWithCarryHelper(kFourBytes, true, false, rd, rn, rm);
651 }

◆ adcw()

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

Definition at line 646 of file assembler_arm64.h.

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

◆ 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 618 of file assembler_arm64.h.

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

◆ 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)

◆ AddImmediate() [3/13]

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

Definition at line 1022 of file assembler_riscv.h.

1022 {
1023 AddImmediate(dest, dest, imm);
1024 }

◆ 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 818 of file assembler_arm.h.

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

◆ 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 780 of file assembler_x64.h.

782 {
783 AddImmediate(reg, Immediate(value), width);
784 }
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 831 of file assembler_arm.h.

831 {
832 add(dest, dest, Operand(src));
833 }
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 1030 of file assembler_riscv.h.

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

◆ AddRegisters() [5/5]

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

Definition at line 785 of file assembler_x64.h.

785{ 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 621 of file assembler_arm64.h.

621 {
622 AddSubHelper(sz, true, false, rd, rn, o);
623 }

◆ AddScaled() [1/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  src,
ScaleFactor  scale,
int32_t  value 
)
inline

Definition at line 835 of file assembler_arm.h.

838 {
839 if (scale == 0) {
840 AddImmediate(dest, src, value);
841 } else {
842 Lsl(dest, src, Operand(scale));
843 AddImmediate(dest, dest, value);
844 }
845 }
void Lsl(Register rd, Register rm, const Operand &shift_imm, Condition cond=AL)
const Scalar scale

◆ AddScaled() [2/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  src,
ScaleFactor  scale,
int32_t  value 
)
inline

Definition at line 1788 of file assembler_arm64.h.

1791 {
1792 if (scale == 0) {
1793 AddImmediate(dest, src, value);
1794 } else {
1795 orr(dest, ZR, Operand(src, LSL, scale));
1796 AddImmediate(dest, dest, value);
1797 }
1798 }
void orr(Register rd, Register rn, Operand o, Condition cond=AL)

◆ AddScaled() [3/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  src,
ScaleFactor  scale,
int32_t  value 
)
inline

Definition at line 721 of file assembler_ia32.h.

724 {
725 leal(dest, Address(src, scale, value));
726 }
void leal(Register dst, const Address &src)

◆ AddScaled() [4/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  src,
ScaleFactor  scale,
int32_t  value 
)
inline

Definition at line 1032 of file assembler_riscv.h.

1035 {
1036 if (scale == 0) {
1037 AddImmediate(dest, src, value);
1038 } else {
1039 slli(dest, src, scale);
1040 AddImmediate(dest, dest, value);
1041 }
1042 }
void slli(Register rd, Register rs1, intptr_t shamt)

◆ AddScaled() [5/5]

void dart::compiler::Assembler::AddScaled ( Register  dest,
Register  src,
ScaleFactor  scale,
int32_t  value 
)
inline

Definition at line 787 of file assembler_x64.h.

790 {
791 leaq(dest, Address(src, scale, value));
792 }

◆ 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 631 of file assembler_arm64.h.

631 {
632 adds(rd, rn, o, kFourBytes);
633 }
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 630 of file assembler_arm64.h.

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

◆ adr()

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

Definition at line 666 of file assembler_arm64.h.

666{ 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 842 of file assembler_arm64.h.

842 {
843 EmitLogicalShiftOp(AND, rd, rn, o, sz);
844 }

◆ andi()

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

Definition at line 796 of file assembler_arm64.h.

799 {
800 ASSERT(sz == kEightBytes || sz == kFourBytes);
802 Operand imm_op;
803 const bool immok = Operand::IsImmLogical(imm.value(), width, &imm_op);
804 ASSERT(immok);
805 EmitLogicalImmOp(ANDI, rd, rn, imm_op, sz);
806 }
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 741 of file assembler_ia32.h.

741 {
742 andl(dst, Immediate(value));
743 }

◆ AndImmediate() [3/12]

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

Definition at line 586 of file assembler_x64.h.

586 {
587 AndImmediate(dst, Immediate(value));
588 }
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 744 of file assembler_ia32.h.

744 {
745 MoveRegister(dst, src);
746 andl(dst, Immediate(value));
747 }
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 589 of file assembler_x64.h.

589 {
590 MoveRegister(dst, src);
591 AndImmediate(dst, value);
592 }

◆ AndImmediate() [6/12]

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

Definition at line 872 of file assembler_arm.h.

872 {
873 AndImmediate(rd, rd, imm, AL);
874 }

◆ AndImmediate() [7/12]

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

Definition at line 869 of file assembler_arm.h.

869 {
870 AndImmediate(rd, rd, imm, cond);
871 }

◆ AndImmediate() [8/12]

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

Definition at line 1825 of file assembler_arm64.h.

1825 {
1826 AndImmediate(rd, rd, imm);
1827 }

◆ AndImmediate() [9/12]

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

Definition at line 1063 of file assembler_riscv.h.

1063 {
1064 AndImmediate(rd, rd, imm);
1065 }

◆ 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 829 of file assembler_arm64.h.

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

◆ 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 879 of file assembler_arm.h.

881 {
882 ASSERT(src1 != src2); // Likely a mistake.
883 if (src2 == kNoRegister) {
884 src2 = dst;
885 }
886 and_(dst, src2, Operand(src1));
887 }
void and_(Register rd, Register rn, Operand o, Condition cond=AL)
@ kNoRegister
dst
Definition cp.py:12

◆ AndRegisters() [2/5]

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

Implements dart::compiler::AssemblerBase.

Definition at line 1828 of file assembler_arm64.h.

1830 {
1831 ASSERT(src1 != src2); // Likely a mistake.
1832 if (src2 == kNoRegister) {
1833 src2 = dst;
1834 }
1835 and_(dst, src2, Operand(src1));
1836 }

◆ 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 1066 of file assembler_riscv.h.

1068 {
1069 ASSERT(src1 != src2); // Likely a mistake.
1070 if (src2 == kNoRegister) {
1071 src2 = dst;
1072 }
1073 and_(dst, src2, src1);
1074 }

◆ 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 860 of file assembler_arm64.h.

860 {
861 EmitLogicalShiftOp(ANDS, rd, rn, o, sz);
862 }

◆ andw_()

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

Definition at line 866 of file assembler_arm64.h.

866 {
867 and_(rd, rn, o, kFourBytes);
868 }

◆ 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 911 of file assembler_arm64.h.

914 {
915 EmitMiscDP2Source(ASRV, rd, rn, rm, sz);
916 }

◆ asrvw()

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

Definition at line 926 of file assembler_arm64.h.

926 {
927 asrv(rd, rn, rm, kFourBytes);
928 }
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); }
Point 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 700 of file assembler_arm64.h.

704 {
705 int wordsize = size == kEightBytes ? 64 : 32;
706 EmitBitfieldOp(BFM, rd, rn, -low_bit & (wordsize - 1), width - 1, size);
707 }
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 672 of file assembler_arm64.h.

676 {
677 EmitBitfieldOp(BFM, rd, rn, r_imm, s_imm, size);
678 }

◆ bfxil()

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

Definition at line 711 of file assembler_arm64.h.

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

◆ 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 845 of file assembler_arm64.h.

845 {
846 EmitLogicalShiftOp(BIC, rd, rn, o, sz);
847 }

◆ 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 863 of file assembler_arm64.h.

863 {
864 EmitLogicalShiftOp(BICS, rd, rn, o, sz);
865 }

◆ 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 859 of file assembler_riscv.h.

859{ 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 638 of file assembler_arm.h.

638 {
639 // bkpt requires that the cond field is AL.
640 return (AL << kConditionShift) | B24 | B21 | ((imm16 >> 4) << 8) | B6 | B5 |
641 B4 | (imm16 & 0xf);
642 }
@ 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 1231 of file assembler_arm.h.

1233 {
1234 b(label, condition);
1235 }
static bool b

◆ 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 737 of file assembler_x64.h.

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

◆ 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 1242 of file assembler_arm.h.

1246 {
1247 tst(rn, Operand(1 << bit_number));
1248 b(label, condition);
1249 }
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)

◆ 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 748 of file assembler_x64.h.

752 {
753 testq(rn, Immediate(1 << bit_number));
754 j(condition, label, distance);
755 }
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 1341 of file assembler_arm.h.

1343 {
1344 tst(reg, Operand(kSmiTagMask));
1345 b(label, NE);
1346 }

◆ 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 1003 of file assembler_ia32.h.

1005 {
1006 testl(reg, Immediate(kSmiTagMask));
1007 j(NOT_ZERO, label, distance);
1008 }

◆ 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 1005 of file assembler_x64.h.

1007 {
1008 testq(reg, Immediate(kSmiTagMask));
1009 j(NOT_ZERO, label, distance);
1010 }

◆ BranchIfSmi() [1/5]

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

Implements dart::compiler::AssemblerBase.

Definition at line 1363 of file assembler_arm.h.

1365 {
1366 tst(reg, Operand(kSmiTagMask));
1367 b(label, EQ);
1368 }

◆ 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 1010 of file assembler_ia32.h.

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

◆ 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 1012 of file assembler_x64.h.

1014 {
1015 testq(reg, Immediate(kSmiTagMask));
1016 j(ZERO, label, distance);
1017 }

◆ BranchIfZero() [1/5]

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

Definition at line 1236 of file assembler_arm.h.

1238 {
1239 cmp(rn, Operand(0));
1240 b(label, ZERO);
1241 }
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 742 of file assembler_x64.h.

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

◆ 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 583 of file assembler_arm64.h.

583{ brk(0); }

◆ Breakpoint() [3/5]

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

Implements dart::compiler::AssemblerBase.

Definition at line 1146 of file assembler_ia32.h.

1146{ int3(); }

◆ Breakpoint() [4/5]

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

Implements dart::compiler::AssemblerBase.

Definition at line 894 of file assembler_riscv.h.

◆ Breakpoint() [5/5]

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

Implements dart::compiler::AssemblerBase.

Definition at line 1289 of file assembler_x64.h.

1289{ 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 539 of file assembler_x64.h.

539{ 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 540 of file assembler_x64.h.

540{ 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)

◆ Call() [2/11]

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

Definition at line 892 of file assembler_ia32.h.

892{ 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 845 of file assembler_x64.h.

845{ call(target); }

◆ Call() [5/11]

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

Definition at line 800 of file assembler_arm.h.

800 {
801 // CLOBBERS_LR uses __ to access the assembler.
802#define __ this->
803 CLOBBERS_LR({
804 ldr(LR, target, cond);
805 blx(LR, cond);
806 });
807#undef __
808 }
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 809 of file assembler_arm.h.

809{ 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 1017 of file assembler_riscv.h.

1017{ 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 811 of file assembler_arm.h.

811{ 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 894 of file assembler_ia32.h.

894{ Call(target); }

◆ CallCFunction() [5/10]

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

Definition at line 1019 of file assembler_riscv.h.

1019{ 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 896 of file assembler_ia32.h.

896{ call(target); }

◆ CallCFunction() [9/10]

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

Definition at line 1020 of file assembler_riscv.h.

1020{ Call(target); }

◆ CallCFunction() [10/10]

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

Definition at line 813 of file assembler_arm.h.

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

◆ 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 1619 of file assembler_arm.h.

1619 {
1620 ASSERT(Utils::IsAligned(distance, 4));
1621 // The distance is off by 8 due to the way the ARM CPUs read PC.
1623 distance >>= 2;
1624 return Utils::IsInt(24, distance);
1625 }
static bool IsInt(intptr_t N, T value)
Definition utils.h:298
static constexpr bool IsAligned(T x, uintptr_t alignment, uintptr_t offset=0)
Definition utils.h:77

◆ 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 1120 of file assembler_ia32.h.

1120 {
1121#if defined(DEBUG)
1122 Label okay;
1123 cmpl(Address(top, 0), Immediate(kAllocationCanary));
1124 j(EQUAL, &okay, Assembler::kNearJump);
1125 Stop("Allocation canary");
1126 Bind(&okay);
1127#endif
1128 }
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 1241 of file assembler_x64.h.

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

◆ CheckAllocationCanary() [3/5]

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

Definition at line 1550 of file assembler_arm.h.

1550 {
1551#if defined(DEBUG)
1552 Label okay;
1553 ldr(tmp, Address(top, 0));
1554 cmp(tmp, Operand(kAllocationCanary));
1555 b(&okay, EQUAL);
1556 Stop("Allocation canary");
1557 Bind(&okay);
1558#endif
1559 }

◆ CheckAllocationCanary() [4/5]

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

Definition at line 2150 of file assembler_arm64.h.

2150 {
2151#if defined(DEBUG)
2152 Label okay;
2153 ldr(tmp, Address(top, 0));
2154 cmp(tmp, Operand(kAllocationCanary));
2155 b(&okay, EQUAL);
2156 Stop("Allocation canary");
2157 Bind(&okay);
2158#endif
2159 }

◆ CheckAllocationCanary() [5/5]

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

Definition at line 1358 of file assembler_riscv.h.

1358 {
1359#if defined(DEBUG)
1360 Label okay;
1361 lx(tmp, Address(top, 0));
1362 subi(tmp, tmp, kAllocationCanary);
1363 beqz(tmp, &okay, Assembler::kNearJump);
1364 Stop("Allocation canary");
1365 Bind(&okay);
1366#endif
1367 }
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 874 of file assembler_arm64.h.

874 {
875 EmitMiscDP1Source(CLZ, rd, rn, kEightBytes);
876 }

◆ clzw()

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

Definition at line 877 of file assembler_arm64.h.

877 {
878 EmitMiscDP1Source(CLZ, rd, rn, kFourBytes);
879 }

◆ 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 763 of file assembler_ia32.h.

765 {
767 cmpl(reg, Immediate(immediate));
768 }
#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 568 of file assembler_x64.h.

570 {
571 return CompareImmediate(reg, Immediate(immediate), width);
572 }
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 913 of file assembler_arm.h.

915 {
917 CompareImmediate(rn, value, AL);
918 }

◆ 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 736 of file assembler_x64.h.

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

◆ CompareObjectRegisters() [3/5]

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

Definition at line 1226 of file assembler_arm.h.

1226 {
1227 CompareRegisters(rn, rm);
1228 }

◆ 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 1225 of file assembler_arm.h.

1225{ 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 1141 of file assembler_x64.h.

1143 {
1144 ASSERT(size == kEightBytes || size == kFourBytes);
1145 if (size == kFourBytes) {
1146 cmpl(value, address);
1147 } else {
1148 cmpq(value, address);
1149 }
1150 }

◆ 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 569 of file assembler_arm64.h.

571 {
572 Load(TMP, address, sz);
573 cmp(value, Operand(TMP), sz);
574 }

◆ 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 1608 of file assembler_arm.h.

1608{ return constant_pool_allowed_; }

◆ constant_pool_allowed() [2/4]

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

Definition at line 1970 of file assembler_arm64.h.

1970{ return constant_pool_allowed_; }

◆ constant_pool_allowed() [3/4]

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

Definition at line 1184 of file assembler_riscv.h.

1184{ return constant_pool_allowed_; }

◆ constant_pool_allowed() [4/4]

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

Definition at line 803 of file assembler_x64.h.

803{ 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 522 of file assembler_x64.h.

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

◆ cvtsi2sdq()

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

Definition at line 519 of file assembler_x64.h.

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

◆ 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 528 of file assembler_x64.h.

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

◆ cvttsd2siq()

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

Definition at line 525 of file assembler_x64.h.

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

◆ 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 2277 of file assembler_arm64.h.

2277 {
2278 const int32_t off = (((instr & kImm26Mask) >> kImm26Shift) << 6) >> 4;
2279 return static_cast<int64_t>(off);
2280 }

◆ 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 }

◆ 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 852 of file assembler_riscv.h.

852 {
853 ASSERT(stack_elements >= 0);
854 if (stack_elements > 0) {
855 AddImmediate(SP, SP, stack_elements * target::kWordSize);
856 }
857 }

◆ 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 2271 of file assembler_arm64.h.

2271 {
2272 const int32_t imm32 = static_cast<int32_t>(imm);
2273 const int32_t off = (((imm32 >> 2) << kImm26Shift) & kImm26Mask);
2274 return (instr & ~kImm26Mask) | off;
2275 }

◆ 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 1312 of file assembler_riscv.h.

1312{ 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 602 of file assembler_arm64.h.

602 {
604 }
static constexpr intptr_t kEntryPointToPcMarkerOffset

◆ EntryPointToPcMarkerOffset() [2/3]

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

Definition at line 1094 of file assembler_ia32.h.

1094 {
1096 }

◆ EntryPointToPcMarkerOffset() [3/3]

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

Definition at line 913 of file assembler_riscv.h.

913 {
915 }

◆ eon()

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

Definition at line 857 of file assembler_arm64.h.

857 {
858 EmitLogicalShiftOp(EON, rd, rn, o, sz);
859 }

◆ 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 854 of file assembler_arm64.h.

854 {
855 EmitLogicalShiftOp(EOR, rd, rn, o, sz);
856 }

◆ eori()

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

Definition at line 818 of file assembler_arm64.h.

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

◆ eorw()

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

Definition at line 871 of file assembler_arm64.h.

871{ 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 721 of file assembler_x64.h.

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

◆ Exchange() [2/2]

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

Definition at line 715 of file assembler_x64.h.

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

◆ 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 1267 of file assembler_arm.h.

1270 {
1271 ExtendValue(rd, rm, sz, cond);
1272 SmiTag(rd, cond);
1273 }
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 1274 of file assembler_arm.h.

1276 {
1277 ExtendAndSmiTagValue(rd, rm, sz, AL);
1278 }
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 1264 of file assembler_arm.h.

1264 {
1265 ExtendValue(rd, rm, sz, AL);
1266 }

◆ 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 1046 of file assembler_arm64.h.

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

◆ 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 1052 of file assembler_arm64.h.

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

◆ 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 1167 of file assembler_ia32.h.

1167{ return code_; }

◆ HeapDataOffset() [1/2]

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

Definition at line 2265 of file assembler_arm64.h.

2265 {
2266 return is_external
2267 ? 0
2268 : (target::Instance::DataOffsetFor(cid) - kHeapObjectTag);
2269 }
@ kHeapObjectTag
const intptr_t cid

◆ HeapDataOffset() [2/2]

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

Definition at line 1454 of file assembler_riscv.h.

1454 {
1455 return is_external
1456 ? 0
1457 : (target::Instance::DataOffsetFor(cid) - kHeapObjectTag);
1458 }

◆ 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 1605 of file assembler_arm.h.

1605{ return true; }

◆ IsSafe() [2/5]

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

Definition at line 612 of file assembler_arm64.h.

612{ return true; }

◆ IsSafe() [3/5]

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

Definition at line 1163 of file assembler_ia32.h.

1163 {
1164 return !target::IsSmi(object) || IsSafeSmi(object);
1165 }
static bool IsSafeSmi(const Object &object)
bool IsSmi(int64_t v)

◆ IsSafe() [4/5]

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

Definition at line 919 of file assembler_riscv.h.

919{ return true; }

◆ IsSafe() [5/5]

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

Definition at line 1349 of file assembler_x64.h.

1349{ return true; }

◆ IsSafeSmi() [1/5]

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

Definition at line 1606 of file assembler_arm.h.

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

◆ IsSafeSmi() [2/5]

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

Definition at line 613 of file assembler_arm64.h.

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

◆ IsSafeSmi() [3/5]

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

Definition at line 1152 of file assembler_ia32.h.

1152 {
1153 if (!target::IsSmi(object)) {
1154 return false;
1155 }
1156 int64_t value;
1157 if (HasIntegerValue(object, &value)) {
1158 return Utils::IsInt(16, value) || Utils::IsPowerOfTwo(value) ||
1159 Utils::IsPowerOfTwo(value + 1);
1160 }
1161 return false;
1162 }
static constexpr bool IsPowerOfTwo(T x)
Definition utils.h:61
uint8_t value
bool HasIntegerValue(const dart::Object &object, int64_t *value)

◆ IsSafeSmi() [4/5]

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

Definition at line 920 of file assembler_riscv.h.

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

◆ IsSafeSmi() [5/5]

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

Definition at line 1350 of file assembler_x64.h.

1350{ 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 703 of file assembler_x64.h.

703{ 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 702 of file assembler_x64.h.

702{ 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 1036 of file assembler_x64.h.

1036{ 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 1027 of file assembler_ia32.h.

1027 {
1028 jmp(label, distance);
1029 }

◆ Jump() [8/14]

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

Definition at line 861 of file assembler_riscv.h.

861 {
862 j(label, distance);
863 }

◆ Jump() [9/14]

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

Definition at line 1030 of file assembler_x64.h.

1030 {
1031 jmp(label, distance);
1032 }

◆ 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 1031 of file assembler_ia32.h.

1031{ jmp(target); }

◆ Jump() [13/14]

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

Definition at line 865 of file assembler_riscv.h.

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

◆ Jump() [14/14]

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

Definition at line 1034 of file assembler_x64.h.

1034{ 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 999 of file assembler_riscv.h.

1003 {
1005 snapshot_behavior);
1006 }

◆ 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 1032 of file assembler_arm64.h.

1032 {
1033 ASSERT((rt != CSP) && (rt != R31));
1034 ASSERT((a.type() == Address::PairOffset) ||
1035 (a.type() == Address::PairPostIndex) ||
1036 (a.type() == Address::PairPreIndex));
1037 EmitLoadStoreRegPair(LDP, rt, rt2, a, sz);
1038 }

◆ 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 1008 of file assembler_arm64.h.

1008 {
1009 ASSERT((rt != CSP) && (rt != R31));
1010 ASSERT((a.type() != Address::PairOffset) &&
1011 (a.type() != Address::PairPostIndex) &&
1012 (a.type() != Address::PairPreIndex));
1013 if (a.type() == Address::PCOffset) {
1014 ASSERT(sz == kEightBytes);
1015 EmitLoadRegLiteral(LDRpc, rt, a, sz);
1016 } else {
1017 if (IsSignedOperand(sz)) {
1018 EmitLoadStoreReg(LDRS, rt, a, sz);
1019 } else {
1020 EmitLoadStoreReg(LDR, rt, a, sz);
1021 }
1022 }
1023 }
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 1059 of file assembler_arm64.h.

1059 {
1060 // rt = value
1061 // rn = address
1062 EmitLoadStoreExclusive(LDXR, R31, rn, rt, size);
1063 }

◆ 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 1313 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 1069 of file assembler_arm.h.

1071 {
1072 Load(reg, address, type, AL);
1073 }

◆ LoadAcquire() [1/5]

void dart::compiler::Assembler::LoadAcquire ( Register  dst,
const Address address,
OperandSize  size = kEightBytes 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 530 of file assembler_arm64.h.

532 {
533 // ldar does not feature an address operand.
534 ASSERT(address.type() == Address::AddressType::Offset);
535 Register src = address.base();
536 if (address.offset() != 0) {
537 AddImmediate(TMP2, src, address.offset());
538 src = TMP2;
539 }
540 ldar(dst, src, size);
541#if defined(TARGET_USES_THREAD_SANITIZER)
542 TsanLoadAcquire(src);
543#endif
544 }
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 1110 of file assembler_x64.h.

1112 {
1113 // On intel loads have load-acquire behavior (i.e. loads are not re-ordered
1114 // with other loads).
1115 Load(dst, address, size);
1116#if defined(TARGET_USES_THREAD_SANITIZER)
1117 TsanLoadAcquire(address);
1118#endif
1119 }

◆ 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 defined(TARGET_USES_THREAD_SANITIZER)
678#error No support for TSAN on IA32.
679#endif
680 }

◆ 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 1071 of file assembler_x64.h.

1071 {
1072 OBJ(mov)(dst, Address(base, offset));
1073 }
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 1114 of file assembler_riscv.h.

1114 {
1116 }
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 1881 of file assembler_arm64.h.

1881 {
1883 }

◆ 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 1507 of file assembler_arm.h.

1509 {
1511 }
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 2257 of file assembler_arm64.h.

2259 {
2261 }

◆ LoadFieldAddressForOffset() [3/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 968 of file assembler_ia32.h.

970 {
971 leal(address, FieldAddress(instance, offset));
972 }

◆ LoadFieldAddressForOffset() [4/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1446 of file assembler_riscv.h.

1448 {
1450 }

◆ LoadFieldAddressForOffset() [5/5]

void dart::compiler::Assembler::LoadFieldAddressForOffset ( Register  address,
Register  instance,
int32_t  offset 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1339 of file assembler_x64.h.

1341 {
1342 leaq(address, FieldAddress(instance, offset));
1343 }

◆ 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 961 of file assembler_ia32.h.

963 {
964 static_assert(kSmiTagShift == 1, "adjust scale factor");
965 leal(address, FieldAddress(instance, offset_in_words_as_smi, TIMES_2, 0));
966 }

◆ 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 1321 of file assembler_x64.h.

1323 {
1324 static_assert(kSmiTagShift == 1, "adjust scale factor");
1325 leaq(address, FieldAddress(instance, offset_in_words_as_smi, TIMES_4, 0));
1326 }

◆ LoadFieldFromOffset() [1/2]

void dart::compiler::Assembler::LoadFieldFromOffset ( Register  reg,
Register  base,
int32_t  offset,
OperandSize  type,
Condition  cond 
)
inline

Definition at line 1093 of file assembler_arm.h.

1097 {
1098 Load(reg, FieldAddress(base, offset), type, cond);
1099 }

◆ 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 1087 of file assembler_arm.h.

1090 {
1092 }
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 1080 of file assembler_arm.h.

1084 {
1085 Load(reg, Address(base, offset), type, cond);
1086 }

◆ 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 1074 of file assembler_arm.h.

1077 {
1078 LoadFromOffset(reg, base, offset, type, AL);
1079 }
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 936 of file assembler_arm.h.

936 {
937 LoadImmediate(rd, value, AL);
938 }
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 1989 of file assembler_arm64.h.

1989 {
1990 LoadImmediate(reg, imm.value());
1991 }

◆ LoadImmediate() [6/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
Immediate  immediate 
)
inline

Definition at line 778 of file assembler_ia32.h.

778 {
779 LoadImmediate(reg, immediate.value());
780 }

◆ LoadImmediate() [7/10]

void dart::compiler::Assembler::LoadImmediate ( Register  reg,
int32_t  immediate 
)
inlineoverride

Definition at line 770 of file assembler_ia32.h.

770 {
771 if (immediate == 0) {
772 xorl(reg, reg);
773 } else {
774 movl(reg, Immediate(immediate));
775 }
776 }
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 808 of file assembler_x64.h.

808 {
809 LoadImmediate(reg, Immediate(immediate));
810 }

◆ 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 1861 of file assembler_arm64.h.

1866 {
1867 add(dest, base, Operand(index, LSL, scale));
1868 LoadFromOffset(dest, dest, payload_offset - kHeapObjectTag, sz);
1869 }

◆ 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 1042 of file assembler_x64.h.

1047 {
1048 Load(dst, FieldAddress(base, index, scale, payload_offset), sz);
1049 }

◆ 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 1103 of file assembler_arm.h.

1108 {
1109 add(dst, base, Operand(index, LSL, scale));
1110 LoadFromOffset(dst, dst, payload_start - kHeapObjectTag, type);
1111 }

◆ LoadInt32FromBoxOrSmi() [1/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1349 of file assembler_arm.h.

1349 {
1350 if (result == value) {
1351 ASSERT(TMP != value);
1352 MoveRegister(TMP, value);
1353 value = TMP;
1354 }
1355 ASSERT(value != result);
1356 compiler::Label done;
1357 SmiUntag(result, value, &done);
1358 LoadFieldFromOffset(result, value, compiler::target::Mint::value_offset());
1359 Bind(&done);
1360 }
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);
1684 MoveRegister(TMP, value);
1685 value = TMP;
1686 }
1687 ASSERT(value != result);
1688 compiler::Label done;
1689 sbfx(result, value, kSmiTagSize,
1690 Utils::Minimum(static_cast<intptr_t>(32), compiler::target::kSmiBits));
1691 BranchIfSmi(value, &done);
1692 LoadFieldFromOffset(result, value, compiler::target::Mint::value_offset(),
1694 Bind(&done);
1695 }
static T Minimum(T x, T y)
Definition utils.h:21
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)

◆ LoadInt32FromBoxOrSmi() [3/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 986 of file assembler_ia32.h.

986 {
987 if (result != value) {
988 MoveRegister(result, value);
989 value = result;
990 }
991 ASSERT(value == result);
992 compiler::Label done;
993 SmiUntag(result); // Leaves CF after SmiUntag.
995 // Undo untagging by multiplying value by 2.
996 // [reg + reg + disp8] has a shorter encoding than [reg*2 + disp32]
998 movl(result, compiler::Address(result, result, TIMES_1,
999 target::Mint::value_offset()));
1000 Bind(&done);
1001 }
#define COMPILE_ASSERT(expr)
Definition assert.h:339
@ NOT_CARRY

◆ LoadInt32FromBoxOrSmi() [4/5]

void dart::compiler::Assembler::LoadInt32FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 946 of file assembler_riscv.h.

946 {
947 if (result == value) {
948 ASSERT(TMP != value);
949 MoveRegister(TMP, value);
950 value = TMP;
951 }
952 ASSERT(value != result);
953 compiler::Label done;
954 SmiUntag(result, value);
956 LoadFieldFromOffset(result, value, target::Mint::value_offset(),
958 Bind(&done);
959 }

◆ 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);
1700 MoveRegister(TMP, value);
1701 value = TMP;
1702 }
1703 ASSERT(value != result);
1704 compiler::Label done;
1705 SmiUntag(result, value);
1706 BranchIfSmi(value, &done);
1707 LoadFieldFromOffset(result, value, target::Mint::value_offset());
1708 Bind(&done);
1709 }

◆ LoadInt64FromBoxOrSmi() [2/3]

void dart::compiler::Assembler::LoadInt64FromBoxOrSmi ( Register  result,
Register  value 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 962 of file assembler_riscv.h.

962 {
963 if (result == value) {
964 ASSERT(TMP != value);
965 MoveRegister(TMP, value);
966 value = TMP;
967 }
968 ASSERT(value != result);
969 compiler::Label done;
970 SmiUntag(result, value);
972 LoadFieldFromOffset(result, value, target::Mint::value_offset());
973 Bind(&done);
974 }

◆ 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 869 of file assembler_riscv.h.

869 {
871 }
constexpr OperandSize kWordBytes

◆ LoadMemoryValue() [5/5]

void dart::compiler::Assembler::LoadMemoryValue ( Register  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1068 of file assembler_x64.h.

1068 {
1069 movq(dst, Address(base, offset));
1070 }

◆ 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 1195 of file assembler_riscv.h.

1195 {
1196 LoadObjectHelper(dst, obj, false);
1197 }

◆ 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 1885 of file assembler_arm64.h.

1885 {
1887 }
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 1111 of file assembler_riscv.h.

1111 {
1113 }
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 
)

◆ LoadStaticFieldAddress() [2/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch 
)

◆ LoadStaticFieldAddress() [3/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch 
)
inline

Definition at line 949 of file assembler_ia32.h.

951 {
952 LoadFieldFromOffset(scratch, field,
953 target::Field::host_offset_or_field_id_offset());
954 const intptr_t field_table_offset =
955 compiler::target::Thread::field_table_values_offset();
956 LoadMemoryValue(address, THR, static_cast<int32_t>(field_table_offset));
957 static_assert(kSmiTagShift == 1, "adjust scale factor");
958 leal(address, Address(address, scratch, TIMES_HALF_WORD_SIZE, 0));
959 }
void LoadMemoryValue(Register dst, Register base, int32_t offset)
const Register THR

◆ LoadStaticFieldAddress() [4/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch 
)

◆ LoadStaticFieldAddress() [5/5]

void dart::compiler::Assembler::LoadStaticFieldAddress ( Register  address,
Register  field,
Register  scratch 
)
inline

Definition at line 1308 of file assembler_x64.h.

1310 {
1312 scratch, compiler::FieldAddress(
1313 field, target::Field::host_offset_or_field_id_offset()));
1314 const intptr_t field_table_offset =
1315 compiler::target::Thread::field_table_values_offset();
1316 LoadMemoryValue(address, THR, static_cast<int32_t>(field_table_offset));
1317 static_assert(kSmiTagShift == 1, "adjust scale factor");
1318 leaq(address, Address(address, scratch, TIMES_HALF_WORD_SIZE, 0));
1319 }
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 1172 of file assembler_arm.h.

1172 {
1174 }
static DRegister EvenDRegisterOf(QRegister q)

◆ LoadUnboxedDouble() [2/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1916 of file assembler_arm64.h.

1916 {
1918 }

◆ 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 1137 of file assembler_riscv.h.

1137 {
1139 }

◆ LoadUnboxedDouble() [5/5]

void dart::compiler::Assembler::LoadUnboxedDouble ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1093 of file assembler_x64.h.

1093 {
1094 movsd(dst, Address(base, offset));
1095 }

◆ LoadUnboxedSimd128() [1/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1193 of file assembler_arm.h.

1193 {
1195 }
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 1928 of file assembler_arm64.h.

1928 {
1930 }

◆ 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 1145 of file assembler_riscv.h.

1145 {
1146 // No single register SIMD on RISC-V.
1147 UNREACHABLE();
1148 }

◆ LoadUnboxedSimd128() [5/5]

void dart::compiler::Assembler::LoadUnboxedSimd128 ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1078 of file assembler_x64.h.

1078 {
1079 movups(dst, Address(base, offset));
1080 }

◆ LoadUnboxedSingle()

void dart::compiler::Assembler::LoadUnboxedSingle ( FpuRegister  dst,
Register  base,
int32_t  offset 
)
inline

Definition at line 1090 of file assembler_x64.h.

1090 {
1091 movss(dst, Address(base, offset));
1092 }
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 1199 of file assembler_riscv.h.

1203 {
1204 LoadObjectHelper(dst, obj, true, snapshot_behavior);
1205 }

◆ 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 791 of file assembler_ia32.h.

791 {
792 LoadObject(dst, object, /*movable_referent=*/true);
793 }
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 840 of file assembler_ia32.h.

840 {
841 lock();
842 cmpxchgl(address, reg);
843 }
void cmpxchgl(const Address &address, Register reg)

◆ LockCmpxchgl() [2/2]

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

Definition at line 896 of file assembler_x64.h.

896 {
897 lock();
898 cmpxchgl(address, reg);
899 }

◆ LockCmpxchgq()

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

Definition at line 891 of file assembler_x64.h.

891 {
892 lock();
893 cmpxchgq(address, reg);
894 }

◆ lr_state() [1/2]

compiler::LRState dart::compiler::Assembler::lr_state ( ) const
inline

Definition at line 1611 of file assembler_arm.h.

1611{ return lr_state_; }

◆ lr_state() [2/2]

compiler::LRState dart::compiler::Assembler::lr_state ( ) const
inline

Definition at line 1973 of file assembler_arm64.h.

1973{ 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 752 of file assembler_ia32.h.

752 {
753 shll(dst, Immediate(shift));
754 }
void shll(Register reg, const Immediate &imm)

◆ LslImmediate() [2/7]

void dart::compiler::Assembler::LslImmediate ( Register  dst,
int32_t  shift 
)
inline

Definition at line 601 of file assembler_x64.h.

601 {
602 shlq(dst, Immediate(shift));
603 }
void shlq(Register reg, const Immediate &imm)

◆ LslImmediate() [3/7]

void dart::compiler::Assembler::LslImmediate ( Register  rd,
int32_t  shift 
)
inline

Definition at line 896 of file assembler_arm.h.

896{ 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 1084 of file assembler_riscv.h.

1084{ 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 892 of file assembler_arm.h.

892 {
893 ASSERT((shift >= 0) && (shift < kBitsPerInt32));
894 Lsl(rd, rn, Operand(shift));
895 }
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 897 of file assembler_arm.h.

897 {
898 Lsl(dst, dst, shift);
899 }

◆ 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 755 of file assembler_ia32.h.

755 {
756 ASSERT_EQUAL(shift, ECX); // IA32 does not have a TMP.
757 shll(dst, shift);
758 }

◆ LslRegister() [4/5]

void dart::compiler::Assembler::LslRegister ( Register  dst,
Register  shift 
)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1085 of file assembler_riscv.h.

1085 {
1086 sll(dst, dst, shift);
1087 }
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 899 of file assembler_arm64.h.

902 {
903 EmitMiscDP2Source(LSLV, rd, rn, rm, sz);
904 }

◆ lslvw()

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

Definition at line 920 of file assembler_arm64.h.

920 {
921 lslv(rd, rn, rm, kFourBytes);
922 }

◆ 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 759 of file assembler_ia32.h.

759 {
760 shrl(dst, Immediate(shift));
761 }
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 605 of file assembler_x64.h.

605 {
606 shrq(dst, Immediate(shift));
607 }
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 904 of file assembler_arm.h.

904 {
905 LsrImmediate(rd, rd, shift);
906 }
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 1088 of file assembler_riscv.h.

1088 {
1089 srli(rd, rd, shift);
1090 }
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 900 of file assembler_arm.h.

900 {
901 ASSERT((shift >= 0) && (shift < kBitsPerInt32));
902 Lsr(rd, rn, Operand(shift));
903 }
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 905 of file assembler_arm64.h.

908 {
909 EmitMiscDP2Source(LSRV, rd, rn, rm, sz);
910 }

◆ lsrvw()

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

Definition at line 923 of file assembler_arm64.h.

923 {
924 lsrv(rd, rn, rm, kFourBytes);
925 }
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 929 of file assembler_arm64.h.

933 {
934 EmitMiscDP3Source(MADD, rd, rn, rm, ra, sz);
935 }

◆ 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 516 of file assembler_x64.h.

516 {
517 EmitL(dst, src, 0x6E, 0x0F, 0x66);
518 }

◆ MoveAndSmiTagRegister() [1/2]

void dart::compiler::Assembler::MoveAndSmiTagRegister ( Register  rd,
Register  rm 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1260 of file assembler_arm.h.

1260 {
1261 MoveAndSmiTagRegister(rd, rm, AL);
1262 }
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 1257 of file assembler_arm.h.

1257 {
1258 ExtendAndSmiTagValue(rd, rm, kFourBytes, cond);
1259 }

◆ 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 710 of file assembler_x64.h.

710 {
711 movq(TMP, src);
712 movq(dst, TMP);
713 }

◆ MoveRegister() [1/2]

void dart::compiler::Assembler::MoveRegister ( Register  rd,
Register  rm 
)
inlineoverridevirtual

Reimplemented from dart::compiler::AssemblerBase.

Definition at line 1254 of file assembler_arm.h.

1254 {
1255 MoveRegister(rd, rm, AL);
1256 }

◆ MoveRegister() [2/2]

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

Definition at line 1251 of file assembler_arm.h.

1251 {
1252 ExtendValue(rd, rm, kFourBytes, cond);
1253 }

◆ MoveUnboxedDouble() [1/5]

void dart::compiler::Assembler::MoveUnboxedDouble ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1178 of file assembler_arm.h.

1178 {
1179 if (src != dst) {
1181 }
1182 }
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 1922 of file assembler_arm64.h.

1922 {
1923 if (src != dst) {
1924 fmovdd(dst, src);
1925 }
1926 }
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 1143 of file assembler_riscv.h.

1143{ 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 1099 of file assembler_x64.h.

1099 {
1100 if (src != dst) {
1101 movaps(dst, src);
1102 }
1103 }

◆ MoveUnboxedSimd128() [1/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1199 of file assembler_arm.h.

1199 {
1200 if (src != dst) {
1201 vmovq(dst, src);
1202 }
1203 }
void vmovq(QRegister qd, QRegister qm)

◆ MoveUnboxedSimd128() [2/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1934 of file assembler_arm64.h.

1934 {
1935 if (src != dst) {
1936 vmov(dst, src);
1937 }
1938 }
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 1153 of file assembler_riscv.h.

1153 {
1154 // No single register SIMD on RISC-V.
1155 UNREACHABLE();
1156 }

◆ MoveUnboxedSimd128() [5/5]

void dart::compiler::Assembler::MoveUnboxedSimd128 ( FpuRegister  dst,
FpuRegister  src 
)
inline

Definition at line 1084 of file assembler_x64.h.

1084 {
1085 if (src != dst) {
1086 movaps(dst, src);
1087 }
1088 }

◆ 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 991 of file assembler_arm64.h.

991 {
992 ASSERT(rd != CSP);
993 const Register crd = ConcreteRegister(rd);
994 EmitMoveWideOp(MOVK, crd, imm, hw_idx, kEightBytes);
995 }

◆ 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 496 of file assembler_x64.h.

496 {
497 EmitL(src, dst, 0x7E, 0x0F, 0x66);
498 }

◆ 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 531 of file assembler_x64.h.

531 {
532 EmitL(dst, src, 0x50, 0x0F, 0x66);
533 }

◆ 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 534 of file assembler_x64.h.

534{ EmitL(dst, src, 0x50, 0x0F); }

◆ movn()

void dart::compiler::Assembler::movn ( Register  rd,
const Immediate imm,
int  hw_idx 
)
inline

Definition at line 996 of file assembler_arm64.h.

996 {
997 ASSERT(rd != CSP);
998 const Register crd = ConcreteRegister(rd);
999 EmitMoveWideOp(MOVN, crd, imm, hw_idx, kEightBytes);
1000 }

◆ 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 510 of file assembler_x64.h.

510{ EmitQ(src, dst, 0x89); }

◆ movq() [5/7]

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

Definition at line 493 of file assembler_x64.h.

493 {
494 EmitQ(src, dst, 0x7E, 0x0F, 0x66);
495 }

◆ 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 512 of file assembler_x64.h.

512 {
513 EmitQ(dst, src, 0x6E, 0x0F, 0x66);
514 }

◆ 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 502 of file assembler_x64.h.

502 {
503 EmitL(src, dst, 0x11, 0x0F, 0xF2);
504 }

◆ 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 499 of file assembler_x64.h.

499 {
500 EmitL(src, dst, 0x11, 0x0F, 0xF3);
501 }

◆ 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 1001 of file assembler_arm64.h.

1001 {
1002 ASSERT(rd != CSP);
1003 const Register crd = ConcreteRegister(rd);
1004 EmitMoveWideOp(MOVZ, crd, imm, hw_idx, kEightBytes);
1005 }

◆ 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 936 of file assembler_arm64.h.

940 {
941 EmitMiscDP3Source(MSUB, rd, rn, rm, ra, sz);
942 }

◆ 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 1025 of file assembler_riscv.h.

1027 {
1028 MulImmediate(dest, dest, imm, width);
1029 }
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 857 of file assembler_arm.h.

859 {
861 if (Utils::IsPowerOfTwo(imm)) {
863 } else {
864 LoadImmediate(TMP, imm);
865 mul(reg, reg, TMP);
866 }
867 }
static constexpr int ShiftForPowerOfTwo(T x)
Definition utils.h:66
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 730 of file assembler_ia32.h.

732 {
734 if (Utils::IsPowerOfTwo(imm)) {
735 const intptr_t shift = Utils::ShiftForPowerOfTwo(imm);
736 shll(reg, Immediate(shift));
737 } else {
738 imull(reg, Immediate(imm));
739 }
740 }
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 1806 of file assembler_arm64.h.

1808 {
1810 if (Utils::IsPowerOfTwo(imm)) {
1812 } else {
1813 LoadImmediate(TMP, imm);
1814 if (width == kFourBytes) {
1815 mulw(reg, reg, TMP);
1816 } else {
1817 mul(reg, reg, TMP);
1818 }
1819 }
1820 }
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 667 of file assembler_x64.h.

669 {
670 MulImmediate(reg, Immediate(imm), width);
671 }

◆ 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 751 of file assembler_ia32.h.

751{ orl(dst, Immediate(value)); }

◆ OrImmediate() [3/9]

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

Definition at line 597 of file assembler_x64.h.

597 {
598 OrImmediate(dst, Immediate(value));
599 }
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 889 of file assembler_arm.h.

889 {
890 OrImmediate(rd, rd, imm, cond);
891 }

◆ OrImmediate() [5/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
int64_t  imm 
)
inline

Definition at line 1841 of file assembler_arm64.h.

1841{ OrImmediate(rd, rd, imm); }

◆ OrImmediate() [6/9]

void dart::compiler::Assembler::OrImmediate ( Register  rd,
intx_t  imm 
)
inline

Definition at line 1079 of file assembler_riscv.h.

1079{ 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 851 of file assembler_arm64.h.

851 {
852 EmitLogicalShiftOp(ORN, rd, rn, o, sz);
853 }

◆ ornw()

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

Definition at line 870 of file assembler_arm64.h.

870{ 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 848 of file assembler_arm64.h.

848 {
849 EmitLogicalShiftOp(ORR, rd, rn, o, sz);
850 }

◆ orri()

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

Definition at line 807 of file assembler_arm64.h.

810 {
811 ASSERT(sz == kEightBytes || sz == kFourBytes);
813 Operand imm_op;
814 const bool immok = Operand::IsImmLogical(imm.value(), width, &imm_op);
815 ASSERT(immok);
816 EmitLogicalImmOp(ORRI, rd, rn, imm_op, sz);
817 }

◆ 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 869 of file assembler_arm64.h.

869{ 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 535 of file assembler_x64.h.

535 {
536 EmitL(dst, src, 0xD7, 0x0F, 0x66);
537 }

◆ 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 765 of file assembler_x64.h.

765 {
766 PopRegister(r0);
767 PopRegister(r1);
768 }

◆ 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)

◆ 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 2024 of file assembler_arm64.h.

2024{ PushImmediate(immediate.value()); }
void PushImmediate(int32_t immediate)

◆ PushImmediate() [3/7]

void dart::compiler::Assembler::PushImmediate ( int32_t  immediate)
inline

Definition at line 984 of file assembler_arm.h.

984 {
985 LoadImmediate(TMP, immediate);
986 Push(TMP);
987 }
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 2020 of file assembler_arm64.h.

2020 {
2021 LoadImmediate(TMP, immediate);
2022 Push(TMP);
2023 }

◆ PushImmediate() [6/7]

void dart::compiler::Assembler::PushImmediate ( int64_t  immediate)
inline

Definition at line 1234 of file assembler_riscv.h.

1234 {
1235 if (immediate == 0) {
1237 } else {
1238 LoadImmediate(TMP, immediate);
1240 }
1241 }
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 2012 of file assembler_arm64.h.

2012 {
2013 if (IsSameObject(compiler::NullObject(), object)) {
2014 Push(NULL_REG);
2015 } else {
2016 LoadObject(TMP, object);
2017 Push(TMP);
2018 }
2019 }
bool IsSameObject(const Object &a, const Object &b)
const Object & NullObject()
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 1224 of file assembler_riscv.h.

1224 {
1225 if (IsSameObject(compiler::NullObject(), object)) {
1227 } else if (target::IsSmi(object) && (target::ToRawSmi(object) == 0)) {
1229 } else {
1230 LoadObject(TMP, object);
1232 }
1233 }
word ToRawSmi(const dart::Object &a)

◆ 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 761 of file assembler_x64.h.

761 {
762 PushRegister(r1);
763 PushRegister(r0);
764 }

◆ 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 839 of file assembler_riscv.h.

839{ UNIMPLEMENTED(); }

◆ PushValueAtOffset() [5/5]

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

Definition at line 770 of file assembler_x64.h.

770 {
771 pushq(Address(base, offset));
772 }

◆ 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 882 of file assembler_arm64.h.

882 {
883 EmitMiscDP1Source(RBIT, rd, rn, kEightBytes);
884 }

◆ 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 2065 of file assembler_arm64.h.

2065{ 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 1269 of file assembler_riscv.h.

1269{ ret(); }

◆ Ret() [4/5]

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

Definition at line 729 of file assembler_x64.h.

729{ 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 }

◆ 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 652 of file assembler_arm64.h.

652 {
653 AddSubWithCarryHelper(kEightBytes, false, true, rd, rn, rm);
654 }

◆ 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 655 of file assembler_arm64.h.

655 {
656 AddSubWithCarryHelper(kEightBytes, true, true, rd, rn, rm);
657 }

◆ sbcsw()

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

Definition at line 661 of file assembler_arm64.h.

661 {
662 AddSubWithCarryHelper(kFourBytes, true, true, rd, rn, rm);
663 }

◆ sbcw()

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

Definition at line 658 of file assembler_arm64.h.

658 {
659 AddSubWithCarryHelper(kFourBytes, false, true, rd, rn, rm);
660 }

◆ sbfiz()

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

Definition at line 722 of file assembler_arm64.h.

726 {
727 int wordsize = size == kEightBytes ? 64 : 32;
728 EmitBitfieldOp(SBFM, rd, rn, (wordsize - low_bit) & (wordsize - 1),
729 width - 1, size);
730 }

◆ sbfm()

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

Definition at line 681 of file assembler_arm64.h.

685 {
686 EmitBitfieldOp(SBFM, rd, rn, r_imm, s_imm, size);
687 }

◆ sbfx() [1/2]

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

Definition at line 734 of file assembler_arm64.h.

738 {
739 EmitBitfieldOp(SBFM, rd, rn, low_bit, low_bit + width - 1, size);
740 }

◆ 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 893 of file assembler_arm64.h.

896 {
897 EmitMiscDP2Source(SDIV, rd, rn, rm, sz);
898 }

◆ sdivw()

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

Definition at line 917 of file assembler_arm64.h.

917 {
918 sdiv(rd, rn, rm, kFourBytes);
919 }
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 1609 of file assembler_arm.h.

1609{ constant_pool_allowed_ = b; }

◆ set_constant_pool_allowed() [2/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 1971 of file assembler_arm64.h.

1971{ constant_pool_allowed_ = b; }

◆ set_constant_pool_allowed() [3/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 1185 of file assembler_riscv.h.

1185{ constant_pool_allowed_ = b; }

◆ set_constant_pool_allowed() [4/4]

void dart::compiler::Assembler::set_constant_pool_allowed ( bool  b)
inline

Definition at line 804 of file assembler_x64.h.

804{ constant_pool_allowed_ = b; }

◆ set_lr_state() [1/2]

void dart::compiler::Assembler::set_lr_state ( compiler::LRState  b)
inline

Definition at line 1612 of file assembler_arm.h.

1612{ lr_state_ = b; }

◆ set_lr_state() [2/2]

void dart::compiler::Assembler::set_lr_state ( compiler::LRState  state)
inline

Definition at line 1974 of file assembler_arm64.h.

1974{ lr_state_ = state; }
AtkStateType state

◆ set_use_far_branches()

void dart::compiler::Assembler::set_use_far_branches ( bool  b)
inline

Definition at line 580 of file assembler_arm64.h.

580{ 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 585 of file assembler_arm64.h.

585 {
586 if (prologue_offset_ == -1) {
588 }
589 }

◆ SetPrologueOffset() [2/2]

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

Definition at line 896 of file assembler_riscv.h.

896 {
897 if (prologue_offset_ == -1) {
899 }
900 }

◆ 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.

588{ PushRegister(value); }

◆ SetReturnAddress() [4/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)
inline

Definition at line 1273 of file assembler_riscv.h.

1273{ mv(RA, value); }
void mv(Register rd, Register rs)

◆ SetReturnAddress() [5/5]

void dart::compiler::Assembler::SetReturnAddress ( Register  value)
inline

Definition at line 733 of file assembler_x64.h.

733{ PushRegister(value); }

◆ 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 609 of file assembler_x64.h.

609 {
610 ASSERT(shifter == RCX);
611 EmitQ(src, dst, 0xA5, 0x0F);
612 }

◆ 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 613 of file assembler_x64.h.

613 {
614 ASSERT(shifter == RCX);
615 EmitQ(src, dst, 0xAD, 0x0F);
616 }

◆ 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 974 of file assembler_arm64.h.

978 {
979 EmitMiscDP3Source(SMADDL, rd, rn, rm, ra, sz);
980 }

◆ SmiTag() [1/9]

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

Definition at line 1664 of file assembler_arm64.h.

1664 {
1665 LslImmediate(dst, src, kSmiTagSize);
1666 }

◆ SmiTag() [2/9]

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

Definition at line 943 of file assembler_riscv.h.

943{ slli(dst, src, kSmiTagSize); }

◆ SmiTag() [3/9]

void dart::compiler::Assembler::SmiTag ( Register  dst,
Register  src,
Condition  cond = AL 
)
inline

Definition at line 1320 of file assembler_arm.h.

1320 {
1321 Lsl(dst, src, Operand(kSmiTagSize), cond);
1322 }

◆ SmiTag() [4/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 1318 of file assembler_arm.h.

1318{ 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 981 of file assembler_ia32.h.

981{ addl(reg, reg); }

◆ SmiTag() [7/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 942 of file assembler_riscv.h.

942{ SmiTag(reg, reg); }

◆ SmiTag() [8/9]

void dart::compiler::Assembler::SmiTag ( Register  reg)
inlineoverridevirtual

Implements dart::compiler::AssemblerBase.

Definition at line 966 of file assembler_x64.h.

966{ OBJ(add)(reg, reg); }

◆ SmiTag() [9/9]

void dart::compiler::Assembler::SmiTag ( Register  reg,
Condition  cond 
)
inline

Definition at line 1317 of file assembler_arm.h.

1317{ 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 }

◆ SmiUntag() [1/10]

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

Definition at line 1660 of file assembler_arm64.h.

1660 {
1661 sbfm(dst, src, kSmiTagSize, target::kSmiBits + 1);
1662 }

◆ SmiUntag() [2/10]

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

Definition at line 941 of file assembler_riscv.h.

941{ 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 969 of file assembler_x64.h.

969 {
970 if (dst != src) {
971 OBJ(mov)(dst, src);
972 }
973 OBJ(sar)(dst, Immediate(kSmiTagSize));
974 }

◆ SmiUntag() [4/10]

void dart::compiler::Assembler::SmiUntag ( Register  dst,
Register  src,
Condition  cond = AL 
)
inline

Definition at line 1326 of file assembler_arm.h.

1326 {
1327 Asr(dst, src, Operand(kSmiTagSize), cond);
1328 }
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 1334 of file assembler_arm.h.

1334 {
1335 ASSERT(kSmiTagSize == 1);
1336 Asrs(dst, src, Operand(kSmiTagSize));
1337 b(is_smi, CC);
1338 }
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 983 of file assembler_ia32.h.

983{ 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 940 of file assembler_riscv.h.

940{ SmiUntag(reg, reg); }

◆ SmiUntag() [9/10]

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

Definition at line 968 of file assembler_x64.h.

968{ OBJ(sar)(reg, Immediate(kSmiTagSize)); }

◆ SmiUntag() [10/10]

void dart::compiler::Assembler::SmiUntag ( Register  reg,
Condition  cond = AL 
)
inline

Definition at line 1324 of file assembler_arm.h.

1324{ SmiUntag(reg, reg, cond); }

◆ SmiUntagAndSignExtend() [1/2]

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

Definition at line 988 of file assembler_x64.h.

988 {
989#if !defined(DART_COMPRESSED_POINTERS)
990 if (dst != src) {
991 movq(dst, src);
992 }
993 sarq(dst, Immediate(kSmiTagSize));
994#else
995 movsxd(dst, src);
996 sarq(dst, Immediate(kSmiTagSize));
997#endif
998 }
void sarq(Register reg, const Immediate &imm)

◆ SmiUntagAndSignExtend() [2/2]

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

Definition at line 976 of file assembler_x64.h.

976 {
977#if !defined(DART_COMPRESSED_POINTERS)
978 sarq(reg, Immediate(kSmiTagSize));
979#else
980 // This is shorter than
981 // shlq reg, 32
982 // sraq reg, 33
983 sarl(reg, Immediate(kSmiTagSize));
984 movsxd(reg, reg);
985#endif
986 }

◆ 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 945 of file assembler_arm64.h.

948 {
949 EmitMiscDP3Source(SMULH, rd, rn, rm, R31, sz);
950 }

◆ smull() [1/2]

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

Definition at line 983 of file assembler_arm64.h.

986 {
987 EmitMiscDP3Source(SMADDL, rd, rn, rm, ZR, sz);
988 }

◆ 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 1120 of file assembler_arm.h.

1122 {
1123 Store(reg, address, type, AL);
1124 }
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 1133 of file assembler_riscv.h.

1133 {
1135 }
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 1908 of file assembler_arm64.h.

1908 {
1910 }

◆ 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 1144 of file assembler_arm.h.

1148 {
1149 Store(reg, FieldAddress(base, offset), type, cond);
1150 }

◆ 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 1138 of file assembler_arm.h.

1141 {
1143 }
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 872 of file assembler_riscv.h.

872 {
874 }

◆ StoreMemoryValue() [5/5]

void dart::compiler::Assembler::StoreMemoryValue ( Register  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1074 of file assembler_x64.h.

1074 {
1075 movq(Address(base, offset), src);
1076 }

◆ 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 1912 of file assembler_arm64.h.

1912 {
1914 }
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 553 of file assembler_arm64.h.

555 {
556 // stlr does not feature an address operand.
557 ASSERT(address.type() == Address::AddressType::Offset);
558 Register dst = address.base();
559 if (address.offset() != 0) {
560 AddImmediate(TMP2, dst, address.offset());
561 dst = TMP2;
562 }
563 stlr(src, dst, size);
564#if defined(TARGET_USES_THREAD_SANITIZER)
565 TsanStoreRelease(dst);
566#endif
567 }
void stlr(Register rt, Register rn, OperandSize sz=kEightBytes)

◆ 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 defined(TARGET_USES_THREAD_SANITIZER)
688#error No support for TSAN on IA32.
689#endif
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 1130 of file assembler_x64.h.

1132 {
1133 // On intel stores have store-release behavior (i.e. stores are not
1134 // re-ordered with other stores).
1135 Store(src, address, size);
1136#if defined(TARGET_USES_THREAD_SANITIZER)
1137 TsanStoreRelease(address);
1138#endif
1139 }

◆ StoreSFieldToOffset()

void dart::compiler::Assembler::StoreSFieldToOffset ( FRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1129 of file assembler_riscv.h.

1129 {
1131 }
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 1131 of file assembler_arm.h.

1135 {
1136 Store(reg, Address(base, offset), type, cond);
1137 }

◆ 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 1125 of file assembler_arm.h.

1128 {
1129 StoreToOffset(reg, base, offset, type, AL);
1130 }

◆ 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 1175 of file assembler_arm.h.

1175 {
1177 }

◆ StoreUnboxedDouble() [2/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1919 of file assembler_arm64.h.

1919 {
1920 StoreDToOffset(src, base, offset);
1921 }

◆ 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 1140 of file assembler_riscv.h.

1140 {
1141 StoreDToOffset(src, base, offset);
1142 }

◆ StoreUnboxedDouble() [5/5]

void dart::compiler::Assembler::StoreUnboxedDouble ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1096 of file assembler_x64.h.

1096 {
1097 movsd(Address(base, offset), src);
1098 }

◆ 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 1081 of file assembler_x64.h.

1081 {
1082 movups(Address(base, offset), dst);
1083 }

◆ StoreUnboxedSimd128() [3/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1196 of file assembler_arm.h.

1196 {
1198 }
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 1931 of file assembler_arm64.h.

1931 {
1932 StoreQToOffset(src, base, offset);
1933 }

◆ StoreUnboxedSimd128() [5/5]

void dart::compiler::Assembler::StoreUnboxedSimd128 ( FpuRegister  src,
Register  base,
int32_t  offset 
)
inline

Definition at line 1149 of file assembler_riscv.h.

1149 {
1150 // No single register SIMD on RISC-V.
1151 UNREACHABLE();
1152 }

◆ 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 1151 of file assembler_arm.h.

1151 {
1152 mov(temp, Operand(0));
1153 Store(temp, address);
1154 }

◆ StoreZero() [2/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp = kNoRegister 
)
inline

Definition at line 1896 of file assembler_arm64.h.

1896 {
1897 Store(ZR, address);
1898 }

◆ 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 1125 of file assembler_riscv.h.

1125 {
1126 Store(ZR, address);
1127 }

◆ StoreZero() [5/5]

void dart::compiler::Assembler::StoreZero ( const Address address,
Register  temp = kNoRegister 
)
inline

Definition at line 1062 of file assembler_x64.h.

1062 {
1063 movq(address, Immediate(0));
1064 }

◆ stp()

void dart::compiler::Assembler::stp ( Register  rt,
Register  rt2,
Address  a,
OperandSize  sz = kEightBytes 
)
inline

Definition at line 1039 of file assembler_arm64.h.

1039 {
1040 ASSERT((rt != CSP) && (rt != R31));
1041 ASSERT((a.type() == Address::PairOffset) ||
1042 (a.type() == Address::PairPostIndex) ||
1043 (a.type() == Address::PairPreIndex));
1044 EmitLoadStoreRegPair(STP, rt, rt2, a, sz);
1045 }

◆ 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 1024 of file assembler_arm64.h.

1024 {
1025 ASSERT((rt != CSP) && (rt != R31));
1026 ASSERT((a.type() != Address::PairOffset) &&
1027 (a.type() != Address::PairPostIndex) &&
1028 (a.type() != Address::PairPreIndex));
1029 EmitLoadStoreReg(STR, rt, a, sz);
1030 }

◆ 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 1064 of file assembler_arm64.h.

1067 {
1068 // rs = status (1 = failure, 0 = success)
1069 // rt = value
1070 // rn = address
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 624 of file assembler_arm64.h.

624 {
625 AddSubHelper(sz, false, true, rd, rn, o);
626 }

◆ 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 854 of file assembler_arm.h.

854 {
855 sub(dest, dest, Operand(src));
856 }

◆ SubRegisters() [2/5]

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

Definition at line 1803 of file assembler_arm64.h.

1803 {
1804 sub(dest, dest, Operand(src));
1805 }

◆ SubRegisters() [3/5]

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

Definition at line 729 of file assembler_ia32.h.

729{ subl(dest, src); }

◆ SubRegisters() [4/5]

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

Definition at line 1044 of file assembler_riscv.h.

1044{ sub(dest, dest, src); }

◆ SubRegisters() [5/5]

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

Definition at line 799 of file assembler_x64.h.

799{ 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 627 of file assembler_arm64.h.

627 {
628 AddSubHelper(sz, true, true, rd, rn, o);
629 }

◆ 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 635 of file assembler_arm64.h.

635 {
636 subs(rd, rn, o, kFourBytes);
637 }

◆ 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 634 of file assembler_arm64.h.

634{ sub(rd, rn, o, kFourBytes); }

◆ sxtb()

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

Definition at line 766 of file assembler_arm64.h.

766 {
767 EmitBitfieldOp(SBFM, rd, rn, 0, 7, kEightBytes);
768 }

◆ sxth()

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

Definition at line 771 of file assembler_arm64.h.

771 {
772 EmitBitfieldOp(SBFM, rd, rn, 0, 15, kEightBytes);
773 }

◆ sxtw()

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

Definition at line 776 of file assembler_arm64.h.

776 {
777 EmitBitfieldOp(SBFM, rd, rn, 0, 31, kEightBytes);
778 }

◆ 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,
1604 Address(SP, -2 * target::kWordSize, Address::PairPreIndex));
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 574 of file assembler_x64.h.

574 {
575 testq(reg, Immediate(imm.value() & 0xFFFFFFFF));
576 }

◆ 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 
)

◆ TransitionNativeToGenerated() [2/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false 
)

◆ TransitionNativeToGenerated() [3/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false 
)

◆ TransitionNativeToGenerated() [4/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false 
)

◆ TransitionNativeToGenerated() [5/5]

void dart::compiler::Assembler::TransitionNativeToGenerated ( Register  scratch0,
Register  scratch1,
bool  exit_safepoint,
bool  ignore_unwind_in_progress = false 
)

◆ 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

◆ 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 744 of file assembler_arm64.h.

748 {
749 int wordsize = size == kEightBytes ? 64 : 32;
750 ASSERT(width > 0);
751 ASSERT(low_bit < wordsize);
752 EmitBitfieldOp(UBFM, rd, rn, (-low_bit) & (wordsize - 1), width - 1, size);
753 }

◆ ubfm()

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

Definition at line 690 of file assembler_arm64.h.

694 {
695 EmitBitfieldOp(UBFM, rd, rn, r_imm, s_imm, size);
696 }

◆ ubfx() [1/2]

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

Definition at line 757 of file assembler_arm64.h.

761 {
762 EmitBitfieldOp(UBFM, rd, rn, low_bit, low_bit + width - 1, size);
763 }

◆ 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 887 of file assembler_arm64.h.

890 {
891 EmitMiscDP2Source(UDIV, rd, rn, rm, sz);
892 }

◆ 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 959 of file assembler_arm64.h.

963 {
964 EmitMiscDP3Source(UMADDL, rd, rn, rm, ra, sz);
965 }

◆ 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 953 of file assembler_arm64.h.

956 {
957 EmitMiscDP3Source(UMULH, rd, rn, rm, R31, sz);
958 }

◆ umull() [1/2]

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

Definition at line 968 of file assembler_arm64.h.

971 {
972 EmitMiscDP3Source(UMADDL, rd, rn, rm, ZR, sz);
973 }

◆ 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 576 of file assembler_arm64.h.

576 {
577 return FLAG_use_far_branches || use_far_branches_;
578 }

◆ uxtb()

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

Definition at line 781 of file assembler_arm64.h.

781 {
782 EmitBitfieldOp(UBFM, rd, rn, 0, 7, kEightBytes);
783 }

◆ uxth()

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

Definition at line 786 of file assembler_arm64.h.

786 {
787 EmitBitfieldOp(UBFM, rd, rn, 0, 15, kEightBytes);
788 }

◆ uxtw()

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

Definition at line 791 of file assembler_arm64.h.

791 {
792 EmitBitfieldOp(UBFM, rd, rn, 0, 31, kEightBytes);
793 }

◆ 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 974 of file assembler_ia32.h.

974 {
975 return Address(THR, target::Thread::vm_tag_offset());
976 }

◆ 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 1560 of file assembler_arm.h.

1560 {
1561#if defined(DEBUG)
1562 ASSERT(top != TMP);
1564 str(TMP, Address(top, 0));
1565#endif
1566 }

◆ WriteAllocationCanary() [2/5]

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

Definition at line 2160 of file assembler_arm64.h.

2160 {
2161#if defined(DEBUG)
2162 ASSERT(top != TMP);
2164 str(TMP, Address(top, 0));
2165#endif
2166 }

◆ WriteAllocationCanary() [3/5]

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

Definition at line 1129 of file assembler_ia32.h.

1129 {
1130#if defined(DEBUG)
1131 movl(Address(top, 0), Immediate(kAllocationCanary));
1132#endif
1133 }

◆ WriteAllocationCanary() [4/5]

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

Definition at line 1368 of file assembler_riscv.h.

1368 {
1369#if defined(DEBUG)
1370 ASSERT(top != TMP);
1372 sx(TMP, Address(top, 0));
1373#endif
1374 }
void li(Register rd, intptr_t imm)

◆ WriteAllocationCanary() [5/5]

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

Definition at line 1250 of file assembler_x64.h.

1250 {
1251#if defined(DEBUG)
1252 movl(Address(top, 0), Immediate(kAllocationCanary));
1253#endif
1254 }

◆ 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 Symbol Documentation

◆ dart::FlowGraphCompiler

Definition at line 1752 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 1076 of file assembler_ia32.h.

◆ kEntryPointToPcMarkerOffset

static constexpr intptr_t dart::compiler::Assembler::kEntryPointToPcMarkerOffset = 0
staticconstexpr

Definition at line 601 of file assembler_arm64.h.


The documentation for this class was generated from the following files: