)]}'
{
  "commit": "8ce74e79d9dfe65b408ade6b38558553878c60d4",
  "tree": "eb6e2cd457b93b60d11be418f3ea480f48a27b9e",
  "parents": [
    "0c36771309f4f87a76a006a3a1430b30bede624a"
  ],
  "author": {
    "name": "Craig Topper",
    "email": "craig.topper@sifive.com",
    "time": "Wed Apr 08 19:47:41 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Apr 08 19:47:41 2026 -0700"
  },
  "message": "[TargetLowering] Add support for more constants to expandDIVREMByConstant. (#189286)\n\nIf we can find a chunk size k where 2^k mod divisor \u003d\u003d -1, we can add\nthe even chunks and subtract the odd chunks. The resulting sum may be\nnegative, so we need to add 2^k + 1 (a multiple of divisor) for each odd\nchunk to ensure the result is positive. We have enough extra bits\nbetween the chunk size and HBitWidth to avoid overflow.\n\nThe idea here is similar to checking if a decimal number is divisible by\n11. You can add the even digits and subtract the odd digits. If the\nresulting sum is divisible by 11 the original number is divisible by 11.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "092bc283c84dc58bd87c22b40b7cb1f69b3332d0",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp",
      "new_id": "dcf93aee51537401f0cf3c7f45727faba3a39a6b",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp"
    },
    {
      "type": "modify",
      "old_id": "191155ae30f3e3c05334e441bdaae6896b05e78c",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/ARM/funnel-shift.ll",
      "new_id": "77fc7095ab0f249500263eae8fee6076970cfac5",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/ARM/funnel-shift.ll"
    },
    {
      "type": "modify",
      "old_id": "99e0d47441a02468a33a481462252ebece7bea92",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/Mips/funnel-shift.ll",
      "new_id": "da05ff845784f13380d75af8e2fc3db419ee07eb",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/Mips/funnel-shift.ll"
    },
    {
      "type": "modify",
      "old_id": "be95233656f47f90bd47658a27607d03c5b44d05",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/PowerPC/funnel-shift.ll",
      "new_id": "a3635b65931e29e7a0a9f7129414a2deb93fc303",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/PowerPC/funnel-shift.ll"
    },
    {
      "type": "modify",
      "old_id": "318a48b92cb28a5228f4b97e5dc5d094637ad41f",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/X86/funnel-shift.ll",
      "new_id": "ace22499e335157dc7c87b31b515d004663e92e4",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/X86/funnel-shift.ll"
    },
    {
      "type": "modify",
      "old_id": "e347c5944c2b9b88f883894a524c7056d877ced1",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/X86/i128-udiv.ll",
      "new_id": "9a72520fb1a01dab7c67e20342341cb5d5bb8bca",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/X86/i128-udiv.ll"
    }
  ]
}
