diff --git a/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td b/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td index 4726b0243f87..e77f4e7f9f45 100644 --- a/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td +++ b/mlir/include/mlir/Dialect/DXSA/IR/DXSAOps.td @@ -1369,4 +1369,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 2699500833c2..ba12e69b3505 100644 --- a/mlir/lib/Target/DXSA/BinaryParser.cpp +++ b/mlir/lib/Target/DXSA/BinaryParser.cpp @@ -2435,6 +2435,8 @@ class Parser { return PLAIN_OP(UShr, 1, 2); case D3D10_SB_OPCODE_XOR: return PLAIN_OP(Xor, 1, 2); + case D3D10_SB_OPCODE_NOP: + return PLAIN_OP(Nop, 0, 0); case D3D10_SB_OPCODE_EMIT: return PLAIN_OP(Emit, 0, 0); case D3D10_SB_OPCODE_EMITTHENCUT: 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: }