[llvm] [AMDGPU][True16][MC] VINTERP instructions supporting true16/fake16 (PR #113634)
Ivan Kosarev via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 13 08:46:52 PST 2024
================
@@ -83,44 +85,63 @@ def VOP3_VINTERP_F32 : VOPProfile<[f32, f32, f32, f32]> {
let Asm64 = " $vdst, $src0_modifiers, $src1_modifiers, $src2_modifiers$clamp$waitexp";
}
-class VOP3_VINTERP_F16 <list<ValueType> ArgVT> : VOPProfile<ArgVT> {
- let HasOpSel = 1;
- let HasModifiers = 1;
+class VOP3_VINTERP_F16_t16 <list<ValueType> ArgVT> : VOPProfile_True16<VOPProfile<ArgVT>> {
+ let Src0Mod = FPT16VRegInputMods</*Fake16*/0>;
+ let Src1Mod = FPVRegInputMods;
+ let Src2Mod = !if(!eq(ArgVT[3].Size, 16), FPT16VRegInputMods</*Fake16*/0>,
+ FPVRegInputMods);
+ let Ins64 = (ins Src0Mod:$src0_modifiers, VRegSrc_16:$src0,
+ Src1Mod:$src1_modifiers, VRegSrc_32:$src1,
+ Src2Mod:$src2_modifiers,
+ !if(!eq(ArgVT[3].Size, 16), VRegSrc_16, VRegSrc_32):$src2,
+ Clamp:$clamp, op_sel0:$op_sel,
+ WaitEXP:$waitexp);
- let Src0Mod = FPVRegInputMods;
+ let Asm64 = "$vdst, $src0_modifiers, $src1_modifiers, $src2_modifiers$clamp$op_sel$waitexp";
+}
+
+class VOP3_VINTERP_F16_fake16 <list<ValueType> ArgVT> : VOPProfile_Fake16<VOPProfile<ArgVT>> {
+ let Src0Mod = FPT16VRegInputMods</*Fake16*/1>;
let Src1Mod = FPVRegInputMods;
- let Src2Mod = FPVRegInputMods;
+ let Src2Mod = !if(!eq(ArgVT[3].Size, 16), FPT16VRegInputMods</*Fake16*/1>,
+ FPVRegInputMods);
- let Outs64 = (outs VGPR_32:$vdst);
- let Ins64 = (ins Src0Mod:$src0_modifiers, VRegSrc_32:$src0,
+ let Ins64 = (ins Src0Mod:$src0_modifiers, VRegSrc_fake16:$src0,
Src1Mod:$src1_modifiers, VRegSrc_32:$src1,
- Src2Mod:$src2_modifiers, VRegSrc_32:$src2,
+ Src2Mod:$src2_modifiers,
+ !if(!eq(ArgVT[3].Size, 16), VRegSrc_fake16, VRegSrc_32):$src2,
Clamp:$clamp, op_sel0:$op_sel,
WaitEXP:$waitexp);
- let Asm64 = " $vdst, $src0_modifiers, $src1_modifiers, $src2_modifiers$clamp$op_sel$waitexp";
-}
+ let Asm64 = "$vdst, $src0_modifiers, $src1_modifiers, $src2_modifiers$clamp$op_sel$waitexp";
+ }
----------------
kosarev wrote:
Unintended change adding the space?
https://github.com/llvm/llvm-project/pull/113634
More information about the llvm-commits
mailing list