From: Jim Wilson Date: Thu, 7 May 1998 19:32:12 +0000 (+0000) Subject: Disable remaining conditional move patterns. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=02e562027411e550d6df7b3d995d2235e0b0c98a;p=platform%2Fupstream%2Fgcc.git Disable remaining conditional move patterns. * i386.md (movsicc, movhicc, movsicc_1, movhicc_1, movsfcc_1, movdfcc_1): Disable. From-SVN: r19621 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35992e1..edb021d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu May 7 19:26:34 1998 Jim Wilson + + * i386.md (movsicc, movhicc, movsicc_1, movhicc_1, movsfcc_1, + movdfcc_1): Disable. + Thu May 7 15:39:14 1998 Jim Wilson * configure.in (enable_threads): Rename to enable_threads_flag before diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7fe22aa..8baeddc 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -7225,6 +7225,12 @@ byte_xor_operation: /* 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" "") @@ -7232,7 +7238,7 @@ byte_xor_operation: (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); @@ -7245,7 +7251,7 @@ byte_xor_operation: (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); @@ -7258,7 +7264,7 @@ byte_xor_operation: (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) @@ -7319,7 +7325,7 @@ byte_xor_operation: (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) @@ -7418,7 +7424,7 @@ byte_xor_operation: [(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) @@ -7449,7 +7455,7 @@ byte_xor_operation: [(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)