summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
authorIgor Breger <igor.breger@intel.com>2016-05-24 11:06:22 +0000
committerIgor Breger <igor.breger@intel.com>2016-05-24 11:06:22 +0000
commit23c20906064ce4e0150f8a5bcf8aaf876d43a459 (patch)
tree408916cdcf7695d23438d2803f4e3375eb71330e /llvm/lib/Target/X86/X86ISelLowering.cpp
parentf059dd4f76d57bcaf4389dd5b776eca4c07d7668 (diff)
downloadbcm5719-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.cpp10
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
OpenPOWER on IntegriCloud