)]}'
{
  "commit": "df211bc0eec9bc344c21faf55103e8ab7ebb309a",
  "tree": "2c77602071fd34b3c9c10f52292410da1245fe2b",
  "parents": [
    "3bc8af8352c3783ae4d3cd3ca6bc4237aecf79a1"
  ],
  "author": {
    "name": "Matt Arsenault",
    "email": "Matthew.Arsenault@amd.com",
    "time": "Tue Mar 28 08:30:50 2023 -0400"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Sun Oct 01 01:42:27 2023 -0700"
  },
  "message": "InlineSpiller: Consider if all subranges are the same when avoiding redundant spills\n\nThis avoids some redundant spills of subranges, and avoids a compile failure.\nThis greatly reduces the numbers of spills in a loop.\n\nThe main range is not informative when multiple instructions are needed to fully define\na register. A common scenario is a lowered reg_sequence where every subregister\nis sequentially defined, but each def changes the main range\u0027s value number. If\nwe look at specific lanes at the use index, we can see the value is actually the\nsame.\n\nIn this testcase, there are a large number of materialized 64-bit constant defs\nwhich are hoisted outside of the loop by MachineLICM. These are feeding REG_SEQUENCES,\nwhich is not considered rematerializable inside the loop. After coalescing, the split\nconstant defs produce main ranges with an apparent phi def. There\u0027s no phi def if you look\nat each individual subrange, and only half of the register is really redefined to a constant.\n\nFixes: SWDEV-380865\n\nhttps://reviews.llvm.org/D147079\n\nGitOrigin-RevId: d8127b2ba8a87a610851b9a462f2fc2526c36e37\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c62f3db9d32156212b15708b683ba7c9a7506038",
      "old_mode": 33188,
      "old_path": "lib/CodeGen/InlineSpiller.cpp",
      "new_id": "1636a225d672a9abada106949e764b4a66d0dba2",
      "new_mode": 33188,
      "new_path": "lib/CodeGen/InlineSpiller.cpp"
    },
    {
      "type": "modify",
      "old_id": "7209d160e6c8a7a0ec843705cca05638f9e8ae75",
      "old_mode": 33188,
      "old_path": "test/CodeGen/AMDGPU/av_spill_cross_bb_usage.mir",
      "new_id": "857784282528bc721f58f4c19042cfce69df9746",
      "new_mode": 33188,
      "new_path": "test/CodeGen/AMDGPU/av_spill_cross_bb_usage.mir"
    },
    {
      "type": "modify",
      "old_id": "08db1e7fee259d6e1e07427a2d5286cbfaba5bef",
      "old_mode": 33188,
      "old_path": "test/CodeGen/AMDGPU/spill-scavenge-offset.ll",
      "new_id": "9955aca981518dfbb71d518737cd5b8ed11d5196",
      "new_mode": 33188,
      "new_path": "test/CodeGen/AMDGPU/spill-scavenge-offset.ll"
    },
    {
      "type": "modify",
      "old_id": "7201ffaf561662af5fec558739552a79e54089c8",
      "old_mode": 33188,
      "old_path": "test/CodeGen/AMDGPU/swdev380865.ll",
      "new_id": "70687e15947c1d5e70ee262ba46ba9af1ef9bb57",
      "new_mode": 33188,
      "new_path": "test/CodeGen/AMDGPU/swdev380865.ll"
    },
    {
      "type": "modify",
      "old_id": "67f4dd72ea0b2dbc3083644969e3506045a939fa",
      "old_mode": 33188,
      "old_path": "test/CodeGen/Hexagon/regalloc-bad-undef.mir",
      "new_id": "d30fb39f874110c833dd297b5185b272e9f112b7",
      "new_mode": 33188,
      "new_path": "test/CodeGen/Hexagon/regalloc-bad-undef.mir"
    },
    {
      "type": "modify",
      "old_id": "45bb70ec44b737a811232163d4555f143f61e20a",
      "old_mode": 33188,
      "old_path": "test/CodeGen/Thumb2/mve-postinc-dct.ll",
      "new_id": "a0ac03e9e862f2278f34b23a30dc394cc973383e",
      "new_mode": 33188,
      "new_path": "test/CodeGen/Thumb2/mve-postinc-dct.ll"
    },
    {
      "type": "modify",
      "old_id": "d80dd5a673e20f256e8515b2135ca8a76f7b2da9",
      "old_mode": 33188,
      "old_path": "test/CodeGen/Thumb2/mve-vst3.ll",
      "new_id": "d5f472be043216535d4439c972baa49646a736a2",
      "new_mode": 33188,
      "new_path": "test/CodeGen/Thumb2/mve-vst3.ll"
    }
  ]
}
