static const arch_dep_params_t default_params = {
- 1, /* also use subs */
- 0, /* allow Mulhs */
- 0, /* allow Mulus */
- 4, /* maximum shifts */
- 31 /* maximum shift amount */
+ 1, /* also use subs */
+ 4, /* maximum shifts */
+ 31, /* maximum shift amount */
+
+ 0, /* allow Mulhs */
+ 0, /* allow Mulus */
+ 32 /* Mulh allowed up to 32 bit */
};
const arch_dep_params_t *arch_dep_default_factory(void) {
* optimizations.
*/
typedef struct {
- int also_use_subs : 1; /**< Use also Subs when resolving muls to shifts */
- int allow_mulhs : 1; /**< Use the Mulhs operation for division by constant */
- int allow_mulhu : 1; /**< Use the Mulhu operation for division by constant */
+ /* Mul optimization */
+ int also_use_subs : 1; /**< Use also Subs when resolving muls to shifts */
+ int maximum_shifts; /**< The maximum number of shifts that shall be inserted for a mul. */
+ unsigned highest_shift_amount; /**< The highest shift amount you want to
+ tolerate. Muls which would require a higher
+ shift constant are left. */
- int maximum_shifts; /**< The maximum number of shifts that shall be
- inserted for a mul. */
-
- int highest_shift_amount; /**< The highest shift amount you want to
- tolerate. Muls which would require a higher
- shift constant are left. */
+ /* Div/Mod optimization */
+ int allow_mulhs : 1; /**< Use the Mulhs operation for division by constant */
+ int allow_mulhu : 1; /**< Use the Mulhu operation for division by constant */
+ unsigned max_bits_for_mulh; /**< Maximum number of bits the Mulh operation can take.
+ Modes with higher amount of bits will use Mulh */
} arch_dep_params_t;
/**