diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-01-31 16:52:15 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-01-31 16:52:15 +0000 |
| commit | 82a83391d31245ff705812c0b92bdd7290d40990 (patch) | |
| tree | 9efd9d79b12efff04adcead45747db88f556eb53 /llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp | |
| parent | f89f188ddb61e0abf04b144e58af4236dfb2f50e (diff) | |
| download | bcm5719-llvm-82a83391d31245ff705812c0b92bdd7290d40990.tar.gz bcm5719-llvm-82a83391d31245ff705812c0b92bdd7290d40990.zip | |
[Hexagon] Handle BUILD_VECTOR from undef values in buildHvxVectorReg
llvm-svn: 323889
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp b/llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp index 89fecfceeb3..17e3228766d 100644 --- a/llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp +++ b/llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp @@ -168,16 +168,19 @@ HexagonTargetLowering::buildHvxVectorReg(ArrayRef<SDValue> Values, } unsigned NumWords = Words.size(); - bool IsSplat = true; + bool IsSplat = true, IsUndef = true; SDValue SplatV; for (unsigned i = 0; i != NumWords && IsSplat; ++i) { if (isUndef(Words[i])) continue; + IsUndef = false; if (!SplatV.getNode()) SplatV = Words[i]; else if (SplatV != Words[i]) IsSplat = false; } + if (IsUndef) + return DAG.getUNDEF(VecTy); if (IsSplat) { assert(SplatV.getNode()); auto *IdxN = dyn_cast<ConstantSDNode>(SplatV.getNode()); |

