Created new X86 FMA3 opcodes (FMA*_Int) that are used now for lowering of scalar...
authorAndrew Kaylor <andrew.kaylor@intel.com>
Wed, 4 Nov 2015 18:10:41 +0000 (18:10 +0000)
committerAndrew Kaylor <andrew.kaylor@intel.com>
Wed, 4 Nov 2015 18:10:41 +0000 (18:10 +0000)
commit80a2456665c95f2106d58228a9b53fce800b048d
tree7c22945cf281b7b5c3211f51b8ff037b251fb915
parent447c9ea9e1aa98e11664645d0772071c912301f0
Created new X86 FMA3 opcodes (FMA*_Int) that are used now for lowering of scalar FMA intrinsics.

Patch by Slava Klochkov

The key difference between FMA* and FMA*_Int opcodes is that FMA*_Int opcodes are handled more conservatively. It is illegal to commute the 1st operand of FMA*_Int instructions as the upper bits of scalar FMA intrinsic result must be taken from the 1st operand, but such commute transformation would change those upper bits and invalidate the intrinsic's result.

Reviewers: Quentin Colombet, Elena Demikhovsky

Differential Revision: http://reviews.llvm.org/D13710

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252060 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrFMA.td
lib/Target/X86/X86InstrInfo.cpp
test/CodeGen/X86/fma-intrinsics-phi-213-to-231.ll
test/CodeGen/X86/fma-intrinsics-x86.ll