GCC Middle and Back End API Reference
|
Public Member Functions | |
generator (const md_rtx_info &info) | |
void | add_uint (uint64_t) |
void | add_opcode (expand_opcode opcode) |
void | add_code (rtx_code code) |
void | add_match_operator (machine_mode, int, rtvec) |
void | add_exp (rtx) |
void | add_vec (rtvec) |
const char * | gen_table (FILE *, const char *) |
const char * | gen_exp (FILE *, rtx) |
const char * | gen_emit_seq (FILE *, rtvec) |
Data Fields | |
const md_rtx_info | info |
auto_vec< uint8_t > | bytes |
A structure used to generate code for a particular expansion.
|
inline |
References info.
|
inline |
References add_uint(), and FIRST_CODE.
Referenced by add_exp().
void generator::add_exp | ( | rtx | x | ) |
Add the expansion of X to the encoding.
References add_code(), add_exp(), add_match_operator(), add_opcode(), add_uint(), add_vec(), always_void_p(), CLOBBER_REG, CONST_DOUBLE_REAL_VALUE, fatal_at(), gcc_unreachable, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, GET_RTX_NAME, i, info, MATCH_OPERAND, MATCH_OPERATOR, MATCH_PARALLEL, NO_RTX, REG_P, REGNO, rvc_zero, SUBREG_BYTE, UINTVAL, XEXP, XINT, XUINT, and XVEC.
Referenced by add_exp(), add_match_operator(), add_vec(), and gen_exp().
void generator::add_match_operator | ( | machine_mode | mode, |
int | opno, | ||
rtvec | vec ) |
Add the rtx expansion of a MATCH_OPERATOR or MATCH_OP_DUP. OPNO is the number of the matched operand. MODE is the mode that the rtx should have, or NUM_MACHINE_MODES if the operand's original mode should be retained. VEC is the vector of suboperands, which replace those of the original operand.
References add_exp(), add_opcode(), add_uint(), GET_NUM_ELEM, i, MATCH_OPERATOR, MATCH_OPERATOR_WITH_MODE, and RTVEC_ELT.
Referenced by add_exp().
|
inline |
References add_uint().
Referenced by add_exp(), and add_match_operator().
void generator::add_uint | ( | uint64_t | value | ) |
Add VALUE to the encoding using "BEB128" (big-endian version of LEB128). This is slightly easier for the consumer.
References bytes, shift, and value.
Referenced by add_code(), add_exp(), add_match_operator(), add_opcode(), and add_vec().
void generator::add_vec | ( | rtvec | vec | ) |
Add the expansion of rtx vector VEC to the encoding.
References add_exp(), add_uint(), GET_NUM_ELEM, i, and RTVEC_ELT.
Referenced by add_exp(), and gen_emit_seq().
const char * generator::gen_emit_seq | ( | FILE * | file, |
rtvec | vec ) |
Output the code necessary for emitting each element of VEC as a separate instruction. Return the name of the C++ array that contains the encoding.
References add_vec(), and gen_table().
Referenced by gen_expand(), and gen_split().
const char * generator::gen_exp | ( | FILE * | file, |
rtx | x ) |
Output the code necessary for generating rtx X and return the name of the C++ array that contains the encoding.
References add_exp(), and gen_table().
Referenced by gen_expand(), and gen_insn().
const char * generator::gen_table | ( | FILE * | file, |
const char * | name ) |
Emit the encoding as a static C++ array called NAME. Return NAME.
Referenced by gen_emit_seq(), and gen_exp().
auto_vec<uint8_t> generator::bytes |
Referenced by add_uint(), and gen_table().
const md_rtx_info generator::info |
Referenced by add_exp(), and generator().