)]}'
{
  "commit": "813d3ae10cbf7db994a44c05eaa8d61b1cc6abf8",
  "tree": "13e11c1c1903274a9fa40d02d7cd8a1021b0c873",
  "parents": [
    "e63f67c3742b1b95cd87c9f12bd36fbbfe3309d3"
  ],
  "author": {
    "name": "Stella Laurenzo",
    "email": "stellaraccident@gmail.com",
    "time": "Wed Oct 06 15:39:03 2021 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Oct 06 15:39:03 2021 -0700"
  },
  "message": "[pydm] Defines the structure for the full numeric hierarchy. (#7274)\n\n* [pydm] Defines the structure for the full numeric hierarchy.\r\n\r\n* Full support modeled for signed/unsigned 8/16/32/64 bit integers, fp16/bf16/fp32/fp64, complex64/complex128, bool, weak integer, weak real, arbitrary precision integer.\r\n* Actual support for everything is more limited. Using a frontend pass to squash all weak types to i32/f32 for now (type inference/analysis needs to come into play here before making such decisions).\r\n* Numeric promotion is in-flux at the moment, but shooting for a combination of Numba/Cython/JAX reasoning about this. Key is that weak integer/real types exist and bind to the hierarchy in different ways. See: https://jax.readthedocs.io/en/latest/type_promotion.html\r\n* This makes the generic runtime support a lot more complicated and required quite a few more lowerings and canonicalizations to achieve (i.e. the runtime library decodes the bit patterns in the type code to make numeric type decisions).\r\n* The generated code is still a joke and not something we would ever use, but it does run: https://gist.github.com/stellaraccident/e9f41a09a3834465d7576312fc63c278\r\n* Still holding off on any real optimizations beyond canonicalizations since generality is helpful at this stage. Most of what is there should melt away with some simple variable load/store analysis.\r\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "90340be6bf745ec9d31da3802d6b70a3d8d1ea8b",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/BUILD",
      "new_id": "a96da53b128789f0957fb28f4989c9a0a448776e",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/BUILD"
    },
    {
      "type": "modify",
      "old_id": "da8701a2952bde50e8e70f8b7c534d89dd0176ab",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects-c/Dialects.h",
      "new_id": "1c5f81a6fe75fcba0de087f19944732e06827976",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects-c/Dialects.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2e54a6088dc040e67ed9df5549896c76b1d7da88",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Constants.h"
    },
    {
      "type": "modify",
      "old_id": "48346d4629125598b0c8c0cdd2f2e397e2e37f7b",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Dialect.h",
      "new_id": "47e2c2a7076b6ecf6763e229314704a79abe5a10",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Dialect.h"
    },
    {
      "type": "modify",
      "old_id": "7cab3751c41016db7e44e2dc1fe9c85cf1a787b2",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Dialect.td",
      "new_id": "2af65b72240f3bac9a4cbc21aa7f9742c80576a1",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Dialect.td"
    },
    {
      "type": "modify",
      "old_id": "0dd249b1efd00c3f697072e12e20d448155dc32a",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Interfaces.h",
      "new_id": "0a81dc8d0c9760b942e55e2f2f9d08628ac04dec",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Interfaces.h"
    },
    {
      "type": "modify",
      "old_id": "804ded8b3b8c0fb593fdf264ef6fa27d16a3983f",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Interfaces.td",
      "new_id": "db1d55f88013969a290113a76585b80d079a4871",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Interfaces.td"
    },
    {
      "type": "modify",
      "old_id": "b4c7713c2e25ed035c2074a3fe3a3f64ef28e932",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Ops.td",
      "new_id": "a9d30706e477c167238f2160c5c70f8366c98748",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/IR/Ops.td"
    },
    {
      "type": "modify",
      "old_id": "a169051f8e439cb6e1deba3c5725b1274e4ac872",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/Transforms/Passes.h",
      "new_id": "cc9c6192919792d41e77f791ee008655eb4abd11",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/Transforms/Passes.h"
    },
    {
      "type": "modify",
      "old_id": "e98f4ccf149a072b8a9c081883a6b1cd114f15b8",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/Transforms/Passes.td",
      "new_id": "8b76c382db2e137ee56b7c98e1644b6e1abe8625",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/IREEPyDM/Transforms/Passes.td"
    },
    {
      "type": "modify",
      "old_id": "d316fbef944d76a16b28a7b10f2c99beb6a05d06",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/CAPI/Dialects.cpp",
      "new_id": "f50d8642145ba57560b98e326bd9a45e36b82034",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/CAPI/Dialects.cpp"
    },
    {
      "type": "modify",
      "old_id": "f52fdd576847c790557c2b43d9053a47c3825a0b",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/IR/Dialect.cpp",
      "new_id": "e978ef020b162944992f95f516dffcd774a709b9",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/IR/Dialect.cpp"
    },
    {
      "type": "modify",
      "old_id": "245e6bee91f0b4352ddcce8d4ca520fa57ba7616",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/IR/Ops.cpp",
      "new_id": "3f93482394c3ca5a8ba84afe4e5bfb890fc597fc",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/IR/Ops.cpp"
    },
    {
      "type": "modify",
      "old_id": "44fe3b2f38ed03c67d0d8e0dde67d4ab9a989afe",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/CMakeLists.txt",
      "new_id": "db6f84fa4f37a9cf4517b9bef11f2f4f4f3231ac",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4bd33e19860ccf0d0e9a64ccc9d425de33a9d872",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/Optimize/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3bc936f1cbec855dc07e297ac0152829a45a62e1",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/Optimize/FixateWeakNumeric.cpp"
    },
    {
      "type": "modify",
      "old_id": "caaaf1495b245040ee9197d2480e0a920535dfef",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/Passes.cpp",
      "new_id": "20aeb144e610862d9f585bfe67ea79f4ec4de144",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/Passes.cpp"
    },
    {
      "type": "modify",
      "old_id": "2d4d88d04b8ad0fabec807d7d77b5b5c3c43ffff",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/ToIREE/ConversionPass.cpp",
      "new_id": "4ac31e89d13675185dcb25acc38162cad2da34fe",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/ToIREE/ConversionPass.cpp"
    },
    {
      "type": "modify",
      "old_id": "9b3e1fd1e19e8fb7705baa86fbd5ce67d38bfcb3",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/ToIREE/LoweringPatterns.cpp",
      "new_id": "e5371259147208f282710f1b66f27c4ffc6e7ef7",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/ToIREE/LoweringPatterns.cpp"
    },
    {
      "type": "modify",
      "old_id": "0ee4fb77cbbd7316365d947cd4b40978491fb80b",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/ToIREE/TypeConverter.cpp",
      "new_id": "eac25d4c554da13ad0c38bd979f5d0397635e243",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/lib/Dialect/IREEPyDM/Transforms/ToIREE/TypeConverter.cpp"
    },
    {
      "type": "modify",
      "old_id": "067c565540d3ab64e28b1eb40ac5e6345d778d68",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/python/IREEDialectsModule.cpp",
      "new_id": "058adf526a2c716774daf7e3c1daae623a7ceff7",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/python/IREEDialectsModule.cpp"
    },
    {
      "type": "modify",
      "old_id": "d1f54435de99cdc7395cdbbba2a758145c4ba6db",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/booleans.py",
      "new_id": "df7060ffae395759159997fbb9fae2dd961cefc0",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/booleans.py"
    },
    {
      "type": "modify",
      "old_id": "49fdf9a2a0a2da401abce2e2ceb5abdf15d4b0f9",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/constants.py",
      "new_id": "659f46f5256a2d332915f2d45bb4b2f15a1ba146",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/constants.py"
    },
    {
      "type": "modify",
      "old_id": "2c0b083293acf7079bba5c793a9ec98deca38440",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/macros.py",
      "new_id": "0410a7217ab0cb459cecf88900341994b4a5593b",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/macros.py"
    },
    {
      "type": "modify",
      "old_id": "1b29779152425b350b5bee25abb0fb1d33fe4b48",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/numerics.py",
      "new_id": "cb90760d8ba7aecdec9be84accf83b2ab93b342f",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/python/iree/compiler/dialects/iree_pydm/rtl/modules/numerics.py"
    },
    {
      "type": "modify",
      "old_id": "5b908ce29a68679c1fc20e81586a11eddc7160ad",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/test/iree_pydm/ops_types_parse.mlir",
      "new_id": "9668beb7fce8089512ccfbeba7229d2b6d60983f",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/test/iree_pydm/ops_types_parse.mlir"
    },
    {
      "type": "modify",
      "old_id": "46cafc71fe4395fa14a593c4c1c872f9d9af0742",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/test/iree_pydm/to_iree/structural.mlir",
      "new_id": "b54dae66a15657ba6ebcf67d090d6e56aaf18bce",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/test/iree_pydm/to_iree/structural.mlir"
    },
    {
      "type": "modify",
      "old_id": "53ab9d9cfe42e7a7428dbaacd5a3b91ae69cc760",
      "old_mode": 33188,
      "old_path": "llvm-external-projects/iree-dialects/tools/iree-dialects-opt/CMakeLists.txt",
      "new_id": "c721847c43c898247a80a6682a513187d2135d5f",
      "new_mode": 33188,
      "new_path": "llvm-external-projects/iree-dialects/tools/iree-dialects-opt/CMakeLists.txt"
    }
  ]
}
