Skip to content

Commit be5bc92

Browse files
committed
Use guard clauses
1 parent b611165 commit be5bc92

File tree

1 file changed

+30
-29
lines changed

1 file changed

+30
-29
lines changed

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2325,26 +2325,25 @@ NVPTXTargetLowering::LowerCONCAT_VECTORS(SDValue Op, SelectionDAG &DAG) const {
23252325
SDValue NVPTXTargetLowering::LowerBITCAST(SDValue Op, SelectionDAG &DAG) const {
23262326
// Handle bitcasting from v2i8 without hitting the default promotion
23272327
// strategy which goes through stack memory.
2328-
SDLoc DL(Op);
2329-
2330-
EVT ToVT = Op->getValueType(0);
23312328
EVT FromVT = Op->getOperand(0)->getValueType(0);
2332-
2333-
if (FromVT == MVT::v2i8) {
2334-
// Pack vector elements into i16 and bitcast to final type
2335-
SDValue Vec0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, MVT::i8,
2336-
Op->getOperand(0), DAG.getIntPtrConstant(0, DL));
2337-
SDValue Vec1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, MVT::i8,
2338-
Op->getOperand(0), DAG.getIntPtrConstant(1, DL));
2339-
SDValue Extend0 = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i16, Vec0);
2340-
SDValue Extend1 = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i16, Vec1);
2341-
SDValue Const8 = DAG.getConstant(8, DL, MVT::i16);
2342-
SDValue AsInt = DAG.getNode(
2343-
ISD::OR, DL, MVT::i16,
2344-
{Extend0, DAG.getNode(ISD::SHL, DL, MVT::i16, {Extend1, Const8})});
2345-
return MaybeBitcast(DAG, DL, ToVT, AsInt);
2329+
if (FromVT != MVT::v2i8) {
2330+
return Op;
23462331
}
2347-
return Op;
2332+
2333+
// Pack vector elements into i16 and bitcast to final type
2334+
SDLoc DL(Op);
2335+
SDValue Vec0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, MVT::i8,
2336+
Op->getOperand(0), DAG.getIntPtrConstant(0, DL));
2337+
SDValue Vec1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, MVT::i8,
2338+
Op->getOperand(0), DAG.getIntPtrConstant(1, DL));
2339+
SDValue Extend0 = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i16, Vec0);
2340+
SDValue Extend1 = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i16, Vec1);
2341+
SDValue Const8 = DAG.getConstant(8, DL, MVT::i16);
2342+
SDValue AsInt = DAG.getNode(
2343+
ISD::OR, DL, MVT::i16,
2344+
{Extend0, DAG.getNode(ISD::SHL, DL, MVT::i16, {Extend1, Const8})});
2345+
EVT ToVT = Op->getValueType(0);
2346+
return MaybeBitcast(DAG, DL, ToVT, AsInt);
23482347
}
23492348

23502349
// We can init constant f16x2/v2i16/v4i8 with a single .b32 move. Normally it
@@ -6171,19 +6170,21 @@ static void ReplaceBITCAST(SDNode *Node, SelectionDAG &DAG,
61716170
// Handle bitcasting to v2i8 without hitting the default promotion
61726171
// strategy which goes through stack memory.
61736172
SDValue Op(Node, 0);
6174-
SDLoc DL(Node);
6175-
61766173
EVT ToVT = Op->getValueType(0);
6177-
if (ToVT == MVT::v2i8) {
6178-
SDValue AsInt = MaybeBitcast(DAG, DL, MVT::i16, Op->getOperand(0));
6179-
SDValue Vec0 = DAG.getNode(ISD::TRUNCATE, DL, MVT::i8, AsInt);
6180-
SDValue Const8 = DAG.getConstant(8, DL, MVT::i16);
6181-
SDValue Vec1 =
6182-
DAG.getNode(ISD::TRUNCATE, DL, MVT::i8,
6183-
DAG.getNode(ISD::SRL, DL, MVT::i16, {AsInt, Const8}));
6184-
Results.push_back(
6185-
DAG.getNode(ISD::BUILD_VECTOR, DL, MVT::v2i8, {Vec0, Vec1}));
6174+
if (ToVT != MVT::v2i8) {
6175+
return;
61866176
}
6177+
6178+
// Bitcast to i16 and unpack elements into a vector
6179+
SDLoc DL(Node);
6180+
SDValue AsInt = MaybeBitcast(DAG, DL, MVT::i16, Op->getOperand(0));
6181+
SDValue Vec0 = DAG.getNode(ISD::TRUNCATE, DL, MVT::i8, AsInt);
6182+
SDValue Const8 = DAG.getConstant(8, DL, MVT::i16);
6183+
SDValue Vec1 =
6184+
DAG.getNode(ISD::TRUNCATE, DL, MVT::i8,
6185+
DAG.getNode(ISD::SRL, DL, MVT::i16, {AsInt, Const8}));
6186+
Results.push_back(
6187+
DAG.getNode(ISD::BUILD_VECTOR, DL, MVT::v2i8, {Vec0, Vec1}));
61876188
}
61886189

61896190
/// ReplaceVectorLoad - Convert vector loads into multi-output scalar loads.

0 commit comments

Comments
 (0)