|
FFmpeg
|
#include <stdbool.h>#include <stddef.h>#include <stdint.h>#include <stdio.h>#include "libavutil/attributes.h"#include "libavutil/avassert.h"Go to the source code of this file.
Data Structures | |
| union | RasmOp |
| Runtime assembler for AArch64. More... | |
| struct | RasmNodeInsn |
| struct | RasmNodeComment |
| struct | RasmNodeLabel |
| struct | RasmNodeFunc |
| struct | RasmNodeDirective |
| struct | RasmNode |
| struct | RasmFunction |
| struct | RasmEntry |
| struct | RasmContext |
| struct | AArch64VecViews |
| This helper structure is used to mimic the assembler syntax for vector register modifiers. More... | |
Macros | |
| #define | OPN rasm_op_none() |
| #define | IMM(val) rasm_op_imm(val) |
| #define | AARCH64_COND_EQ 0x0 |
| #define | AARCH64_COND_NE 0x1 |
| #define | AARCH64_COND_HS 0x2 |
| #define | AARCH64_COND_CS AARCH64_COND_HS |
| #define | AARCH64_COND_LO 0x3 |
| #define | AARCH64_COND_CC AARCH64_COND_LO |
| #define | AARCH64_COND_MI 0x4 |
| #define | AARCH64_COND_PL 0x5 |
| #define | AARCH64_COND_VS 0x6 |
| #define | AARCH64_COND_VC 0x7 |
| #define | AARCH64_COND_HI 0x8 |
| #define | AARCH64_COND_LS 0x9 |
| #define | AARCH64_COND_GE 0xa |
| #define | AARCH64_COND_LT 0xb |
| #define | AARCH64_COND_GT 0xc |
| #define | AARCH64_COND_LE 0xd |
| #define | AARCH64_COND_AL 0xe |
| #define | AARCH64_COND_NV 0xf |
| #define | AARCH64_BASE_OFFSET 0 |
| #define | AARCH64_BASE_PRE 1 |
| #define | AARCH64_BASE_POST 2 |
| #define | i_none(rctx) rasm_add_insn(rctx, AARCH64_INSN_NONE, OPN, OPN, OPN, OPN) |
| #define | i_add(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_ADD, op0, op1, op2, OPN) |
| #define | i_addv(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_ADDV, op0, op1, OPN, OPN) |
| #define | i_adr(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_ADR, op0, op1, OPN, OPN) |
| #define | i_and(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_AND, op0, op1, op2, OPN) |
| #define | i_b(rctx, op0) rasm_add_insn(rctx, AARCH64_INSN_B, op0, OPN, OPN, OPN) |
| #define | i_bcond(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_BCOND, op0, op1, OPN, OPN) |
| #define | i_blr(rctx, op0) rasm_add_insn(rctx, AARCH64_INSN_BLR, op0, OPN, OPN, OPN) |
| #define | i_br(rctx, op0) rasm_add_insn(rctx, AARCH64_INSN_BR, op0, OPN, OPN, OPN) |
| #define | i_cmp(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_CMP, op0, op1, OPN, OPN) |
| #define | i_csel(rctx, op0, op1, op2, op3) rasm_add_insn(rctx, AARCH64_INSN_CSEL, op0, op1, op2, op3) |
| #define | i_dup(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_DUP, op0, op1, OPN, OPN) |
| #define | i_fadd(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_FADD, op0, op1, op2, OPN) |
| #define | i_fcvtzu(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_FCVTZU, op0, op1, OPN, OPN) |
| #define | i_fmax(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_FMAX, op0, op1, op2, OPN) |
| #define | i_fmin(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_FMIN, op0, op1, op2, OPN) |
| #define | i_fmla(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_FMLA, op0, op1, op2, OPN) |
| #define | i_fmul(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_FMUL, op0, op1, op2, OPN) |
| #define | i_ins(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_INS, op0, op1, OPN, OPN) |
| #define | i_ld1(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LD1, op0, op1, OPN, OPN) |
| #define | i_ld1r(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LD1R, op0, op1, OPN, OPN) |
| #define | i_ld2(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LD2, op0, op1, OPN, OPN) |
| #define | i_ld3(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LD3, op0, op1, OPN, OPN) |
| #define | i_ld4(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LD4, op0, op1, OPN, OPN) |
| #define | i_ldp(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_LDP, op0, op1, op2, OPN) |
| #define | i_ldr(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LDR, op0, op1, OPN, OPN) |
| #define | i_ldrb(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LDRB, op0, op1, OPN, OPN) |
| #define | i_ldrh(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_LDRH, op0, op1, OPN, OPN) |
| #define | i_lsr(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_LSR, op0, op1, op2, OPN) |
| #define | i_mov(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_MOV, op0, op1, OPN, OPN) |
| #define | i_movi(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_MOVI, op0, op1, OPN, OPN) |
| #define | i_mul(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_MUL, op0, op1, op2, OPN) |
| #define | i_orr(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_ORR, op0, op1, op2, OPN) |
| #define | i_ret(rctx) rasm_add_insn(rctx, AARCH64_INSN_RET, OPN, OPN, OPN, OPN) |
| #define | i_rev16(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_REV16, op0, op1, OPN, OPN) |
| #define | i_rev32(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_REV32, op0, op1, OPN, OPN) |
| #define | i_shl(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_SHL, op0, op1, op2, OPN) |
| #define | i_st1(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_ST1, op0, op1, OPN, OPN) |
| #define | i_st2(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_ST2, op0, op1, OPN, OPN) |
| #define | i_st3(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_ST3, op0, op1, OPN, OPN) |
| #define | i_st4(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_ST4, op0, op1, OPN, OPN) |
| #define | i_stp(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_STP, op0, op1, op2, OPN) |
| #define | i_str(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_STR, op0, op1, OPN, OPN) |
| #define | i_sub(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_SUB, op0, op1, op2, OPN) |
| #define | i_subs(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_SUBS, op0, op1, op2, OPN) |
| #define | i_tbl(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_TBL, op0, op1, op2, OPN) |
| #define | i_ubfiz(rctx, op0, op1, op2, op3) rasm_add_insn(rctx, AARCH64_INSN_UBFIZ, op0, op1, op2, op3) |
| #define | i_ucvtf(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_UCVTF, op0, op1, OPN, OPN) |
| #define | i_umax(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_UMAX, op0, op1, op2, OPN) |
| #define | i_umin(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_UMIN, op0, op1, op2, OPN) |
| #define | i_uqxtn(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_UQXTN, op0, op1, OPN, OPN) |
| #define | i_ushl(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_USHL, op0, op1, op2, OPN) |
| #define | i_ushll(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_USHLL, op0, op1, op2, OPN) |
| #define | i_ushll2(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_USHLL2, op0, op1, op2, OPN) |
| #define | i_ushr(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_USHR, op0, op1, op2, OPN) |
| #define | i_uxtl(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_UXTL, op0, op1, OPN, OPN) |
| #define | i_uxtl2(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_UXTL2, op0, op1, OPN, OPN) |
| #define | i_xtn(rctx, op0, op1) rasm_add_insn(rctx, AARCH64_INSN_XTN, op0, op1, OPN, OPN) |
| #define | i_zip1(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_ZIP1, op0, op1, op2, OPN) |
| #define | i_zip2(rctx, op0, op1, op2) rasm_add_insn(rctx, AARCH64_INSN_ZIP2, op0, op1, op2, OPN) |
| #define | i_beq(rctx, id) i_bcond(rctx, a64cond_eq(), rasm_op_label(id)) |
| #define | i_bne(rctx, id) i_bcond(rctx, a64cond_ne(), rasm_op_label(id)) |
| #define | i_bhs(rctx, id) i_bcond(rctx, a64cond_hs(), rasm_op_label(id)) |
| #define | i_bcs(rctx, id) i_bcond(rctx, a64cond_cs(), rasm_op_label(id)) |
| #define | i_blo(rctx, id) i_bcond(rctx, a64cond_lo(), rasm_op_label(id)) |
| #define | i_bcc(rctx, id) i_bcond(rctx, a64cond_cc(), rasm_op_label(id)) |
| #define | i_bmi(rctx, id) i_bcond(rctx, a64cond_mi(), rasm_op_label(id)) |
| #define | i_bpl(rctx, id) i_bcond(rctx, a64cond_pl(), rasm_op_label(id)) |
| #define | i_bvs(rctx, id) i_bcond(rctx, a64cond_vs(), rasm_op_label(id)) |
| #define | i_bvc(rctx, id) i_bcond(rctx, a64cond_vc(), rasm_op_label(id)) |
| #define | i_bhi(rctx, id) i_bcond(rctx, a64cond_hi(), rasm_op_label(id)) |
| #define | i_bls(rctx, id) i_bcond(rctx, a64cond_ls(), rasm_op_label(id)) |
| #define | i_bge(rctx, id) i_bcond(rctx, a64cond_ge(), rasm_op_label(id)) |
| #define | i_blt(rctx, id) i_bcond(rctx, a64cond_lt(), rasm_op_label(id)) |
| #define | i_bgt(rctx, id) i_bcond(rctx, a64cond_gt(), rasm_op_label(id)) |
| #define | i_ble(rctx, id) i_bcond(rctx, a64cond_le(), rasm_op_label(id)) |
| #define | i_mov16b(rctx, op0, op1) i_mov(rctx, v_16b(op0), v_16b(op1)) |
| #define OPN rasm_op_none() |
| #define IMM | ( | val | ) | rasm_op_imm(val) |
| #define AARCH64_COND_CS AARCH64_COND_HS |
| #define AARCH64_COND_CC AARCH64_COND_LO |
| #define i_none | ( | rctx | ) | rasm_add_insn(rctx, AARCH64_INSN_NONE, OPN, OPN, OPN, OPN) |
| #define i_add | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ADD, op0, op1, op2, OPN) |
| #define i_addv | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ADDV, op0, op1, OPN, OPN) |
| #define i_adr | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ADR, op0, op1, OPN, OPN) |
| #define i_and | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_AND, op0, op1, op2, OPN) |
| #define i_b | ( | rctx, | |
| op0 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_B, op0, OPN, OPN, OPN) |
| #define i_bcond | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_BCOND, op0, op1, OPN, OPN) |
| #define i_blr | ( | rctx, | |
| op0 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_BLR, op0, OPN, OPN, OPN) |
| #define i_br | ( | rctx, | |
| op0 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_BR, op0, OPN, OPN, OPN) |
| #define i_cmp | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_CMP, op0, op1, OPN, OPN) |
| #define i_csel | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2, | |||
| op3 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_CSEL, op0, op1, op2, op3) |
| #define i_dup | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_DUP, op0, op1, OPN, OPN) |
| #define i_fadd | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_FADD, op0, op1, op2, OPN) |
| #define i_fcvtzu | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_FCVTZU, op0, op1, OPN, OPN) |
| #define i_fmax | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_FMAX, op0, op1, op2, OPN) |
| #define i_fmin | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_FMIN, op0, op1, op2, OPN) |
| #define i_fmla | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_FMLA, op0, op1, op2, OPN) |
| #define i_fmul | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_FMUL, op0, op1, op2, OPN) |
| #define i_ins | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_INS, op0, op1, OPN, OPN) |
| #define i_ld1 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LD1, op0, op1, OPN, OPN) |
| #define i_ld1r | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LD1R, op0, op1, OPN, OPN) |
| #define i_ld2 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LD2, op0, op1, OPN, OPN) |
| #define i_ld3 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LD3, op0, op1, OPN, OPN) |
| #define i_ld4 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LD4, op0, op1, OPN, OPN) |
| #define i_ldp | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LDP, op0, op1, op2, OPN) |
| #define i_ldr | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LDR, op0, op1, OPN, OPN) |
| #define i_ldrb | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LDRB, op0, op1, OPN, OPN) |
| #define i_ldrh | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LDRH, op0, op1, OPN, OPN) |
| #define i_lsr | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_LSR, op0, op1, op2, OPN) |
| #define i_mov | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_MOV, op0, op1, OPN, OPN) |
| #define i_movi | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_MOVI, op0, op1, OPN, OPN) |
| #define i_mul | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_MUL, op0, op1, op2, OPN) |
| #define i_orr | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ORR, op0, op1, op2, OPN) |
| #define i_ret | ( | rctx | ) | rasm_add_insn(rctx, AARCH64_INSN_RET, OPN, OPN, OPN, OPN) |
| #define i_rev16 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_REV16, op0, op1, OPN, OPN) |
| #define i_rev32 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_REV32, op0, op1, OPN, OPN) |
| #define i_shl | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_SHL, op0, op1, op2, OPN) |
| #define i_st1 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ST1, op0, op1, OPN, OPN) |
| #define i_st2 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ST2, op0, op1, OPN, OPN) |
| #define i_st3 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ST3, op0, op1, OPN, OPN) |
| #define i_st4 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ST4, op0, op1, OPN, OPN) |
| #define i_stp | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_STP, op0, op1, op2, OPN) |
| #define i_str | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_STR, op0, op1, OPN, OPN) |
| #define i_sub | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_SUB, op0, op1, op2, OPN) |
| #define i_subs | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_SUBS, op0, op1, op2, OPN) |
| #define i_tbl | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_TBL, op0, op1, op2, OPN) |
| #define i_ubfiz | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2, | |||
| op3 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UBFIZ, op0, op1, op2, op3) |
| #define i_ucvtf | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UCVTF, op0, op1, OPN, OPN) |
| #define i_umax | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UMAX, op0, op1, op2, OPN) |
| #define i_umin | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UMIN, op0, op1, op2, OPN) |
| #define i_uqxtn | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UQXTN, op0, op1, OPN, OPN) |
| #define i_ushl | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_USHL, op0, op1, op2, OPN) |
| #define i_ushll | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_USHLL, op0, op1, op2, OPN) |
| #define i_ushll2 | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_USHLL2, op0, op1, op2, OPN) |
| #define i_ushr | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_USHR, op0, op1, op2, OPN) |
| #define i_uxtl | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UXTL, op0, op1, OPN, OPN) |
| #define i_uxtl2 | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_UXTL2, op0, op1, OPN, OPN) |
| #define i_xtn | ( | rctx, | |
| op0, | |||
| op1 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_XTN, op0, op1, OPN, OPN) |
| #define i_zip1 | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ZIP1, op0, op1, op2, OPN) |
| #define i_zip2 | ( | rctx, | |
| op0, | |||
| op1, | |||
| op2 | |||
| ) | rasm_add_insn(rctx, AARCH64_INSN_ZIP2, op0, op1, op2, OPN) |
| #define i_beq | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_eq(), rasm_op_label(id)) |
| #define i_bne | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_ne(), rasm_op_label(id)) |
| #define i_bhs | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_hs(), rasm_op_label(id)) |
| #define i_bcs | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_cs(), rasm_op_label(id)) |
| #define i_blo | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_lo(), rasm_op_label(id)) |
| #define i_bcc | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_cc(), rasm_op_label(id)) |
| #define i_bmi | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_mi(), rasm_op_label(id)) |
| #define i_bpl | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_pl(), rasm_op_label(id)) |
| #define i_bvs | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_vs(), rasm_op_label(id)) |
| #define i_bvc | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_vc(), rasm_op_label(id)) |
| #define i_bhi | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_hi(), rasm_op_label(id)) |
| #define i_bls | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_ls(), rasm_op_label(id)) |
| #define i_bge | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_ge(), rasm_op_label(id)) |
| #define i_blt | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_lt(), rasm_op_label(id)) |
| #define i_bgt | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_gt(), rasm_op_label(id)) |
| #define i_ble | ( | rctx, | |
| id | |||
| ) | i_bcond(rctx, a64cond_le(), rasm_op_label(id)) |
| enum RasmOpType |
| enum RasmNodeType |
| enum RasmEntryType |
| enum AArch64InsnId |
| enum AArch64OpType |
|
inlinestatic |
Definition at line 50 of file rasm.h.
Referenced by a64op_cond(), a64op_make_base(), a64op_make_gpr(), a64op_make_vec(), rasm_op_imm(), rasm_op_label(), and rasm_op_none().
|
inlinestatic |
Definition at line 57 of file rasm.h.
Referenced by a64op_veclist(), print_node_insn(), and print_op().
Definition at line 86 of file rasm.h.
Referenced by print_op_imm().
|
inlinestatic |
Definition at line 95 of file rasm.h.
Referenced by asmgen_process().
|
inlinestatic |
Definition at line 102 of file rasm.h.
Referenced by print_op_label().
| RasmContext* rasm_alloc | ( | void | ) |
| void rasm_free | ( | RasmContext ** | prctx | ) |
| RasmNode* rasm_add_comment | ( | RasmContext * | rctx, |
| const char * | comment | ||
| ) |
Definition at line 117 of file rasm.c.
Referenced by asmgen_epilogue(), asmgen_op_convert(), asmgen_op_expand(), asmgen_op_unpack(), asmgen_prologue(), and rasm_add_commentf().
| RasmNode* rasm_add_commentf | ( | RasmContext * | rctx, |
| char * | s, | ||
| size_t | n, | ||
| const char * | fmt, | ||
| ... | |||
| ) |
| RasmNode RasmNode* rasm_add_label | ( | RasmContext * | rctx, |
| int | id | ||
| ) |
Definition at line 146 of file rasm.c.
Referenced by asmgen_process().
| RasmNode* rasm_add_func | ( | RasmContext * | rctx, |
| int | id, | ||
| bool | export, | ||
| bool | jumpable | ||
| ) |
Definition at line 155 of file rasm.c.
Referenced by rasm_func_begin().
| RasmNode* rasm_add_endfunc | ( | RasmContext * | rctx | ) |
Definition at line 168 of file rasm.c.
Referenced by rasm_func_begin().
| RasmNode* rasm_add_directive | ( | RasmContext * | rctx, |
| const char * | text | ||
| ) |
| RasmNode* rasm_get_current_node | ( | RasmContext * | rctx | ) |
Definition at line 194 of file rasm.c.
Referenced by asmgen_set_load_cont_node(), and linear_pass().
| RasmNode* rasm_set_current_node | ( | RasmContext * | rctx, |
| RasmNode * | node | ||
| ) |
Definition at line 199 of file rasm.c.
Referenced by asmgen_op_cps(), linear_pass(), and rasm_func_begin().
| int rasm_func_begin | ( | RasmContext * | rctx, |
| const char * | name, | ||
| bool | export, | ||
| bool | jumpable | ||
| ) |
Definition at line 209 of file rasm.c.
Referenced by asmgen_op_cps(), and asmgen_process().
| int rasm_new_label | ( | RasmContext * | rctx, |
| const char * | name | ||
| ) |
Allocate a new label ID with the given name.
| name | label name or NULL for local label |
Definition at line 282 of file rasm.c.
Referenced by asmgen_process(), rasm_func_begin(), and rasm_new_labelf().
| int rasm_new_labelf | ( | RasmContext * | rctx, |
| char * | s, | ||
| size_t | n, | ||
| const char * | fmt, | ||
| ... | |||
| ) |
| int void rasm_annotate | ( | RasmContext * | rctx, |
| const char * | comment | ||
| ) |
Definition at line 243 of file rasm.c.
Referenced by rasm_annotatef().
| void rasm_annotatef | ( | RasmContext * | rctx, |
| char * | s, | ||
| size_t | n, | ||
| const char * | fmt, | ||
| ... | |||
| ) |
| void void rasm_annotate_next | ( | RasmContext * | rctx, |
| const char * | comment | ||
| ) |
Definition at line 263 of file rasm.c.
Referenced by asmgen_op_read_bit(), asmgen_op_read_nibble(), asmgen_op_write_bit(), and rasm_annotate_nextf().
| void rasm_annotate_nextf | ( | RasmContext * | rctx, |
| char * | s, | ||
| size_t | n, | ||
| const char * | fmt, | ||
| ... | |||
| ) |
| void int rasm_print | ( | RasmContext * | rctx, |
| FILE * | fp | ||
| ) |
Definition at line 432 of file rasm_print.c.
Referenced by asmgen().
|
inlinestatic |
Definition at line 342 of file rasm.h.
Referenced by a64op_gpw(), a64op_gpx(), a64op_lr(), and a64op_sp().
|
inlinestatic |
Definition at line 350 of file rasm.h.
Referenced by a64op_base(), a64op_off(), a64op_post(), a64op_pre(), a64op_w(), a64op_x(), clobber_gpr(), and print_op_gpr().
|
inlinestatic |
Definition at line 351 of file rasm.h.
Referenced by print_op_gpr().
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Definition at line 355 of file rasm.h.
Referenced by clobbered_gprs().
|
inlinestatic |
Definition at line 356 of file rasm.h.
Referenced by asmgen_epilogue(), and asmgen_prologue().
Definition at line 359 of file rasm.h.
Referenced by asmgen_op_dither(), asmgen_op_read_bit(), and asmgen_op_unpack().
Definition at line 360 of file rasm.h.
Referenced by asmgen_op_dither().
|
inlinestatic |
Definition at line 365 of file rasm.h.
Referenced by a64op_vec(), a64op_vec16b(), a64op_vec2d(), a64op_vec2s(), a64op_vec4h(), a64op_vec4s(), a64op_vec8b(), a64op_vec8h(), a64op_vecb(), a64op_vecd(), a64op_vech(), a64op_vecq(), a64op_vecs(), and reshape_all_vectors().
|
inlinestatic |
|
inlinestatic |
Definition at line 377 of file rasm.h.
Referenced by print_op_vec().
|
inlinestatic |
Definition at line 378 of file rasm.h.
Referenced by print_op_vec().
|
inlinestatic |
Definition at line 379 of file rasm.h.
Referenced by print_op_vec().
|
inlinestatic |
Definition at line 380 of file rasm.h.
Referenced by print_op_vec().
|
inlinestatic |
Definition at line 383 of file rasm.h.
Referenced by a64op_vec_views(), and v_b().
|
inlinestatic |
Definition at line 384 of file rasm.h.
Referenced by a64op_vec_views(), and v_h().
|
inlinestatic |
Definition at line 385 of file rasm.h.
Referenced by a64op_vec_views(), and v_s().
|
inlinestatic |
Definition at line 386 of file rasm.h.
Referenced by a64op_vec_views(), and v_d().
|
inlinestatic |
Definition at line 387 of file rasm.h.
Referenced by a64op_vec_views(), and v_q().
|
inlinestatic |
Definition at line 388 of file rasm.h.
Referenced by a64op_vec_views(), and v_8b().
|
inlinestatic |
Definition at line 389 of file rasm.h.
Referenced by a64op_vec_views(), and v_16b().
|
inlinestatic |
Definition at line 390 of file rasm.h.
Referenced by a64op_vec_views(), and v_4h().
|
inlinestatic |
Definition at line 391 of file rasm.h.
Referenced by a64op_vec_views(), and v_8h().
|
inlinestatic |
Definition at line 392 of file rasm.h.
Referenced by a64op_vec_views(), and v_2s().
|
inlinestatic |
Definition at line 393 of file rasm.h.
Referenced by a64op_vec_views(), and v_4s().
|
inlinestatic |
Definition at line 394 of file rasm.h.
Referenced by a64op_vec_views(), and v_2d().
Definition at line 421 of file rasm.h.
Referenced by a64op_vec_views(), asmgen_op_clear(), asmgen_op_max(), asmgen_op_min(), and linear_pass().
Definition at line 429 of file rasm.h.
Referenced by optimize_colors().
Definition at line 430 of file rasm.h.
Referenced by planar_rgb_to_uv_lasx(), yuv2rgb_full_1_template_lasx(), yuv2rgb_full_1_template_lsx(), yuv2rgb_full_2_template_lasx(), and yuv2rgb_full_2_template_lsx().
Definition at line 433 of file rasm.h.
Referenced by asmgen_op_clear(), asmgen_op_dither(), asmgen_op_max(), and asmgen_op_min().
Definition at line 436 of file rasm.h.
Referenced by asmgen_op_read_nibble().
Definition at line 445 of file rasm.h.
Referenced by asmgen_op_linear(), and asmgen_op_scale().
Definition at line 446 of file rasm.h.
Referenced by asmgen_op_linear(), asmgen_op_read_packed_n(), and asmgen_op_write_packed_n().
Definition at line 447 of file rasm.h.
Referenced by asmgen_op_linear(), asmgen_op_read_packed_n(), and asmgen_op_write_packed_n().
Definition at line 448 of file rasm.h.
Referenced by asmgen_op_linear(), asmgen_op_read_packed_n(), and asmgen_op_write_packed_n().
| void a64op_vec_views | ( | RasmOp | op, |
| AArch64VecViews * | out | ||
| ) |
Definition at line 330 of file rasm.c.
Referenced by asmgen_op_convert(), asmgen_op_read_bit(), asmgen_op_read_nibble(), asmgen_op_read_packed_1(), asmgen_op_read_planar(), asmgen_op_swap_bytes(), asmgen_op_write_bit(), asmgen_op_write_nibble(), asmgen_op_write_packed_1(), and asmgen_op_write_planar().
|
inlinestatic |
Definition at line 485 of file rasm.h.
Referenced by a64op_base(), a64op_off(), a64op_post(), and a64op_pre().
|
inlinestatic |
Definition at line 494 of file rasm.h.
Referenced by print_op_base().
|
inlinestatic |
Definition at line 495 of file rasm.h.
Referenced by print_op_base().
|
inlinestatic |
Definition at line 496 of file rasm.h.
Referenced by print_op_base().
Definition at line 498 of file rasm.h.
Referenced by asmgen_op_dither(), asmgen_op_linear(), and asmgen_op_scale().
Definition at line 499 of file rasm.h.
Referenced by asmgen_epilogue(), asmgen_op_clear(), asmgen_op_dither(), asmgen_op_linear(), asmgen_op_max(), asmgen_op_min(), asmgen_op_read_bit(), asmgen_op_write_bit(), asmgen_process(), and asmgen_prologue().
Definition at line 500 of file rasm.h.
Referenced by asmgen_prologue().
Definition at line 501 of file rasm.h.
Referenced by asmgen_epilogue(), asmgen_op_cps(), asmgen_op_read_bit(), asmgen_op_read_nibble(), asmgen_op_read_packed_1(), asmgen_op_read_packed_n(), asmgen_op_read_planar(), asmgen_op_write_bit(), asmgen_op_write_nibble(), asmgen_op_write_packed_1(), asmgen_op_write_packed_n(), and asmgen_op_write_planar().
|
inlinestatic |
Definition at line 506 of file rasm.h.
Referenced by a64cond_al(), a64cond_cc(), a64cond_cs(), a64cond_eq(), a64cond_ge(), a64cond_gt(), a64cond_hi(), a64cond_hs(), a64cond_le(), a64cond_lo(), a64cond_ls(), a64cond_lt(), a64cond_mi(), a64cond_ne(), a64cond_nv(), a64cond_pl(), a64cond_vc(), and a64cond_vs().
|
inlinestatic |
Definition at line 513 of file rasm.h.
Referenced by print_node_insn(), and print_op_cond().
1.8.17