[llvm] [AMDGPU][MC] Allow nodone etc. in exp instructions (PR #172749)
Jun Wang via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 19 17:08:34 PST 2026
https://github.com/jwanggit86 updated https://github.com/llvm/llvm-project/pull/172749
>From 8c86bc724fe439bfada5c5fedaa7afc8eaa63092 Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
Date: Wed, 17 Dec 2025 14:54:06 -0800
Subject: [PATCH 1/2] [AMDGPU][MC] Allow nodone etc. in exp instructions
This patch allows nodone, nocompr, novm, and norow_en to be used
in exp instructions to indicate the corresponding modifiers are
not present.
---
.../AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 22 ++-
llvm/lib/Target/AMDGPU/SIInstrInfo.td | 10 +-
llvm/test/MC/AMDGPU/gfx10_asm_exp.s | 145 ++++++++++++++++++
.../MC/AMDGPU/gfx11_asm_exp_opt_operands.s | 79 ++++++++++
llvm/test/MC/AMDGPU/gfx12_asm_exp.s | 80 ++++++++++
llvm/test/MC/AMDGPU/gfx9_asm_exp.s | 102 ++++++++++++
6 files changed, 430 insertions(+), 8 deletions(-)
create mode 100644 llvm/test/MC/AMDGPU/gfx10_asm_exp.s
create mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 7a91a40e18cde..9de260abf737a 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -143,6 +143,8 @@ class AMDGPUOperand : public MCParsedAsmOperand {
ImmTyExpTgt,
ImmTyExpCompr,
ImmTyExpVM,
+ ImmTyDone,
+ ImmTyRowEn,
ImmTyFORMAT,
ImmTyHwreg,
ImmTyOff,
@@ -413,6 +415,8 @@ class AMDGPUOperand : public MCParsedAsmOperand {
bool isNegLo() const { return isImmTy(ImmTyNegLo); }
bool isNegHi() const { return isImmTy(ImmTyNegHi); }
bool isBitOp3() const { return isImmTy(ImmTyBitOp3) && isUInt<8>(getImm()); }
+ bool isDone() const { return isImmTy(ImmTyDone); }
+ bool isRowEn() const { return isImmTy(ImmTyRowEn); }
bool isRegOrImm() const {
return isReg() || isImm();
@@ -1138,6 +1142,8 @@ class AMDGPUOperand : public MCParsedAsmOperand {
case ImmTyExpTgt: OS << "ExpTgt"; break;
case ImmTyExpCompr: OS << "ExpCompr"; break;
case ImmTyExpVM: OS << "ExpVM"; break;
+ case ImmTyDone: OS << "Done"; break;
+ case ImmTyRowEn: OS << "RowEn"; break;
case ImmTyHwreg: OS << "Hwreg"; break;
case ImmTySendMsg: OS << "SendMsg"; break;
case ImmTyInterpSlot: OS << "InterpSlot"; break;
@@ -1680,7 +1686,8 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
ParseStatus
parseNamedBit(StringRef Name, OperandVector &Operands,
- AMDGPUOperand::ImmTy ImmTy = AMDGPUOperand::ImmTyNone);
+ AMDGPUOperand::ImmTy ImmTy = AMDGPUOperand::ImmTyNone,
+ bool IgnoreNegative = false);
unsigned getCPolKind(StringRef Id, StringRef Mnemo, bool &Disabling) const;
ParseStatus parseCPol(OperandVector &Operands);
ParseStatus parseScope(OperandVector &Operands, int64_t &Scope);
@@ -7032,13 +7039,16 @@ ParseStatus AMDGPUAsmParser::parseOperandArrayWithPrefix(
ParseStatus AMDGPUAsmParser::parseNamedBit(StringRef Name,
OperandVector &Operands,
- AMDGPUOperand::ImmTy ImmTy) {
+ AMDGPUOperand::ImmTy ImmTy,
+ bool IgnoreNegative) {
int64_t Bit;
SMLoc S = getLoc();
if (trySkipId(Name)) {
Bit = 1;
} else if (trySkipId("no", Name)) {
+ if (IgnoreNegative)
+ return ParseStatus::Success;
Bit = 0;
} else {
return ParseStatus::NoMatch;
@@ -10434,7 +10444,7 @@ ParseStatus AMDGPUAsmParser::parseCustomOperand(OperandVector &Operands,
case MCK_addr64:
return parseTokenOp("addr64", Operands);
case MCK_done:
- return parseTokenOp("done", Operands);
+ return parseNamedBit("done", Operands, AMDGPUOperand::ImmTyDone, true);
case MCK_idxen:
return parseTokenOp("idxen", Operands);
case MCK_lds:
@@ -10444,7 +10454,7 @@ ParseStatus AMDGPUAsmParser::parseCustomOperand(OperandVector &Operands,
case MCK_off:
return parseTokenOp("off", Operands);
case MCK_row_95_en:
- return parseTokenOp("row_en", Operands);
+ return parseNamedBit("row_en", Operands, AMDGPUOperand::ImmTyRowEn, true);
case MCK_gds:
return parseNamedBit("gds", Operands, AMDGPUOperand::ImmTyGDS);
case MCK_tfe:
@@ -10475,6 +10485,10 @@ unsigned AMDGPUAsmParser::validateTargetOperandClass(MCParsedAsmOperand &Op,
return Operand.isOffen() ? Match_Success : Match_InvalidOperand;
case MCK_tfe:
return Operand.isTFE() ? Match_Success : Match_InvalidOperand;
+ case MCK_done:
+ return Operand.isDone() ? Match_Success : Match_InvalidOperand;
+ case MCK_row_95_en:
+ return Operand.isRowEn() ? Match_Success : Match_InvalidOperand;
case MCK_SSrc_b32:
// When operands have expression values, they will return true for isToken,
// because it is not possible to distinguish between a token and an
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
index 2ec3ec8674488..61320f46f7763 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -1198,12 +1198,12 @@ class NamedIntOperand<string prefix, bit Optional = 1, string name = NAME>
!if(AlwaysPrint, "true", "false")#"); }";
}
-class NamedBitOperand<string Id, string Name = NAME>
+class NamedBitOperand<string Id, string Name = NAME, bit AlwaysIgnoreNegative = 0>
: CustomOperand<i1, 1, Name> {
let PredicateMethod = "isImmTy<AMDGPUOperand::"#ImmTy#">";
let ParserMethod =
"[this](OperandVector &Operands) -> ParseStatus { "#
- "return parseNamedBit(\""#Id#"\", Operands, AMDGPUOperand::"#ImmTy#"); }";
+ "return parseNamedBit(\""#Id#"\", Operands, AMDGPUOperand::"#ImmTy# !if(AlwaysIgnoreNegative, ", true", ", false")#"); }";
let PrintMethod = "[this](const MCInst *MI, unsigned OpNo, "#
"const MCSubtargetInfo &STI, raw_ostream &O) { "#
"printNamedBit(MI, OpNo, O, \""#Id#"\"); }";
@@ -1268,8 +1268,10 @@ def R128A16 : CustomOperand<i1, 1>;
def A16 : NamedBitOperand<"a16">;
def D16 : NamedBitOperand<"d16">;
def LWE : NamedBitOperand<"lwe">;
-def exp_compr : NamedBitOperand<"compr", "ExpCompr">;
-def exp_vm : NamedBitOperand<"vm", "ExpVM">;
+def exp_compr : NamedBitOperand<"compr", "ExpCompr", 1>;
+def exp_vm : NamedBitOperand<"vm", "ExpVM", 1>;
+def exp_done : NamedBitOperand<"done", "Done", 1>;
+def exp_row_en : NamedBitOperand<"row_en", "RowEn", 1>;
def FORMAT : CustomOperand<i8>;
diff --git a/llvm/test/MC/AMDGPU/gfx10_asm_exp.s b/llvm/test/MC/AMDGPU/gfx10_asm_exp.s
new file mode 100644
index 0000000000000..b7e45d18e7058
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/gfx10_asm_exp.s
@@ -0,0 +1,145 @@
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1010 -show-encoding %s | FileCheck %s
+
+exp mrt0 v0, v0, v0, v0
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 done
+// CHECK: exp mrt0 v0, v0, v0, v0 done ; encoding: [0x0f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 done
+// CHECK: exp mrtz v0, v0, v0, v0 done ; encoding: [0x8f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 done
+// CHECK: exp null v0, v0, v0, v0 done ; encoding: [0x9f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 done
+// CHECK: exp pos0 v0, v0, v0, v0 done ; encoding: [0xcf,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 done
+// CHECK: exp param0 v0, v0, v0, v0 done ; encoding: [0x0f,0x0a,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 done
+// CHECK: exp prim v0, v0, v0, v0 done ; encoding: [0x4f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 nodone
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 nodone
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 nodone
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nodone
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 compr
+// CHECK: exp mrt0 v0, v0, v0, v0 compr ; encoding: [0x0f,0x04,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 compr
+// CHECK: exp mrtz v0, v0, v0, v0 compr ; encoding: [0x8f,0x04,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 compr
+// CHECK: exp null v0, v0, v0, v0 compr ; encoding: [0x9f,0x04,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 compr
+// CHECK: exp pos0 v0, v0, v0, v0 compr ; encoding: [0xcf,0x04,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 compr
+// CHECK: exp param0 v0, v0, v0, v0 compr ; encoding: [0x0f,0x06,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 compr
+// CHECK: exp prim v0, v0, v0, v0 compr ; encoding: [0x4f,0x05,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 nocompr
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nocompr
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 nocompr
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nocompr
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 nocompr
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nocompr
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 vm
+// CHECK: exp mrt0 v0, v0, v0, v0 vm ; encoding: [0x0f,0x10,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 vm
+// CHECK: exp mrtz v0, v0, v0, v0 vm ; encoding: [0x8f,0x10,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 vm
+// CHECK: exp null v0, v0, v0, v0 vm ; encoding: [0x9f,0x10,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 vm
+// CHECK: exp pos0 v0, v0, v0, v0 vm ; encoding: [0xcf,0x10,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 vm
+// CHECK: exp param0 v0, v0, v0, v0 vm ; encoding: [0x0f,0x12,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 vm
+// CHECK: exp prim v0, v0, v0, v0 vm ; encoding: [0x4f,0x11,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 novm
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 novm
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 novm
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 novm
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 novm
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 novm
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s b/llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s
new file mode 100644
index 0000000000000..fcdac8aed13ab
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s
@@ -0,0 +1,79 @@
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck %s
+
+exp mrt0 v0, v0, v0, v0 done
+// CHECK: exp mrt0 v0, v0, v0, v0 done ; encoding: [0x0f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 done
+// CHECK: exp mrtz v0, v0, v0, v0 done ; encoding: [0x8f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 done
+// CHECK: exp prim v0, v0, v0, v0 done ; encoding: [0x4f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 done
+// CHECK: exp pos0 v0, v0, v0, v0 done ; encoding: [0xcf,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 done
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 done ; encoding: [0x5f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 nodone
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nodone
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 nodone
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 row_en
+// CHECK: exp mrt0 v0, v0, v0, v0 row_en ; encoding: [0x0f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 row_en
+// CHECK: exp mrtz v0, v0, v0, v0 row_en ; encoding: [0x8f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 row_en
+// CHECK: exp prim v0, v0, v0, v0 row_en ; encoding: [0x4f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 row_en
+// CHECK: exp pos0 v0, v0, v0, v0 row_en ; encoding: [0xcf,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 row_en
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 row_en ; encoding: [0x5f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 norow_en
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 norow_en
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 norow_en
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 norow_en
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 norow_en
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 nodone norow_en
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone norow_en
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nodone norow_en
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone norow_en
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 nodone norow_en
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
diff --git a/llvm/test/MC/AMDGPU/gfx12_asm_exp.s b/llvm/test/MC/AMDGPU/gfx12_asm_exp.s
index e93696f5ad082..7f3a78ecbef15 100644
--- a/llvm/test/MC/AMDGPU/gfx12_asm_exp.s
+++ b/llvm/test/MC/AMDGPU/gfx12_asm_exp.s
@@ -60,3 +60,83 @@ export pos3 v4, v3, v2, v1
export pos3 v4, v3, v2, v1 done
// GFX12: export pos3 v4, v3, v2, v1 done ; encoding: [0xff,0x08,0x00,0xf8,0x04,0x03,0x02,0x01]
+
+// Optional operands: done and row_en
+
+export mrt0 v0, v0, v0, v0 done
+// GFX12: export mrt0 v0, v0, v0, v0 done ; encoding: [0x0f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export mrtz v0, v0, v0, v0 done
+// GFX12: export mrtz v0, v0, v0, v0 done ; encoding: [0x8f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export prim v0, v0, v0, v0 done
+// GFX12: export prim v0, v0, v0, v0 done ; encoding: [0x4f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export pos0 v0, v0, v0, v0 done
+// GFX12: export pos0 v0, v0, v0, v0 done ; encoding: [0xcf,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export dual_src_blend0 v0, v0, v0, v0 done
+// GFX12: export dual_src_blend0 v0, v0, v0, v0 done ; encoding: [0x5f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+export mrt0 v0, v0, v0, v0 nodone
+// GFX12: export mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export mrtz v0, v0, v0, v0 nodone
+// GFX12: export mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export prim v0, v0, v0, v0 nodone
+// GFX12: export prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export pos0 v0, v0, v0, v0 nodone
+// GFX12: export pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export dual_src_blend0 v0, v0, v0, v0 nodone
+// GFX12: export dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+export mrt0 v0, v0, v0, v0 row_en
+// GFX12: export mrt0 v0, v0, v0, v0 row_en ; encoding: [0x0f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export mrtz v0, v0, v0, v0 row_en
+// GFX12: export mrtz v0, v0, v0, v0 row_en ; encoding: [0x8f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export prim v0, v0, v0, v0 row_en
+// GFX12: export prim v0, v0, v0, v0 row_en ; encoding: [0x4f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export pos0 v0, v0, v0, v0 row_en
+// GFX12: export pos0 v0, v0, v0, v0 row_en ; encoding: [0xcf,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export dual_src_blend0 v0, v0, v0, v0 row_en
+// GFX12: export dual_src_blend0 v0, v0, v0, v0 row_en ; encoding: [0x5f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export mrt0 v0, v0, v0, v0 norow_en
+// GFX12: export mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export mrtz v0, v0, v0, v0 norow_en
+// GFX12: export mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export prim v0, v0, v0, v0 norow_en
+// GFX12: export prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export pos0 v0, v0, v0, v0 norow_en
+// GFX12: export pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export dual_src_blend0 v0, v0, v0, v0 norow_en
+// GFX12: export dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+export mrt0 v0, v0, v0, v0 nodone norow_en
+// GFX12: export mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export mrtz v0, v0, v0, v0 nodone norow_en
+// GFX12: export mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export prim v0, v0, v0, v0 nodone norow_en
+// GFX12: export prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export pos0 v0, v0, v0, v0 nodone norow_en
+// GFX12: export pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+export dual_src_blend0 v0, v0, v0, v0 nodone norow_en
+// GFX12: export dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
diff --git a/llvm/test/MC/AMDGPU/gfx9_asm_exp.s b/llvm/test/MC/AMDGPU/gfx9_asm_exp.s
index 514413201c02f..a8a961bd7fae6 100644
--- a/llvm/test/MC/AMDGPU/gfx9_asm_exp.s
+++ b/llvm/test/MC/AMDGPU/gfx9_asm_exp.s
@@ -81,3 +81,105 @@ exp param0 v0, v0, v0, v0
exp pos0 v0, v0, v0, v0
// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 nodone
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 nocompr
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 novm
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+
+exp mrtz v0, v0, v0, v0 done
+// CHECK: exp mrtz v0, v0, v0, v0 done ; encoding: [0x8f,0x08,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 compr
+// CHECK: exp mrtz v0, v0, v0, v0 compr ; encoding: [0x8f,0x04,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nocompr
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 vm
+// CHECK: exp mrtz v0, v0, v0, v0 vm ; encoding: [0x8f,0x10,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 novm
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+
+exp null v0, v0, v0, v0 done
+// CHECK: exp null v0, v0, v0, v0 done ; encoding: [0x9f,0x08,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 nodone
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 compr
+// CHECK: exp null v0, v0, v0, v0 compr ; encoding: [0x9f,0x04,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 nocompr
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 vm
+// CHECK: exp null v0, v0, v0, v0 vm ; encoding: [0x9f,0x10,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 novm
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+
+exp pos0 v0, v0, v0, v0 done
+// CHECK: exp pos0 v0, v0, v0, v0 done ; encoding: [0xcf,0x08,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 compr
+// CHECK: exp pos0 v0, v0, v0, v0 compr ; encoding: [0xcf,0x04,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nocompr
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 vm
+// CHECK: exp pos0 v0, v0, v0, v0 vm ; encoding: [0xcf,0x10,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 novm
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+
+exp param0 v0, v0, v0, v0 done
+// CHECK: exp param0 v0, v0, v0, v0 done ; encoding: [0x0f,0x0a,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 nodone
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 compr
+// CHECK: exp param0 v0, v0, v0, v0 compr ; encoding: [0x0f,0x06,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 nocompr
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 vm
+// CHECK: exp param0 v0, v0, v0, v0 vm ; encoding: [0x0f,0x12,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 novm
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp null v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp null v0, v0, v0, v0 ; encoding: [0x9f,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xc4,0x00,0x00,0x00,0x00]
+
+exp param0 v0, v0, v0, v0 nodone nocompr novm
+// CHECK: exp param0 v0, v0, v0, v0 ; encoding: [0x0f,0x02,0x00,0xc4,0x00,0x00,0x00,0x00]
>From c9cb1dad655cb8e7660c96262b99e396648b9eea Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
Date: Mon, 19 Jan 2026 17:07:24 -0800
Subject: [PATCH 2/2] Rename some test files
---
llvm/test/MC/AMDGPU/exp-gfx11.s | 20 ++++
llvm/test/MC/AMDGPU/gfx11_asm_exp.s | 99 +++++++++++++++----
.../MC/AMDGPU/gfx11_asm_exp_opt_operands.s | 79 ---------------
3 files changed, 99 insertions(+), 99 deletions(-)
create mode 100644 llvm/test/MC/AMDGPU/exp-gfx11.s
delete mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s
diff --git a/llvm/test/MC/AMDGPU/exp-gfx11.s b/llvm/test/MC/AMDGPU/exp-gfx11.s
new file mode 100644
index 0000000000000..57aaa5e6f5e76
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/exp-gfx11.s
@@ -0,0 +1,20 @@
+// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --unique --sort --version 6
+// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx900 %s -filetype=null 2>&1 | FileCheck -check-prefix=PREGFX11 --implicit-check-not=error: %s
+// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1010 %s -filetype=null 2>&1 | FileCheck -check-prefix=PREGFX11 --implicit-check-not=error: %s
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck -check-prefix=GFX11 --implicit-check-not=error: %s
+
+exp dual_src_blend0 v4, v3, v2, v1
+// GFX11: exp dual_src_blend0 v4, v3, v2, v1 ; encoding: [0x5f,0x01,0x00,0xf8,0x04,0x03,0x02,0x01]
+// PREGFX11: :[[@LINE-2]]:5: error: exp target is not supported on this GPU
+
+exp dual_src_blend1 v2, v3, off, off
+// GFX11: exp dual_src_blend1 v2, v3, off, off ; encoding: [0x63,0x01,0x00,0xf8,0x02,0x03,0x00,0x00]
+// PREGFX11: :[[@LINE-2]]:5: error: exp target is not supported on this GPU
+
+exp mrtz v4, v3, off, off done row_en
+// GFX11: exp mrtz v4, v3, off, off done row_en ; encoding: [0x83,0x28,0x00,0xf8,0x04,0x03,0x00,0x00]
+// PREGFX11: :[[@LINE-2]]:32: error: invalid operand for instruction
+
+exp mrtz v4, v3, v2, v1 row_en
+// GFX11: exp mrtz v4, v3, v2, v1 row_en ; encoding: [0x8f,0x20,0x00,0xf8,0x04,0x03,0x02,0x01]
+// PREGFX11: :[[@LINE-2]]:25: error: invalid operand for instruction
diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_exp.s b/llvm/test/MC/AMDGPU/gfx11_asm_exp.s
index 57aaa5e6f5e76..fcdac8aed13ab 100644
--- a/llvm/test/MC/AMDGPU/gfx11_asm_exp.s
+++ b/llvm/test/MC/AMDGPU/gfx11_asm_exp.s
@@ -1,20 +1,79 @@
-// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --unique --sort --version 6
-// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx900 %s -filetype=null 2>&1 | FileCheck -check-prefix=PREGFX11 --implicit-check-not=error: %s
-// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1010 %s -filetype=null 2>&1 | FileCheck -check-prefix=PREGFX11 --implicit-check-not=error: %s
-// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck -check-prefix=GFX11 --implicit-check-not=error: %s
-
-exp dual_src_blend0 v4, v3, v2, v1
-// GFX11: exp dual_src_blend0 v4, v3, v2, v1 ; encoding: [0x5f,0x01,0x00,0xf8,0x04,0x03,0x02,0x01]
-// PREGFX11: :[[@LINE-2]]:5: error: exp target is not supported on this GPU
-
-exp dual_src_blend1 v2, v3, off, off
-// GFX11: exp dual_src_blend1 v2, v3, off, off ; encoding: [0x63,0x01,0x00,0xf8,0x02,0x03,0x00,0x00]
-// PREGFX11: :[[@LINE-2]]:5: error: exp target is not supported on this GPU
-
-exp mrtz v4, v3, off, off done row_en
-// GFX11: exp mrtz v4, v3, off, off done row_en ; encoding: [0x83,0x28,0x00,0xf8,0x04,0x03,0x00,0x00]
-// PREGFX11: :[[@LINE-2]]:32: error: invalid operand for instruction
-
-exp mrtz v4, v3, v2, v1 row_en
-// GFX11: exp mrtz v4, v3, v2, v1 row_en ; encoding: [0x8f,0x20,0x00,0xf8,0x04,0x03,0x02,0x01]
-// PREGFX11: :[[@LINE-2]]:25: error: invalid operand for instruction
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck %s
+
+exp mrt0 v0, v0, v0, v0 done
+// CHECK: exp mrt0 v0, v0, v0, v0 done ; encoding: [0x0f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 done
+// CHECK: exp mrtz v0, v0, v0, v0 done ; encoding: [0x8f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 done
+// CHECK: exp prim v0, v0, v0, v0 done ; encoding: [0x4f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 done
+// CHECK: exp pos0 v0, v0, v0, v0 done ; encoding: [0xcf,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 done
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 done ; encoding: [0x5f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 nodone
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nodone
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 nodone
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 row_en
+// CHECK: exp mrt0 v0, v0, v0, v0 row_en ; encoding: [0x0f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 row_en
+// CHECK: exp mrtz v0, v0, v0, v0 row_en ; encoding: [0x8f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 row_en
+// CHECK: exp prim v0, v0, v0, v0 row_en ; encoding: [0x4f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 row_en
+// CHECK: exp pos0 v0, v0, v0, v0 row_en ; encoding: [0xcf,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 row_en
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 row_en ; encoding: [0x5f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrt0 v0, v0, v0, v0 norow_en
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 norow_en
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 norow_en
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 norow_en
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 norow_en
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+
+exp mrt0 v0, v0, v0, v0 nodone norow_en
+// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp mrtz v0, v0, v0, v0 nodone norow_en
+// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp prim v0, v0, v0, v0 nodone norow_en
+// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp pos0 v0, v0, v0, v0 nodone norow_en
+// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
+
+exp dual_src_blend0 v0, v0, v0, v0 nodone norow_en
+// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s b/llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s
deleted file mode 100644
index fcdac8aed13ab..0000000000000
--- a/llvm/test/MC/AMDGPU/gfx11_asm_exp_opt_operands.s
+++ /dev/null
@@ -1,79 +0,0 @@
-// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck %s
-
-exp mrt0 v0, v0, v0, v0 done
-// CHECK: exp mrt0 v0, v0, v0, v0 done ; encoding: [0x0f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp mrtz v0, v0, v0, v0 done
-// CHECK: exp mrtz v0, v0, v0, v0 done ; encoding: [0x8f,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp prim v0, v0, v0, v0 done
-// CHECK: exp prim v0, v0, v0, v0 done ; encoding: [0x4f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp pos0 v0, v0, v0, v0 done
-// CHECK: exp pos0 v0, v0, v0, v0 done ; encoding: [0xcf,0x08,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp dual_src_blend0 v0, v0, v0, v0 done
-// CHECK: exp dual_src_blend0 v0, v0, v0, v0 done ; encoding: [0x5f,0x09,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-
-exp mrt0 v0, v0, v0, v0 nodone
-// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp mrtz v0, v0, v0, v0 nodone
-// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp prim v0, v0, v0, v0 nodone
-// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp pos0 v0, v0, v0, v0 nodone
-// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp dual_src_blend0 v0, v0, v0, v0 nodone
-// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-
-exp mrt0 v0, v0, v0, v0 row_en
-// CHECK: exp mrt0 v0, v0, v0, v0 row_en ; encoding: [0x0f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp mrtz v0, v0, v0, v0 row_en
-// CHECK: exp mrtz v0, v0, v0, v0 row_en ; encoding: [0x8f,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp prim v0, v0, v0, v0 row_en
-// CHECK: exp prim v0, v0, v0, v0 row_en ; encoding: [0x4f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp pos0 v0, v0, v0, v0 row_en
-// CHECK: exp pos0 v0, v0, v0, v0 row_en ; encoding: [0xcf,0x20,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp dual_src_blend0 v0, v0, v0, v0 row_en
-// CHECK: exp dual_src_blend0 v0, v0, v0, v0 row_en ; encoding: [0x5f,0x21,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp mrt0 v0, v0, v0, v0 norow_en
-// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp mrtz v0, v0, v0, v0 norow_en
-// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp prim v0, v0, v0, v0 norow_en
-// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp pos0 v0, v0, v0, v0 norow_en
-// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp dual_src_blend0 v0, v0, v0, v0 norow_en
-// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-
-exp mrt0 v0, v0, v0, v0 nodone norow_en
-// CHECK: exp mrt0 v0, v0, v0, v0 ; encoding: [0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp mrtz v0, v0, v0, v0 nodone norow_en
-// CHECK: exp mrtz v0, v0, v0, v0 ; encoding: [0x8f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp prim v0, v0, v0, v0 nodone norow_en
-// CHECK: exp prim v0, v0, v0, v0 ; encoding: [0x4f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp pos0 v0, v0, v0, v0 nodone norow_en
-// CHECK: exp pos0 v0, v0, v0, v0 ; encoding: [0xcf,0x00,0x00,0xf8,0x00,0x00,0x00,0x00]
-
-exp dual_src_blend0 v0, v0, v0, v0 nodone norow_en
-// CHECK: exp dual_src_blend0 v0, v0, v0, v0 ; encoding: [0x5f,0x01,0x00,0xf8,0x00,0x00,0x00,0x00]
More information about the llvm-commits
mailing list