OSDN Git Service

Disable remaining conditional move patterns.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 May 1998 19:32:12 +0000 (19:32 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 May 1998 19:32:12 +0000 (19:32 +0000)
* i386.md (movsicc, movhicc, movsicc_1, movhicc_1, movsfcc_1,
movdfcc_1): Disable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19621 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.md

index 35992e1..edb021d 100644 (file)
@@ -1,3 +1,8 @@
+Thu May  7 19:26:34 1998  Jim Wilson  <wilson@cygnus.com>
+
+       * i386.md (movsicc, movhicc, movsicc_1, movhicc_1, movsfcc_1,
+       movdfcc_1): Disable.
+
 Thu May  7 15:39:14 1998  Jim Wilson  <wilson@cygnus.com>
 
        * configure.in (enable_threads): Rename to enable_threads_flag before
index 7fe22aa..8baeddc 100644 (file)
@@ -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)