Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Enumerations | Functions | Variables
constants_riscv.h File Reference
#include <sstream>
#include "platform/assert.h"
#include "platform/globals.h"
#include "platform/utils.h"
#include "vm/constants_base.h"
#include "vm/flags.h"

Go to the source code of this file.

Classes

struct  dart::SharedSlowPathStubABI
 
struct  dart::InstantiationABI
 
struct  dart::InstantiateTAVInternalRegs
 
struct  dart::TTSInternalRegs
 
struct  dart::STCInternalRegs
 
struct  dart::TypeTestABI
 
struct  dart::AssertSubtypeABI
 
struct  dart::InitStaticFieldABI
 
struct  dart::InitLateStaticFieldInternalRegs
 
struct  dart::InitInstanceFieldABI
 
struct  dart::InitLateInstanceFieldInternalRegs
 
struct  dart::LateInitializationErrorABI
 
struct  dart::ThrowABI
 
struct  dart::ReThrowABI
 
struct  dart::AssertBooleanABI
 
struct  dart::RangeErrorABI
 
struct  dart::AllocateObjectABI
 
struct  dart::AllocateClosureABI
 
struct  dart::AllocateMintABI
 
struct  dart::AllocateBoxABI
 
struct  dart::AllocateArrayABI
 
struct  dart::AllocateRecordABI
 
struct  dart::AllocateSmallRecordABI
 
struct  dart::AllocateTypedDataArrayABI
 
struct  dart::BoxDoubleStubABI
 
struct  dart::DoubleToIntegerStubABI
 
struct  dart::SuspendStubABI
 
struct  dart::InitSuspendableFunctionStubABI
 
struct  dart::ResumeStubABI
 
struct  dart::ReturnStubABI
 
struct  dart::AsyncExceptionHandlerStubABI
 
struct  dart::CloneSuspendStateStubABI
 
struct  dart::FfiAsyncCallbackSendStubABI
 
struct  dart::DispatchTableNullErrorABI
 
class  dart::CallingConventions
 
struct  dart::DartCallingConvention
 
class  dart::Instr
 
class  dart::CInstr
 

Namespaces

namespace  dart
 

Macros

#define DART_ASSEMBLER_HAS_NULL_REG   1
 
#define R(reg)   (static_cast<RegList>(1) << (reg))
 
#define DEFINE_REG_ENCODING(type, name, shift)
 
#define DEFINE_FUNCT_ENCODING(type, name, shift, mask)
 
#define DEFINE_REG_ENCODING(type, name, shift)
 
#define DEFINE_REG_PRIME_ENCODING(type, name, shift)
 
#define DEFINE_TYPED_ENUM_SET(name, storage_t)
 
#define LINK_REGISTER   RA
 

Enumerations

enum  dart::Register {
  dart::R0 = 0 , dart::R1 = 1 , dart::R2 = 2 , dart::R3 = 3 ,
  dart::R4 = 4 , dart::R5 = 5 , dart::R6 = 6 , dart::R7 = 7 ,
  dart::R8 = 8 , dart::R9 = 9 , dart::R10 = 10 , dart::R11 = 11 ,
  dart::R12 = 12 , dart::R13 = 13 , dart::R14 = 14 , dart::R15 = 15 ,
  dart::kNumberOfCpuRegisters = 16 , dart::kNoRegister = -1 , dart::FP = R11 , dart::NOTFP = R7 ,
  dart::IP = R12 , dart::SP = R13 , dart::LR = R14 , dart::PC = R15 ,
  dart::R0 = 0 , dart::R1 = 1 , dart::R2 = 2 , dart::R3 = 3 ,
  dart::R4 = 4 , dart::R5 = 5 , dart::R6 = 6 , dart::R7 = 7 ,
  dart::R8 = 8 , dart::R9 = 9 , dart::R10 = 10 , dart::R11 = 11 ,
  dart::R12 = 12 , dart::R13 = 13 , dart::R14 = 14 , dart::R15 = 15 ,
  dart::R16 = 16 , dart::R17 = 17 , dart::R18 = 18 , dart::R19 = 19 ,
  dart::R20 = 20 , dart::R21 = 21 , dart::R22 = 22 , dart::R23 = 23 ,
  dart::R24 = 24 , dart::R25 = 25 , dart::R26 = 26 , dart::R27 = 27 ,
  dart::R28 = 28 , dart::R29 = 29 , dart::R30 = 30 , dart::R31 = 31 ,
  dart::kNumberOfCpuRegisters = 16 , dart::kNoRegister = -1 , dart::kNoRegister2 = -2 , dart::CSP = 32 ,
  dart::ZR = 33 , dart::IP0 = R16 , dart::IP1 = R17 , dart::SP = R13 ,
  dart::FP = R11 , dart::LR = R14 , dart::EAX = 0 , dart::ECX = 1 ,
  dart::EDX = 2 , dart::EBX = 3 , dart::ESP = 4 , dart::EBP = 5 ,
  dart::ESI = 6 , dart::EDI = 7 , dart::kNumberOfCpuRegisters = 16 , dart::kNoRegister = -1 ,
  dart::ZR = 33 , dart::RA = 1 , dart::SP = R13 , dart::GP = 3 ,
  dart::TP = 4 , dart::T0 = 5 , dart::T1 = 6 , dart::T2 = 7 ,
  dart::FP = R11 , dart::S1 = 1 , dart::A0 = 10 , dart::A1 = 11 ,
  dart::A2 = 12 , dart::A3 = 13 , dart::A4 = 14 , dart::A5 = 15 ,
  dart::A6 = 16 , dart::A7 = 17 , dart::S2 = 2 , dart::S3 = 3 ,
  dart::S4 = 4 , dart::S5 = 5 , dart::S6 = 6 , dart::S7 = 7 ,
  dart::S8 = 8 , dart::S9 = 9 , dart::S10 = 10 , dart::S11 = 11 ,
  dart::T3 = 28 , dart::T4 = 29 , dart::T5 = 30 , dart::T6 = 31 ,
  dart::kNumberOfCpuRegisters = 16 , dart::kNoRegister = -1 , dart::RA2 = T0 , dart::S0 = 0 ,
  dart::RAX = 0 , dart::RCX = 1 , dart::RDX = 2 , dart::RBX = 3 ,
  dart::RSP = 4 , dart::RBP = 5 , dart::RSI = 6 , dart::RDI = 7 ,
  dart::R8 = 8 , dart::R9 = 9 , dart::R10 = 10 , dart::R11 = 11 ,
  dart::R12 = 12 , dart::R13 = 13 , dart::R14 = 14 , dart::R15 = 15 ,
  dart::kNumberOfCpuRegisters = 16 , dart::kNoRegister = -1
}
 
