diff options
author | Igor Breger <igor.breger@intel.com> | 2016-05-24 11:06:22 +0000 |
---|---|---|
committer | Igor Breger <igor.breger@intel.com> | 2016-05-24 11:06:22 +0000 |
commit | 23c20906064ce4e0150f8a5bcf8aaf876d43a459 (patch) | |
tree | 408916cdcf7695d23438d2803f4e3375eb71330e /llvm/lib/Target/X86/X86ISelLowering.cpp | |
parent | f059dd4f76d57bcaf4389dd5b776eca4c07d7668 (diff) | |
download | bcm5719-llvm-23c20906064ce4e0150f8a5bcf8aaf876d43a459.tar.gz bcm5719-llvm-23c20906064ce4e0150f8a5bcf8aaf876d43a459.zip |
[llvm][AVX512][intrinsics] Fix vperm{b|w|d|q|ps|pd} intrinsics. Index is second argument to buildin function but it is first instruction operand.
Differential Revision: http://reviews.llvm.org/D20515
llvm-svn: 270548
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 844614290ad..5dd79ef311e 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -17249,6 +17249,16 @@ static SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, const X86Subtarget &Subtarget Src1, Src2, Src3), Mask, PassThru, Subtarget, DAG); } + case VPERM_2OP_MASK : { + SDValue Src1 = Op.getOperand(1); + SDValue Src2 = Op.getOperand(2); + SDValue PassThru = Op.getOperand(3); + SDValue Mask = Op.getOperand(4); + + // Swap Src1 and Src2 in the node creation + return getVectorMaskingNode(DAG.getNode(IntrData->Opc0, dl, VT,Src2, Src1), + Mask, PassThru, Subtarget, DAG); + } case VPERM_3OP_MASKZ: case VPERM_3OP_MASK:{ // Src2 is the PassThru |