Skip to content

Commit 658db91

Browse files
arsenmPravin Jagtap
andauthored
AMDGPU: MC support for v_cvt_scalef32_pk32_{bf|f}16_{bf|fp}6 of gfx950. (#117591)
Co-authored-by: Pravin Jagtap <[email protected]>
1 parent 5dd48c4 commit 658db91

File tree

5 files changed

+90
-1
lines changed

5 files changed

+90
-1
lines changed

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1697,6 +1697,7 @@ class getVALUDstForVT<ValueType VT, bit IsTrue16 = 0, bit IsVOP3Encoding = 0> {
16971697
VOPDstOperand_t16Lo128),
16981698
VOPDstOperand<VGPR_32>);
16991699
RegisterOperand ret = !cond(!eq(VT.Size, 1024) : VOPDstOperand<VReg_1024>,
1700+
!eq(VT.Size, 512) : VOPDstOperand<VReg_512>,
17001701
!eq(VT.Size, 256) : VOPDstOperand<VReg_256>,
17011702
!eq(VT.Size, 128) : VOPDstOperand<VReg_128>,
17021703
!eq(VT.Size, 64) : VOPDstOperand<VReg_64>,

llvm/lib/Target/AMDGPU/VOP3Instructions.td

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,10 @@ let SubtargetPredicate = HasFP4ConversionScaleInsts, mayRaiseFPException = 0 in
966966
let SubtargetPredicate = HasFP6BF6ConversionScaleInsts, mayRaiseFPException = 0 in {
967967
defm V_CVT_SCALEF32_PK32_F32_FP6 : VOP3Inst<"v_cvt_scalef32_pk32_f32_fp6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F32_V6I32_F32>>;
968968
defm V_CVT_SCALEF32_PK32_F32_BF6 : VOP3Inst<"v_cvt_scalef32_pk32_f32_bf6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F32_V6I32_F32>>;
969+
defm V_CVT_SCALEF32_PK32_F16_FP6 : VOP3Inst<"v_cvt_scalef32_pk32_f16_fp6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F16_V6I32_F32>>;
970+
defm V_CVT_SCALEF32_PK32_BF16_FP6 : VOP3Inst<"v_cvt_scalef32_pk32_bf16_fp6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32BF16_V6I32_F32>>;
971+
defm V_CVT_SCALEF32_PK32_F16_BF6 : VOP3Inst<"v_cvt_scalef32_pk32_f16_bf6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F16_V6I32_F32>>;
972+
defm V_CVT_SCALEF32_PK32_BF16_BF6 : VOP3Inst<"v_cvt_scalef32_pk32_bf16_bf6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32BF16_V6I32_F32>>;
969973
}
970974

971975
let SubtargetPredicate = isGFX10Plus in {
@@ -1915,4 +1919,8 @@ defm V_CVT_SCALEF32_PK_BF16_FP4 : VOP3OpSel_Real_gfx9 <0x251>;
19151919
let OtherPredicates = [HasFP6BF6ConversionScaleInsts] in {
19161920
defm V_CVT_SCALEF32_PK32_F32_FP6 : VOP3_Real_gfx9<0x256, "v_cvt_scalef32_pk32_f32_fp6">;
19171921
defm V_CVT_SCALEF32_PK32_F32_BF6 : VOP3_Real_gfx9<0x257, "v_cvt_scalef32_pk32_f32_bf6">;
1922+
defm V_CVT_SCALEF32_PK32_F16_FP6 : VOP3_Real_gfx9<0x260, "v_cvt_scalef32_pk32_f16_fp6">;
1923+
defm V_CVT_SCALEF32_PK32_BF16_FP6 : VOP3_Real_gfx9<0x261, "v_cvt_scalef32_pk32_bf16_fp6">;
1924+
defm V_CVT_SCALEF32_PK32_F16_BF6 : VOP3_Real_gfx9<0x262, "v_cvt_scalef32_pk32_f16_bf6">;
1925+
defm V_CVT_SCALEF32_PK32_BF16_BF6 : VOP3_Real_gfx9<0x263, "v_cvt_scalef32_pk32_bf16_bf6">;
19181926
}

llvm/test/MC/AMDGPU/gfx950_asm_features.s

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -892,4 +892,24 @@ v_cvt_scalef32_pk32_f32_fp6 v[2:33], v[2:7], v6
892892

893893
// NOT-GFX950: :[[@LINE+2]]:{{[0-9]+}}: error:
894894
// GFX950: v_cvt_scalef32_pk32_f32_bf6 v[2:33], v[2:7], v6 ; encoding: [0x02,0x00,0x57,0xd2,0x02,0x0d,0x02,0x00]
895-
v_cvt_scalef32_pk32_f32_bf6 v[2:33], v[2:7], v6
895+
v_cvt_scalef32_pk32_f32_bf6 v[2:33], v[2:7], v6
896+
897+
// NOT-GFX950: :[[@LINE+2]]:{{[0-9]+}}: error:
898+
// GFX950: v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x63,0xd2,0x14,0x11,0x02,0x00]
899+
v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8
900+
901+
// NOT-GFX950: :[[@LINE+2]]:{{[0-9]+}}: error:
902+
// GFX950: v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x63,0xd2,0x14,0x11,0x02,0x00]
903+
v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8
904+
905+
// NOT-GFX950: :[[@LINE+2]]:{{[0-9]+}}: error:
906+
// GFX950: v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x62,0xd2,0x14,0x11,0x02,0x00]
907+
v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8
908+
909+
// NOT-GFX950: :[[@LINE+2]]:{{[0-9]+}}: error:
910+
// GFX950: v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x61,0xd2,0x14,0x11,0x02,0x00]
911+
v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8
912+
913+
// NOT-GFX950: :[[@LINE+2]]:{{[0-9]+}}: error:
914+
// GFX950: v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x60,0xd2,0x14,0x11,0x02,0x00]
915+
v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8

llvm/test/MC/AMDGPU/gfx950_err.s

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,51 @@ v_cvt_scalef32_pk32_f32_bf6 v[2:33], v[2:7], v6 div:2
149149

150150
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
151151
v_cvt_scalef32_pk32_f32_bf6 v[2:33], v[2:7], v6 clamp div:2
152+
153+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
154+
v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 clamp
155+
156+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
157+
v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 mul:2
158+
159+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
160+
v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 div:2
161+
162+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
163+
v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 clamp div:2
164+
165+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
166+
v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8 clamp
167+
168+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
169+
v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8 mul:2
170+
171+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
172+
v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8 div:2
173+
174+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
175+
v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8 clamp div:2
176+
177+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
178+
v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8 clamp
179+
180+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
181+
v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8 mul:2
182+
183+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
184+
v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8 div:2
185+
186+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
187+
v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8 clamp div:2
188+
189+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
190+
v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8 clamp
191+
192+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
193+
v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8 mul:2
194+
195+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
196+
v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8 div:2
197+
198+
// GFX950: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
199+
v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8 clamp div:2

llvm/test/MC/Disassembler/AMDGPU/gfx950_dasm_vop3.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,3 +617,15 @@
617617

618618
# GFX950: v_cvt_scalef32_pk32_f32_bf6 v[2:33], v[2:7], v6 ; encoding: [0x02,0x00,0x57,0xd2,0x02,0x0d,0x02,0x00]
619619
0x02,0x00,0x57,0xd2,0x02,0x0d,0x02,0x00
620+
621+
# GFX950: v_cvt_scalef32_pk32_bf16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x63,0xd2,0x14,0x11,0x02,0x00]
622+
0x0a,0x00,0x63,0xd2,0x14,0x11,0x02,0x00
623+
624+
# GFX950: v_cvt_scalef32_pk32_f16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x62,0xd2,0x14,0x11,0x02,0x00]
625+
0x0a,0x00,0x62,0xd2,0x14,0x11,0x02,0x00
626+
627+
# GFX950: v_cvt_scalef32_pk32_bf16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x61,0xd2,0x14,0x11,0x02,0x00]
628+
0x0a,0x00,0x61,0xd2,0x14,0x11,0x02,0x00
629+
630+
# GFX950: v_cvt_scalef32_pk32_f16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0x60,0xd2,0x14,0x11,0x02,0x00]
631+
0x0a,0x00,0x60,0xd2,0x14,0x11,0x02,0x00

0 commit comments

Comments
 (0)