- if (settings.enabled_ops & ARCH_OPS_MINMAX) {
- ir_node *oldn = n, *cmp, *proj = get_Mux_sel(n);
- long proj_nr;
-
- if (get_irn_op(proj) != op_Proj)
- return n;
-
- cmp = get_Proj_pred(proj);
- if (get_irn_op(cmp) == op_Cmp) {
- ir_node *a = get_Cmp_left(cmp);
- ir_node *b = get_Cmp_right(cmp);
- ir_node *t = get_Mux_true(n);
- ir_node *f = get_Mux_false(n);
-
- proj_nr = get_Proj_proj(proj);
-
- if (proj_nr == pn_Cmp_Lt || proj_nr == pn_Cmp_Le) {
- if (a == t && b == f) {
- /* a </<= b ? a : b ==> Min(a,b) */
- n = new_rd_Min(get_irn_dbg_info(n),
- current_ir_graph,
- get_nodes_block(n),
- a, b,
- get_irn_mode(n));
-
- DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MIN);
- return n;
- }
- else if (a == f && b == t) {
- /* a </<= b ? b : a ==> Max(a,b) */
- n = new_rd_Max(get_irn_dbg_info(n),
- current_ir_graph,
- get_nodes_block(n),
- a, b,
- get_irn_mode(n));
-
- DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MAX);
- return n;
- }
- }
- else if (proj_nr == pn_Cmp_Gt || proj_nr == pn_Cmp_Ge) {
- if (a == t && b == f) {
- /* a >/>= b ? a : b ==> Max(a,b) */
- n = new_rd_Max(get_irn_dbg_info(n),
- current_ir_graph,
- get_nodes_block(n),
- a, b,
- get_irn_mode(n));
-
- DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MAX);
- return n;
- }
- else if (a == f && b == t) {
- /* a >/>= b ? b : a ==> Min(a,b) */
- n = new_rd_Min(get_irn_dbg_info(n),
- current_ir_graph,
- get_nodes_block(n),
- a, b,
- get_irn_mode(n));
-
- DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MIN);
- return n;
- }
- }
- }
- }
- return n;
+ if (settings.enabled_ops & ARCH_OPS_MINMAX) {
+ ir_node *oldn = n, *cmp, *proj = get_Mux_sel(n);
+ long proj_nr;
+
+ if (get_irn_op(proj) != op_Proj)
+ return n;
+
+ cmp = get_Proj_pred(proj);
+ if (is_Cmp(cmp)) {
+ ir_node *a = get_Cmp_left(cmp);
+ ir_node *b = get_Cmp_right(cmp);
+ ir_node *t = get_Mux_true(n);
+ ir_node *f = get_Mux_false(n);
+
+ proj_nr = get_Proj_proj(proj);
+
+ if (proj_nr == pn_Cmp_Lt || proj_nr == pn_Cmp_Le) {
+ if (a == t && b == f) {
+ /* a </<= b ? a : b ==> Min(a,b) */
+ n = new_rd_Min(get_irn_dbg_info(n),
+ current_ir_graph,
+ get_nodes_block(n),
+ a, b,
+ get_irn_mode(n));
+
+ DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MIN);
+ return n;
+ }
+ else if (a == f && b == t) {
+ /* a </<= b ? b : a ==> Max(a,b) */
+ n = new_rd_Max(get_irn_dbg_info(n),
+ current_ir_graph,
+ get_nodes_block(n),
+ a, b,
+ get_irn_mode(n));
+
+ DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MAX);
+ return n;
+ }
+ }
+ else if (proj_nr == pn_Cmp_Gt || proj_nr == pn_Cmp_Ge) {
+ if (a == t && b == f) {
+ /* a >/>= b ? a : b ==> Max(a,b) */
+ n = new_rd_Max(get_irn_dbg_info(n),
+ current_ir_graph,
+ get_nodes_block(n),
+ a, b,
+ get_irn_mode(n));
+
+ DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MAX);
+ return n;
+ }
+ else if (a == f && b == t) {
+ /* a >/>= b ? b : a ==> Min(a,b) */
+ n = new_rd_Min(get_irn_dbg_info(n),
+ current_ir_graph,
+ get_nodes_block(n),
+ a, b,
+ get_irn_mode(n));
+
+ DBG_OPT_ALGSIM1(oldn, cmp, proj, n, FS_OPT_MUX_TO_MIN);
+ return n;
+ }
+ }
+ }
+ }
+ return n;