Go to the documentation of this file.
38 #define INSTR_INDENT 8
39 #define COMMENT_COL 56
41 static void indent_to(AVBPrint *bp,
unsigned line_start,
int col)
43 int cur_col = bp->len - line_start;
67 int local_id = local_labels[
id];
90 case sizeof(uint32_t):
av_bprintf(bp,
"w%d", n);
break;
91 case sizeof(uint64_t):
av_bprintf(bp,
"x%d", n);
break;
114 uint8_t n, uint8_t el_count, uint8_t el_size, uint8_t idx_p1)
118 }
else if (el_count != 0) {
136 for (
int i = 0;
i < num_regs;
i++) {
330 AVBPrint *bp,
unsigned line_start,
332 const int *local_labels)
346 for (
int j = op_start; j < 4; j++) {
360 AVBPrint *bp,
unsigned line_start,
371 AVBPrint *bp,
unsigned line_start,
380 int local_id = local_labels[
id];
385 local_labels[
id] = -local_id;
394 AVBPrint *bp,
unsigned line_start,
397 av_bprintf(bp,
"function %s, export=%d, jumpable=%d",
405 AVBPrint *bp,
unsigned line_start,
415 AVBPrint *bp,
unsigned line_start,
428 int *local_labels =
NULL;
441 memset(local_labels, 0x00, rctx->
num_labels *
sizeof(*local_labels));
444 int id = node->label.id;
446 local_labels[
id] = local_label++;
452 unsigned line_start = bp->len;
454 switch (node->type) {
477 if (node->inline_comment) {
479 av_bprintf(bp,
"// %s", node->inline_comment);
static void print_op_imm(AVBPrint *bp, RasmOp op)
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
static void print_op_label(const RasmContext *rctx, AVBPrint *bp, RasmOp op, const int *local_labels)
static char elem_type_char(uint8_t elem_size)
static uint8_t a64op_vec_idx_p1(RasmOp op)
#define INSTR_INDENT
Static file backend for the runtime assembler.
static void print_op_base(AVBPrint *bp, RasmOp op)
static uint8_t rasm_op_type(RasmOp op)
static uint8_t a64op_vec_n(RasmOp op)
static void print_node_endfunc(const RasmContext *rctx, AVBPrint *bp, unsigned line_start, const RasmNode *node)
static const char * cond_name(uint8_t cond)
Runtime assembler for AArch64.
#define AARCH64_BASE_POST
static void print_base_reg(AVBPrint *bp, uint8_t n)
static int32_t rasm_op_imm_val(RasmOp op)
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
static void print_op(const RasmContext *rctx, AVBPrint *bp, const int *local_labels, RasmOp op)
static void print_node_label(const RasmContext *rctx, AVBPrint *bp, unsigned line_start, const RasmNode *node, int *local_labels)
static const char insn_names[AARCH64_INSN_NB][8]
static void print_node_insn(const RasmContext *rctx, AVBPrint *bp, unsigned line_start, const RasmNode *node, const int *local_labels)
static int16_t a64op_base_imm(RasmOp op)
static void print_op_cond(AVBPrint *bp, RasmOp op)
static const char * insn_name(int id)
#define i(width, name, range_min, range_max)
static uint8_t a64op_base_n(RasmOp op)
static void print_vec_reg(AVBPrint *bp, uint8_t n, uint8_t el_count, uint8_t el_size, uint8_t idx_p1)
int rasm_print(RasmContext *rctx, AVBPrint *bp)
static void print_node_directive(const RasmContext *rctx, AVBPrint *bp, unsigned line_start, const RasmNode *node)
static uint8_t a64op_vec_num_regs(RasmOp op)
static void print_op_gpr(AVBPrint *bp, RasmOp op)
static uint8_t a64op_vec_el_count(RasmOp op)
static uint8_t a64op_gpr_size(RasmOp op)
static void print_node_function(const RasmContext *rctx, AVBPrint *bp, unsigned line_start, const RasmNode *node)
static uint8_t a64op_cond_val(RasmOp op)
static uint8_t a64op_base_mode(RasmOp op)
static uint8_t a64op_vec_el_size(RasmOp op)
void av_bprintf(AVBPrint *buf, const char *fmt,...)
static void print_node_comment(const RasmContext *rctx, AVBPrint *bp, unsigned line_start, const RasmNode *node)
static const char cond_names[16][4]
RasmNodeDirective directive
static void print_op_vec(AVBPrint *bp, RasmOp op)
#define AARCH64_BASE_OFFSET
static int rasm_op_label_id(RasmOp op)
static void indent_to(AVBPrint *bp, unsigned line_start, int col)
int(* cond)(enum AVPixelFormat pix_fmt)
static uint8_t a64op_gpr_n(RasmOp op)