6#ifndef RUNTIME_VM_INSTRUCTIONS_RISCV_H_
7#define RUNTIME_VM_INSTRUCTIONS_RISCV_H_
9#ifndef RUNTIME_VM_INSTRUCTIONS_H_
10#error Do not include instructions_riscv.h directly; use instructions.h instead.
19#if !defined(DART_PRECOMPILED_RUNTIME)
30class InstructionPattern :
public AllStatic {
70 intptr_t target_code_pool_index_;
88 intptr_t target_pool_index_;
89 intptr_t data_pool_index_;
108 intptr_t native_function_pool_index_;
109 intptr_t target_code_pool_index_;
184 static_cast<int32_t
>(0x80000000);
186 static_cast<int32_t
>(0x7FFFFFFE);
200 intx_t lo =
ImmLo(imm);
201 intx_t hi =
ImmHi(imm);
203 EncodeRd(auipc.
rd()) |
204 EncodeOpcode(
AUIPC));
207 EncodeFunct3(
F3_0) | EncodeRd(jalr.
rd()) |
uword target_entry() const
BareSwitchableCallPattern(uword pc)
void SetTarget(const Code &target) const
CallPattern(uword pc, const Code &code)
CodePtr TargetCode() const
void SetTargetCode(const Code &target) const
void SetData(const Object &data) const
CodePtr TargetCode() const
ICCallPattern(uword pc, const Code &caller_code)
void SetTargetCode(const Code &target) const
static uword DecodeLoadWordFromPool(uword end, Register *reg, intptr_t *index)
static void EncodeLoadWordFromPoolFixed(uword end, int32_t offset)
static uword DecodeLoadWordImmediate(uword end, Register *reg, intptr_t *value)
NativeCallPattern(uword pc, const Code &code)
NativeFunction native_function() const
void set_native_function(NativeFunction target) const
void set_target(const Code &target) const
PcRelativeCallPattern(uword pc)
static constexpr intptr_t kUpperCallingRange
static constexpr int kLengthInBytes
PcRelativePatternBase(uword pc)
static constexpr intptr_t kLowerCallingRange
void set_distance(int32_t distance)
PcRelativeTailCallPattern(uword pc)
PcRelativeTrampolineJumpPattern(uword pc)
static constexpr int kLengthInBytes
int pattern_length_in_bytes() const
void SetData(const Object &data) const
intptr_t target_pool_index_
intptr_t data_pool_index_
SwitchableCallPatternBase(const ObjectPool &object_pool)
const ObjectPool & object_pool_
void SetTarget(const Code &target) const
SwitchableCallPattern(uword pc, const Code &code)
uword target_entry() const
uint32_t EncodeUTypeImm(intptr_t imm)
static T LoadUnaligned(const T *ptr)
static void StoreUnaligned(T *ptr, T value)
uint32_t EncodeITypeImm(intptr_t imm)
static int8_t data[kExtLength]
void(* NativeFunction)(NativeArguments *arguments)