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

#include <constants_arm.h>

Public Types

enum  { kInstrSize = 4 , kInstrSizeLog2 = 2 , kPCReadOffset = 8 }
 
enum  { kInstrSize = 4 , kInstrSizeLog2 = 2 , kPCReadOffset = 8 }
 
enum class  WideSize { k32Bits , k64Bits }
 

Public Member Functions

int32_t InstructionBits () const
 
void SetInstructionBits (int32_t value)
 
int Bit (int nr) const
 
int Bits (int shift, int count) const
 
Condition ConditionField () const
 
int TypeField () const
 
int SubtypeField () const
 
Register RnField () const
 
Register RdField () const
 
Opcode OpcodeField () const
 
int SField () const
 
Register RmField () const
 
Shift ShiftField () const
 
int RegShiftField () const
 
Register RsField () const
 
int ShiftAmountField () const
 
int RotateField () const
 
int Immed8Field () const
 
int PUField () const
 
int BField () const
 
int WField () const
 
int LField () const
 
int Offset12Field () const
 
int RlistField () const
 
int SignField () const
 
int HField () const
 
int ImmedHField () const
 
int ImmedLField () const
 
int LinkField () const
 
int32_t SImmed24Field () const
 
uint32_t SvcField () const
 
uint16_t BkptField () const
 
uint16_t MovwField () const
 
float ImmFloatField () const
 
double ImmDoubleField () const
 
int MediaOp1Field () const
 
int MediaOp2Field () const
 
bool IsDivUnsigned () const
 
Register DivRdField () const
 
Register DivRmField () const
 
Register DivRnField () const
 
bool IsBitFieldExtractSignExtended () const
 
uint8_t BitFieldExtractWidthField () const
 
uint8_t BitFieldExtractLSBField () const
 
Register BitFieldExtractRnField () const
 
bool IsDataProcessing () const
 
bool IsMiscellaneous () const
 
bool IsMultiplyOrSyncPrimitive () const
 
bool IsSvc () const
 
bool IsBkpt () const
 
SRegister SnField () const
 
SRegister SdField () const
 
SRegister SmField () const
 
DRegister DnField () const
 
DRegister DdField () const
 
DRegister DmField () const
 
QRegister QnField () const
 
QRegister QdField () const
 
QRegister QmField () const
 
bool IsVFPDataProcessingOrSingleTransfer () const
 
bool IsVFPDoubleTransfer () const
 
bool IsVFPLoadStore () const
 
bool IsVFPMultipleLoadStore () const
 
bool IsSIMDDataProcessing () const
 
bool IsSIMDLoadStore () const
 
bool IsMedia () const
 
bool IsDivision () const
 
bool IsRbit () const
 
bool IsBitFieldExtract () const
 
bool HasS () const
 
bool HasB () const
 
bool HasW () const
 
bool HasL () const
 
bool HasSign () const
 
bool HasH () const
 
bool HasLink () const
 
int Bit (int nr) const
 
int Bits (int shift, int count) const
 
int32_t InstructionBits () const
 
void SetInstructionBits (int32_t value)
 
void SetMoveWideBits (MoveWideOp op, Register rd, uint16_t imm, int hw, WideSize sz)
 
void SetUnconditionalBranchRegBits (UnconditionalBranchRegOp op, Register rn)
 
void SetImm12Bits (int32_t orig, int32_t imm12)
 
int NField () const
 
int SField () const
 
int SFField () const
 
int SzField () const
 
Register RdField () const
 
Register RnField () const
 
Register RaField () const
 
Register RmField () const
 
Register RtField () const
 
Register Rt2Field () const
 
Register RsField () const
 
VRegister VdField () const
 
VRegister VnField () const
 
VRegister VmField () const
 
VRegister VtField () const
 
VRegister Vt2Field () const
 
int Imm3Field () const
 
int Imm6Field () const
 
int Imm7Field () const
 
int64_t SImm7Field () const
 
int Imm8Field () const
 
int Imm9Field () const
 
int64_t SImm9Field () const
 
int Imm12Field () const
 
int Imm12ShiftField () const
 
int Imm16Field () const
 
int HWField () const
 
int ImmRField () const
 
int ImmSField () const
 
int Imm14Field () const
 
int64_t SImm14Field () const
 
int Imm19Field () const
 
int64_t SImm19Field () const
 
int Imm26Field () const
 
int64_t SImm26Field () const
 
Condition ConditionField () const
 
Condition SelectConditionField () const
 
bool IsShift () const
 
bool IsExtend () const
 
Shift ShiftTypeField () const
 
Extend ExtendTypeField () const
 
int ShiftAmountField () const
 
int ExtShiftAmountField () const
 
bool HasS () const
 
R31Type RdMode () const
 
R31Type RnMode () const
 
uint64_t ImmLogical ()
 
bool IsBreakPoint ()
 
 Instr (uint32_t encoding)
 
uint32_t encoding () const
 
size_t length () const
 
Opcode opcode () const
 
Register rd () const
 
Register rs1 () const
 
Register rs2 () const
 
FRegister frd () const
 
FRegister frs1 () const
 
FRegister frs2 () const
 
FRegister frs3 () const
 
Funct2 funct2 () const
 
Funct3 funct3 () const
 
Funct5 funct5 () const
 
Funct7 funct7 () const
 
Funct12 funct12 () const
 
uint32_t shamt () const
 
RoundingMode rounding () const
 
std::memory_order memory_order () const
 
intx_t itype_imm () const
 
intx_t stype_imm () const
 
intx_t btype_imm () const
 
intx_t utype_imm () const
 
intx_t jtype_imm () const
 
uint32_t csr () const
 
uint32_t zimm () const
 
bool IsBreakPoint ()
 

Static Public Member Functions

static InstrAt (uword pc)
 
static int64_t VFPExpandImm (uint8_t imm8)
 
static InstrAt (uword pc)
 
static InstrAt (uword pc)
 
static InstrAt (uword pc)
 

Static Public Attributes

static constexpr int32_t kNopInstruction
 
static constexpr int32_t kBreakPointCode = 0xdeb0
 
static constexpr int32_t kSimulatorBreakCode
 
static constexpr int32_t kSimulatorRedirectCode = 0xca11
 
static constexpr int32_t kBreakPointInstruction
 
static constexpr int32_t kSimulatorBreakpointInstruction
 
static constexpr int32_t kSimulatorRedirectInstruction
 
static constexpr uint8_t kHltInstruction = 0xF4
 
static constexpr uint8_t kBreakPointInstruction = kHltInstruction
 
static constexpr int kBreakPointInstructionSize = 1
 
static constexpr uint32_t kBreakPointInstruction = 0
 
static constexpr uint32_t kInstrSize = 4
 
static constexpr uint32_t kSimulatorRedirectInstruction
 
static constexpr uint8_t kGdbBreakpointInstruction = 0xcc
 

Detailed Description

Definition at line 979 of file constants_arm.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kInstrSize 
kInstrSizeLog2 
kPCReadOffset 

Definition at line 981 of file constants_arm.h.

