aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@freesoft.cz>1999-04-13 16:15:46 +0200
committerRichard Henderson <rth@gcc.gnu.org>1999-04-13 07:15:46 -0700
commit0ffc4dca8ed0e0305a3499164dd8b1913d6aa48e (patch)
tree48c638714cff6d9580d84b2e4ddee8ba60812d65
parentb81194219bfbe82e3a10f9aea2a93affb160642f (diff)
downloadgcc-0ffc4dca8ed0e0305a3499164dd8b1913d6aa48e.zip
gcc-0ffc4dca8ed0e0305a3499164dd8b1913d6aa48e.tar.gz
gcc-0ffc4dca8ed0e0305a3499164dd8b1913d6aa48e.tar.bz2
Jan Hubicka <hubicka@freesoft.cz>
Jan Hubicka <hubicka@freesoft.cz> * i386.md: Do not output mov %0,reg on AMD K6. From-SVN: r26406
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/i386/i386.md18
2 files changed, 18 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ee6ed83..9cdc3f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Tue Apr 13 14:14:06 1999 Jan Hubicka <hubicka@freesoft.cz>
+
+ * i386.md: Do not output mov %0,reg on AMD K6.
+
Tue Apr 13 12:14:07 1999 Dave Brolley <brolley@cygnus.com>
* cppinit.c (cpp_start_read): Fix buffer overwrite.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 8eade3e..7e143ac 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -983,8 +983,13 @@
"*
{
rtx link;
- if ((ix86_cpu != PROCESSOR_K6 || optimize_size)
- && operands[1] == const0_rtx && REG_P (operands[0]))
+
+ /* Use of xor was disabled for AMD K6 as recommended by the Optimization
+ Manual. My test shows, that this generally hurts the performance, because
+ mov is longer and takes longer to decode and decoding is the main
+ bottleneck of K6 when executing GCC code. */
+
+ if (operands[1] == const0_rtx && REG_P (operands[0]))
return AS2 (xor%L0,%0,%0);
if (operands[1] == const1_rtx
@@ -1111,8 +1116,13 @@
"*
{
rtx link;
- if ((ix86_cpu != PROCESSOR_K6 || optimize_size)
- && operands[1] == const0_rtx && REG_P (operands[0]))
+
+ /* Use of xor was disabled for AMD K6 as recommended by the Optimization
+ Manual. My test shows, that this generally hurts the performance, because
+ mov is longer and takes longer to decode and decoding is the main
+ bottleneck of K6 when executing GCC code. */
+
+ if (operands[1] == const0_rtx && REG_P (operands[0]))
return AS2 (xor%W0,%0,%0);
if (operands[1] == const1_rtx