summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@mips.com>2013-01-04 20:06:01 +0000
committerAkira Hatanaka <ahatanaka@mips.com>2013-01-04 20:06:01 +0000
commitb13b33359bbf0a9cabb631a0aa9ddb24f4cc3322 (patch)
tree10f9fdfae7cd5687516b48a23f1597bdc9c4c14a
parent7426050269de509598f33620634826a5021b8628 (diff)
downloadbcm5719-llvm-b13b33359bbf0a9cabb631a0aa9ddb24f4cc3322.tar.gz
bcm5719-llvm-b13b33359bbf0a9cabb631a0aa9ddb24f4cc3322.zip
[mips] MipsTargetLowering::getSetCCResultType should return a vector type if
vectors are being compared. llvm-svn: 171517
-rw-r--r--llvm/lib/Target/Mips/MipsISelLowering.cpp4
-rw-r--r--llvm/test/CodeGen/Mips/vector-setcc.ll16
2 files changed, 19 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MipsISelLowering.cpp b/llvm/lib/Target/Mips/MipsISelLowering.cpp
index af7498b0e94..a3090405767 100644
--- a/llvm/lib/Target/Mips/MipsISelLowering.cpp
+++ b/llvm/lib/Target/Mips/MipsISelLowering.cpp
@@ -520,7 +520,9 @@ MipsTargetLowering::allowsUnalignedMemoryAccesses(EVT VT, bool *Fast) const {
}
EVT MipsTargetLowering::getSetCCResultType(EVT VT) const {
- return MVT::i32;
+ if (!VT.isVector())
+ return MVT::i32;
+ return VT.changeVectorElementTypeToInteger();
}
// SelectMadd -
diff --git a/llvm/test/CodeGen/Mips/vector-setcc.ll b/llvm/test/CodeGen/Mips/vector-setcc.ll
new file mode 100644
index 00000000000..aeff4918c8b
--- /dev/null
+++ b/llvm/test/CodeGen/Mips/vector-setcc.ll
@@ -0,0 +1,16 @@
+; RUN: llc -march=mipsel < %s
+
+@a = common global <4 x i32> zeroinitializer, align 16
+@b = common global <4 x i32> zeroinitializer, align 16
+@g0 = common global <4 x i32> zeroinitializer, align 16
+
+define void @foo0() nounwind {
+entry:
+ %0 = load <4 x i32>* @a, align 16
+ %1 = load <4 x i32>* @b, align 16
+ %cmp = icmp slt <4 x i32> %0, %1
+ %sext = sext <4 x i1> %cmp to <4 x i32>
+ store <4 x i32> %sext, <4 x i32>* @g0, align 16
+ ret void
+}
+
OpenPOWER on IntegriCloud