[X86] Add new scalar fma intrinsics with rounding mode that use f32/f64 types.
authorCraig Topper <craig.topper@intel.com>
Sun, 8 Jul 2018 01:10:43 +0000 (01:10 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 8 Jul 2018 01:10:43 +0000 (01:10 +0000)
commitfdf3f1ff82501bd6d0dd99a72f406cbc195909db
treedd92110de99ec70f27983ff9fcdc8d87e33769df
parentd679d01a1f580c8a689c04a7908f5eff09e38ba9
[X86] Add new scalar fma intrinsics with rounding mode that use f32/f64 types.

This allows us to handle masking in a very similar way to the default rounding version that uses llvm.fma.

I had to add new rounding mode CodeGenOnly instructions to support isel when we can't find a movss to grab the upper bits from to use the b_Int instruction.

Fast-isel tests have been updated to match new clang codegen.

We are currently having trouble folding fneg into the new intrinsic. I'm going to correct that in a follow up patch to keep the size of this one down.

A future patch will also remove the old intrinsics.

llvm-svn: 336506
llvm/include/llvm/IR/IntrinsicsX86.td
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/lib/Target/X86/X86InstrFMA3Info.cpp
llvm/lib/Target/X86/X86IntrinsicsInfo.h
llvm/test/CodeGen/X86/avx512-intrinsics-fast-isel.ll