aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>1998-05-07 19:32:12 +0000
committerJim Wilson <wilson@gcc.gnu.org>1998-05-07 12:32:12 -0700
commit02e562027411e550d6df7b3d995d2235e0b0c98a (patch)
treec4ebf2386a64fde1c453fc60bb8d02a2fda412bd /gcc
parente445171e7c2f919578652f2755e9edab8201c4df (diff)
downloadgcc-02e562027411e550d6df7b3d995d2235e0b0c98a.zip
gcc-02e562027411e550d6df7b3d995d2235e0b0c98a.tar.gz
gcc-02e562027411e550d6df7b3d995d2235e0b0c98a.tar.bz2
Disable remaining conditional move patterns.
* i386.md (movsicc, movhicc, movsicc_1, movhicc_1, movsfcc_1, movdfcc_1): Disable. From-SVN: r19621
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.md18
2 files changed, 17 insertions, 6 deletions
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 <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
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)