we can safely IGNORE the should_be_different constraint, iff
we have only one, one should be same and both inputs are identical, for instance in
sbb(x,x)
[r19702]
const unsigned other = req->other_different;
int i;
const unsigned other = req->other_different;
int i;
+ if (arch_register_req_is(req, should_be_same)) {
+ const unsigned same = req->other_same;
+
+ if (is_po2(other) && is_po2(same)) {
+ int idx_other = ntz(other);
+ int idx_same = ntz(same);
+
+ /*
+ * We can safely ignore a should_be_same x should_be_different y
+ * IFF both nodes are equal!
+ */
+ if (get_irn_n(irn, idx_other) == get_irn_n(irn, idx_same)) {
+ return;
+ }
+ }
+ }
for (i = 0; 1U << i <= other; ++i) {
if (other & (1U << i)) {
ir_node *different_from = get_irn_n(belower_skip_proj(irn), i);
for (i = 0; 1U << i <= other; ++i) {
if (other & (1U << i)) {
ir_node *different_from = get_irn_n(belower_skip_proj(irn), i);