enum  dart::FRegister {
  dart::FT0 = 0 , dart::FT1 = 1 , dart::FT2 = 2 , dart::FT3 = 3 ,
  dart::FT4 = 4 , dart::FT5 = 5 , dart::FT6 = 6 , dart::FT7 = 7 ,
  dart::FS0 = 8 , dart::FS1 = 9 , dart::FA0 = 10 , dart::FA1 = 11 ,
  dart::FA2 = 12 , dart::FA3 = 13 , dart::FA4 = 14 , dart::FA5 = 15 ,
  dart::FA6 = 16 , dart::FA7 = 17 , dart::FS2 = 18 , dart::FS3 = 19 ,
  dart::FS4 = 20 , dart::FS5 = 21 , dart::FS6 = 22 , dart::FS7 = 23 ,
  dart::FS8 = 24 , dart::FS9 = 25 , dart::FS10 = 26 , dart::FS11 = 27 ,
  dart::FT8 = 28 , dart::FT9 = 29 , dart::FT10 = 30 , dart::FT11 = 31
}
 
enum  dart::Condition {
  dart::kNoCondition = -1 , dart::EQ = 0 , dart::NE = 1 , dart::CS = 2 ,
  dart::CC = 3 , dart::MI = 4 , dart::PL = 5 , dart::VS = 6 ,
  dart::VC = 7 , dart::HI = 8 , dart::LS = 9 , dart::GE = 10 ,
  dart::LT = 11 , dart::GT = 12 , dart::LE = 13 , dart::AL = 14 ,
  dart::kSpecialCondition = 15 , dart::kNumberOfConditions = 16 , dart::EQUAL = EQ , dart::ZERO = EQUAL ,
  dart::NOT_EQUAL = NE , dart::NOT_ZERO = NOT_EQUAL , dart::LESS = LT , dart::LESS_EQUAL = LE ,
  dart::GREATER_EQUAL = GE , dart::GREATER = GT , dart::UNSIGNED_LESS = CC , dart::UNSIGNED_LESS_EQUAL = LS ,
  dart::UNSIGNED_GREATER = HI , dart::UNSIGNED_GREATER_EQUAL = CS , dart::OVERFLOW = VS , dart::NO_OVERFLOW = VC ,
  dart::kInvalidCondition = 16 , dart::kNoCondition = -1 , dart::EQ = 0 , dart::NE = 1 ,
  dart::CS = 2 , dart::CC = 3 , dart::MI = 4 , dart::PL = 5 ,
  dart::VS = 6 , dart::VC = 7 , dart::HI = 8 , dart::LS = 9 ,
  dart::GE = 10 , dart::LT = 11 , dart::GT = 12 , dart::LE = 13 ,
  dart::AL = 14 , dart::NV = 15 , dart::kNumberOfConditions = 16 , dart::EQUAL = EQ ,
  dart::ZERO = EQUAL , dart::NOT_EQUAL = NE , dart::NOT_ZERO = NOT_EQUAL , dart::LESS = LT ,
  dart::LESS_EQUAL = LE , dart::GREATER_EQUAL = GE , dart::GREATER = GT , dart::UNSIGNED_LESS = CC ,
  dart::UNSIGNED_LESS_EQUAL = LS , dart::UNSIGNED_GREATER = HI , dart::UNSIGNED_GREATER_EQUAL = CS , dart::OVERFLOW = VS ,
  dart::NO_OVERFLOW = VC , dart::kInvalidCondition = 16 , dart::kNoCondition = -1 , dart::EQ = 0 ,
  dart::NE = 1 , dart::CS = 2 , dart::CC = 3 , dart::MI = 4 ,
  dart::PL = 5 , dart::VS = 6 , dart::VC = 7 , dart::HI = 8 ,
  dart::LS = 9 , dart::GE = 10 , dart::LT = 11 , dart::GT = 12 ,
  dart::LE = 13 , dart::AL = 14 , dart::NV = 15 , dart::kNumberOfConditions = 16 ,
  dart::EQUAL = EQ , dart::ZERO = EQUAL , dart::NOT_EQUAL = NE , dart::NOT_ZERO = NOT_EQUAL ,
  dart::LESS = LT , dart::LESS_EQUAL = LE , dart::GREATER_EQUAL = GE , dart::GREATER = GT ,
  dart::UNSIGNED_LESS = CC , dart::UNSIGNED_LESS_EQUAL = LS , dart::UNSIGNED_GREATER = HI , dart::UNSIGNED_GREATER_EQUAL = CS ,
  dart::OVERFLOW = VS , dart::NO_OVERFLOW = VC , dart::kInvalidCondition = 16 , dart::OVERFLOW = VS ,
  dart::NO_OVERFLOW = VC , dart::BELOW = 2 , dart::ABOVE_EQUAL = 3 , dart::EQUAL = EQ ,
  dart::NOT_EQUAL = NE , dart::BELOW_EQUAL = 6 , dart::ABOVE = 7 , dart::SIGN = 8 ,
  dart::NOT_SIGN = 9 , dart::PARITY_EVEN = 10 , dart::PARITY_ODD = 11 , dart::LESS = LT ,
  dart::GREATER_EQUAL = GE , dart::LESS_EQUAL = LE , dart::GREATER = GT , dart::ZERO = EQUAL ,
  dart::NOT_ZERO = NOT_EQUAL , dart::NEGATIVE = SIGN , dart::POSITIVE = NOT_SIGN , dart::CARRY = BELOW ,
  dart::NOT_CARRY = ABOVE_EQUAL , dart::UNSIGNED_LESS = CC , dart::UNSIGNED_LESS_EQUAL = LS , dart::UNSIGNED_GREATER = HI ,
  dart::UNSIGNED_GREATER_EQUAL = CS , dart::kInvalidCondition = 16
}
 
enum  dart::ScaleFactor {
  dart::TIMES_1 = 0 , dart::TIMES_2 = 1 , dart::TIMES_4 = 2 , dart::TIMES_8 = 3 ,
  dart::TIMES_16 = 4 , dart::TIMES_COMPRESSED_WORD_SIZE = TIMES_WORD_SIZE , dart::TIMES_COMPRESSED_HALF_WORD_SIZE = TIMES_COMPRESSED_WORD_SIZE - 1 , dart::TIMES_1 = 0 ,
  dart::TIMES_2 = 1 , dart::TIMES_4 = 2 , dart::TIMES_8 = 3 , dart::TIMES_16 = 4 ,
  dart::TIMES_COMPRESSED_WORD_SIZE = TIMES_WORD_SIZE , dart::TIMES_COMPRESSED_HALF_WORD_SIZE = TIMES_COMPRESSED_WORD_SIZE - 1 , dart::TIMES_1 = 0 , dart::TIMES_2 = 1 ,
  dart::TIMES_4 = 2 , dart::TIMES_8 = 3 , dart::TIMES_16 = 4 , dart::TIMES_COMPRESSED_WORD_SIZE = TIMES_WORD_SIZE ,
  dart::TIMES_COMPRESSED_HALF_WORD_SIZE = TIMES_COMPRESSED_WORD_SIZE - 1 , dart::TIMES_1 = 0 , dart::TIMES_2 = 1 , dart::TIMES_4 = 2 ,
  dart::TIMES_8 = 3 , dart::TIMES_16 = 4 , dart::TIMES_COMPRESSED_WORD_SIZE = TIMES_WORD_SIZE , dart::TIMES_COMPRESSED_HALF_WORD_SIZE = TIMES_COMPRESSED_WORD_SIZE - 1 ,
  dart::TIMES_1 = 0 , dart::TIMES_2 = 1 , dart::TIMES_4 = 2 , dart::TIMES_8 = 3 ,
  dart::TIMES_16 = 4 , dart::TIMES_COMPRESSED_WORD_SIZE = TIMES_WORD_SIZE , dart::TIMES_COMPRESSED_HALF_WORD_SIZE = TIMES_COMPRESSED_WORD_SIZE - 1
}
 
enum  dart::Opcode {
  dart::kNoOperand = -1 , dart::AND = 0 , dart::EOR = 1 , dart::SUB = 2 ,
  dart::RSB = 3 , dart::ADD = 4 , dart::ADC = 5 , dart::SBC = 6 ,
  dart::RSC = 7 , dart::TST = 8 , dart::TEQ = 9 , dart::CMP = 10 ,
  dart::CMN = 11 , dart::ORR = 12 , dart::MOV = 13 , dart::BIC = 14 ,
  dart::MVN = 15 , dart::kMaxOperand = 16 , dart::LUI = 0b0110111 , dart::AUIPC = 0b0010111 ,
  dart::JAL = 0b1101111 , dart::JALR = 0b1100111 , dart::BRANCH = 0b1100011 , dart::LOAD = 0b0000011 ,
  dart::STORE = 0b0100011 , dart::OPIMM = 0b0010011 , dart::OP = 0b0110011 , dart::MISCMEM = 0b0001111 ,
  dart::SYSTEM = 0b1110011 , dart::OP32 = 0b0111011 , dart::OPIMM32 = 0b0011011 , dart::AMO = 0b0101111 ,
  dart::LOADFP = 0b0000111 , dart::STOREFP = 0b0100111 , dart::FMADD = 0b1000011 , dart::FMSUB = 0b1000111 ,
  dart::FNMSUB = 0b1001011 , dart::FNMADD = 0b1001111 , dart::OPFP = 0b1010011
}
 
enum  dart::Funct12 { dart::ECALL = 0 , dart::EBREAK = 1 }
 
enum  dart::Funct3 {
  dart::F3_0 = 0 , dart::F3_1 = 1 , dart::BEQ = 0b000 , dart::BNE = 0b001 ,
  dart::BLT = 0b100 , dart::BGE = 0b101 , dart::BLTU = 0b110 , dart::BGEU = 0b111 ,
  dart::LB = 0b000 , dart::LH = 0b001 , dart::LW = 0b010 , dart::LBU = 0b100 ,
  dart::LHU = 0b101 , dart::LWU = 0b110 , dart::LD = 0b011 , dart::SB = 0b000 ,
  dart::SH = 0b001 , dart::SW = 0b010 , dart::SD = 0b011 , dart::ADDI = AddSubImmFixed ,
  dart::SLLI = 0b001 , dart::SLTI = 0b010 , dart::SLTIU = 0b011 , dart::XORI = 0b100 ,
  dart::SRI = 0b101 , dart::ORI = 0b110 , dart::ANDI = LogicalImmFixed , dart::ADD = 4 ,
  dart::SLL = 0b001 , dart::SLT = 0b010 , dart::SLTU = 0b011 , dart::XOR = 0b100 ,
  dart::SR = 0b101 , dart::OR = 0b110 , dart::AND = 0 , dart::FENCE = 0b000 ,
  dart::FENCEI = 0b001 , dart::CSRRW = 0b001 , dart::CSRRS = 0b010 , dart::CSRRC = 0b011 ,
  dart::CSRRWI = 0b101 , dart::CSRRSI = 0b110 , dart::CSRRCI = 0b111 , dart::MUL = 0b000 ,
  dart::MULH = 0b001 , dart::MULHSU = 0b010 , dart::MULHU = 0b011 , dart::DIV = 0b100 ,
  dart::DIVU = 0b101 , dart::REM = 0b110 , dart::REMU = 0b111 , dart::MULW = 0b000 ,
  dart::DIVW = 0b100 , dart::DIVUW = 0b101 , dart::REMW = 0b110 , dart::REMUW = 0b111 ,
  dart::WIDTH32 = 0b010 , dart::WIDTH64 = 0b011 , dart::S = 0b010 , dart::D = 0b011 ,
  dart::J = 0b000 , dart::JN = 0b001 , dart::JX = 0b010 , dart::FMIN = 0b000 ,
  dart::FMAX = 0b001 , dart::FEQ = 0b010 , dart::FLT = 0b001 , dart::FLE = 0b000 ,
  dart::SH1ADD = 0b010 , dart::SH2ADD = 0b100 , dart::SH3ADD = 0b110 , dart::F3_COUNT = 0b001 ,
  dart::MAX = 0b110 , dart::MAXU = 0b111 , dart::MIN = 0b100 , dart::MINU = 0b101 ,
  dart::CLMUL = 0b001 , dart::CLMULH = 0b011 , dart::CLMULR = 0b010 , dart::SEXT = 0b001 ,
  dart::ZEXT = 0b100 , dart::ROL = 0b001 , dart::ROR = 3 , dart::BCLR = 0b001 ,
  dart::BEXT = 0b101 , dart::F3_BINV = 0b001 , dart::F3_BSET = 0b001
}
 
