Go to file
Craig Topper a55b483bb5 [AVX-512] Correctly preserve the passthru semantics of the FMA scalar intrinsics
Summary:
Scalar intrinsics have specific semantics about the which input's upper bits are passed through to the output. The same input is also supposed to be the input we use for the lower element when the mask bit is 0 in a masked operation. We aren't currently keeping these semantics with instruction selection.

This patch corrects this by introducing new scalar FMA ISD nodes that indicate whether operand 1(one of the multiply inputs) or operand 3(the additon/subtraction input) should pass thru its upper bits.

We use this information to select 213/132 form for the operand 1 version and the 231 form for the operand 3 version.

We also use this information to suppress combining FNEG operations on the passthru input since semantically the passthru bits aren't negated. This is stronger than the earlier check added for a user being SELECTS so we can remove that.

This fixes PR30913.

Reviewers: delena, zvi, v_klochkov

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D27144

llvm-svn: 289190
2016-12-09 06:42:28 +00:00
clang [Headers] Add #include_next for tgmath.h on Darwin 2016-12-09 03:30:46 +00:00
clang-tools-extra [change-namespace] always add a '::' prefix when a symbol reference needs to be fully-qualified. 2016-12-07 20:08:02 +00:00
compiler-rt Reverting rL289088 while investigating some test issue on the build servers 2016-12-09 03:28:12 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Fix build since r286752. 2016-11-14 16:06:33 +00:00
libcxx fix misspelling in .clang-format 2016-12-09 03:18:45 +00:00
libcxxabi [libc++abi] Add _LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS 2016-12-05 19:42:11 +00:00
libunwind EHABI: mark some functions as exported 2016-11-17 23:53:35 +00:00
lld Add type records to TPI stream. 2016-12-09 04:46:54 +00:00
lldb Remove some more uses of Args::GetArgumentAtIndex. 2016-12-09 05:46:41 +00:00
llgo [llgo] Remove support for LLVM attributes 2016-12-06 19:22:04 +00:00
llvm [AVX-512] Correctly preserve the passthru semantics of the FMA scalar intrinsics 2016-12-09 06:42:28 +00:00
openmp Support of mips & mips64 for openmprtl 2016-12-08 09:22:24 +00:00
parallel-libs [Acxxel] Remove setActiveDeviceForThread 2016-10-28 00:54:02 +00:00
polly Add unittests for foreach(Elt|Piece). NFC. 2016-12-07 17:48:02 +00:00