)]}'
{
  "commit": "4c5f6cb165e8c3f827faaa40f5c66cf709c3e6a6",
  "tree": "92381c587458a03b15836fe2989a8bcef43f0020",
  "parents": [
    "bd828d20de0fb0a2e2c4e42e7adefabc17500569"
  ],
  "author": {
    "name": "ziereis",
    "email": "44057120+ziereis@users.noreply.github.com",
    "time": "Tue Sep 22 15:43:14 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 22 15:43:14 2026 +0200"
  },
  "message": "[GlobalOptimization] Rewrite QDQ contractions into integer math (#24902)\n\nRewrites contractions over `iree_linalg_ext.dequantize_affine` operands\ninto integer contractions, integer zero-point corrections, and\nfloating-point scaling.\n\nThe transformation uses indexing maps and iterator types to handle named\nand generic contractions, including convolutions. It reduces in integer\narithmetic over dimensions where quantization parameters are invariant.\nFor blockwise quantization, it computes integer partial results, applies\neach block\u0027s correction and scales, then accumulates across blocks in\nfloating point.\n\nZero-point correction terms are built as separate computations so\nconstant terms can be evaluated independently. Corrections are applied\nbefore conversion to floating point. Scaling and accumulation use at\nleast f32, preserving wider scale or output types and narrowing only the\nfinal result.\n\nThe rewrite requires a plain multiply-add body, zero initialization, and\npositive static integer reduction extents whose products and corrections\nfit in signed i32. Unsupported cases retain the original computation.\nThe pass is enabled by default; reassociation changes floating-point\nrounding. It can be disabled with\n`--iree-global-opt-enable-qdq-to-integer-math\u003dfalse`.\n\nBuilds on the [affine QDQ operations PR\n#24901](https://github.com/iree-org/iree/pull/24901) and implements the\ncontraction rewrite portion of [Linalg(_ext) native QDQ\n#24862](https://github.com/iree-org/iree/issues/24862).\n\n---\n\n\u003csub\u003eStack created with \u003ca\nhref\u003d\"https://github.com/github/gh-stack\"\u003eGitHub Stacks CLI\u003c/a\u003e • \u003ca\nhref\u003d\"https://gh.io/stacks-feedback\"\u003eGive Feedback 💬\u003c/a\u003e\u003c/sub\u003e\n\n---------\n\nSigned-off-by: Thomas Ziereis \u003cziereis@roofline.ai\u003e\nSigned-off-by: Florian Walbroel \u003cwalbroel@roofline.ai\u003e\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Florian Walbroel \u003cwalbroel@roofline.ai\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5b5ac1751193df614dce9037eea11b42fece6ca0",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/BUILD.bazel",
      "new_id": "e971773f79b05087df6996117892aaa86c355574",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "c3b994d3fa6384693ddfe32980776730a591579f",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/CMakeLists.txt",
      "new_id": "e1afc48285a55f66918b26606371d399c43e5f76",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "320093c77980e0b5ef1c36bf803d45808fb50ffa",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/ConvertQDQToIntegerMath.cpp"
    },
    {
      "type": "modify",
      "old_id": "049053d9830b28e69633521555980e424c7a3b1b",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/Passes.cpp",
      "new_id": "1b556bc9b6457e3f47ced0e2fca7302dc80a798d",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/Passes.cpp"
    },
    {
      "type": "modify",
      "old_id": "b05e76dc6f2b3aec62cbe78a8d546acba61e008c",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/Passes.td",
      "new_id": "448cf65ab4a2e85ecf404bbc3de3a91fbca260b3",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/Passes.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40de43716c0a4946fb43ac2d1fa2191fac086e57",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/QuantizationUtils.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8dc282d326b101d8df7e8190bff922e9d72b1ffd",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/QuantizationUtils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "09047a180893f7183161945ddd05630028fee57d",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/QuantizedContraction.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4d0866640abc60de576ee6849a51909e343c84dc",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/QuantizedContraction.h"
    },
    {
      "type": "modify",
      "old_id": "a8481d7a92f8693e0f2738dfdfe4649b789a37a1",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/test/BUILD.bazel",
      "new_id": "cf1a0a03c1507bdbaf1a19988efbb2e6e1b09100",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "95ae4f98dbc26a29e3d3e59e1db05d9bc7f1a499",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/test/CMakeLists.txt",
      "new_id": "de43a37d1da18a5e53e670c3d7477ebd8cca6f94",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e2d63912b0a1f45fd3aab011dd6257d04b13d0e3",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/convert_qdq_to_integer_math_algebra.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ffabb992876386c362fbc56e07a88380f602e72b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/convert_qdq_to_integer_math_maps.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "44b942591f897d5889555cc89023e2ac31bc6b90",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/convert_qdq_to_integer_math_negative.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "86b2dfc6dce9bfbd6122149f2c339945fda343ea",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/convert_qdq_to_integer_math_pipeline.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b529b56d6520dcc18afc24ffb81fca4f4d980886",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/convert_qdq_to_integer_math_scale_range.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9ac5c3ad669a5175e4a4d6eaa9dc407e6f23342",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/unittests/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fbb3ebc537385b8fad6a6984dc23b147a768a142",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/unittests/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e4a8877a76406f760e4eba37a70f140a61f30bdb",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/unittests/QuantizationUtilsTest.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "838c9729d1b2db2ebece176a53d43b7120f7994a",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/unittests/QuantizedContractionTest.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9c17c8c38e1c099845fdaae0c58247d59fe40acf",
      "new_mode": 33188,
      "new_path": "tests/e2e/quantization/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eca30df2473ca8facf083d6b086a55f2cb3453da",
      "new_mode": 33188,
      "new_path": "tests/e2e/quantization/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b3bdbfea97e56106e3e70e8499cae93e55187e5a",
      "new_mode": 33188,
      "new_path": "tests/e2e/quantization/contraction_scaling.mlir"
    }
  ]
}
