aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2015-06-22 15:54:58 +0200
committerUros Bizjak <uros@gcc.gnu.org>2015-06-22 15:54:58 +0200
commit1ea0e674b0a0ec75772a74783ad0d21454cd5d86 (patch)
tree0294df52dbc5b8fa09835d831ac7134df532946e /gcc
parent8f77aa9086f8172d87abf955a95bfbfb87440a26 (diff)
downloadgcc-1ea0e674b0a0ec75772a74783ad0d21454cd5d86.zip
gcc-1ea0e674b0a0ec75772a74783ad0d21454cd5d86.tar.gz
gcc-1ea0e674b0a0ec75772a74783ad0d21454cd5d86.tar.bz2
re PR target/65871 (bzhi builtin/intrinsic wrongly assumes bzhi instruction doesn't set the ZF flag)
PR target/65871 * config/i386/i386.c (ix86_rtx_costs) <case COMPARE>: Ignore the cost of embedded comparison. From-SVN: r224729
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9bfaa22..6ca98cf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-06-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/65871
+ * config/i386/i386.c (ix86_rtx_costs) <case COMPARE>: Ignore the
+ cost of embedded comparison.
+
2015-06-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/65914
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 24fccfc..2df91c4 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -42531,6 +42531,12 @@ ix86_rtx_costs (rtx x, int code_i, int outer_code_i, int opno, int *total,
+ rtx_cost (const1_rtx, outer_code, opno, speed));
return true;
}
+
+ /* The embedded comparison operand is completely free. */
+ if (!general_operand (XEXP (x, 0), GET_MODE (XEXP (x, 0)))
+ && XEXP (x, 1) == const0_rtx)
+ *total = 0;
+
return false;
case FLOAT_EXTEND: