diff options
author | Hal Finkel <hfinkel@anl.gov> | 2015-08-20 03:02:02 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2015-08-20 03:02:02 +0000 |
commit | 9fdce9adee2eddec41a254ac9da8fc422850cab0 (patch) | |
tree | d6c926b78436db26aa23d9addca397d6dd0c261b /llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | |
parent | 20ce95f2940778da4b877865141e6cbecc73d43a (diff) | |
download | bcm5719-llvm-9fdce9adee2eddec41a254ac9da8fc422850cab0.tar.gz bcm5719-llvm-9fdce9adee2eddec41a254ac9da8fc422850cab0.zip |
[PowerPC] Fix value type on XVCMPEQDP for v2f64 comparisons
XVCMPEQDP is used for VSX v2f64 equality comparisons, but the value type needs
to be v2i64 (as that's the corresponding SETCC type).
Fixes PR24225.
llvm-svn: 245535
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index bf3072f783e..0b43b046a44 100644 --- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -2305,14 +2305,15 @@ SDNode *PPCDAGToDAGISel::SelectSETCC(SDNode *N) { if (Swap) std::swap(LHS, RHS); + EVT ResVT = VecVT.changeVectorElementTypeToInteger(); if (Negate) { - SDValue VCmp(CurDAG->getMachineNode(VCmpInst, dl, VecVT, LHS, RHS), 0); + SDValue VCmp(CurDAG->getMachineNode(VCmpInst, dl, ResVT, LHS, RHS), 0); return CurDAG->SelectNodeTo(N, PPCSubTarget->hasVSX() ? PPC::XXLNOR : PPC::VNOR, - VecVT, VCmp, VCmp); + ResVT, VCmp, VCmp); } - return CurDAG->SelectNodeTo(N, VCmpInst, VecVT, LHS, RHS); + return CurDAG->SelectNodeTo(N, VCmpInst, ResVT, LHS, RHS); } if (PPCSubTarget->useCRBits()) |