+ case SET:
+ walk_insn_part (SET_DEST (part), 0, recog_p);
+ walk_insn_part (SET_SRC (part), recog_p,
+ GET_CODE (SET_DEST (part)) != PC);
+ return;
+
+ case IF_THEN_ELSE:
+ /* Only consider this machine as having a conditional move if the
+ two arms of the IF_THEN_ELSE are both MATCH_OPERAND. Otherwise,
+ we have some specific IF_THEN_ELSE construct (like the doz
+ instruction on the RS/6000) that can't be used in the general
+ context we want it for. */
+
+ if (recog_p && non_pc_set_src
+ && GET_CODE (XEXP (part, 1)) == MATCH_OPERAND
+ && GET_CODE (XEXP (part, 2)) == MATCH_OPERAND)
+ have_cmove_flag = 1;
+ break;
+
+ case COND_EXEC:
+ if (recog_p)
+ have_cond_exec_flag = 1;
+ break;
+