llvm-project/llvm/test/CodeGen
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
..
AArch64 GlobalISel: fall back gracefully for debug intrinsics. 2016-12-08 22:44:13 +00:00
AMDGPU AMDGPU: Select i16 instructions to VOP3 forms 2016-12-09 06:19:12 +00:00
ARM Summary: Currently there is no way to disable deprecated warning from asm like this 2016-12-05 23:55:13 +00:00
AVR [AVR] Add MIR tests for pseudo instruction expansions 2016-12-08 10:52:13 +00:00
BPF [bpf] attempt to fix big-endian bots 2016-11-21 07:26:23 +00:00
Generic Add -O0 support for @llvm.invariant.group.barrier by discarding it if it gets to ISel. 2016-11-07 16:47:20 +00:00
Hexagon [Hexagon] Remove unsafe load instructions that affect Stack Slot Coloring 2016-11-14 17:11:00 +00:00
Inputs
Lanai [lanai] Custom lowering of SHL_PARTS 2016-12-02 22:01:28 +00:00
MIR AMDGPU: Refactor exp instructions 2016-12-05 20:23:10 +00:00
MSP430 [CodeGen] Fix result type for SMULO/UMULO legalization 2016-12-06 22:49:36 +00:00
Mips [mips] Change gnueabi to gnu in the triple because EABI has been removed recently. NFC 2016-12-08 22:10:44 +00:00
NVPTX [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
PowerPC [PowerPC] Improvements for BUILD_VECTOR Vol. 4 2016-12-06 11:47:14 +00:00
SPARC ScheduleDAGInstrs: Add condjump deps to addSchedBarrierDeps() 2016-11-11 01:34:21 +00:00
SystemZ [SystemZ] Support floating-point control register instructions 2016-12-02 18:21:53 +00:00
Thumb Revert "[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently" 2016-11-03 14:08:01 +00:00
Thumb2 Revert "[Thumb] Teach ISel how to lower compares of AND bitmasks efficiently" 2016-11-03 14:08:01 +00:00
WebAssembly [WebAssembly] Emit .import_global assembler directives 2016-12-01 00:11:15 +00:00
WinEH
X86 [AVX-512] Correctly preserve the passthru semantics of the FMA scalar intrinsics 2016-12-09 06:42:28 +00:00
XCore MCStreamer: Use "cfi" for CFI related temp labels. 2016-11-30 23:48:26 +00:00