◆ anonymous enum

anonymous enum
Enumerator
kInstrSize 
kInstrSizeLog2 
kPCReadOffset 

Definition at line 1331 of file constants_arm64.h.

1331{ kInstrSize = 4, kInstrSizeLog2 = 2, kPCReadOffset = 8 };

◆ WideSize

enum class dart::Instr::WideSize
strong
Enumerator
k32Bits 
k64Bits 

Definition at line 1333 of file constants_arm64.h.

1333{ k32Bits, k64Bits };

Constructor & Destructor Documentation

◆ Instr()

dart::Instr::Instr ( uint32_t  encoding)
inlineexplicit

Definition at line 1099 of file constants_riscv.h.

1099: encoding_(encoding) {}
uint32_t encoding() const

Member Function Documentation

◆ At() [1/4]

static Instr * dart::Instr::At ( uword  pc)
inlinestatic

Definition at line 1300 of file constants_arm.h.

1300{ return reinterpret_cast<Instr*>(pc); }
Instr(uint32_t encoding)

◆ At() [2/4]

static Instr * dart::Instr::At ( uword  pc)
inlinestatic

Definition at line 1617 of file constants_arm64.h.

1617{ return reinterpret_cast<Instr*>(pc); }

◆ At() [3/4]

static Instr * dart::Instr::At ( uword  pc)
inlinestatic

Definition at line 445 of file constants_ia32.h.

445{ return reinterpret_cast<Instr*>(pc); }

◆ At() [4/4]

static Instr * dart::Instr::At ( uword  pc)
inlinestatic

Definition at line 708 of file constants_x64.h.

708{ return reinterpret_cast<Instr*>(pc); }

◆ BField()

int dart::Instr::BField ( ) const
inline

Definition at line 1065 of file constants_arm.h.

1065{ return Bit(22); }
int Bit(int nr) const

◆ Bit() [1/2]

int dart::Instr::Bit ( int  nr) const
inline

Definition at line 1017 of file constants_arm.h.

1017{ return (InstructionBits() >> nr) & 1; }
int32_t InstructionBits() const

◆ Bit() [2/2]

int dart::Instr::Bit ( int  nr) const
inline

Definition at line 1358 of file constants_arm64.h.

1358{ return (InstructionBits() >> nr) & 1; }

◆ BitFieldExtractLSBField()

uint8_t dart::Instr::BitFieldExtractLSBField ( ) const
inline

Definition at line 1140 of file constants_arm.h.

1140 {
1142 }
int Bits(int shift, int count) const
@ kBitFieldExtractLSBBits
@ kBitFieldExtractLSBShift

◆ BitFieldExtractRnField()

Register dart::Instr::BitFieldExtractRnField ( ) const
inline

Definition at line 1143 of file constants_arm.h.

1143 {
1144 return static_cast<Register>(
1146 }
@ kBitFieldExtractRnShift
@ kBitFieldExtractRnBits

◆ BitFieldExtractWidthField()

uint8_t dart::Instr::BitFieldExtractWidthField ( ) const
inline

Definition at line 1137 of file constants_arm.h.

1137 {
1139 }
@ kBitFieldExtractWidthBits
@ kBitFieldExtractWidthShift

◆ Bits() [1/2]

int dart::Instr::Bits ( int  shift,
int  count 
) const
inline

Definition at line 1020 of file constants_arm.h.

1020 {
1021 return (InstructionBits() >> shift) & ((1 << count) - 1);
1022 }
int count
Definition: FontMgrTest.cpp:50

◆ Bits() [2/2]

int dart::Instr::Bits ( int  shift,
int  count 
) const
inline

Definition at line 1361 of file constants_arm64.h.

1361 {
1362 return (InstructionBits() >> shift) & ((1 << count) - 1);
1363 }

◆ BkptField()

uint16_t dart::Instr::BkptField ( ) const
inline

Definition at line 1092 of file constants_arm.h.

1092 {
1093 return ((Bits(8, 12) << 4) | Bits(0, 4));
1094 }

◆ btype_imm()

intx_t dart::Instr::btype_imm ( ) const
inline

Definition at line 1135 of file constants_riscv.h.

1135{ return DecodeBTypeImm(encoding_); }
intptr_t DecodeBTypeImm(uint32_t encoded)

◆ ConditionField() [1/2]

Condition dart::Instr::ConditionField ( ) const
inline

Definition at line 1027 of file constants_arm.h.

1027 {
1028 return static_cast<Condition>(Bits(kConditionShift, kConditionBits));
1029 }
@ kConditionShift
@ kConditionBits

◆ ConditionField() [2/2]

Condition dart::Instr::ConditionField ( ) const
inline

Definition at line 1478 of file constants_arm64.h.

1478 {
1479 return static_cast<Condition>(Bits(kCondShift, kCondBits));
1480 }

◆ csr()

uint32_t dart::Instr::csr ( ) const
inline

Definition at line 1139 of file constants_riscv.h.

1139{ return encoding_ >> 20; }

◆ DdField()

DRegister dart::Instr::DdField ( ) const
inline

Definition at line 1195 of file constants_arm.h.

1195 {
1196 return static_cast<DRegister>(Bits(kRdShift, kRdBits) + (Bit(22) << 4));
1197 }
@ kRdShift

◆ DivRdField()

Register dart::Instr::DivRdField ( ) const
inline

Definition at line 1125 of file constants_arm.h.

1125 {
1126 return static_cast<Register>(Bits(kDivRdShift, kDivRdBits));
1127 }
@ kDivRdBits
@ kDivRdShift

◆ DivRmField()

Register dart::Instr::DivRmField ( ) const
inline

Definition at line 1128 of file constants_arm.h.

1128 {
1129 return static_cast<Register>(Bits(kDivRmShift, kDivRmBits));
1130 }
@ kDivRmShift
@ kDivRmBits

◆ DivRnField()

Register dart::Instr::DivRnField ( ) const
inline

Definition at line 1131 of file constants_arm.h.

1131 {
1132 return static_cast<Register>(Bits(kDivRnShift, kDivRnBits));
1133 }
@ kDivRnBits
@ kDivRnShift

◆ DmField()

DRegister dart::Instr::DmField ( ) const
inline

Definition at line 1198 of file constants_arm.h.

1198 {
1199 return static_cast<DRegister>(Bits(kRmShift, kRmBits) + (Bit(5) << 4));
1200 }
@ kRmShift

◆ DnField()

DRegister dart::Instr::DnField ( ) const
inline

Definition at line 1192 of file constants_arm.h.

1192 {
1193 return static_cast<DRegister>(Bits(kRnShift, kRnBits) + (Bit(7) << 4));
1194 }
@ kRnShift

◆ encoding()

uint32_t dart::Instr::encoding ( ) const
inline

Definition at line 1100 of file constants_riscv.h.

1100{ return encoding_; }

◆ ExtendTypeField()

Extend dart::Instr::ExtendTypeField ( ) const
inline

Definition at line 1495 of file constants_arm64.h.

1495 {
1496 return static_cast<Extend>(Bits(kExtendTypeShift, kExtendTypeBits));
1497 }
@ kExtendTypeBits
@ kExtendTypeShift

◆ ExtShiftAmountField()

int dart::Instr::ExtShiftAmountField ( ) const
inline

Definition at line 1499 of file constants_arm64.h.

1499{ return Imm3Field(); }
int Imm3Field() const

◆ frd()

FRegister dart::Instr::frd ( ) const
inline

Definition at line 1110 of file constants_riscv.h.

1110{ return DecodeFRd(encoding_); }

◆ frs1()

FRegister dart::Instr::frs1 ( ) const
inline

Definition at line 1111 of file constants_riscv.h.

1111{ return DecodeFRs1(encoding_); }

◆ frs2()

FRegister dart::Instr::frs2 ( ) const
inline

Definition at line 1112 of file constants_riscv.h.

1112{ return DecodeFRs2(encoding_); }

◆ frs3()

FRegister dart::Instr::frs3 ( ) const
inline

Definition at line 1113 of file constants_riscv.h.

1113{ return DecodeFRs3(encoding_); }

◆ funct12()

Funct12 dart::Instr::funct12 ( ) const
inline

Definition at line 1119 of file constants_riscv.h.

1119{ return DecodeFunct12(encoding_); }

◆ funct2()

Funct2 dart::Instr::funct2 ( ) const
inline

Definition at line 1115 of file constants_riscv.h.

1115{ return DecodeFunct2(encoding_); }

◆ funct3()

Funct3 dart::Instr::funct3 ( ) const
inline

Definition at line 1116 of file constants_riscv.h.

1116{ return DecodeFunct3(encoding_); }

◆ funct5()

Funct5 dart::Instr::funct5 ( ) const
inline

Definition at line 1117 of file constants_riscv.h.

1117{ return DecodeFunct5(encoding_); }

◆ funct7()

Funct7 dart::Instr::funct7 ( ) const
inline

Definition at line 1118 of file constants_riscv.h.

1118{ return DecodeFunct7(encoding_); }

◆ HasB()

bool dart::Instr::HasB ( ) const
inline

Definition at line 1289 of file constants_arm.h.

1289{ return BField() == 1; }
int BField() const

◆ HasH()

bool dart::Instr::HasH ( ) const
inline

Definition at line 1293 of file constants_arm.h.

1293{ return HField() == 1; }
int HField() const

◆ HasL()

bool dart::Instr::HasL ( ) const
inline

Definition at line 1291 of file constants_arm.h.

1291{ return LField() == 1; }
int LField() const

◆ HasLink()

bool dart::Instr::HasLink ( ) const
inline

Definition at line 1294 of file constants_arm.h.

1294{ return LinkField() == 1; }
int LinkField() const

◆ HasS() [1/2]

bool dart::Instr::HasS ( ) const
inline

Definition at line 1288 of file constants_arm.h.

1288{ return SField() == 1; }
int SField() const

◆ HasS() [2/2]

bool dart::Instr::HasS ( ) const
inline

Definition at line 1509 of file constants_arm64.h.

1509{ return (SField() == 1); }

◆ HasSign()

bool dart::Instr::HasSign ( ) const
inline

Definition at line 1292 of file constants_arm.h.

1292{ return SignField() == 1; }
int SignField() const

◆ HasW()

bool dart::Instr::HasW ( ) const
inline

Definition at line 1290 of file constants_arm.h.

1290{ return WField() == 1; }
int WField() const

◆ HField()

int dart::Instr::HField ( ) const
inline

Definition at line 1077 of file constants_arm.h.

1077{ return Bit(5); }

◆ HWField()

int dart::Instr::HWField ( ) const
inline

Definition at line 1460 of file constants_arm64.h.

1460{ return Bits(kHWShift, kHWBits); }

◆ Imm12Field()

int dart::Instr::Imm12Field ( ) const
inline

Definition at line 1454 of file constants_arm64.h.

1454{ return Bits(kImm12Shift, kImm12Bits); }

◆ Imm12ShiftField()

int dart::Instr::Imm12ShiftField ( ) const
inline

Definition at line 1455 of file constants_arm64.h.

1455 {
1457 }
@ kImm12ShiftBits
@ kImm12ShiftShift

◆ Imm14Field()

int dart::Instr::Imm14Field ( ) const
inline

Definition at line 1465 of file constants_arm64.h.

1465{ return Bits(kImm14Shift, kImm14Bits); }

◆ Imm16Field()

int dart::Instr::Imm16Field ( ) const
inline

Definition at line 1459 of file constants_arm64.h.

1459{ return Bits(kImm16Shift, kImm16Bits); }

◆ Imm19Field()

int dart::Instr::Imm19Field ( ) const
inline

Definition at line 1469 of file constants_arm64.h.

1469{ return Bits(kImm19Shift, kImm19Bits); }

◆ Imm26Field()

int dart::Instr::Imm26Field ( ) const
inline

Definition at line 1473 of file constants_arm64.h.

1473{ return Bits(kImm26Shift, kImm26Bits); }

◆ Imm3Field()

int dart::Instr::Imm3Field ( ) const
inline

Definition at line 1440 of file constants_arm64.h.

1440{ return Bits(kImm3Shift, kImm3Bits); }

◆ Imm6Field()

int dart::Instr::Imm6Field ( ) const
inline

Definition at line 1441 of file constants_arm64.h.

1441{ return Bits(kImm6Shift, kImm6Bits); }

◆ Imm7Field()

int dart::Instr::Imm7Field ( ) const
inline

Definition at line 1442 of file constants_arm64.h.

1442{ return Bits(kImm7Shift, kImm7Bits); }

◆ Imm8Field()

int dart::Instr::Imm8Field ( ) const
inline

Definition at line 1447 of file constants_arm64.h.

1447{ return Bits(kImm8Shift, kImm8Bits); }

◆ Imm9Field()

int dart::Instr::Imm9Field ( ) const
inline

Definition at line 1448 of file constants_arm64.h.

1448{ return Bits(kImm9Shift, kImm9Bits); }

◆ ImmDoubleField()

double dart::Instr::ImmDoubleField ( ) const
inline

Definition at line 1109 of file constants_arm.h.

1109 {
1110 uint64_t imm64 = (Bit(19) * (1LL << 63)) | (((1LL << 8) - Bit(18)) << 54) |
1111 (Bits(16, 2) * (1LL << 52)) | (Bits(0, 4) * (1LL << 48));
1112 return bit_cast<double, uint64_t>(imm64);
1113 }

◆ Immed8Field()

int dart::Instr::Immed8Field ( ) const
inline

Definition at line 1061 of file constants_arm.h.

1061{ return Bits(kImmed8Shift, kImmed8Bits); }
@ kImmed8Shift
@ kImmed8Bits

◆ ImmedHField()

int dart::Instr::ImmedHField ( ) const
inline

Definition at line 1078 of file constants_arm.h.

1078{ return Bits(8, 4); }

◆ ImmedLField()

int dart::Instr::ImmedLField ( ) const
inline

Definition at line 1079 of file constants_arm.h.

1079{ return Bits(0, 4); }

◆ ImmFloatField()

float dart::Instr::ImmFloatField ( ) const
inline

Definition at line 1102 of file constants_arm.h.

1102 {
1103 uint32_t imm32 = (Bit(19) << 31) | (((1 << 5) - Bit(18)) << 25) |
1104 (Bits(16, 2) << 23) | (Bits(0, 4) << 19);
1105 return bit_cast<float, uint32_t>(imm32);
1106 }

◆ ImmLogical()

uint64_t dart::Instr::ImmLogical ( )
inline

Definition at line 1556 of file constants_arm64.h.

1556 {
1557 const uint8_t reg_size = SFField() == 1 ? kXRegSizeInBits : kWRegSizeInBits;
1558 const int64_t n = NField();
1559 const int64_t imm_s = ImmSField();
1560 const int64_t imm_r = ImmRField();
1561
1562 // An integer is constructed from the n, imm_s and imm_r bits according to
1563 // the following table:
1564 //
1565 // N imms immr size S R
1566 // 1 ssssss rrrrrr 64 UInt(ssssss) UInt(rrrrrr)
1567 // 0 0sssss xrrrrr 32 UInt(sssss) UInt(rrrrr)
1568 // 0 10ssss xxrrrr 16 UInt(ssss) UInt(rrrr)
1569 // 0 110sss xxxrrr 8 UInt(sss) UInt(rrr)
1570 // 0 1110ss xxxxrr 4 UInt(ss) UInt(rr)
1571 // 0 11110s xxxxxr 2 UInt(s) UInt(r)
1572 // (s bits must not be all set)
1573 //
1574 // A pattern is constructed of size bits, where the least significant S+1
1575 // bits are set. The pattern is rotated right by R, and repeated across a
1576 // 32 or 64-bit value, depending on destination register width.
1577
1578 if (n == 1) {
1579 if (imm_s == 0x3F) {
1580 return 0;
1581 }
1582 uint64_t bits = (1ULL << (imm_s + 1)) - 1;
1583 return RotateRight(bits, imm_r, 64);
1584 } else {
1585 if ((imm_s >> 1) == 0x1F) {
1586 return 0;
1587 }
1588 for (int width = 0x20; width >= 0x2; width >>= 1) {
1589 if ((imm_s & width) == 0) {
1590 int mask = width - 1;
1591 if ((imm_s & mask) == mask) {
1592 return 0;
1593 }
1594 uint64_t bits = (1ULL << ((imm_s & mask) + 1)) - 1;
1595 return RepeatBitsAcrossReg(
1596 reg_size, RotateRight(bits, imm_r & mask, width), width);
1597 }
1598 }
1599 }
1600 UNREACHABLE();
1601 return 0;
1602 }
#define UNREACHABLE()
Definition: assert.h:248
int SFField() const
int ImmSField() const
int ImmRField() const
int NField() const
const int kXRegSizeInBits
static uint64_t RotateRight(uint64_t value, uint8_t rotate, uint8_t width)
const int kWRegSizeInBits
static uint64_t RepeatBitsAcrossReg(uint8_t reg_size, uint64_t value, uint8_t width)
int32_t width

◆ ImmRField()

int dart::Instr::ImmRField ( ) const
inline

Definition at line 1462 of file constants_arm64.h.

1462{ return Bits(kImmRShift, kImmRBits); }

◆ ImmSField()

int dart::Instr::ImmSField ( ) const
inline

Definition at line 1463 of file constants_arm64.h.

1463{ return Bits(kImmSShift, kImmSBits); }

◆ InstructionBits() [1/2]

int32_t dart::Instr::InstructionBits ( ) const
inline

Definition at line 1007 of file constants_arm.h.

1007 {
1008 return *reinterpret_cast<const int32_t*>(this);
1009 }

◆ InstructionBits() [2/2]

int32_t dart::Instr::InstructionBits ( ) const
inline

Definition at line 1366 of file constants_arm64.h.

1366 {
1367 return *reinterpret_cast<const int32_t*>(this);
1368 }

◆ IsBitFieldExtract()

bool dart::Instr::IsBitFieldExtract ( ) const
inline

Definition at line 1278 of file constants_arm.h.

1278 {
1280 ASSERT(IsMedia());
1281 // B22 determines whether extracted value is sign extended or not, and
1282 // op bits B20 and B7 are part of the width and LSB fields, respectively.
1283 return ((MediaOp1Field() & 0b11010) == 0b11010) &&
1284 ((MediaOp2Field() & 0b011) == 0b10);
1285 }
bool IsMedia() const
int MediaOp1Field() const
Condition ConditionField() const
int MediaOp2Field() const
#define ASSERT(E)
@ kSpecialCondition

◆ IsBitFieldExtractSignExtended()

bool dart::Instr::IsBitFieldExtractSignExtended ( ) const
inline

Definition at line 1136 of file constants_arm.h.

1136{ return Bit(22) == 0; }

◆ IsBkpt()

bool dart::Instr::IsBkpt ( ) const
inline

Definition at line 1178 of file constants_arm.h.

1178 {
1179 return ((InstructionBits() & 0x0ff000f0) == 0x01200070);
1180 }

◆ IsBreakPoint() [1/2]

bool dart::Instr::IsBreakPoint ( )
inline

Definition at line 436 of file constants_ia32.h.

436 {
438 return (*reinterpret_cast<const uint8_t*>(this)) == kBreakPointInstruction;
439 }
static constexpr int32_t kBreakPointInstruction
static constexpr int kBreakPointInstructionSize

◆ IsBreakPoint() [2/2]

bool dart::Instr::IsBreakPoint ( )
inline

Definition at line 699 of file constants_x64.h.

699 {
701 return (*reinterpret_cast<const uint8_t*>(this)) == kBreakPointInstruction;
702 }

◆ IsDataProcessing()

bool dart::Instr::IsDataProcessing ( ) const
inline

Definition at line 1151 of file constants_arm.h.

1151 {
1153 ASSERT(Bits(26, 2) == 0); // Type 0 or 1.
1154 return ((Bits(20, 5) & 0x19) != 0x10) &&
1155 ((Bit(25) == 1) || // Data processing immediate.
1156 (Bit(4) == 0) || // Data processing register.
1157 (Bit(7) == 0)); // Data processing register-shifted register.
1158 }

◆ IsDivision()

bool dart::Instr::IsDivision ( ) const
inline

Definition at line 1262 of file constants_arm.h.

1262 {
1264 ASSERT(IsMedia());
1265 // B21 determines whether the division is signed or unsigned.
1266 return (((MediaOp1Field() & 0b11101) == 0b10001) &&
1267 (MediaOp2Field() == 0b000));
1268 }

◆ IsDivUnsigned()

bool dart::Instr::IsDivUnsigned ( ) const
inline

Definition at line 1124 of file constants_arm.h.

1124{ return Bit(21) == 0b1; }

◆ IsExtend()

bool dart::Instr::IsExtend ( ) const
inline

Definition at line 1489 of file constants_arm64.h.

1489 {
1490 return !IsLogicalShiftOp() && (Bit(kAddShiftExtendShift) == 1);
1491 }
@ kAddShiftExtendShift

◆ IsMedia()

bool dart::Instr::IsMedia ( ) const
inline

Definition at line 1257 of file constants_arm.h.

1257 {
1258 ASSERT_EQUAL(TypeField(), 3);
1259 return SubtypeField() == 1;
1260 }
#define ASSERT_EQUAL(expected, actual)
Definition: assert.h:309
int TypeField() const
int SubtypeField() const

◆ IsMiscellaneous()

bool dart::Instr::IsMiscellaneous ( ) const
inline

Definition at line 1163 of file constants_arm.h.

1163 {
1164 ASSERT(Bits(26, 2) == 0); // Type 0 or 1.
1165 return ((Bit(25) == 0) && ((Bits(20, 5) & 0x19) == 0x10) && (Bit(7) == 0));
1166 }

◆ IsMultiplyOrSyncPrimitive()

bool dart::Instr::IsMultiplyOrSyncPrimitive ( ) const
inline

Definition at line 1167 of file constants_arm.h.

1167 {
1168 ASSERT(Bits(26, 2) == 0); // Type 0 or 1.
1169 return ((Bit(25) == 0) && (Bits(4, 4) == 9));
1170 }

◆ IsRbit()

bool dart::Instr::IsRbit ( ) const
inline

Definition at line 1270 of file constants_arm.h.

1270 {
1272 ASSERT(IsMedia());
1273 // B19-B16 and B11-B8 are always set for rbit.
1274 return ((MediaOp1Field() == 0b01111) && (MediaOp2Field() == 0b001) &&
1275 (Bits(8, 4) == 0b1111) && (Bits(16, 4) == 0b1111));
1276 }

◆ IsShift()

bool dart::Instr::IsShift ( ) const
inline

Definition at line 1486 of file constants_arm64.h.

1486 {
1487 return IsLogicalShiftOp() || (Bit(kAddShiftExtendShift) == 0);
1488 }

◆ IsSIMDDataProcessing()

bool dart::Instr::IsSIMDDataProcessing ( ) const
inline

Definition at line 1246 of file constants_arm.h.

1246 {
1248 return (Bits(25, 3) == 1);
1249 }

◆ IsSIMDLoadStore()

bool dart::Instr::IsSIMDLoadStore ( ) const
inline

Definition at line 1251 of file constants_arm.h.

1251 {
1253 return (Bits(24, 4) == 4) && (Bit(20) == 0);
1254 }

◆ IsSvc()

bool dart::Instr::IsSvc ( ) const
inline

Definition at line 1173 of file constants_arm.h.

1173 {
1174 return ((InstructionBits() & 0x0f000000) == 0x0f000000);
1175 }

◆ IsVFPDataProcessingOrSingleTransfer()

bool dart::Instr::IsVFPDataProcessingOrSingleTransfer ( ) const
inline

Definition at line 1215 of file constants_arm.h.

1215 {
1217 ASSERT(TypeField() == 7);
1218 return ((Bit(24) == 0) && (Bits(9, 3) == 5));
1219 // Bit(4) == 0: Data Processing
1220 // Bit(4) == 1: 8, 16, or 32-bit Transfer between ARM Core and VFP
1221 }

◆ IsVFPDoubleTransfer()

bool dart::Instr::IsVFPDoubleTransfer ( ) const
inline

Definition at line 1224 of file constants_arm.h.

1224 {
1226 ASSERT(TypeField() == 6);
1227 return ((Bits(21, 4) == 2) && (Bits(9, 3) == 5) &&
1228 ((Bits(4, 4) & 0xd) == 1));
1229 }

◆ IsVFPLoadStore()

bool dart::Instr::IsVFPLoadStore ( ) const
inline

Definition at line 1232 of file constants_arm.h.

1232 {
1234 ASSERT(TypeField() == 6);
1235 return ((Bits(20, 5) & 0x12) == 0x10) && (Bits(9, 3) == 5);
1236 }

◆ IsVFPMultipleLoadStore()

bool dart::Instr::IsVFPMultipleLoadStore ( ) const
inline

Definition at line 1239 of file constants_arm.h.

1239 {
1241 ASSERT(TypeField() == 6);
1242 int32_t puw = (PUField() << 1) | Bit(21); // don't care about D bit
1243 return (Bits(9, 3) == 5) && ((puw == 2) || (puw == 3) || (puw == 5));
1244 }
int PUField() const

◆ itype_imm()

intx_t dart::Instr::itype_imm ( ) const
inline

Definition at line 1133 of file constants_riscv.h.

1133{ return DecodeITypeImm(encoding_); }
intptr_t DecodeITypeImm(uint32_t encoded)

◆ jtype_imm()

intx_t dart::Instr::jtype_imm ( ) const
inline

Definition at line 1137 of file constants_riscv.h.

1137{ return DecodeJTypeImm(encoding_); }
intptr_t DecodeJTypeImm(uint32_t encoded)

◆ length()

size_t dart::Instr::length ( ) const
inline

Definition at line 1102 of file constants_riscv.h.

1102{ return 4; }

◆ LField()

int dart::Instr::LField ( ) const
inline

Definition at line 1067 of file constants_arm.h.

1067{ return Bit(20); }

◆ LinkField()

int dart::Instr::LinkField ( ) const
inline

Definition at line 1082 of file constants_arm.h.

1082{ return Bits(kLinkShift, kLinkBits); }
@ kLinkBits
@ kLinkShift

◆ MediaOp1Field()

int dart::Instr::MediaOp1Field ( ) const
inline

Definition at line 1116 of file constants_arm.h.

1116 {
1117 return static_cast<Register>(Bits(kMediaOp1Shift, kMediaOp1Bits));
1118 }
@ kMediaOp1Shift
@ kMediaOp1Bits

◆ MediaOp2Field()

int dart::Instr::MediaOp2Field ( ) const
inline

Definition at line 1119 of file constants_arm.h.

1119 {
1120 return static_cast<Register>(Bits(kMediaOp2Shift, kMediaOp2Bits));
1121 }
@ kMediaOp2Shift
@ kMediaOp2Bits

◆ memory_order()

std::memory_order dart::Instr::memory_order ( ) const
inline

Definition at line 1124 of file constants_riscv.h.

1124 {
1125 bool acquire = ((encoding_ >> kAcquireShift) & 1) != 0;
1126 bool release = ((encoding_ >> kReleaseShift) & 1) != 0;
1127 if (acquire && release) return std::memory_order_acq_rel;
1128 if (acquire) return std::memory_order_acquire;
1129 if (release) return std::memory_order_release;
1130 return std::memory_order_relaxed;
1131 }
const intptr_t kReleaseShift
const intptr_t kAcquireShift

◆ MovwField()

uint16_t dart::Instr::MovwField ( ) const
inline

Definition at line 1097 of file constants_arm.h.

1097 {
1098 return ((Bits(16, 4) << 12) | Bits(0, 12));
1099 }

◆ NField()

int dart::Instr::NField ( ) const
inline

Definition at line 1397 of file constants_arm64.h.

1397{ return Bit(22); }

◆ Offset12Field()

int dart::Instr::Offset12Field ( ) const
inline

Definition at line 1070 of file constants_arm.h.

1070 {
1072 }
@ kOffset12Bits
@ kOffset12Shift

◆ opcode()

Opcode dart::Instr::opcode ( ) const
inline

Definition at line 1104 of file constants_riscv.h.

1104{ return DecodeOpcode(encoding_); }

◆ OpcodeField()

Opcode dart::Instr::OpcodeField ( ) const
inline

Definition at line 1041 of file constants_arm.h.

1041 {
1042 return static_cast<Opcode>(Bits(kOpcodeShift, kOpcodeBits));
1043 }
@ kOpcodeBits
@ kOpcodeShift

◆ PUField()

int dart::Instr::PUField ( ) const
inline

Definition at line 1064 of file constants_arm.h.

1064{ return Bits(23, 2); }

◆ QdField()

QRegister dart::Instr::QdField ( ) const
inline

Definition at line 1205 of file constants_arm.h.

1205 {
1206 const intptr_t bits = Bits(kRdShift, kRdBits) + (Bit(22) << 4);
1207 return static_cast<QRegister>(bits >> 1);
1208 }

◆ QmField()

QRegister dart::Instr::QmField ( ) const
inline

Definition at line 1209 of file constants_arm.h.

1209 {
1210 const intptr_t bits = Bits(kRmShift, kRmBits) + (Bit(5) << 4);
1211 return static_cast<QRegister>(bits >> 1);
1212 }

◆ QnField()

QRegister dart::Instr::QnField ( ) const
inline

Definition at line 1201 of file constants_arm.h.

1201 {
1202 const intptr_t bits = Bits(kRnShift, kRnBits) + (Bit(7) << 4);
1203 return static_cast<QRegister>(bits >> 1);
1204 }

◆ RaField()

Register dart::Instr::RaField ( ) const
inline

Definition at line 1407 of file constants_arm64.h.

1407 {
1408 return static_cast<Register>(Bits(kRaShift, kRaBits));
1409 }

◆ rd()

Register dart::Instr::rd ( ) const
inline

Definition at line 1106 of file constants_riscv.h.

1106{ return DecodeRd(encoding_); }

◆ RdField() [1/2]

Register dart::Instr::RdField ( ) const
inline

Definition at line 1036 of file constants_arm.h.

1036 {
1037 return static_cast<Register>(Bits(kRdShift, kRdBits));
1038 }

◆ RdField() [2/2]

Register dart::Instr::RdField ( ) const
inline

Definition at line 1401 of file constants_arm64.h.

1401 {
1402 return static_cast<Register>(Bits(kRdShift, kRdBits));
1403 }

◆ RdMode()

R31Type dart::Instr::RdMode ( ) const
inline

Definition at line 1513 of file constants_arm64.h.

1513 {
1514 // The following instructions use CSP as Rd:
1515 // Add/sub (immediate) when not setting the flags.
1516 // Add/sub (extended) when not setting the flags.
1517 // Logical (immediate) when not setting the flags.
1518 // Otherwise, R31 is the ZR.
1519 if (IsAddSubImmOp() || (IsAddSubShiftExtOp() && IsExtend())) {
1520 if (HasS()) {
1521 return R31IsZR;
1522 } else {
1523 return R31IsSP;
1524 }
1525 }
1526 if (IsLogicalImmOp()) {
1527 const int op = Bits(29, 2);
1528 const bool set_flags = op == 3;
1529 if (set_flags) {
1530 return R31IsZR;
1531 } else {
1532 return R31IsSP;
1533 }
1534 }
1535 return R31IsZR;
1536 }
bool HasS() const
bool IsExtend() const

◆ RegShiftField()

int dart::Instr::RegShiftField ( ) const
inline

Definition at line 1052 of file constants_arm.h.

1052{ return Bit(4); }

◆ RlistField()

int dart::Instr::RlistField ( ) const
inline

Definition at line 1074 of file constants_arm.h.

1074{ return Bits(0, 16); }

◆ RmField() [1/2]

Register dart::Instr::RmField ( ) const
inline

Definition at line 1046 of file constants_arm.h.

1046 {
1047 return static_cast<Register>(Bits(kRmShift, kRmBits));
1048 }

◆ RmField() [2/2]

Register dart::Instr::RmField ( ) const
inline

Definition at line 1410 of file constants_arm64.h.

1410 {
1411 return static_cast<Register>(Bits(kRmShift, kRmBits));
1412 }

◆ RnField() [1/2]

Register dart::Instr::RnField ( ) const
inline

Definition at line 1033 of file constants_arm.h.

1033 {
1034 return static_cast<Register>(Bits(kRnShift, kRnBits));
1035 }

◆ RnField() [2/2]

Register dart::Instr::RnField ( ) const
inline

Definition at line 1404 of file constants_arm64.h.

1404 {
1405 return static_cast<Register>(Bits(kRnShift, kRnBits));
1406 }

◆ RnMode()

R31Type dart::Instr::RnMode ( ) const
inline

Definition at line 1540 of file constants_arm64.h.

1540 {
1541 // The following instructions use CSP as Rn:
1542 // All loads and stores.
1543 // Add/sub (immediate).
1544 // Add/sub (extended).
1545 // Otherwise, r31 is ZR.
1546 if (IsLoadStoreOp() || IsAddSubImmOp() ||
1547 (IsAddSubShiftExtOp() && IsExtend())) {
1548 return R31IsSP;
1549 }
1550 return R31IsZR;
1551 }

◆ RotateField()

int dart::Instr::RotateField ( ) const
inline

Definition at line 1060 of file constants_arm.h.

1060{ return Bits(kRotateShift, kRotateBits); }
@ kRotateBits
@ kRotateShift

◆ rounding()

RoundingMode dart::Instr::rounding ( ) const
inline

Definition at line 1122 of file constants_riscv.h.

1122{ return DecodeRoundingMode(encoding_); }

◆ rs1()

Register dart::Instr::rs1 ( ) const
inline

Definition at line 1107 of file constants_riscv.h.

1107{ return DecodeRs1(encoding_); }

◆ rs2()

Register dart::Instr::rs2 ( ) const
inline

Definition at line 1108 of file constants_riscv.h.

1108{ return DecodeRs2(encoding_); }

◆ RsField() [1/2]

Register dart::Instr::RsField ( ) const
inline

Definition at line 1053 of file constants_arm.h.

1053 {
1054 return static_cast<Register>(Bits(kRsShift, kRsBits));
1055 }
@ kRsShift

◆ RsField() [2/2]

Register dart::Instr::RsField ( ) const
inline

Definition at line 1419 of file constants_arm64.h.

1419 {
1420 return static_cast<Register>(Bits(kRsShift, kRsBits));
1421 }

◆ Rt2Field()

Register dart::Instr::Rt2Field ( ) const
inline

Definition at line 1416 of file constants_arm64.h.

1416 {
1417 return static_cast<Register>(Bits(kRt2Shift, kRt2Bits));
1418 }

◆ RtField()

Register dart::Instr::RtField ( ) const
inline

Definition at line 1413 of file constants_arm64.h.

1413 {
1414 return static_cast<Register>(Bits(kRtShift, kRtBits));
1415 }

◆ SdField()

SRegister dart::Instr::SdField ( ) const
inline

Definition at line 1186 of file constants_arm.h.

1186 {
1187 return static_cast<SRegister>((Bits(kRdShift, kRdBits) << 1) + Bit(22));
1188 }

◆ SelectConditionField()

Condition dart::Instr::SelectConditionField ( ) const
inline

Definition at line 1481 of file constants_arm64.h.

1481 {
1482 return static_cast<Condition>(Bits(kSelCondShift, kSelCondBits));
1483 }

◆ SetImm12Bits()

void dart::Instr::SetImm12Bits ( int32_t  orig,
int32_t  imm12 
)
inline

Definition at line 1392 of file constants_arm64.h.

1392 {
1393 ASSERT((imm12 & 0xfffff000) == 0);
1394 SetInstructionBits((orig & ~kImm12Mask) | (imm12 << kImm12Shift));
1395 }
void SetInstructionBits(int32_t value)

◆ SetInstructionBits() [1/2]

void dart::Instr::SetInstructionBits ( int32_t  value)
inline

Definition at line 1012 of file constants_arm.h.

1012 {
1013 *reinterpret_cast<int32_t*>(this) = value;
1014 }
uint8_t value

◆ SetInstructionBits() [2/2]

void dart::Instr::SetInstructionBits ( int32_t  value)
inline

Definition at line 1371 of file constants_arm64.h.

1371 {
1372 *reinterpret_cast<int32_t*>(this) = value;
1373 }

◆ SetMoveWideBits()

void dart::Instr::SetMoveWideBits ( MoveWideOp  op,
Register  rd,
uint16_t  imm,
int  hw,
WideSize  sz 
)
inline

Definition at line 1375 of file constants_arm64.h.

1379 {
1380 ASSERT((hw >= 0) && (hw <= 3));
1381 const int32_t size = (sz == WideSize::k64Bits) ? B31 : 0;
1382 SetInstructionBits(op | size | (static_cast<int32_t>(rd) << kRdShift) |
1383 (static_cast<int32_t>(hw) << kHWShift) |
1384 (static_cast<int32_t>(imm) << kImm16Shift));
1385 }
Register rd() const
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

◆ SetUnconditionalBranchRegBits()

void dart::Instr::SetUnconditionalBranchRegBits ( UnconditionalBranchRegOp  op,
Register  rn 
)
inline

Definition at line 1387 of file constants_arm64.h.

1388 {
1389 SetInstructionBits(op | (static_cast<int32_t>(rn) << kRnShift));
1390 }

◆ SFField()

int dart::Instr::SFField ( ) const
inline

Definition at line 1399 of file constants_arm64.h.

1399{ return Bit(kSFShift); }

◆ SField() [1/2]

int dart::Instr::SField ( ) const
inline

Definition at line 1044 of file constants_arm.h.

1044{ return Bits(kSShift, kSBits); }

◆ SField() [2/2]

int dart::Instr::SField ( ) const
inline

Definition at line 1398 of file constants_arm64.h.

1398{ return Bit(kSShift); }

◆ shamt()

uint32_t dart::Instr::shamt ( ) const
inline

Definition at line 1121 of file constants_riscv.h.

1121{ return DecodeShamt(encoding_); }

◆ ShiftAmountField() [1/2]

int dart::Instr::ShiftAmountField ( ) const
inline

Definition at line 1056 of file constants_arm.h.

1056 {
1058 }
@ kShiftImmShift
@ kShiftImmBits

◆ ShiftAmountField() [2/2]

int dart::Instr::ShiftAmountField ( ) const
inline

Definition at line 1498 of file constants_arm64.h.

1498{ return Imm6Field(); }
int Imm6Field() const

◆ ShiftField()

Shift dart::Instr::ShiftField ( ) const
inline

Definition at line 1049 of file constants_arm.h.

1049 {
1050 return static_cast<Shift>(Bits(kShiftShift, kShiftBits));
1051 }
@ kShiftBits
@ kShiftShift

◆ ShiftTypeField()

Shift dart::Instr::ShiftTypeField ( ) const
inline

Definition at line 1492 of file constants_arm64.h.

1492 {
1493 return static_cast<Shift>(Bits(kShiftTypeShift, kShiftTypeBits));
1494 }
@ kShiftTypeShift
@ kShiftTypeBits

◆ SignField()

int dart::Instr::SignField ( ) const
inline

Definition at line 1076 of file constants_arm.h.

1076{ return Bit(6); }

◆ SImm14Field()

int64_t dart::Instr::SImm14Field ( ) const
inline

Definition at line 1466 of file constants_arm64.h.

1466 {
1467 return (static_cast<int32_t>(Imm14Field()) << 18) >> 18;
1468 }
int Imm14Field() const

◆ SImm19Field()

int64_t dart::Instr::SImm19Field ( ) const
inline

Definition at line 1470 of file constants_arm64.h.

1470 {
1471 return (static_cast<int32_t>(Imm19Field()) << 13) >> 13;
1472 }
int Imm19Field() const

◆ SImm26Field()

int64_t dart::Instr::SImm26Field ( ) const
inline

Definition at line 1474 of file constants_arm64.h.

1474 {
1475 return (static_cast<int32_t>(Imm26Field()) << 6) >> 6;
1476 }
int Imm26Field() const

◆ SImm7Field()

int64_t dart::Instr::SImm7Field ( ) const
inline

Definition at line 1444 of file constants_arm64.h.

1444 {
1445 return (static_cast<int32_t>(Imm7Field()) << 25) >> 25;
1446 }
int Imm7Field() const

◆ SImm9Field()

int64_t dart::Instr::SImm9Field ( ) const
inline

Definition at line 1450 of file constants_arm64.h.

1450 {
1451 return (static_cast<int32_t>(Imm9Field()) << 23) >> 23;
1452 }
int Imm9Field() const

◆ SImmed24Field()

int32_t dart::Instr::SImmed24Field ( ) const
inline

Definition at line 1083 of file constants_arm.h.

1083 {
1084 uint32_t bits = InstructionBits();
1085 return static_cast<int32_t>(bits << 8) >> 8;
1086 }

◆ SmField()

SRegister dart::Instr::SmField ( ) const
inline

Definition at line 1189 of file constants_arm.h.

1189 {
1190 return static_cast<SRegister>((Bits(kRmShift, kRmBits) << 1) + Bit(5));
1191 }

◆ SnField()

SRegister dart::Instr::SnField ( ) const
inline

Definition at line 1183 of file constants_arm.h.

1183 {
1184 return static_cast<SRegister>((Bits(kRnShift, kRnBits) << 1) + Bit(7));
1185 }

◆ stype_imm()

intx_t dart::Instr::stype_imm ( ) const
inline

Definition at line 1134 of file constants_riscv.h.

1134{ return DecodeSTypeImm(encoding_); }
intptr_t DecodeSTypeImm(uint32_t encoded)

◆ SubtypeField()

int dart::Instr::SubtypeField ( ) const
inline

Definition at line 1031 of file constants_arm.h.

1031{ return Bit(4); }

◆ SvcField()

uint32_t dart::Instr::SvcField ( ) const
inline

Definition at line 1089 of file constants_arm.h.

1089{ return Bits(0, 24); }

◆ SzField()

int dart::Instr::SzField ( ) const
inline

Definition at line 1400 of file constants_arm64.h.

1400{ return Bits(kSzShift, kSzBits); }

◆ TypeField()

int dart::Instr::TypeField ( ) const
inline

Definition at line 1030 of file constants_arm.h.

1030{ return Bits(kTypeShift, kTypeBits); }
@ kTypeShift
@ kTypeBits

◆ utype_imm()

intx_t dart::Instr::utype_imm ( ) const
inline

Definition at line 1136 of file constants_riscv.h.

1136{ return DecodeUTypeImm(encoding_); }
intptr_t DecodeUTypeImm(uint32_t encoded)

◆ VdField()

VRegister dart::Instr::VdField ( ) const
inline

Definition at line 1423 of file constants_arm64.h.

1423 {
1424 return static_cast<VRegister>(Bits(kVdShift, kVdBits));
1425 }

◆ VFPExpandImm()

static int64_t dart::Instr::VFPExpandImm ( uint8_t  imm8)
inlinestatic

Definition at line 1604 of file constants_arm64.h.

1604 {
1605 const int64_t sign = static_cast<int64_t>((imm8 & 0x80) >> 7) << 63;
1606 const int64_t hi_exp = static_cast<int64_t>(!((imm8 & 0x40) >> 6)) << 62;
1607 const int64_t mid_exp = (((imm8 & 0x40) >> 6) == 0) ? 0 : (0xffLL << 54);
1608 const int64_t low_exp = static_cast<int64_t>((imm8 & 0x30) >> 4) << 52;
1609 const int64_t frac = static_cast<int64_t>(imm8 & 0x0f) << 48;
1610 return sign | hi_exp | mid_exp | low_exp | frac;
1611 }
static int sign(SkScalar x)
Definition: SkPath.cpp:2205

◆ VmField()

VRegister dart::Instr::VmField ( ) const
inline

Definition at line 1429 of file constants_arm64.h.

1429 {
1430 return static_cast<VRegister>(Bits(kVmShift, kVmBits));
1431 }

◆ VnField()

VRegister dart::Instr::VnField ( ) const
inline

Definition at line 1426 of file constants_arm64.h.

1426 {
1427 return static_cast<VRegister>(Bits(kVnShift, kVnBits));
1428 }

◆ Vt2Field()

VRegister dart::Instr::Vt2Field ( ) const
inline

Definition at line 1435 of file constants_arm64.h.

1435 {
1436 return static_cast<VRegister>(Bits(kVt2Shift, kVt2Bits));
1437 }

◆ VtField()

VRegister dart::Instr::VtField ( ) const
inline

Definition at line 1432 of file constants_arm64.h.

1432 {
1433 return static_cast<VRegister>(Bits(kVtShift, kVtBits));
1434 }

◆ WField()

int dart::Instr::WField ( ) const
inline

Definition at line 1066 of file constants_arm.h.

1066{ return Bit(21); }

◆ zimm()

uint32_t dart::Instr::zimm ( ) const
inline

Definition at line 1140 of file constants_riscv.h.

1140{ return rs1(); }
Register rs1() const

Member Data Documentation

◆ kBreakPointCode

static constexpr int32_t dart::Instr::kBreakPointCode = 0xdeb0
staticconstexpr

Definition at line 986 of file constants_arm.h.

◆ kBreakPointInstruction [1/3]

static constexpr uint8_t dart::Instr::kBreakPointInstruction
staticconstexpr
Initial value:
=
((AL << kConditionShift) | (0x12 << 20) | (0xdeb << 8) | (0x7 << 4))

Definition at line 992 of file constants_arm.h.

◆ kBreakPointInstruction [2/3]

constexpr uint8_t dart::Instr::kBreakPointInstruction = kHltInstruction
staticconstexpr

Definition at line 433 of file constants_ia32.h.

◆ kBreakPointInstruction [3/3]

constexpr uint32_t dart::Instr::kBreakPointInstruction = 0
staticconstexpr

Definition at line 1142 of file constants_riscv.h.

◆ kBreakPointInstructionSize

static constexpr int dart::Instr::kBreakPointInstructionSize = 1
staticconstexpr

Definition at line 434 of file constants_ia32.h.

◆ kGdbBreakpointInstruction

constexpr uint8_t dart::Instr::kGdbBreakpointInstruction = 0xcc
staticconstexpr

Definition at line 697 of file constants_x64.h.

◆ kHltInstruction

static constexpr uint8_t dart::Instr::kHltInstruction = 0xF4
staticconstexpr

Definition at line 431 of file constants_ia32.h.

◆ kInstrSize

constexpr uint32_t dart::Instr::kInstrSize = 4
staticconstexpr

Definition at line 1143 of file constants_riscv.h.

◆ kNopInstruction

static constexpr int32_t dart::Instr::kNopInstruction
staticconstexpr
Initial value:
=
((AL << kConditionShift) | (0x32 << 20) | (0xf << 12))

Definition at line 983 of file constants_arm.h.

◆ kSimulatorBreakCode

static constexpr int32_t dart::Instr::kSimulatorBreakCode
staticconstexpr
Initial value:
=
0xdeb2

Definition at line 987 of file constants_arm.h.

◆ kSimulatorBreakpointInstruction

static constexpr int32_t dart::Instr::kSimulatorBreakpointInstruction
staticconstexpr
Initial value:
=
((AL << kConditionShift) | (0xf << 24) | kSimulatorBreakCode)
static constexpr int32_t kSimulatorBreakCode

Definition at line 998 of file constants_arm.h.

◆ kSimulatorRedirectCode

static constexpr int32_t dart::Instr::kSimulatorRedirectCode = 0xca11
staticconstexpr

Definition at line 989 of file constants_arm.h.

◆ kSimulatorRedirectInstruction [1/2]

static constexpr int32_t dart::Instr::kSimulatorRedirectInstruction
staticconstexpr
Initial value:
=
((AL << kConditionShift) | (0xf << 24) | kSimulatorRedirectCode)
static constexpr int32_t kSimulatorRedirectCode

Definition at line 1003 of file constants_arm.h.

◆ kSimulatorRedirectInstruction [2/2]

constexpr uint32_t dart::Instr::kSimulatorRedirectInstruction
staticconstexpr
Initial value:
=
ECALL << 20 | SYSTEM

Definition at line 1144 of file constants_riscv.h.


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