From 619195dd57ffeae6762a22933960050114c4eb88 Mon Sep 17 00:00:00 2001 From: Vladislav Dzhidzhoev Date: Wed, 24 Jun 2026 22:29:42 +0200 Subject: [PATCH] [mlir][dxsa] Add nop instruction Depends on https://github.com/access-softek/llvm-project/pull/198. --- mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td | 13 +++++++++++++ mlir/lib/Target/DXSA/BinaryParser.cpp | 2 ++ mlir/test/Target/DXSA/nop.test | 9 +++++++++ 3 files changed, 24 insertions(+) create mode 100644 mlir/test/Target/DXSA/nop.test diff --git a/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td b/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td index 70f7a71382a8..99d8edbe9301 100644 --- a/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td +++ b/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td @@ -1425,4 +1425,17 @@ def DXSA_DclThreadGroup : DXSA_Op<"dcl_thread_group"> { let hasVerifier = 1; } +def DXSA_Nop : DXSA_NullaryOp<"nop"> { + let summary = "no operation"; + let description = [{ + The `dxsa.nop` operation has no effect. + + Example: + + ```mlir + dxsa.nop + ``` + }]; +} + #endif // DXSA_OPS diff --git a/mlir/lib/Target/DXSA/BinaryParser.cpp b/mlir/lib/Target/DXSA/BinaryParser.cpp index 08dd7dc8e9ce..553850cb6efa 100644 --- a/mlir/lib/Target/DXSA/BinaryParser.cpp +++ b/mlir/lib/Target/DXSA/BinaryParser.cpp @@ -2628,6 +2628,8 @@ class Parser { case D3D10_SB_OPCODE_RET: return PLAIN_OP(Ret, 0, 0, HasPreciseAttr::No); // Other instructions + case D3D10_SB_OPCODE_NOP: + return PLAIN_OP(Nop, 0, 0); case D3D11_SB_OPCODE_SYNC: return parseSync(*opcodeToken0, beginOffset, instructionLengthInTokens, getLocation()); diff --git a/mlir/test/Target/DXSA/nop.test b/mlir/test/Target/DXSA/nop.test new file mode 100644 index 000000000000..5c129c2bdc86 --- /dev/null +++ b/mlir/test/Target/DXSA/nop.test @@ -0,0 +1,9 @@ +// RUN: mlir-translate --import-dxsa-hex %s | FileCheck %s +// RUN: mlir-translate --import-dxsa-hex %s | mlir-opt --verify-roundtrip + +// CHECK: dxsa.module { + +// CHECK-NEXT: dxsa.nop +0x0100003A + +// CHECK-NEXT: }