Skip to content

Commit f5ad81d

Browse files
committed
[AMDGPU] Fix getAsmVOP3Base call agruments.
#143465 has removed getAsmVOP3OpSel and uses getAsmVOP3Base instead, but original call to getAsmVOP3OpSel was using HasSrc*FloatMods and the call to getAsmVOP3Base uses HasSrc*Mods. This does not play well with opsel. An opsel instruction has modifiers in dag but shall not have them in the asm string.
1 parent b1aa845 commit f5ad81d

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2648,8 +2648,8 @@ class VOPProfile <list<ValueType> _ArgVT, bit _EnableClamp = 0> {
26482648
// the asm operand name via this HasModifiers flag
26492649
field string AsmDPP8 = getAsmDPP8<HasDst, NumSrcArgs, 0 /*HasModifiers*/, DstVT>.ret;
26502650
field string AsmVOP3Base = getAsmVOP3Base<NumSrcArgs, HasDst, HasClamp,
2651-
HasOpSel, HasOMod, IsVOP3P, HasNeg, HasSrc0Mods, HasSrc1Mods,
2652-
HasSrc2Mods, DstVT, HasFP8ByteSel, HasBitOp3>.ret;
2651+
HasOpSel, HasOMod, IsVOP3P, HasNeg, HasSrc0FloatMods, HasSrc1FloatMods,
2652+
HasSrc2FloatMods, DstVT, HasFP8ByteSel, HasBitOp3>.ret;
26532653
field string Asm64 = AsmVOP3Base;
26542654
field string AsmVOP3P = getAsmVOP3P<HasDst, NumSrcArgs, HasNeg, HasClamp, HasOpSel>.ret;
26552655
field string AsmVOP3OpSel = AsmVOP3Base;

llvm/lib/Target/AMDGPU/VOP3Instructions.td

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,9 @@ class VOP3_CVT_SCALEF32_PK_F864_Profile<VOPProfile P> : VOP3_Profile<P> {
11261126
let HasModifiers = 0;
11271127
let HasSrc0IntMods = 0;
11281128
let HasSrc1IntMods = 0;
1129+
let HasSrc0FloatMods = 0;
1130+
let HasSrc1FloatMods = 0;
1131+
let HasSrc2FloatMods = 0;
11291132
let HasOMod = 0;
11301133
let HasOpSel = 0;
11311134
let HasClamp = 0;
@@ -1562,9 +1565,12 @@ let SubtargetPredicate = HasPseudoScalarTrans in {
15621565
def : PseudoScalarPatF16<any_amdgcn_sqrt, V_S_SQRT_F16_e64>;
15631566
}
15641567

1568+
let HasModifiers = 1 in
1569+
def ASHR_PK_I8_Profile : VOP3_Profile<VOP_I16_I32_I32_I32, VOP3_OPSEL_ONLY>;
1570+
15651571
let SubtargetPredicate = HasAshrPkInsts, isReMaterializable = 1 in {
1566-
defm V_ASHR_PK_I8_I32 : VOP3Inst<"v_ashr_pk_i8_i32", VOP3_Profile<VOP_I16_I32_I32_I32, VOP3_OPSEL_ONLY>, int_amdgcn_ashr_pk_i8_i32>;
1567-
defm V_ASHR_PK_U8_I32 : VOP3Inst<"v_ashr_pk_u8_i32", VOP3_Profile<VOP_I16_I32_I32_I32, VOP3_OPSEL_ONLY>, int_amdgcn_ashr_pk_u8_i32>;
1572+
defm V_ASHR_PK_I8_I32 : VOP3Inst<"v_ashr_pk_i8_i32", ASHR_PK_I8_Profile, int_amdgcn_ashr_pk_i8_i32>;
1573+
defm V_ASHR_PK_U8_I32 : VOP3Inst<"v_ashr_pk_u8_i32", ASHR_PK_I8_Profile, int_amdgcn_ashr_pk_u8_i32>;
15681574
} // End SubtargetPredicate = HasAshrPkInsts, isReMaterializable = 1
15691575

15701576
class AshrPkI8Pat<VOP3_Pseudo inst, int lo, int hi>: GCNPat<

0 commit comments

Comments
 (0)