Skip to content

Commit d2b78c6

Browse files
authored
AMDGPU: Custom lower bf16 shuffles (llvm#122252)
We already custom lower the other 16-bit element type shuffles.
1 parent f77a7dd commit d2b78c6

File tree

2 files changed

+1701
-911
lines changed

2 files changed

+1701
-911
lines changed

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -784,8 +784,9 @@ SITargetLowering::SITargetLowering(const TargetMachine &TM,
784784
{MVT::v2i16, MVT::v2f16, MVT::v2bf16}, Custom);
785785

786786
setOperationAction(ISD::VECTOR_SHUFFLE,
787-
{MVT::v4f16, MVT::v4i16, MVT::v8f16, MVT::v8i16,
788-
MVT::v16f16, MVT::v16i16, MVT::v32f16, MVT::v32i16},
787+
{MVT::v4f16, MVT::v4i16, MVT::v4bf16, MVT::v8f16,
788+
MVT::v8i16, MVT::v8bf16, MVT::v16f16, MVT::v16i16,
789+
MVT::v16bf16, MVT::v32f16, MVT::v32i16, MVT::v32bf16},
789790
Custom);
790791

791792
for (MVT VT : {MVT::v4i16, MVT::v8i16, MVT::v16i16, MVT::v32i16})
@@ -7545,9 +7546,8 @@ SDValue SITargetLowering::lowerVECTOR_SHUFFLE(SDValue Op,
75457546
SDLoc SL(Op);
75467547
EVT ResultVT = Op.getValueType();
75477548
ShuffleVectorSDNode *SVN = cast<ShuffleVectorSDNode>(Op);
7548-
7549-
EVT PackVT = ResultVT.isInteger() ? MVT::v2i16 : MVT::v2f16;
7550-
EVT EltVT = PackVT.getVectorElementType();
7549+
MVT EltVT = ResultVT.getVectorElementType().getSimpleVT();
7550+
MVT PackVT = MVT::getVectorVT(EltVT, 2);
75517551
int SrcNumElts = Op.getOperand(0).getValueType().getVectorNumElements();
75527552

75537553
// vector_shuffle <0,1,6,7> lhs, rhs

0 commit comments

Comments
 (0)