enum  dart::Funct7 {
  dart::F7_0 = 0 , dart::SRA = 0b0100000 , dart::SUB = 2 , dart::MULDIV = 0b0000001 ,
  dart::FADDS = 0b0000000 , dart::FSUBS = 0b0000100 , dart::FMULS = 0b0001000 , dart::FDIVS = 0b0001100 ,
  dart::FSQRTS = 0b0101100 , dart::FSGNJS = 0b0010000 , dart::FMINMAXS = 0b0010100 , dart::FCMPS = 0b1010000 ,
  dart::FCLASSS = 0b1110000 , dart::FCVTintS = 0b1100000 , dart::FCVTSint = 0b1101000 , dart::FMVXW = 0b1110000 ,
  dart::FMVWX = 0b1111000 , dart::FADDD = FPTwoSourceFixed | B22 | B13 , dart::FSUBD = FPTwoSourceFixed | B22 | B13 | B12 , dart::FMULD = FPTwoSourceFixed | B22 ,
  dart::FDIVD = FPTwoSourceFixed | B22 | B12 , dart::FSQRTD = FPOneSourceFixed | B22 | B16 | B15 , dart::FSGNJD = 0b0010001 , dart::FMINMAXD = 0b0010101 ,
  dart::FCVTS = 0b0100000 , dart::FCVTD = 0b0100001 , dart::FCMPD = FPCompareFixed | B22 , dart::FCLASSD = 0b1110001 ,
  dart::FCVTintD = 0b1100001 , dart::FCVTDint = 0b1101001 , dart::FMVXD = 0b1110001 , dart::FMVDX = 0b1111001 ,
  dart::ADDUW = 0b0000100 , dart::SHADD = 0b0010000 , dart::SLLIUW = 0b0000100 , dart::COUNT = 0b0110000 ,
  dart::MINMAXCLMUL = 0b0000101 , dart::ROTATE = 0b0110000 , dart::BCLRBEXT = 0b0100100 , dart::BINV = 0b0110100 ,
  dart::BSET = 0b0010100
}
 
enum  dart::Funct5 {
  dart::LR = R14 , dart::SC = 0b00011 , dart::AMOSWAP = 0b00001 , dart::AMOADD = 0b00000 ,
  dart::AMOXOR = 0b00100 , dart::AMOAND = 0b01100 , dart::AMOOR = 0b01000 , dart::AMOMIN = 0b10000 ,
  dart::AMOMAX = 0b10100 , dart::AMOMINU = 0b11000 , dart::AMOMAXU = 0b11100
}
 
enum  dart::Funct2 { dart::F2_S = 0b00 , dart::F2_D = 0b01 }
 
enum  dart::RoundingMode {
  dart::RNE = 0b000 , dart::RTZ = 0b001 , dart::RDN = 0b010 , dart::RUP = 0b011 ,
  dart::RMM = 0b100 , dart::DYN = 0b111
}
 
enum  dart::FcvtRs2 { dart::W = 0b00000 , dart::WU = 0b00001 , dart::L = 0b00010 , dart::LU = 0b00011 }
 
enum  dart::FClass {
  dart::kFClassNegInfinity = 1 << 0 , dart::kFClassNegNormal = 1 << 1 , dart::kFClassNegSubnormal = 1 << 2 , dart::kFClassNegZero = 1 << 3 ,
  dart::kFClassPosZero = 1 << 4 , dart::kFClassPosSubnormal = 1 << 5 , dart::kFClassPosNormal = 1 << 6 , dart::kFClassPosInfinity = 1 << 7 ,
  dart::kFClassSignallingNan = 1 << 8 , dart::kFClassQuietNan = 1 << 9
}
 
enum  dart::HartEffects {
  dart::kWrite = 1 << 0 , dart::kRead = 1 << 1 , dart::kOutput = 1 << 2 , dart::kInput = 1 << 3 ,
  dart::kMemory = kWrite | kRead , dart::kIO = kOutput | kInput , dart::kAll = kMemory | kIO
}
 
