Skip to content

Commit 88e23eb

Browse files
authored
DAG: Fix legalization of vector addrspacecasts (#113964)
1 parent f7adacf commit 88e23eb

File tree

4 files changed

+1200
-12
lines changed

4 files changed

+1200
-12
lines changed

llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4375,6 +4375,9 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
43754375
Results.push_back(DAG.getNode(ISD::FP_TO_SINT, dl, ResVT, RoundNode));
43764376
break;
43774377
}
4378+
case ISD::ADDRSPACECAST:
4379+
Results.push_back(DAG.UnrollVectorOp(Node));
4380+
break;
43784381
case ISD::GLOBAL_OFFSET_TABLE:
43794382
case ISD::GlobalAddress:
43804383
case ISD::GlobalTLSAddress:

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12590,6 +12590,14 @@ SDValue SelectionDAG::UnrollVectorOp(SDNode *N, unsigned ResNE) {
1259012590
Scalars.push_back(getNode(N->getOpcode(), dl, EltVT,
1259112591
Operands[0],
1259212592
getValueType(ExtVT)));
12593+
break;
12594+
}
12595+
case ISD::ADDRSPACECAST: {
12596+
const auto *ASC = cast<AddrSpaceCastSDNode>(N);
12597+
Scalars.push_back(getAddrSpaceCast(dl, EltVT, Operands[0],
12598+
ASC->getSrcAddressSpace(),
12599+
ASC->getDestAddressSpace()));
12600+
break;
1259312601
}
1259412602
}
1259512603
}

llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -512,18 +512,18 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(const TargetMachine &TM,
512512

513513
for (MVT VT : VectorIntTypes) {
514514
// Expand the following operations for the current type by default.
515-
setOperationAction({ISD::ADD, ISD::AND, ISD::FP_TO_SINT,
516-
ISD::FP_TO_UINT, ISD::MUL, ISD::MULHU,
517-
ISD::MULHS, ISD::OR, ISD::SHL,
518-
ISD::SRA, ISD::SRL, ISD::ROTL,
519-
ISD::ROTR, ISD::SUB, ISD::SINT_TO_FP,
520-
ISD::UINT_TO_FP, ISD::SDIV, ISD::UDIV,
521-
ISD::SREM, ISD::UREM, ISD::SMUL_LOHI,
522-
ISD::UMUL_LOHI, ISD::SDIVREM, ISD::UDIVREM,
523-
ISD::SELECT, ISD::VSELECT, ISD::SELECT_CC,
524-
ISD::XOR, ISD::BSWAP, ISD::CTPOP,
525-
ISD::CTTZ, ISD::CTLZ, ISD::VECTOR_SHUFFLE,
526-
ISD::SETCC},
515+
setOperationAction({ISD::ADD, ISD::AND, ISD::FP_TO_SINT,
516+
ISD::FP_TO_UINT, ISD::MUL, ISD::MULHU,
517+
ISD::MULHS, ISD::OR, ISD::SHL,
518+
ISD::SRA, ISD::SRL, ISD::ROTL,
519+
ISD::ROTR, ISD::SUB, ISD::SINT_TO_FP,
520+
ISD::UINT_TO_FP, ISD::SDIV, ISD::UDIV,
521+
ISD::SREM, ISD::UREM, ISD::SMUL_LOHI,
522+
ISD::UMUL_LOHI, ISD::SDIVREM, ISD::UDIVREM,
523+
ISD::SELECT, ISD::VSELECT, ISD::SELECT_CC,
524+
ISD::XOR, ISD::BSWAP, ISD::CTPOP,
525+
ISD::CTTZ, ISD::CTLZ, ISD::VECTOR_SHUFFLE,
526+
ISD::SETCC, ISD::ADDRSPACECAST},
527527
VT, Expand);
528528
}
529529

0 commit comments

Comments
 (0)