diff options
author | Guy Blank <guy.blank@intel.com> | 2017-05-09 16:16:48 +0000 |
---|---|---|
committer | Guy Blank <guy.blank@intel.com> | 2017-05-09 16:16:48 +0000 |
commit | 0c42d8c35ba6acd4d3620915c64af5a7badc1e73 (patch) | |
tree | a390f5b8f17ecfe6f12109bb6ba2cd204ec72e75 /llvm/lib | |
parent | f7f6f823a4d71e7febbeaf1db4fccbb5a83005d3 (diff) | |
download | bcm5719-llvm-0c42d8c35ba6acd4d3620915c64af5a7badc1e73.tar.gz bcm5719-llvm-0c42d8c35ba6acd4d3620915c64af5a7badc1e73.zip |
VX512] Only look at lower bit in constant scalar masks
for scalar masked instructions only the lower bit of the mask is relevant. so for constant masks we should either do an unmasked operation or no operation, depending on the value of the lower bit.
This patch handles cases where the lower bit is '1'.
Differential Revision: https://reviews.llvm.org/D32805
llvm-svn: 302546
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index f0c1e0feed8..68d11100f21 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -19021,8 +19021,10 @@ static SDValue getScalarMaskingNode(SDValue Op, SDValue Mask, SDValue PreservedSrc, const X86Subtarget &Subtarget, SelectionDAG &DAG) { - if (isAllOnesConstant(Mask)) - return Op; + + if (auto *MaskConst = dyn_cast<ConstantSDNode>(Mask)) + if (MaskConst->getZExtValue() & 0x1) + return Op; MVT VT = Op.getSimpleValueType(); SDLoc dl(Op); |