Commit 65794112 authored by Michael Beck's avatar Michael Beck
Browse files

Allow to restrict the construction of Mulh nodes by the bit size.

Needed to avoid Mulh dor L(s|u) modes

[r4431]
parent 3da9268a
......@@ -883,11 +883,13 @@ void arch_dep_replace_divmod_by_const(ir_node **div, ir_node **mod, ir_node *irn
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) {
......
......@@ -17,16 +17,18 @@
* 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;
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment