summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-20 20:41:44 +0000
committerNikita Popov <nikita.ppv@gmail.com>2019-02-20 20:41:44 +0000
commitc3b496de7abf7d43c870d092a56969a4fee5fa96 (patch)
treee02385eb18f6ddb933962c2a2b7944782520b5f2 /llvm/lib/Target
parent1e25464fc9b21129dbea14006f07e8611942fe99 (diff)
downloadbcm5719-llvm-c3b496de7abf7d43c870d092a56969a4fee5fa96.tar.gz
bcm5719-llvm-c3b496de7abf7d43c870d092a56969a4fee5fa96.zip
[SDAG] Support vector UMULO/SMULO
Second part of https://bugs.llvm.org/show_bug.cgi?id=40442. This adds an extra UnrollVectorOverflowOp() method to SDAG, because the general UnrollOverflowOp() method can't deal with multiple results. Additionally we need to expand UMULO/SMULO during vector op legalization, as it may result in unrolling, which may need additional type legalization. Differential Revision: https://reviews.llvm.org/D57997 llvm-svn: 354513
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 69c1fa407c0..c99ad480601 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -20184,6 +20184,8 @@ static SDValue LowerXALUO(SDValue Op, SelectionDAG &DAG) {
std::tie(Value, Overflow) = getX86XALUOOp(Cond, Op, DAG);
SDValue SetCC = getSETCC(Cond, Overflow, DL, DAG);
+ if (Op->getValueType(1) != MVT::i8)
+ SetCC = DAG.getNode(ISD::ZERO_EXTEND, DL, Op->getValueType(1), SetCC);
return DAG.getNode(ISD::MERGE_VALUES, DL, Op->getVTList(), Value, SetCC);
}
OpenPOWER on IntegriCloud