diff --git a/llvm/lib/Target/AMDGPU/VOP1Instructions.td b/llvm/lib/Target/AMDGPU/VOP1Instructions.td index 2c0871347ebb9..211112e5262a3 100644 --- a/llvm/lib/Target/AMDGPU/VOP1Instructions.td +++ b/llvm/lib/Target/AMDGPU/VOP1Instructions.td @@ -892,6 +892,8 @@ class VOP1_DPP16_Gen op, VOP1_DPP_Pseudo ps, GFXGen Gen, VOPProfile p = VOP1_DPP16 { let AssemblerPredicate = Gen.AssemblerPredicate; let DecoderNamespace = Gen.DecoderNamespace; + let OtherPredicates = !listconcat(ps.OtherPredicates, + !if(p.HasExt64BitDPP, [HasDPALU_DPP], [])); } class VOP1_DPP8 op, VOP1_Pseudo ps, VOPProfile p = ps.Pfl> : @@ -967,7 +969,8 @@ multiclass VOP1_Real_dpp_with_name op, string opName, multiclass VOP1_Real_dpp8 op, string opName = NAME> { defvar ps = !cast(opName#"_e32"); - def _dpp8#Gen.Suffix : VOP1_DPP8_Gen; + if !not(ps.Pfl.HasExt64BitDPP) then + def _dpp8#Gen.Suffix : VOP1_DPP8_Gen; } multiclass VOP1_Real_dpp8_with_name op, string opName, @@ -976,7 +979,8 @@ multiclass VOP1_Real_dpp8_with_name op, string opName, let AsmString = asmName # ps.Pfl.AsmDPP8, DecoderNamespace = Gen.DecoderNamespace # !if(ps.Pfl.IsRealTrue16, "", "_FAKE16") in { - defm NAME : VOP1_Real_dpp8; + if !not(ps.Pfl.HasExt64BitDPP) then + defm NAME : VOP1_Real_dpp8; } } diff --git a/llvm/test/MC/AMDGPU/gfx1250_err.s b/llvm/test/MC/AMDGPU/gfx1250_err.s index ddb6d9520ce1d..97ea5e758676f 100644 --- a/llvm/test/MC/AMDGPU/gfx1250_err.s +++ b/llvm/test/MC/AMDGPU/gfx1250_err.s @@ -2,6 +2,16 @@ // Check for unique 64-bit literal +v_mov_b64 v[4:5], v[2:3] quad_perm:[1,1,1,1] +// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX1250-ERR: v_mov_b64 v[4:5], v[2:3] quad_perm:[1,1,1,1] +// GFX1250-ERR: ^ + +v_mov_b64 v[4:5], v[2:3] dpp8:[7,6,5,4,3,2,1,0] +// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX1250-ERR: v_mov_b64 v[4:5], v[2:3] dpp8:[7,6,5,4,3,2,1,0] +// GFX1250-ERR: ^ + s_andn2_b64 s[2:3], 0x10abcdef12345678, 0xabcdef12345678 // GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed // GFX1250-ERR: s_andn2_b64 s[2:3], 0x10abcdef12345678, 0xabcdef12345678