Skip to content

Commit ea3fc0f

Browse files
arsenmpravinjagtap
andcommitted
AMDGPU: MC support for v_cvt_scalef32_pk32_{bf|f}16_{bf|fp}6 of gfx950. (llvm#117591)
Co-authored-by: Pravin Jagtap <[email protected]>
1 parent 98b5751 commit ea3fc0f

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
@@ -1557,6 +1557,7 @@ class getVALUDstForVT<ValueType VT, bit IsTrue16 = 0, bit IsVOP3Encoding = 0> {
15571557
VOPDstOperand_t16Lo128),
15581558
VOPDstOperand<VGPR_32>);
15591559
RegisterOperand ret = !cond(!eq(VT.Size, 1024) : VOPDstOperand<VReg_1024>,
1560+
!eq(VT.Size, 512) : VOPDstOperand<VReg_512>,
15601561
!eq(VT.Size, 256) : VOPDstOperand<VReg_256>,
15611562
!eq(VT.Size, 128) : VOPDstOperand<VReg_128>,
15621563
!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
@@ -969,6 +969,10 @@ let SubtargetPredicate = HasFP4ConversionScaleInsts, mayRaiseFPException = 0 in
969969
let SubtargetPredicate = HasFP6BF6ConversionScaleInsts, mayRaiseFPException = 0 in {
970970
defm V_CVT_SCALEF32_PK32_F32_FP6 : VOP3Inst<"v_cvt_scalef32_pk32_f32_fp6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F32_V6I32_F32>>;
971971
defm V_CVT_SCALEF32_PK32_F32_BF6 : VOP3Inst<"v_cvt_scalef32_pk32_f32_bf6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F32_V6I32_F32>>;
972+
defm V_CVT_SCALEF32_PK32_F16_FP6 : VOP3Inst<"v_cvt_scalef32_pk32_f16_fp6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F16_V6I32_F32>>;
973+
defm V_CVT_SCALEF32_PK32_BF16_FP6 : VOP3Inst<"v_cvt_scalef32_pk32_bf16_fp6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32BF16_V6I32_F32>>;
974+
defm V_CVT_SCALEF32_PK32_F16_BF6 : VOP3Inst<"v_cvt_scalef32_pk32_f16_bf6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32F16_V6I32_F32>>;
975+
defm V_CVT_SCALEF32_PK32_BF16_BF6 : VOP3Inst<"v_cvt_scalef32_pk32_bf16_bf6", VOP3_CVT_SCALEF32_PK_F864_Profile<VOP_V32BF16_V6I32_F32>>;
972976
}
973977

974978
let SubtargetPredicate = isGFX10Plus in {
@@ -1895,4 +1899,8 @@ defm V_CVT_SCALEF32_PK_BF16_FP4 : VOP3OpSel_Real_gfx9 <0x251>;
18951899
let OtherPredicates = [HasFP6BF6ConversionScaleInsts] in {
18961900
defm V_CVT_SCALEF32_PK32_F32_FP6 : VOP3_Real_gfx9<0x256, "v_cvt_scalef32_pk32_f32_fp6">;
18971901
defm V_CVT_SCALEF32_PK32_F32_BF6 : VOP3_Real_gfx9<0x257, "v_cvt_scalef32_pk32_f32_bf6">;
1902+
defm V_CVT_SCALEF32_PK32_F16_FP6 : VOP3_Real_gfx9<0x260, "v_cvt_scalef32_pk32_f16_fp6">;
1903+
defm V_CVT_SCALEF32_PK32_BF16_FP6 : VOP3_Real_gfx9<0x261, "v_cvt_scalef32_pk32_bf16_fp6">;
1904+
defm V_CVT_SCALEF32_PK32_F16_BF6 : VOP3_Real_gfx9<0x262, "v_cvt_scalef32_pk32_f16_bf6">;
1905+
defm V_CVT_SCALEF32_PK32_BF16_BF6 : VOP3_Real_gfx9<0x263, "v_cvt_scalef32_pk32_bf16_bf6">;
18981906
}

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)