{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [
    {
      "id": "mlir_59",
      "type": "text",
      "x": 90,
      "y": 24,
      "width": 1220,
      "height": 36,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17059,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "MLIR Pass 与 Pattern Rewrite 工作流",
      "fontSize": 28,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "MLIR Pass 与 Pattern Rewrite 工作流",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_60",
      "type": "text",
      "x": 90,
      "y": 68,
      "width": 1220,
      "height": 28,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17060,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "核心反馈循环：每加一个 pass，都看 IR before/after，用 verifier 和 FileCheck 把语义钉住",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "核心反馈循环：每加一个 pass，都看 IR before/after，用 verifier 和 FileCheck 把语义钉住",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_61",
      "type": "rectangle",
      "x": 70,
      "y": 190,
      "width": 185,
      "height": 95,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17061,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_62",
      "type": "text",
      "x": 82,
      "y": 200,
      "width": 161,
      "height": 75,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17062,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "输入 IR\n多 dialect 混合",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "输入 IR\n多 dialect 混合",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_63",
      "type": "rectangle",
      "x": 315,
      "y": 170,
      "width": 250,
      "height": 135,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17063,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_64",
      "type": "text",
      "x": 327,
      "y": 180,
      "width": 226,
      "height": 115,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17064,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "PassManager\n嵌套 pipeline\nbuiltin.module(func.func(...))",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "PassManager\n嵌套 pipeline\nbuiltin.module(func.func(...))",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_65",
      "type": "rectangle",
      "x": 625,
      "y": 190,
      "width": 230,
      "height": 95,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#fff3bf",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17065,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_66",
      "type": "text",
      "x": 637,
      "y": 200,
      "width": 206,
      "height": 75,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17066,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Analysis\n支配关系 / use-def\nshape / alias / side effect",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Analysis\n支配关系 / use-def\nshape / alias / side effect",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_67",
      "type": "rectangle",
      "x": 910,
      "y": 170,
      "width": 230,
      "height": 135,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17067,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_68",
      "type": "text",
      "x": 922,
      "y": 180,
      "width": 206,
      "height": 115,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17068,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "RewritePattern\nmatchAndRewrite\n替换 op DAG",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "RewritePattern\nmatchAndRewrite\n替换 op DAG",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_69",
      "type": "rectangle",
      "x": 1200,
      "y": 190,
      "width": 150,
      "height": 95,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#c3fae8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17069,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_70",
      "type": "text",
      "x": 1212,
      "y": 200,
      "width": 126,
      "height": 75,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17070,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "输出 IR\nverifier 通过\nFileCheck 固化",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "输出 IR\nverifier 通过\nFileCheck 固化",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_71",
      "type": "arrow",
      "x": 255,
      "y": 238,
      "width": 60,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17071,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          60,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_72",
      "type": "arrow",
      "x": 565,
      "y": 238,
      "width": 60,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17072,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          60,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_73",
      "type": "arrow",
      "x": 855,
      "y": 238,
      "width": 55,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17073,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          55,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_74",
      "type": "arrow",
      "x": 1140,
      "y": 238,
      "width": 60,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17074,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          60,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_75",
      "type": "rectangle",
      "x": 80,
      "y": 380,
      "width": 1240,
      "height": 260,
      "angle": 0,
      "strokeColor": "#f59f00",
      "backgroundColor": "#fff9db",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 45,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17075,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_76",
      "type": "text",
      "x": 120,
      "y": 405,
      "width": 1160,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17076,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "调试与验收清单",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "调试与验收清单",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_77",
      "type": "rectangle",
      "x": 135,
      "y": 465,
      "width": 245,
      "height": 110,
      "angle": 0,
      "strokeColor": "#f59f00",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17077,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_78",
      "type": "text",
      "x": 147,
      "y": 475,
      "width": 221,
      "height": 90,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17078,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "看变化\n-mlir-print-ir-before-all\n-mlir-print-ir-after-change",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "看变化\n-mlir-print-ir-before-all\n-mlir-print-ir-after-change",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_79",
      "type": "rectangle",
      "x": 430,
      "y": 465,
      "width": 245,
      "height": 110,
      "angle": 0,
      "strokeColor": "#f59f00",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17079,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_80",
      "type": "text",
      "x": 442,
      "y": 475,
      "width": 221,
      "height": 90,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17080,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "查性能\n-mlir-timing\n-mlir-pass-statistics",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "查性能\n-mlir-timing\n-mlir-pass-statistics",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_81",
      "type": "rectangle",
      "x": 725,
      "y": 465,
      "width": 245,
      "height": 110,
      "angle": 0,
      "strokeColor": "#f59f00",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17081,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_82",
      "type": "text",
      "x": 737,
      "y": 475,
      "width": 221,
      "height": 90,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17082,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "查失败\n-mlir-print-ir-after-failure\ncrash reproducer",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "查失败\n-mlir-print-ir-after-failure\ncrash reproducer",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_83",
      "type": "rectangle",
      "x": 1020,
      "y": 465,
      "width": 245,
      "height": 110,
      "angle": 0,
      "strokeColor": "#f59f00",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17083,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_84",
      "type": "text",
      "x": 1032,
      "y": 475,
      "width": 221,
      "height": 90,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17084,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "写测试\nlit + FileCheck\n检查 op 是否被替换",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "写测试\nlit + FileCheck\n检查 op 是否被替换",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_85",
      "type": "text",
      "x": 125,
      "y": 665,
      "width": 1150,
      "height": 36,
      "angle": 0,
      "strokeColor": "#c2410c",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17085,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "常见坑：pattern 反复匹配自己导致不收敛；改 result type 后没有处理 uses；没有 verifier/FileCheck 就合入 pass。",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "常见坑：pattern 反复匹配自己导致不收敛；改 result type 后没有处理 uses；没有 verifier/FileCheck 就合入 pass。",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-mlir-pass与patternrewrite工作流-bg",
      "type": "rectangle",
      "x": 80,
      "y": 781.0,
      "width": 1280,
      "height": 300,
      "angle": 0,
      "strokeColor": "#64748b",
      "backgroundColor": "#e2e8f0",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 70,
      "groupIds": [],
      "seed": 93001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-mlir-pass与patternrewrite工作流-title",
      "type": "text",
      "x": 108,
      "y": 803.0,
      "width": 1224,
      "height": 38,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "练习题与面试题补充：MLIR compiler stack",
      "fontSize": 24,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题与面试题补充：MLIR compiler stack",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-mlir-pass与patternrewrite工作流-practice-box",
      "type": "rectangle",
      "x": 108,
      "y": 859.0,
      "width": 598.0,
      "height": 190,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#bfdbfe",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 93002,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-mlir-pass与patternrewrite工作流-practice-text",
      "type": "text",
      "x": 130,
      "y": 879.0,
      "width": 575.0,
      "height": 150,
      "angle": 0,
      "strokeColor": "#243042",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "练习题\n1. 写一个 toy op 的 verifier 和 canonicalization\n2. 用 FileCheck 验证一个 lowering pass 的前后 IR\n3. 画出 source dialect 到 linalg/gpu/llvm 的合法化边界",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题\n1. 写一个 toy op 的 verifier 和 canonicalization\n2. 用 FileCheck 验证一个 lowering pass 的前后 IR\n3. 画出 source dialect 到 linalg/gpu/llvm 的合法化边界",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-mlir-pass与patternrewrite工作流-interview-box",
      "type": "rectangle",
      "x": 734.0,
      "y": 859.0,
      "width": 598.0,
      "height": 190,
      "angle": 0,
      "strokeColor": "#7c3aed",
      "backgroundColor": "#ddd6fe",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 93003,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-mlir-pass与patternrewrite工作流-interview-text",
      "type": "text",
      "x": 756.0,
      "y": 879.0,
      "width": 575.0,
      "height": 150,
      "angle": 0,
      "strokeColor": "#243042",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "面试题\n1. Dialect、Operation、Region、Block、Value 如何组织 IR\n2. PatternRewrite 和 DialectConversion 的区别是什么\n3. 为什么 lowering 要分阶段保留语义",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "面试题\n1. Dialect、Operation、Region、Block、Value 如何组织 IR\n2. PatternRewrite 和 DialectConversion 的区别是什么\n3. 为什么 lowering 要分阶段保留语义",
      "autoResize": false,
      "lineHeight": 1.25
    }
  ],
  "appState": {
    "gridSize": null,
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}