Skip to content

Commit 053478b

Browse files
committed
[AMDGPU] Switch to using real True16 operands.
The DPP source and e64 destination operands remain unchanged for now. Reviewed By: Joe_Nash Differential Revision: https://reviews.llvm.org/D156104
1 parent e8a74f2 commit 053478b

File tree

4 files changed

+166
-149
lines changed

4 files changed

+166
-149
lines changed

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2471,15 +2471,24 @@ class VOPProfile_True16<VOPProfile P> : VOPProfile<P.ArgVT> {
24712471
let IsTrue16 = 1;
24722472
let IsRealTrue16 = 1;
24732473
// Most DstVT are 16-bit, but not all.
2474-
let DstRC = getVALUDstForVT_fake16<DstVT>.ret;
2474+
let DstRC = getVALUDstForVT<DstVT, 1 /*IsTrue16*/, 0 /*IsVOP3Encoding*/>.ret;
24752475
let DstRC64 = getVALUDstForVT<DstVT>.ret;
2476-
let Src1RC32 = RegisterOperand<getVregSrcForVT_t16<Src1VT>.ret>;
2476+
let Src0RC32 = getVOPSrc0ForVT<Src0VT, 1 /*IsTrue16*/, 0 /*IsFake16*/>.ret;
2477+
let Src1RC32 = getVregSrcForVT_t16<Src1VT, 0 /*IsFake16*/>.op;
24772478
let Src0DPP = getVregSrcForVT_t16<Src0VT>.ret;
24782479
let Src1DPP = getVregSrcForVT_t16<Src1VT>.ret;
24792480
let Src2DPP = getVregSrcForVT_t16<Src2VT>.ret;
24802481
let Src0ModDPP = getSrcModDPP_t16<Src0VT>.ret;
24812482
let Src1ModDPP = getSrcModDPP_t16<Src1VT>.ret;
24822483
let Src2ModDPP = getSrcModDPP_t16<Src2VT>.ret;
2484+
2485+
let DstRC64 = getVALUDstForVT<DstVT, 1 /*IsTrue16*/, 1 /*IsVOP3Encoding*/>.ret;
2486+
let Src0RC64 = getVOP3SrcForVT<Src0VT, 1 /*IsTrue16*/>.ret;
2487+
let Src1RC64 = getVOP3SrcForVT<Src1VT, 1 /*IsTrue16*/>.ret;
2488+
let Src2RC64 = getVOP3SrcForVT<Src2VT, 1 /*IsTrue16*/>.ret;
2489+
let Src0Mod = getSrcMod<Src0VT, 1 /*IsTrue16*/>.ret;
2490+
let Src1Mod = getSrcMod<Src1VT, 1 /*IsTrue16*/>.ret;
2491+
let Src2Mod = getSrcMod<Src2VT, 1 /*IsTrue16*/>.ret;
24832492
}
24842493

24852494
class VOPProfile_Fake16<VOPProfile P> : VOPProfile<P.ArgVT> {

llvm/lib/Target/AMDGPU/SIInstructions.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2760,7 +2760,7 @@ multiclass SelectCanonicalizeAsMax<
27602760

27612761
def : GCNPat<
27622762
(fcanonicalize (f16 (VOP3Mods f16:$src, i32:$src_mods))),
2763-
(V_MAX_F16_t16_e64 $src_mods, $src, $src_mods, $src, 0, 0)> {
2763+
(V_MAX_F16_fake16_e64 $src_mods, $src, $src_mods, $src, 0, 0)> {
27642764
let OtherPredicates = !listconcat(f16_preds, [Has16BitInsts, HasTrue16BitInsts]);
27652765
}
27662766

0 commit comments

Comments
 (0)