enum  dart::COpcode {
  dart::C_OP_MASK = 0b1110000000000011 , dart::C_ADDI4SPN = 0b0000000000000000 , dart::C_FLD = 0b0010000000000000 , dart::C_LW = 0b0100000000000000 ,
  dart::C_FLW = 0b0110000000000000 , dart::C_LD = 0b0110000000000000 , dart::C_FSD = 0b1010000000000000 , dart::C_SW = 0b1100000000000000 ,
  dart::C_FSW = 0b1110000000000000 , dart::C_SD = 0b1110000000000000 , dart::C_ADDI = 0b0000000000000001 , dart::C_JAL = 0b0010000000000001 ,
  dart::C_ADDIW = 0b0010000000000001 , dart::C_LI = 0b0100000000000001 , dart::C_ADDI16SP = 0b0110000000000001 , dart::C_LUI = 0b0110000000000001 ,
  dart::C_MISCALU = 0b1000000000000001 , dart::C_MISCALU_MASK = 0b1110110000000011 , dart::C_SRLI = 0b1000000000000001 , dart::C_SRAI = 0b1000010000000001 ,
  dart::C_ANDI = 0b1000100000000001 , dart::C_RR = 0b1000110000000001 , dart::C_RR_MASK = 0b1111110001100011 , dart::C_SUB = 0b1000110000000001 ,
  dart::C_XOR = 0b1000110000100001 , dart::C_OR = 0b1000110001000001 , dart::C_AND = 0b1000110001100001 , dart::C_SUBW = 0b1001110000000001 ,
  dart::C_ADDW = 0b1001110000100001 , dart::C_J = 0b1010000000000001 , dart::C_BEQZ = 0b1100000000000001 , dart::C_BNEZ = 0b1110000000000001 ,
  dart::C_SLLI = 0b0000000000000010 , dart::C_FLDSP = 0b0010000000000010 , dart::C_LWSP = 0b0100000000000010 , dart::C_FLWSP = 0b0110000000000010 ,
  dart::C_LDSP = 0b0110000000000010 , dart::C_JR = 0b1000000000000010 , dart::C_MV = 0b1000000000000010 , dart::C_JALR = 0b1001000000000010 ,
  dart::C_ADD = 0b1001000000000010 , dart::C_FSDSP = 0b1010000000000010 , dart::C_SWSP = 0b1100000000000010 , dart::C_FSWSP = 0b1110000000000010 ,
  dart::C_SDSP = 0b1110000000000010 , dart::C_NOP = 0b0000000000000001 , dart::C_EBREAK = 0b1001000000000010
}
 

Functions

 dart::DECLARE_FLAG (bool, use_compressed_instructions)
 
static Condition dart::InvertCondition (Condition c)
 
int32_t dart::SignExtend (int N, int32_t value)
 
intx_t dart::sign_extend (int32_t x)
 
intx_t dart::sign_extend (int64_t x)
 
intx_t dart::sign_extend (uint32_t x)
 
intx_t dart::sign_extend (uint64_t x)
 
intx_t dart::ImmLo (intx_t imm)
 
intx_t dart::ImmHi (intx_t imm)
 
bool dart::IsBTypeImm (intptr_t imm)
 
uint32_t dart::EncodeBTypeImm (intptr_t imm)
 
intptr_t dart::DecodeBTypeImm (uint32_t encoded)
 
bool dart::IsJTypeImm (intptr_t imm)
 
uint32_t dart::EncodeJTypeImm (intptr_t imm)
 
intptr_t dart::DecodeJTypeImm (uint32_t encoded)
 
bool dart::IsITypeImm (intptr_t imm)
 
uint32_t dart::EncodeITypeImm (intptr_t imm)
 
intptr_t dart::DecodeITypeImm (uint32_t encoded)
 
bool dart::IsUTypeImm (intptr_t imm)
 
uint32_t dart::EncodeUTypeImm (intptr_t imm)
 
intptr_t dart::DecodeUTypeImm (uint32_t encoded)
 
bool dart::IsSTypeImm (intptr_t imm)
 
uint32_t dart::EncodeSTypeImm (intptr_t imm)
 
intptr_t dart::DecodeSTypeImm (uint32_t encoded)
 
bool dart::IsCInstruction (uint16_t parcel)
 
bool dart::IsCSPLoad4Imm (intptr_t imm)
 
uint32_t dart::EncodeCSPLoad4Imm (intptr_t imm)
 
intx_t dart::DecodeCSPLoad4Imm (uint32_t encoding)
 
bool dart::IsCSPLoad8Imm (intptr_t imm)
 
uint32_t dart::EncodeCSPLoad8Imm (intptr_t imm)
 
intx_t dart::DecodeCSPLoad8Imm (uint32_t encoding)
 
bool dart::IsCSPStore4Imm (intptr_t imm)
 
uint32_t dart::EncodeCSPStore4Imm (intptr_t imm)
 
intx_t dart::DecodeCSPStore4Imm (uint32_t encoding)
 
bool dart::IsCSPStore8Imm (intptr_t imm)
 
uint32_t dart::EncodeCSPStore8Imm (intptr_t imm)
 
intx_t dart::DecodeCSPStore8Imm (uint32_t encoding)
 
bool dart::IsCMem4Imm (intptr_t imm)
 
uint32_t dart::EncodeCMem4Imm (intptr_t imm)
 
intx_t dart::DecodeCMem4Imm (uint32_t encoding)
 
bool dart::IsCMem8Imm (intptr_t imm)
 
uint32_t dart::EncodeCMem8Imm (intptr_t imm)
 
intx_t dart::DecodeCMem8Imm (uint32_t encoding)
 
bool dart::IsCJImm (intptr_t imm)
 
uint32_t dart::EncodeCJImm (intptr_t imm)
 
intx_t dart::DecodeCJImm (uint32_t encoding)
 
bool dart::IsCBImm (intptr_t imm)
 
uint32_t dart::EncodeCBImm (intptr_t imm)
 
intx_t dart::DecodeCBImm (uint32_t encoding)
 
bool dart::IsCIImm (intptr_t imm)
 
uint32_t dart::EncodeCIImm (intptr_t imm)
 
