)]}'
{
  "commit": "e7599e395efd11db835fc75857bc235a817ecb0a",
  "tree": "f4a64fd20f73dc3663e2f21b0e3a2870137e7065",
  "parents": [
    "99e9f5b0ab38e900fcc3e07f35514d4d4dfe5a44"
  ],
  "author": {
    "name": "Stella Laurenzo",
    "email": "stellaraccident@gmail.com",
    "time": "Thu Dec 30 21:17:27 2021 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Dec 30 21:17:27 2021 -0800"
  },
  "message": "Introduce Flow InferNumericNarrow, OptimizeNumerics and CleanupNumericNarrowing passes (#7975)\n\nTogether, these passes:\r\n\r\n* Infer where it is safe to use a narrower, low precision type in place of floating point arithmetic.\r\n* Use this information to do targeted rewrites of linalg math ops.\r\n* Propagate casts.\r\n\r\nWhen combined with constant hoisting and eval, this will perform most of the work needed for low-precision optimization of inference workloads.\r\n\r\nAlso adds a new Util::NumericCastOpInterface and applies it to the casting ops in the arith dialect. I\u0027m going to put some more mileage on this and then will likely propose it for upstream.\r\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e52a14deaea8d9c099c995010e2e1e59edb26720",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Flow/Transforms/BUILD",
      "new_id": "b9f93b6414a9ff7d2cf8b0fe4a36b608656a2a0b",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/BUILD"
    },
    {
      "type": "modify",
      "old_id": "e381f09c7313eab2f411f28e098d97c5823cc5df",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Flow/Transforms/CMakeLists.txt",
      "new_id": "60e371b0b498ba29a90fb3dc30cb5f829c42fc3f",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4b200e8afa51c7ce1c102ef53a3b4aa892517759",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/CleanupNumericNarrowing.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "26c8539b96909290c384941e37187c5a532e5503",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/InferNumericNarrowing.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c9ac77485b991723b28ff751f4d6692ea834f66",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/OptimizeNumerics.cpp"
    },
    {
      "type": "modify",
      "old_id": "340ae1d5ad06b93de9ecec7c647be94acfb20730",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Flow/Transforms/Passes.h",
      "new_id": "fb9854a2321f10e1c8348ba809348e42fcd41e35",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/Passes.h"
    },
    {
      "type": "modify",
      "old_id": "2d9644d897d76c4afcbdb52e43ab2cba82786b7b",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Flow/Transforms/Passes.td",
      "new_id": "a1e077578fcd23441754d0c0a1f740f08163f00a",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/Passes.td"
    },
    {
      "type": "modify",
      "old_id": "b66b65549c96e7971752251b5ab04cd68482401c",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Flow/Transforms/test/BUILD",
      "new_id": "6423883f3cc4db676c3648a44668e3f6b66346c5",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/test/BUILD"
    },
    {
      "type": "modify",
      "old_id": "205634c719c26c5584d3002ff911515e925c3834",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Flow/Transforms/test/CMakeLists.txt",
      "new_id": "9183bd0f5d8a8dfb59475edf61ecb73a00d02267",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2d2ea4bdf2773241cb041289d17c69540fb829e6",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/test/cleanup_numeric_narrowing.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47bf85089b43ed559e65d3ac077382a974c60236",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/test/infer_numeric_narrowing.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cc8e368ccc31f91d641923841bbf6bad1c7de581",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Flow/Transforms/test/optimize_numerics.mlir"
    },
    {
      "type": "modify",
      "old_id": "aca1cb8218359d88504f97af9d9a37e2ee8af798",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/Analysis/Attributes/Range.h",
      "new_id": "d8c640e108be4894a762f60965090bf805b32967",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/Analysis/Attributes/Range.h"
    },
    {
      "type": "modify",
      "old_id": "1b3e2a48969b2cdad975a3b0286c889a9749444d",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/UtilDialect.cpp",
      "new_id": "58b4e7a2bdf7d0180ad79fdb3a38cbdac6cbb49b",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/UtilDialect.cpp"
    },
    {
      "type": "modify",
      "old_id": "8a07a6ed1ce3f81c6f66d8a76a207a32fd5adde2",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/UtilDialect.h",
      "new_id": "8e08e2879edd866be6dd8ef6a2362a0f477c1c50",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/UtilDialect.h"
    },
    {
      "type": "modify",
      "old_id": "c85926f824afd10c214c5cc7dec25132ba2f6f0b",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/UtilInterfaces.td",
      "new_id": "b415059777ea215d4fc5b3cad91fbe33a6bfe57a",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/UtilInterfaces.td"
    },
    {
      "type": "modify",
      "old_id": "f555f6311cbfedbe198d17c90886d6904bf1651a",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/UtilOps.cpp",
      "new_id": "9e0b3ff7b804e236b337b8632d4f2c4e3a02c40e",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/UtilOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "7b5131a5d2c693ab69d62f79f1d77fe3967b5eb4",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/UtilOps.td",
      "new_id": "f3561de3bac83f8c0627dd6398caed1aed26b437",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/UtilOps.td"
    },
    {
      "type": "modify",
      "old_id": "457b1e67476bbd9f1a2cd4d3dda1154741205a17",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/test/BUILD",
      "new_id": "84f17fb25ae96ad58a221328545bce7c2ec0e1fa",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/test/BUILD"
    },
    {
      "type": "modify",
      "old_id": "3fa6522154542897eff65f6e46c6e0ec02733133",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Util/IR/test/CMakeLists.txt",
      "new_id": "c2f61f86d531add4e12eddaca663c2c3897e2ced",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "048141294b77acbc28f39b1632a96072821b2522",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Util/IR/test/numeric_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "e4c82770dc7c79b45205f23bae75f2f8d66df8f9",
      "old_mode": 33188,
      "old_path": "iree/tools/init_iree_dialects.h",
      "new_id": "0aa7cb1d52f9ca3156e0ce4aac9ef6aea71507e1",
      "new_mode": 33188,
      "new_path": "iree/tools/init_iree_dialects.h"
    }
  ]
}
