+ case ia32_am_unary:
+ return i == n_ia32_unary_op;
+
+ case ia32_am_binary:
+ switch (i) {
+ case n_ia32_binary_left: {
+ const arch_register_req_t *req;
+ if (!is_ia32_commutative(irn))
+ return 0;
+
+ /* we can't swap left/right for limited registers
+ * (As this (currently) breaks constraint handling copies)
+ */
+ req = get_ia32_in_req(irn, n_ia32_binary_left);
+ if (req->type & arch_register_req_type_limited)
+ return 0;
+
+ return 1;
+ }
+
+ case n_ia32_binary_right:
+ return 1;
+
+ default:
+ return 0;
+ }
+
+ default:
+ panic("Unknown AM type");
+ }