[llvm] [AMDGPU][MC] Separate VOPC MnemonicAlias from Instruction (PR #89105)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 18 00:15:13 PDT 2024
================
@@ -1514,24 +1520,29 @@ multiclass VOPCX_Real<GFXGen Gen, bits<9> op> {
multiclass VOPCX_Real_with_name<GFXGen Gen, bits<9> op, string OpName,
string asm_name, string pseudo_mnemonic = ""> {
- let AssemblerPredicate = Gen.AssemblerPredicate, DecoderNamespace = Gen.DecoderNamespace in {
- defvar ps32 = !cast<VOPC_Pseudo>(OpName#"_nosdst_e32");
- defvar ps64 = !cast<VOP3_Pseudo>(OpName#"_nosdst_e64");
+ defvar ps32 = !cast<VOPC_Pseudo>(OpName#"_nosdst_e32");
+ defvar ps64 = !cast<VOP3_Pseudo>(OpName#"_nosdst_e64");
+ let AssemblerPredicate = Gen.AssemblerPredicate in {
+ // MnemonicAlias and GCNPredicateControl both define the field Predicates,
+ // so GCNPredicateControl must come after MnemonicAlias because it contains
+ // the predicates we actually want.
+ def : MnemonicAlias<!if(!empty(pseudo_mnemonic), !subst("_nosdst", "", ps32.Mnemonic),
+ pseudo_mnemonic),
+ asm_name, ps32.AsmVariantName>,
+ GCNPredicateControl;
+ def : MnemonicAlias<!if(!empty(pseudo_mnemonic), !subst("_nosdst", "", ps64.Mnemonic),
+ pseudo_mnemonic),
+ asm_name, ps64.AsmVariantName>,
+ GCNPredicateControl;
+
+ let DecoderNamespace = Gen.DecoderNamespace in {
def _e32#Gen.Suffix
----------------
jayfoad wrote:
Same here.
https://github.com/llvm/llvm-project/pull/89105
More information about the llvm-commits
mailing list