aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/x86-tune.def
diff options
context:
space:
mode:
authorHongyu Wang <hongyu.wang@intel.com>2019-12-17 01:50:35 +0000
committerHongtao Liu <liuhongt@gcc.gnu.org>2019-12-17 01:50:35 +0000
commitda86c5af207cb04869108aa79b2d0117752e291a (patch)
tree3f900a6d3da0a393f0158d04091da841c165eaa6 /gcc/config/i386/x86-tune.def
parent62dd2904f05ee752bbeff43a196b90ecd7b94616 (diff)
downloadgcc-da86c5af207cb04869108aa79b2d0117752e291a.zip
gcc-da86c5af207cb04869108aa79b2d0117752e291a.tar.gz
gcc-da86c5af207cb04869108aa79b2d0117752e291a.tar.bz2
Add abs pattern to handle {si,di} mode abs to avoid pmax/cmove conversion.
2019-12-17 Hongyu Wang <hongyu.wang@intel.com> gcc/ PR target/92651 * config/i386/i386.h (TARGET_EXPAND_ABS): New macro. * config/i386/x86-tune.def (X86_TUNE_EXPAND_ABS): New. * config/i386/i386.md (abs<SWI48x>2): New define_expand. gcc/testsuite * gcc.target/i386/pr92651.c: New testcase. From-SVN: r279452
Diffstat (limited to 'gcc/config/i386/x86-tune.def')
-rw-r--r--gcc/config/i386/x86-tune.def7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
index 328535d..58a81e5 100644
--- a/gcc/config/i386/x86-tune.def
+++ b/gcc/config/i386/x86-tune.def
@@ -317,6 +317,13 @@ DEF_TUNE (X86_TUNE_ONE_IF_CONV_INSN, "one_if_conv_insn",
DEF_TUNE (X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE, "use_xchg_for_atomic_store",
m_CORE_ALL | m_BDVER | m_ZNVER | m_GENERIC)
+/* X86_TUNE_EXPAND_ABS: This enables a new abs pattern by
+ generating instructions for abs (x) = (((signed) x >> (W-1) ^ x) -
+ (signed) x >> (W-1)) instead of cmove or SSE max/abs instructions. */
+DEF_TUNE (X86_TUNE_EXPAND_ABS, "expand_abs",
+ m_CORE_ALL | m_SILVERMONT | m_KNL | m_KNM | m_GOLDMONT
+ | m_GOLDMONT_PLUS | m_TREMONT )
+
/*****************************************************************************/
/* 387 instruction selection tuning */
/*****************************************************************************/