/* Conditional move define_insns. */
+;; These are all disabled, because they are buggy. They are all susceptible
+;; to problems with input reloads clobbering the condition code registers.
+;; It appears the only safe way to write a integer/FP conditional move pattern
+;; is to write one which emits both the compare and the cmov, and which can be
+;; split only after reload.
+
(define_expand "movsicc"
[(match_dup 4)
(parallel [(set (match_operand 0 "register_operand" "")
(match_operand:SI 2 "general_operand" "")
(match_operand:SI 3 "general_operand" "")))
(clobber (match_scratch:SI 4 "=&r"))])]
- "TARGET_CMOVE"
+ "0 && TARGET_CMOVE"
"
{
operands[4] = i386_compare_gen (i386_compare_op0, i386_compare_op1);
(match_operand:HI 2 "general_operand" "")
(match_operand:HI 3 "general_operand" "")))
(clobber (match_scratch:SI 4 "=&r"))])]
- "TARGET_CMOVE"
+ "0 && TARGET_CMOVE"
"
{
operands[4] = i386_compare_gen (i386_compare_op0, i386_compare_op1);
(match_operand:SI 2 "general_operand" "rm,0,rm,g")
(match_operand:SI 3 "general_operand" "0,rm,rm,g")))
(clobber (match_scratch:SI 4 "X,X,X,=&r"))]
- "TARGET_CMOVE"
+ "0 && TARGET_CMOVE"
"*
{
if (which_alternative == 0)
(match_operand:HI 2 "general_operand" "rm,0,rm,g")
(match_operand:HI 3 "general_operand" "0,rm,rm,g")))
(clobber (match_scratch:SI 4 "X,X,X,=&r"))]
- "TARGET_CMOVE"
+ "0 && TARGET_CMOVE"
"*
{
if (which_alternative == 0)
[(cc0) (const_int 0)])
(match_operand:SF 2 "register_operand" "0,f,f")
(match_operand:SF 3 "register_operand" "f,0,f")))]
- "TARGET_CMOVE"
+ "0 && TARGET_CMOVE"
"*
{
switch (which_alternative)
[(cc0) (const_int 0)])
(match_operand:DF 2 "register_operand" "0,f,f")
(match_operand:DF 3 "register_operand" "f,0,f")))]
- "TARGET_CMOVE"
+ "0 && TARGET_CMOVE"
"*
{
switch (which_alternative)