Added a template for building target specific memory node in DAG.
authorElena Demikhovsky <elena.demikhovsky@intel.com>
Wed, 21 Dec 2016 10:43:36 +0000 (10:43 +0000)
committerElena Demikhovsky <elena.demikhovsky@intel.com>
Wed, 21 Dec 2016 10:43:36 +0000 (10:43 +0000)
commit7c7bf1b432c0deb69a7cd11e41ec915fd5500e7e
tree7f22c2fce9583bffc460d146f50da34abf32675d
parentc96272c47c8135c0e1ae13d07faf80004a68512c
Added a template for building target specific memory node in DAG.

I added API for creation a target specific memory node in DAG. Today, all memory nodes are common for all targets and their constructors are located in SelectionDAG.cpp.
There are some cases in X86 where we need to create a special node - truncation-with-saturation store, float-to-half-store.
In the current patch I added truncation-with-saturation nodes and I'm using them for intrinsics. In the future I plan to implement DAG lowering for truncation-with-saturation pattern.

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

llvm-svn: 290250
llvm/include/llvm/CodeGen/SelectionDAG.h
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86ISelLowering.h
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
llvm/lib/Target/X86/X86IntrinsicsInfo.h
llvm/test/CodeGen/X86/avx512-intrinsics.ll
llvm/test/CodeGen/X86/avx512bw-intrinsics.ll
llvm/test/CodeGen/X86/avx512bwvl-intrinsics.ll
llvm/test/CodeGen/X86/avx512vl-intrinsics.ll