summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-10-22 09:06:24 +0000
committerDuncan Sands <baldrick@free.fr>2008-10-22 09:06:24 +0000
commita1a388cac35e24e67876474ca16ab26dcc4d0b8e (patch)
tree396196c279f1af8dffd93ecd0a74dc545be4be3c
parent4b6b5fcd80742e325ec6bb77f3ddf737899aea15 (diff)
downloadbcm5719-llvm-a1a388cac35e24e67876474ca16ab26dcc4d0b8e.tar.gz
bcm5719-llvm-a1a388cac35e24e67876474ca16ab26dcc4d0b8e.zip
Add some comments explaining the meaning of a boolean
that is not of type MVT::i1 in SELECT and SETCC nodes. Relax the LegalizeTypes SELECT condition promotion sanity checks to allow other condition types than i1. llvm-svn: 57966
-rw-r--r--llvm/include/llvm/CodeGen/SelectionDAGNodes.h16
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp6
2 files changed, 11 insertions, 11 deletions
diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
index 0b33ad94071..7c78f6ab375 100644
--- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
+++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -326,19 +326,21 @@ namespace ISD {
// Counting operators
CTTZ, CTLZ, CTPOP,
- // Select(COND, TRUEVAL, FALSEVAL)
- SELECT,
-
+ // Select(COND, TRUEVAL, FALSEVAL). If the type of the boolean COND is not
+ // i1 then the high bits must conform to getSetCCResultContents.
+ SELECT,
+
// Select with condition operator - This selects between a true value and
// a false value (ops #2 and #3) based on the boolean result of comparing
// the lhs and rhs (ops #0 and #1) of a conditional expression with the
// condition code in op #4, a CondCodeSDNode.
SELECT_CC,
- // SetCC operator - This evaluates to a boolean (i1) true value if the
- // condition is true. The operands to this are the left and right operands
- // to compare (ops #0, and #1) and the condition code to compare them with
- // (op #2) as a CondCodeSDNode.
+ // SetCC operator - This evaluates to a true value iff the condition is
+ // true. If the result value type is not i1 then the high bits conform
+ // to getSetCCResultContents. The operands to this are the left and right
+ // operands to compare (ops #0, and #1) and the condition code to compare
+ // them with (op #2) as a CondCodeSDNode.
SETCC,
// Vector SetCC operator - This evaluates to a vector of integer elements
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
index 9844d41ea9b..5ba814a11c0 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
@@ -808,8 +808,6 @@ SDValue DAGTypeLegalizer::PromoteIntOp_MEMBARRIER(SDNode *N) {
SDValue DAGTypeLegalizer::PromoteIntOp_SELECT(SDNode *N, unsigned OpNo) {
assert(OpNo == 0 && "Only know how to promote condition");
- assert(N->getOperand(0).getValueType() == MVT::i1 &&
- "SetCC type is not legal??");
SDValue Cond = GetPromotedInteger(N->getOperand(0));
// Promote all the way up to SVT, the canonical SetCC type.
@@ -835,7 +833,7 @@ SDValue DAGTypeLegalizer::PromoteIntOp_SELECT(SDNode *N, unsigned OpNo) {
ExtendCode = ISD::ZERO_EXTEND;
if (!DAG.MaskedValueIsZero(Cond,APInt::getHighBitsSet(CondBits,CondBits-1)))
// All extra bits need to be cleared. Do this by zero extending the
- // original MVT::i1 condition value all the way to SVT.
+ // original condition value all the way to SVT.
Cond = N->getOperand(0);
break;
case TargetLowering::ZeroOrNegativeOneSetCCResult: {
@@ -843,7 +841,7 @@ SDValue DAGTypeLegalizer::PromoteIntOp_SELECT(SDNode *N, unsigned OpNo) {
unsigned SignBits = DAG.ComputeNumSignBits(Cond);
if (SignBits != CondBits)
// All extra bits need to be sign extended. Do this by sign extending the
- // original MVT::i1 condition value all the way to SVT.
+ // original condition value all the way to SVT.
Cond = N->getOperand(0);
break;
}
OpenPOWER on IntegriCloud