From fb41df9c4adb8249660623480a77e31146eb8d85 Mon Sep 17 00:00:00 2001 From: MLIR Team Date: Mon, 30 Sep 2019 16:48:08 -0700 Subject: [PATCH] Format markdown list. PiperOrigin-RevId: 272095611 --- mlir/g3doc/Rationale.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mlir/g3doc/Rationale.md b/mlir/g3doc/Rationale.md index 0a618ad..f127d8d 100644 --- a/mlir/g3doc/Rationale.md +++ b/mlir/g3doc/Rationale.md @@ -1108,12 +1108,14 @@ lists, which would be unbearably inefficient). MLIR now supports a multithreaded pass manager. We do this through several design choices: -1) MLIR makes use of extensive uniqued immutable data structures (affine -expressions, types, etc are all immutable, uniqued, and immortal). 2) constants -are defined in per-function pools, instead of being globally uniqued. 3) -functions themselves are not SSA values either, so they don't have the same -problem as constants. 4) FunctionPasses are copied (through their copy ctor) -into one instance per thread, avoiding sharing of local state across threads. +1. MLIR makes use of extensive uniqued immutable data structures (affine + expressions, types, etc are all immutable, uniqued, and immortal). +2. Constants are defined in per-function pools, instead of being globally + uniqued. +3. Functions themselves are not SSA values either, so they don't have the same + problem as constants. +4. FunctionPasses are copied (through their copy ctor) into one instance per + thread, avoiding sharing of local state across threads. This allows MLIR function passes to support efficient multithreaded compilation and code generation. -- 2.7.4