summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/MBlaze
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2011-09-06 19:07:46 +0000
committerDuncan Sands <baldrick@free.fr>2011-09-06 19:07:46 +0000
commitf2641e1bc11b28db5722f7f6adec2ac416dd0f6c (patch)
treed04aab6b335e35380abf9d67702cdd2448d23da5 /llvm/lib/Target/MBlaze
parentcf9b1f6524436866cf5f8639193ebe89d92ae6b0 (diff)
downloadbcm5719-llvm-f2641e1bc11b28db5722f7f6adec2ac416dd0f6c.tar.gz
bcm5719-llvm-f2641e1bc11b28db5722f7f6adec2ac416dd0f6c.zip
Add codegen support for vector select (in the IR this means a select
with a vector condition); such selects become VSELECT codegen nodes. This patch also removes VSETCC codegen nodes, unifying them with SETCC nodes (codegen was actually often using SETCC for vector SETCC already). This ensures that various DAG combiner optimizations kick in for vector comparisons. Passes dragonegg bootstrap with no testsuite regressions (nightly testsuite as well as "make check-all"). Patch mostly by Nadav Rotem. llvm-svn: 139159
Diffstat (limited to 'llvm/lib/Target/MBlaze')
-rw-r--r--llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp3
-rw-r--r--llvm/lib/Target/MBlaze/MBlazeISelLowering.h2
2 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp b/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp
index 8a1774e7a27..8ec548f1437 100644
--- a/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp
+++ b/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp
@@ -59,6 +59,7 @@ MBlazeTargetLowering::MBlazeTargetLowering(MBlazeTargetMachine &TM)
// MBlaze does not have i1 type, so use i32 for
// setcc operations results (slt, sgt, ...).
setBooleanContents(ZeroOrOneBooleanContent);
+ setBooleanVectorContents(ZeroOrOneBooleanContent); // FIXME: Is this correct?
// Set up the register classes
addRegisterClass(MVT::i32, MBlaze::GPRRegisterClass);
@@ -187,7 +188,7 @@ MBlazeTargetLowering::MBlazeTargetLowering(MBlazeTargetMachine &TM)
computeRegisterProperties();
}
-MVT::SimpleValueType MBlazeTargetLowering::getSetCCResultType(EVT VT) const {
+EVT MBlazeTargetLowering::getSetCCResultType(EVT VT) const {
return MVT::i32;
}
diff --git a/llvm/lib/Target/MBlaze/MBlazeISelLowering.h b/llvm/lib/Target/MBlaze/MBlazeISelLowering.h
index bb128da3c7c..8b49bc3de0c 100644
--- a/llvm/lib/Target/MBlaze/MBlazeISelLowering.h
+++ b/llvm/lib/Target/MBlaze/MBlazeISelLowering.h
@@ -102,7 +102,7 @@ namespace llvm {
virtual const char *getTargetNodeName(unsigned Opcode) const;
/// getSetCCResultType - get the ISD::SETCC result ValueType
- MVT::SimpleValueType getSetCCResultType(EVT VT) const;
+ EVT getSetCCResultType(EVT VT) const;
private:
// Subtarget Info
OpenPOWER on IntegriCloud