intx_t dart::DecodeCIImm (uint32_t encoding)
 
bool dart::IsCUImm (intptr_t imm)
 
uint32_t dart::EncodeCUImm (intptr_t imm)
 
intx_t dart::DecodeCUImm (uint32_t encoding)
 
bool dart::IsCI16Imm (intptr_t imm)
 
uint32_t dart::EncodeCI16Imm (intptr_t imm)
 
intx_t dart::DecodeCI16Imm (uint32_t encoding)
 
bool dart::IsCI4SPNImm (intptr_t imm)
 
uint32_t dart::EncodeCI4SPNImm (intptr_t imm)
 
intx_t dart::DecodeCI4SPNImm (uint32_t encoding)
 
static constexpr Extension dart::RV_I (0)
 
static constexpr Extension dart::RV_M (1)
 
static constexpr Extension dart::RV_A (2)
 
static constexpr Extension dart::RV_F (3)
 
static constexpr Extension dart::RV_D (4)
 
static constexpr Extension dart::RV_C (5)
 
static constexpr Extension dart::RV_Zba (6)
 
static constexpr Extension dart::RV_Zbb (7)
 
static constexpr Extension dart::RV_Zbc (8)
 
static constexpr Extension dart::RV_Zbs (9)
 
static Register dart::ConcreteRegister (Register r)
 

Variables

const FRegister dart::FTMP = FT11
 
constexpr Register dart::FAR_TMP = S8
 
constexpr Register dart::WRITE_BARRIER_STATE = S11
 
constexpr RegList dart::kAbiArgumentFpuRegs
 
constexpr RegList dart::kAbiPreservedFpuRegs
 
constexpr intptr_t dart::kReservedFpuRegisters = 0
 
constexpr intptr_t dart::kNumberOfReservedFpuRegisters = 0
 
const intptr_t dart::kReleaseShift = 25
 
const intptr_t dart::kAcquireShift = 26
 
static constexpr ExtensionSet dart::RV_G = RV_I | RV_M | RV_A | RV_F | RV_D
 
static constexpr ExtensionSet dart::RV_GC = RV_G | RV_C
 
static constexpr ExtensionSet dart::RV_B = RV_Zba | RV_Zbb | RV_Zbc | RV_Zbs
 
static constexpr ExtensionSet dart::RV_GCB = RV_GC | RV_B
 

Macro Definition Documentation

◆ DART_ASSEMBLER_HAS_NULL_REG

#define DART_ASSEMBLER_HAS_NULL_REG   1

Definition at line 167 of file constants_riscv.h.

◆ DEFINE_FUNCT_ENCODING

#define DEFINE_FUNCT_ENCODING (   type,
  name,
  shift,
  mask 
)
Value:
inline bool Is##name(type f) { \
return (f & mask) == f; \
} \
inline uint32_t Encode##name(type f) { \
ASSERT(Is##name(f)); \
return f << shift; \
} \
inline type Decode##name(uint32_t encoding) { \
return static_cast<type>((encoding >> shift) & mask); \
}
const char * name
Definition fuchsia.cc:50
SK_API std::unique_ptr< SkCodec > Decode(std::unique_ptr< SkStream >, SkCodec::Result *, SkCodecs::DecodeContext=nullptr)

Definition at line 971 of file constants_riscv.h.

972 { \
973 return (f & mask) == f; \
974 } \
975 inline uint32_t Encode##name(type f) { \
976 ASSERT(Is##name(f)); \
977 return f << shift; \
978 } \
979 inline type Decode##name(uint32_t encoding) { \
980 return static_cast<type>((encoding >> shift) & mask); \
981 }
SK_API bool Encode(SkWStream *dst, const SkPixmap &src, const Options &options)

◆ DEFINE_REG_ENCODING [1/2]

#define DEFINE_REG_ENCODING (   type,
  name,
  shift 
)
Value:
inline bool Is##name(type r) { \
return static_cast<uint32_t>(r) < 32; \
} \
inline uint32_t Encode##name(type r) { \
ASSERT(Is##name(r)); \
return static_cast<uint32_t>(r) << shift; \
} \
inline type Decode##name(uint32_t encoding) { \
return type((encoding >> shift) & 31); \
}

Definition at line 950 of file constants_riscv.h.

951 { \
952 return static_cast<uint32_t>(r) < 32; \
953 } \
954 inline uint32_t Encode##name(type r) { \
955 ASSERT(Is##name(r)); \
956 return static_cast<uint32_t>(r) << shift; \
957 } \
958 inline type Decode##name(uint32_t encoding) { \
959 return type((encoding >> shift) & 31); \
960 }

◆ DEFINE_REG_ENCODING [2/2]

#define DEFINE_REG_ENCODING (   type,
  name,
  shift 
)
Value:
inline bool Is##name(type r) { \
return static_cast<uint32_t>(r) < 32; \
} \
inline uint32_t Encode##name(type r) { \
ASSERT(Is##name(r)); \
return static_cast<uint32_t>(r) << shift; \
} \
inline type Decode##name(uint32_t encoding) { \
return type((encoding >> shift) & 31); \
}

