Skip to content

Commit ae22ac9

Browse files
author
Jeff Niu
authored
[mlir][test] Shard the Test Dialect (NFC) (#89628)
This PR uses the new op sharding mechanism in tablegen to shard the test dialect's op definitions. This breaks the definition of ops into multiple source files, speeding up compile time of the test dialect dramatically. This improves developer cycle times when iterating on the test dialect.
1 parent 1b232fa commit ae22ac9

File tree

4 files changed

+20
-17
lines changed

4 files changed

+20
-17
lines changed

mlir/test/lib/Dialect/Test/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ mlir_tablegen(TestOpEnums.cpp.inc -gen-enum-defs)
3131
add_public_tablegen_target(MLIRTestEnumDefIncGen)
3232

3333
set(LLVM_TARGET_DEFINITIONS TestOps.td)
34-
mlir_tablegen(TestOps.h.inc -gen-op-decls)
35-
mlir_tablegen(TestOps.cpp.inc -gen-op-defs)
3634
mlir_tablegen(TestOpsDialect.h.inc -gen-dialect-decls -dialect=test)
3735
mlir_tablegen(TestOpsDialect.cpp.inc -gen-dialect-defs -dialect=test)
3836
mlir_tablegen(TestPatterns.inc -gen-rewriters)
@@ -43,6 +41,8 @@ mlir_tablegen(TestOpsSyntax.h.inc -gen-op-decls)
4341
mlir_tablegen(TestOpsSyntax.cpp.inc -gen-op-defs)
4442
add_public_tablegen_target(MLIRTestOpsSyntaxIncGen)
4543

44+
add_sharded_ops(TestOps 20)
45+
4646
# Exclude tests from libMLIR.so
4747
add_mlir_library(MLIRTestDialect
4848
TestAttributes.cpp
@@ -56,6 +56,7 @@ add_mlir_library(MLIRTestDialect
5656
TestTypes.cpp
5757
TestOpsSyntax.cpp
5858
TestDialectInterfaces.cpp
59+
${SHARDED_SRCS}
5960

6061
EXCLUDE_FROM_LIBMLIR
6162

@@ -66,6 +67,7 @@ add_mlir_library(MLIRTestDialect
6667
MLIRTestTypeDefIncGen
6768
MLIRTestOpsIncGen
6869
MLIRTestOpsSyntaxIncGen
70+
MLIRTestOpsShardGen
6971

7072
LINK_LIBS PUBLIC
7173
MLIRControlFlowInterfaces

mlir/test/lib/Dialect/Test/TestDialect.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,12 +326,9 @@ struct TestOpEffectInterfaceFallback
326326
void TestDialect::initialize() {
327327
registerAttributes();
328328
registerTypes();
329-
addOperations<
330-
#define GET_OP_LIST
331-
#include "TestOps.cpp.inc"
332-
>();
333329
registerOpsSyntax();
334330
addOperations<ManualCppOpWithFold>();
331+
registerTestDialectOperations(this);
335332
registerDynamicOp(getDynamicGenericOp(this));
336333
registerDynamicOp(getDynamicOneOperandTwoResultsOp(this));
337334
registerDynamicOp(getDynamicCustomParserPrinterOp(this));

mlir/test/lib/Dialect/Test/TestOps.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,4 @@
1414
using namespace mlir;
1515
using namespace test;
1616

17-
#define GET_OP_CLASSES
1817
#include "TestOps.cpp.inc"

utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
66
load("//llvm:lit_test.bzl", "package_path")
7-
load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library")
7+
load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library", "gentbl_sharded_ops", "td_library")
88

99
package(
1010
default_visibility = ["//visibility:public"],
@@ -151,14 +151,6 @@ gentbl_cc_library(
151151
name = "TestOpsIncGen",
152152
strip_include_prefix = "lib/Dialect/Test",
153153
tbl_outs = [
154-
(
155-
["-gen-op-decls"],
156-
"lib/Dialect/Test/TestOps.h.inc",
157-
),
158-
(
159-
["-gen-op-defs"],
160-
"lib/Dialect/Test/TestOps.cpp.inc",
161-
),
162154
(
163155
[
164156
"-gen-dialect-decls",
@@ -370,12 +362,25 @@ cc_library(
370362
],
371363
)
372364

365+
gentbl_sharded_ops(
366+
name = "TestDialectOpSrcs",
367+
hdr_out = "lib/Dialect/Test/TestOps.h.inc",
368+
shard_count = 20,
369+
sharder = "//mlir:mlir-src-sharder",
370+
src_file = "lib/Dialect/Test/TestOps.cpp",
371+
src_out = "lib/Dialect/Test/TestOps.cpp.inc",
372+
tblgen = "//mlir:mlir-tblgen",
373+
td_file = "lib/Dialect/Test/TestOps.td",
374+
test = True,
375+
deps = [":TestOpTdFiles"],
376+
)
377+
373378
cc_library(
374379
name = "TestDialect",
375380
srcs = glob(
376381
["lib/Dialect/Test/*.cpp"],
377382
exclude = ["lib/Dialect/Test/TestToLLVMIRTranslation.cpp"],
378-
),
383+
) + [":TestDialectOpSrcs"],
379384
hdrs = glob(["lib/Dialect/Test/*.h"]),
380385
includes = [
381386
"lib/Dialect/Test",

0 commit comments

Comments
 (0)