Skip to content

Commit 0b4967f

Browse files
committed
True16 for v_cndmask_b16 in MC
1 parent 81dcbef commit 0b4967f

15 files changed

+950
-520
lines changed

llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,8 +3007,8 @@ bool GCNHazardRecognizer::fixVALUMaskWriteHazard(MachineInstr *MI) {
30073007
switch (I.getOpcode()) {
30083008
case AMDGPU::V_ADDC_U32_e32:
30093009
case AMDGPU::V_ADDC_U32_dpp:
3010-
case AMDGPU::V_CNDMASK_B16_e32:
3011-
case AMDGPU::V_CNDMASK_B16_dpp:
3010+
case AMDGPU::V_CNDMASK_B16_fake16_e32:
3011+
case AMDGPU::V_CNDMASK_B16_fake16_dpp:
30123012
case AMDGPU::V_CNDMASK_B32_e32:
30133013
case AMDGPU::V_CNDMASK_B32_dpp:
30143014
case AMDGPU::V_DIV_FMAS_F32_e64:
@@ -3023,8 +3023,8 @@ bool GCNHazardRecognizer::fixVALUMaskWriteHazard(MachineInstr *MI) {
30233023
HazardReg == AMDGPU::VCC_HI;
30243024
case AMDGPU::V_ADDC_U32_e64:
30253025
case AMDGPU::V_ADDC_U32_e64_dpp:
3026-
case AMDGPU::V_CNDMASK_B16_e64:
3027-
case AMDGPU::V_CNDMASK_B16_e64_dpp:
3026+
case AMDGPU::V_CNDMASK_B16_fake16_e64:
3027+
case AMDGPU::V_CNDMASK_B16_fake16_e64_dpp:
30283028
case AMDGPU::V_CNDMASK_B32_e64:
30293029
case AMDGPU::V_CNDMASK_B32_e64_dpp:
30303030
case AMDGPU::V_SUBB_U32_e64:

llvm/lib/Target/AMDGPU/SIInstructions.td

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,11 +1245,21 @@ class VOPSelectPat <ValueType vt> : GCNPat <
12451245
(vt (select i1:$src0, vt:$src1, vt:$src2)),
12461246
(V_CNDMASK_B32_e64 0, VSrc_b32:$src2, 0, VSrc_b32:$src1, SSrc_i1:$src0)
12471247
>;
1248+
class VOPSelectPat_fake16 <ValueType vt> : GCNPat <
1249+
(vt (select i1:$src0, vt:$src1, vt:$src2)),
1250+
(V_CNDMASK_B16_fake16_e64 0, VSrc_b16:$src2, 0, VSrc_b16:$src1, SSrc_i1:$src0)
1251+
>;
12481252

12491253
def : VOPSelectModsPat <i32>;
12501254
def : VOPSelectModsPat <f32>;
1251-
def : VOPSelectPat <f16>;
1252-
def : VOPSelectPat <i16>;
1255+
let True16Predicate = NotHasTrue16BitInsts in {
1256+
def : VOPSelectPat <f16>;
1257+
def : VOPSelectPat <i16>;
1258+
} // End True16Predicate = NotHasTrue16BitInsts
1259+
let True16Predicate = UseFakeTrue16Insts in {
1260+
def : VOPSelectPat_fake16 <f16>;
1261+
def : VOPSelectPat_fake16 <i16>;
1262+
} // End True16Predicate = UseFakeTrue16Insts
12531263

12541264
let AddedComplexity = 1 in {
12551265
def : GCNPat <

llvm/lib/Target/AMDGPU/VOP2Instructions.td

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,26 @@ class VOP2e_SGPR<list<ValueType> ArgVT> : VOPProfile<ArgVT> {
714714
def VOP2e_I32_I32_I32_I1 : VOP2e_SGPR<[i32, i32, i32, i1]>;
715715
def VOP2e_I16_I16_I16_I1 : VOP2e_SGPR<[i16, i16, i16, i1]>;
716716
// V_CNDMASK_B16 is VOP3 only
717+
def VOP2e_I16_I16_I16_I1_true16 : VOP2e_SGPR<[i16, i16, i16, i1]> {
718+
let IsTrue16 = 1;
719+
let IsRealTrue16 = 1;
720+
let HasOpSel = 1;
721+
let DstRC64 = getVALUDstForVT<DstVT, 1, 1>.ret;
722+
let Src0RC64 = getVOP3SrcForVT<Src0VT, 1/*IsTrue16*/>.ret;
723+
let Src1RC64 = getVOP3SrcForVT<Src1VT, 1/*IsTrue16*/>.ret;
724+
let Src2RC64 = getVOP3SrcForVT<Src2VT, 1/*IsTrue16*/>.ret;
725+
let Src0Mod = getSrc0Mod<f16, DstVT, 1/*IsTrue16*/, 0/*IsFake16*/>.ret;
726+
let Src1Mod = getSrcMod<f16, 1/*IsTrue16*/, 0/*IsFake16*/>.ret;
727+
let HasSrc2Mods = 0;
728+
let InsVOP3OpSel = getInsVOP3Base<Src0RC64, Src1RC64,
729+
Src2RC64, NumSrcArgs,
730+
HasClamp, 1/*HasModifiers*/, 0/*HasSrc2Mods*/, HasOMod,
731+
Src0Mod, Src1Mod, Src2Mod, 1/*HasOpSel*/>.ret;
732+
let Src0VOP3DPP = VGPRSrc_16;
733+
let Src1VOP3DPP = getVOP3DPPSrcForVT<Src1VT, 0/*IsFake16*/>.ret;
734+
let Src0ModVOP3DPP = getSrc0ModVOP3DPP<f16, DstVT, 0/*IsFake16*/>.ret;
735+
let Src1ModVOP3DPP = getSrcModVOP3DPP<f16, 0/*IsFake16*/>.ret;
736+
}
717737
def VOP2e_I16_I16_I16_I1_fake16 : VOP2e_SGPR<[i16, i16, i16, i1]> {
718738
let IsTrue16 = 1;
719739
let DstRC64 = getVALUDstForVT<DstVT>.ret;
@@ -765,8 +785,8 @@ def VOP_WRITELANE : VOPProfile<[i32, i32, i32, i32]> {
765785
// VOP2 Instructions
766786
//===----------------------------------------------------------------------===//
767787

768-
let SubtargetPredicate = isGFX11Plus in
769-
defm V_CNDMASK_B16 : VOP2eInst <"v_cndmask_b16", VOP2e_I16_I16_I16_I1_fake16>;
788+
defm V_CNDMASK_B16_t16 : VOP2eInst <"v_cndmask_b16_t16", VOP2e_I16_I16_I16_I1_true16>;
789+
defm V_CNDMASK_B16_fake16 : VOP2eInst <"v_cndmask_b16_fake16", VOP2e_I16_I16_I16_I1_fake16>;
770790
defm V_CNDMASK_B32 : VOP2eInst_VOPD <"v_cndmask_b32", VOP2e_I32_I32_I32_I1, 0x9, "v_cndmask_b32">;
771791
let SubtargetPredicate = HasMadMacF32Insts, isReMaterializable = 1 in
772792
def V_MADMK_F32 : VOP2_Pseudo <"v_madmk_f32", VOP_MADMK_F32, []>;
@@ -1835,7 +1855,7 @@ defm V_FMAMK_F16 : VOP2Only_Real_MADK_t16_and_fake16_gfx11_gfx12<0x037
18351855
defm V_FMAAK_F16 : VOP2Only_Real_MADK_t16_and_fake16_gfx11_gfx12<0x038, "v_fmaak_f16">;
18361856

18371857
// VOP3 only.
1838-
defm V_CNDMASK_B16 : VOP3Only_Realtriple_gfx11_gfx12<0x25d>;
1858+
defm V_CNDMASK_B16 : VOP3Only_Realtriple_t16_and_fake16_gfx11_gfx12<0x25d, "v_cndmask_b16">;
18391859
defm V_LDEXP_F32 : VOP3Only_Realtriple_gfx11_gfx12<0x31c>;
18401860
defm V_BFM_B32 : VOP3Only_Realtriple_gfx11_gfx12<0x31d>;
18411861
defm V_BCNT_U32_B32 : VOP3Only_Realtriple_gfx11_gfx12<0x31e>;

llvm/test/MC/AMDGPU/gfx11_asm_vop3.s

Lines changed: 100 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -890,104 +890,131 @@ v_bfm_b32 v5, src_scc, vcc_lo
890890
v_bfm_b32 v255, 0xaf123456, vcc_hi
891891
// GFX11: v_bfm_b32 v255, 0xaf123456, vcc_hi ; encoding: [0xff,0x00,0x1d,0xd7,0xff,0xd6,0x00,0x00,0x56,0x34,0x12,0xaf]
892892

893-
v_cndmask_b16 v5, v1, src_scc, s3
894-
// W32: v_cndmask_b16 v5, v1, src_scc, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x01,0xfb,0x0d,0x00]
895-
// W64-ERR: :[[@LINE-2]]:32: error: invalid operand for instruction
893+
v_cndmask_b16 v5.l, v1.l, src_scc, s3
894+
// W32: v_cndmask_b16 v5.l, v1.l, src_scc, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x01,0xfb,0x0d,0x00]
895+
// W64-ERR: :[[@LINE-2]]:36: error: invalid operand for instruction
896896

897-
v_cndmask_b16 v5, v255, 0.5, s3
898-
// W32: v_cndmask_b16 v5, v255, 0.5, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0xff,0xe1,0x0d,0x00]
899-
// W64-ERR: :[[@LINE-2]]:30: error: invalid operand for instruction
897+
v_cndmask_b16 v5.l, v255.l, 0.5, s3
898+
// W32: v_cndmask_b16 v5.l, v255.l, 0.5, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0xff,0xe1,0x0d,0x00]
899+
// W64-ERR: :[[@LINE-2]]:34: error: invalid operand for instruction
900900

901-
v_cndmask_b16 v5, s105, s105, s3
902-
// W32: v_cndmask_b16 v5, s105, s105, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x69,0xd2,0x0c,0x00]
903-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
904-
905-
v_cndmask_b16 v5, vcc_hi, v2, s3
906-
// W32: v_cndmask_b16 v5, vcc_hi, v2, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x6b,0x04,0x0e,0x00]
907-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
901+
v_cndmask_b16 v5.l, s105, s105, s3
902+
// W32: v_cndmask_b16 v5.l, s105, s105, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x69,0xd2,0x0c,0x00]
903+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
908904

909-
v_cndmask_b16 v5, ttmp15, ttmp15, s3
910-
// W32: v_cndmask_b16 v5, ttmp15, ttmp15, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7b,0xf6,0x0c,0x00]
911-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
905+
v_cndmask_b16 v5.l, vcc_hi, v2.l, s3
906+
// W32: v_cndmask_b16 v5.l, vcc_hi, v2.l, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x6b,0x04,0x0e,0x00]
907+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
912908

913-
v_cndmask_b16 v5, m0, v255, s3
914-
// W32: v_cndmask_b16 v5, m0, v255, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7d,0xfe,0x0f,0x00]
915-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
909+
v_cndmask_b16 v5.l, ttmp15, ttmp15, s3
910+
// W32: v_cndmask_b16 v5.l, ttmp15, ttmp15, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7b,0xf6,0x0c,0x00]
911+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
916912

917-
v_cndmask_b16 v5, exec_lo, exec_lo, s3
918-
// W32: v_cndmask_b16 v5, exec_lo, exec_lo, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7e,0xfc,0x0c,0x00]
919-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
913+
v_cndmask_b16 v5.l, m0, v255.l, s3
914+
// W32: v_cndmask_b16 v5.l, m0, v255.l, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7d,0xfe,0x0f,0x00]
915+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
920916

921-
v_cndmask_b16 v5, exec_hi, exec_hi, s3
922-
// W32: v_cndmask_b16 v5, exec_hi, exec_hi, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7f,0xfe,0x0c,0x00]
923-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
917+
v_cndmask_b16 v5.l, exec_lo, exec_lo, s3
918+
// W32: v_cndmask_b16 v5.l, exec_lo, exec_lo, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7e,0xfc,0x0c,0x00]
919+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
924920

925-
v_cndmask_b16 v5, null, m0, s105
926-
// W32: v_cndmask_b16 v5, null, m0, s105 ; encoding: [0x05,0x00,0x5d,0xd6,0x7c,0xfa,0xa4,0x01]
927-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
921+
v_cndmask_b16 v5.l, exec_hi, exec_hi, s3
922+
// W32: v_cndmask_b16 v5.l, exec_hi, exec_hi, s3 ; encoding: [0x05,0x00,0x5d,0xd6,0x7f,0xfe,0x0c,0x00]
923+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
928924

929-
v_cndmask_b16 v5, -1, -|vcc_lo|, vcc_lo
930-
// W32: v_cndmask_b16 v5, -1, -|vcc_lo|, vcc_lo ; encoding: [0x05,0x02,0x5d,0xd6,0xc1,0xd4,0xa8,0x41]
931-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
925+
v_cndmask_b16 v5.l, null, m0, s105
926+
// W32: v_cndmask_b16 v5.l, null, m0, s105 ; encoding: [0x05,0x00,0x5d,0xd6,0x7c,0xfa,0xa4,0x01]
927+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
932928

933-
v_cndmask_b16 v5, 0.5, -1, vcc_hi
934-
// W32: v_cndmask_b16 v5, 0.5, -1, vcc_hi ; encoding: [0x05,0x00,0x5d,0xd6,0xf0,0x82,0xad,0x01]
935-
// W64-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
929+
v_cndmask_b16 v5.l, -1, -|vcc_lo|, vcc_lo
930+
// W32: v_cndmask_b16 v5.l, -1, -|vcc_lo|, vcc_lo ; encoding: [0x05,0x02,0x5d,0xd6,0xc1,0xd4,0xa8,0x41]
931+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
936932

937-
v_cndmask_b16 v5, -|src_scc|, null, ttmp15
938-
// W32: v_cndmask_b16 v5, -|src_scc|, null, ttmp15 ; encoding: [0x05,0x01,0x5d,0xd6,0xfd,0xf8,0xec,0x21]
933+
v_cndmask_b16 v5.l, 0.5, -1, vcc_hi
934+
// W32: v_cndmask_b16 v5.l, 0.5, -1, vcc_hi ; encoding: [0x05,0x00,0x5d,0xd6,0xf0,0x82,0xad,0x01]
939935
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
940936

941-
v_cndmask_b16 v5, v1, src_scc, s[6:7]
942-
// W64: v_cndmask_b16 v5, v1, src_scc, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x01,0xfb,0x19,0x00]
943-
// W32-ERR: :[[@LINE-2]]:32: error: invalid operand for instruction
937+
v_cndmask_b16 v5.l, -|src_scc|, null, ttmp15
938+
// W32: v_cndmask_b16 v5.l, -|src_scc|, null, ttmp15 ; encoding: [0x05,0x01,0x5d,0xd6,0xfd,0xf8,0xec,0x21]
939+
// W64-ERR: :[[@LINE-2]]:23: error: invalid operand for instruction
944940

945-
v_cndmask_b16 v5, v255, 0.5, s[6:7]
946-
// W64: v_cndmask_b16 v5, v255, 0.5, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0xff,0xe1,0x19,0x00]
947-
// W32-ERR: :[[@LINE-2]]:30: error: invalid operand for instruction
941+
v_cndmask_b16 v5.l, v1.l, src_scc, s[6:7]
942+
// W64: v_cndmask_b16 v5.l, v1.l, src_scc, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x01,0xfb,0x19,0x00]
943+
// W32-ERR: :[[@LINE-2]]:36: error: invalid operand for instruction
948944

949-
v_cndmask_b16 v5, s105, s105, s[6:7]
950-
// W64: v_cndmask_b16 v5, s105, s105, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x69,0xd2,0x18,0x00]
951-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
945+
v_cndmask_b16 v5.l, v255.l, 0.5, s[6:7]
946+
// W64: v_cndmask_b16 v5.l, v255.l, 0.5, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0xff,0xe1,0x19,0x00]
947+
// W32-ERR: :[[@LINE-2]]:34: error: invalid operand for instruction
952948

953-
v_cndmask_b16 v5, vcc_hi, v2, s[6:7]
954-
// W64: v_cndmask_b16 v5, vcc_hi, v2, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x6b,0x04,0x1a,0x00]
955-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
949+
v_cndmask_b16 v5.l, s105, s105, s[6:7]
950+
// W64: v_cndmask_b16 v5.l, s105, s105, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x69,0xd2,0x18,0x00]
951+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
956952

957-
v_cndmask_b16 v5, ttmp15, ttmp15, s[6:7]
958-
// W64: v_cndmask_b16 v5, ttmp15, ttmp15, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7b,0xf6,0x18,0x00]
959-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
953+
v_cndmask_b16 v5.l, vcc_hi, v2.l, s[6:7]
954+
// W64: v_cndmask_b16 v5.l, vcc_hi, v2.l, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x6b,0x04,0x1a,0x00]
955+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
960956

961-
v_cndmask_b16 v5, m0, v255, s[6:7]
962-
// W64: v_cndmask_b16 v5, m0, v255, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7d,0xfe,0x1b,0x00]
963-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
957+
v_cndmask_b16 v5.l, ttmp15, ttmp15, s[6:7]
958+
// W64: v_cndmask_b16 v5.l, ttmp15, ttmp15, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7b,0xf6,0x18,0x00]
959+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
964960

965-
v_cndmask_b16 v5, exec_lo, exec_lo, s[6:7]
966-
// W64: v_cndmask_b16 v5, exec_lo, exec_lo, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7e,0xfc,0x18,0x00]
967-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
961+
v_cndmask_b16 v5.l, m0, v255.l, s[6:7]
962+
// W64: v_cndmask_b16 v5.l, m0, v255.l, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7d,0xfe,0x1b,0x00]
963+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
968964

969-
v_cndmask_b16 v5, exec_hi, exec_hi, s[6:7]
970-
// W64: v_cndmask_b16 v5, exec_hi, exec_hi, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7f,0xfe,0x18,0x00]
971-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
965+
v_cndmask_b16 v5.l, exec_lo, exec_lo, s[6:7]
966+
// W64: v_cndmask_b16 v5.l, exec_lo, exec_lo, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7e,0xfc,0x18,0x00]
967+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
972968

973-
v_cndmask_b16 v5, null, m0, s[6:7]
974-
// W64: v_cndmask_b16 v5, null, m0, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7c,0xfa,0x18,0x00]
975-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
969+
v_cndmask_b16 v5.l, exec_hi, exec_hi, s[6:7]
970+
// W64: v_cndmask_b16 v5.l, exec_hi, exec_hi, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7f,0xfe,0x18,0x00]
971+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
976972

977-
v_cndmask_b16 v5, -1, -|vcc_lo|, s[104:105]
978-
// W64: v_cndmask_b16 v5, -1, -|vcc_lo|, s[104:105] ; encoding: [0x05,0x02,0x5d,0xd6,0xc1,0xd4,0xa0,0x41]
979-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
973+
v_cndmask_b16 v5.l, null, m0, s[6:7]
974+
// W64: v_cndmask_b16 v5.l, null, m0, s[6:7] ; encoding: [0x05,0x00,0x5d,0xd6,0x7c,0xfa,0x18,0x00]
975+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
976+
977+
v_cndmask_b16 v5.l, -1, -|vcc_lo|, s[104:105]
978+
// W64: v_cndmask_b16 v5.l, -1, -|vcc_lo|, s[104:105] ; encoding: [0x05,0x02,0x5d,0xd6,0xc1,0xd4,0xa0,0x41]
979+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
980+
981+
v_cndmask_b16 v5.l, 0.5, -1, vcc
982+
// W64: v_cndmask_b16 v5.l, 0.5, -1, vcc ; encoding: [0x05,0x00,0x5d,0xd6,0xf0,0x82,0xa9,0x01]
983+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
984+
985+
v_cndmask_b16 v5.l, -|src_scc|, null, ttmp[14:15]
986+
// W64: v_cndmask_b16 v5.l, -|src_scc|, null, ttmp[14:15] ; encoding: [0x05,0x01,0x5d,0xd6,0xfd,0xf8,0xe8,0x21]
987+
// W32-ERR: :[[@LINE-2]]:23: error: invalid operand for instruction
988+
989+
v_cndmask_b16 v255.l, -|0xfe0b|, -|vcc_hi|, null
990+
// GFX11: v_cndmask_b16 v255.l, -|0xfe0b|, -|vcc_hi|, null ; encoding: [0xff,0x03,0x5d,0xd6,0xff,0xd6,0xf0,0x61,0x0b,0xfe,0x00,0x00]
991+
992+
v_cndmask_b16 v5.l, 0x3800, -1, vcc_lo
993+
// W32: v_cndmask_b16 v5.l, 0x3800, -1, vcc_lo ; encoding: [0x05,0x00,0x5d,0xd6,0xff,0x82,0xa9,0x01,0x00,0x38,0x00,0x00]
994+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
995+
996+
v_cndmask_b16 v5.l, 0x3800, -1, vcc
997+
// W64: v_cndmask_b16 v5.l, 0x3800, -1, vcc ; encoding: [0x05,0x00,0x5d,0xd6,0xff,0x82,0xa9,0x01,0x00,0x38,0x00,0x00]
998+
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
999+
1000+
v_cndmask_b16 v5.l, v255.h, 0.5, s3
1001+
// W32: v_cndmask_b16 v5.l, v255.h, 0.5, s3 ; encoding: [0x05,0x08,0x5d,0xd6,0xff,0xe1,0x0d,0x00]
1002+
// W64-ERR: :[[@LINE-2]]:34: error: invalid operand for instruction
1003+
1004+
v_cndmask_b16 v5.l, m0, v255.h, s3
1005+
// W32: v_cndmask_b16 v5.l, m0, v255.h, s3 ; encoding: [0x05,0x10,0x5d,0xd6,0x7d,0xfe,0x0f,0x00]
1006+
// W64-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
9801007

981-
v_cndmask_b16 v5, 0.5, -1, vcc
982-
// W64: v_cndmask_b16 v5, 0.5, -1, vcc ; encoding: [0x05,0x00,0x5d,0xd6,0xf0,0x82,0xa9,0x01]
983-
// W32-ERR: :[[@LINE-2]]:19: error: invalid operand for instruction
1008+
v_cndmask_b16 v5.l, v255.h, 0.5, s[6:7]
1009+
// W64: v_cndmask_b16 v5.l, v255.h, 0.5, s[6:7] ; encoding: [0x05,0x08,0x5d,0xd6,0xff,0xe1,0x19,0x00]
1010+
// W32-ERR: :[[@LINE-2]]:34: error: invalid operand for instruction
9841011

985-
v_cndmask_b16 v5, -|src_scc|, null, ttmp[14:15]
986-
// W64: v_cndmask_b16 v5, -|src_scc|, null, ttmp[14:15] ; encoding: [0x05,0x01,0x5d,0xd6,0xfd,0xf8,0xe8,0x21]
1012+
v_cndmask_b16 v5.l, m0, v255.h, s[6:7]
1013+
// W64: v_cndmask_b16 v5.l, m0, v255.h, s[6:7] ; encoding: [0x05,0x10,0x5d,0xd6,0x7d,0xfe,0x1b,0x00]
9871014
// W32-ERR: :[[@LINE-2]]:21: error: invalid operand for instruction
9881015

989-
v_cndmask_b16 v255, -|0xfe0b|, -|vcc_hi|, null
990-
// GFX11: v_cndmask_b16 v255, -|0xfe0b|, -|vcc_hi|, null ; encoding: [0xff,0x03,0x5d,0xd6,0xff,0xd6,0xf0,0x61,0x0b,0xfe,0x00,0x00]
1016+
v_cndmask_b16 v255.h, -|0xfe0b|, -|vcc_hi|, null
1017+
// GFX11: v_cndmask_b16 v255.h, -|0xfe0b|, -|vcc_hi|, null ; encoding: [0xff,0x43,0x5d,0xd6,0xff,0xd6,0xf0,0x61,0x0b,0xfe,0x00,0x00]
9911018

9921019
v_cubeid_f32 v5, v1, v2, s3
9931020
// GFX11: v_cubeid_f32 v5, v1, v2, s3 ; encoding: [0x05,0x00,0x0c,0xd6,0x01,0x05,0x0e,0x00]

0 commit comments

Comments
 (0)