|
GCC Middle and Back End API Reference
|
#include <cfgloop.h>
Data Fields | |
| rtx | base |
| rtx | step |
| enum iv_extend_code | extend |
| rtx | delta |
| rtx | mult |
| enum machine_mode | extend_mode |
| enum machine_mode | mode |
| unsigned | first_special: 1 |
Induction variable analysis.
The description of induction variable. The things are a bit complicated
due to need to handle subregs and extends. The value of the object described
by it can be obtained as follows (all computations are done in extend_mode):
Value in i-th iteration is
delta + mult * extend_{extend_mode} (subreg_{mode} (base + i * step)).
If first_special is true, the value in the first iteration is
delta + mult * base
If extend = UNKNOWN, first_special must be false, delta 0, mult 1 and value is
subreg_{mode} (base + i * step)
The get_iv_value function can be used to obtain these expressions.
??? Add a third mode field that would specify the mode in that inner
computation is done, which would enable it to be different from the
outer one? | rtx rtx_iv::base |
| rtx rtx_iv::delta |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_add(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_mult(), iv_neg(), iv_number_of_iterations(), iv_shift(), and iv_subreg().
| enum iv_extend_code rtx_iv::extend |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_add(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_mult(), iv_neg(), iv_shift(), iv_subreg(), and shorten_into_mode().
| enum machine_mode rtx_iv::extend_mode |
| unsigned rtx_iv::first_special |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_subreg(), and may_unswitch_on().
| enum machine_mode rtx_iv::mode |
Referenced by analyze_iv_to_split_insn(), canon_condition(), canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), implies_p(), iv_add(), iv_analyze_biv(), iv_analyze_def(), iv_analyze_expr(), iv_constant(), iv_extend(), iv_number_of_iterations(), iv_subreg(), may_unswitch_on(), and shorten_into_mode().
| rtx rtx_iv::mult |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_mult(), iv_neg(), iv_shift(), and iv_subreg().
| rtx rtx_iv::step |