Definition at line 950 of file constants_riscv.h.

951 { \
952 return static_cast<uint32_t>(r) < 32; \
953 } \
954 inline uint32_t Encode##name(type r) { \
955 ASSERT(Is##name(r)); \
956 return static_cast<uint32_t>(r) << shift; \
957 } \
958 inline type Decode##name(uint32_t encoding) { \
959 return type((encoding >> shift) & 31); \
960 }

◆ DEFINE_REG_PRIME_ENCODING

#define DEFINE_REG_PRIME_ENCODING (   type,
  name,
  shift 
)
Value:
inline bool Is##name(type r) { \
return (r >= 8) && (r < 16); \
} \
inline uint32_t Encode##name(type r) { \
ASSERT(Is##name(r)); \
return (static_cast<uint32_t>(r) & 7) << shift; \
} \
inline type Decode##name(uint32_t encoding) { \
return type(((encoding >> shift) & 7) + 8); \
}

Definition at line 1159 of file constants_riscv.h.

1160 { \
1161 return (r >= 8) && (r < 16); \
1162 } \
1163 inline uint32_t Encode##name(type r) { \
1164 ASSERT(Is##name(r)); \
1165 return (static_cast<uint32_t>(r) & 7) << shift; \
1166 } \
1167 inline type Decode##name(uint32_t encoding) { \
1168 return type(((encoding >> shift) & 7) + 8); \
1169 }

◆ DEFINE_TYPED_ENUM_SET

#define DEFINE_TYPED_ENUM_SET (   name,
  storage_t 
)

Definition at line 1520 of file constants_riscv.h.

1522 { \
1523 public: \
1524 constexpr explicit name(storage_t encoding) : encoding_(encoding) {} \
1525 constexpr storage_t encoding() const { \
1526 return encoding_; \
1527 } \
1528 constexpr bool operator==(const name& other) const { \
1529 return encoding_ == other.encoding_; \
1530 } \
1531 constexpr bool operator!=(const name& other) const { \
1532 return encoding_ != other.encoding_; \
1533 } \
1534 inline constexpr name##Set operator|(const name& other) const; \
1535 inline constexpr name##Set operator|(const name##Set& other) const; \
1536 \
1537 private: \
1538 const storage_t encoding_; \
1539 }; \
1540 inline std::ostream& operator<<(std::ostream& stream, const name& element) { \
1541 return stream << #name << "(" << element.encoding() << ")"; \
1542 } \
1543 class name##Set { \
1544 public: \
1545 constexpr /* implicit */ name##Set(name element) \
1546 : encoding_(1u << element.encoding()) {} \
1547 constexpr explicit name##Set(storage_t encoding) : encoding_(encoding) {} \
1548 constexpr static name##Set Empty() { \
1549 return name##Set(0); \
1550 } \
1551 constexpr bool Includes(const name r) const { \
1552 return (encoding_ & (1 << r.encoding())) != 0; \
1553 } \
1554 constexpr bool IncludesAll(const name##Set other) const { \
1555 return (encoding_ & other.encoding_) == other.encoding_; \
1556 } \
1557 constexpr bool IsEmpty() const { \
1558 return encoding_ == 0; \
1559 } \
1560 constexpr bool operator==(const name##Set& other) const { \
1561 return encoding_ == other.encoding_; \
1562 } \
1563 constexpr bool operator!=(const name##Set& other) const { \
1564 return encoding_ != other.encoding_; \
1565 } \
1566 constexpr name##Set operator|(const name& other) const { \
1567 return name##Set(encoding_ | (1 << other.encoding())); \
1568 } \
1569 constexpr name##Set operator|(const name##Set& other) const { \
1570 return name##Set(encoding_ | other.encoding_); \
1571 } \
1572 constexpr name##Set operator&(const name##Set& other) const { \
1573 return name##Set(encoding_ & other.encoding_); \
1574 } \
1575 \
1576 private: \
1577 storage_t encoding_; \
1578 }; \
1579 constexpr name##Set name::operator|(const name& other) const { \
1580 return name##Set((1u << encoding_) | (1u << other.encoding_)); \
1581 } \
1582 constexpr name##Set name::operator|(const name##Set& other) const { \
1583 return other | *this; \
1584 }
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E > constexpr operator&(E l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E > constexpr operator|(E l, E r)
bool operator!=(const sk_sp< T > &a, const sk_sp< U > &b)
Definition SkRefCnt.h:355
bool operator==(const FlutterPoint &a, const FlutterPoint &b)
std::ostream & operator<<(std::ostream &out, const FlutterPoint &point)

◆ LINK_REGISTER

#define LINK_REGISTER   RA

Definition at line 1607 of file constants_riscv.h.

◆ R

#define R (   reg)    (static_cast<RegList>(1) << (reg))

Definition at line 489 of file constants_riscv.h.