)]}'
{
  "commit": "fdc4274e2fcc79b8ba3064235da721573cdeea83",
  "tree": "165f24f9ef756cfb66f2b947220d86140c5e89ed",
  "parents": [
    "dd1cc049b14053e9a5ec8d8e5925eb1db5b57ac3"
  ],
  "author": {
    "name": "Matt Arsenault",
    "email": "Matthew.Arsenault@amd.com",
    "time": "Thu Feb 19 11:49:32 2026 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Feb 19 11:49:32 2026 +0100"
  },
  "message": "AMDGPU: Perform libcall recognition to replace fast OpenCL pow (#182135)\n\nIf a float-typed call site is marked with afn, replace the 4\nflavors of pow with a faster variant.\n\nThis transforms pow, powr, pown, and rootn to __pow_fast,\n__powr_fast, __pown_fast, and __rootn_fast if available. Also\nattempts to handle all of the same basic folds on the new fast\nvariants that were already performed with the base forms. This\nmaintains optimizations with OpenCL when the device libs unsafe\nmath control library is deleted. This maintains the status quo\nof how libcalls work, and only handles 4 new entry points. This\nonly helps with the elimination of the control library, and not\ngeneral libcall emission problems.\n\nThis makes no practical difference for HIP, which is the status\nquo for libcall optimizations. AMDGPULibCalls recognizes the OpenCL\nmangled names. e.g., OpenCL float \"pow\" is really _Z3powff but the\nHIP provided function \"powf\" is really named _ZL4powfff, and std::pow\nwith float is _ZL3powff. The pass still runs for HIP, so by accident\nif you used the OpenCL mangled function names, this would trigger.\n\nSince the functions cannot yet be relied on from the library,\nintroduce a temporary module flag check. I\u0027m not planning on emitting\nit anywhere and it\u0027s a poor substitute for versioning the target.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d0c13d154995d565c9865bb1634fa51344d115ae",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp",
      "new_id": "196fe624c25f619513cea8b66cdbb431d1be35e4",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp"
    },
    {
      "type": "modify",
      "old_id": "82233c0c891adcb97a424960466c08a537f19b59",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp",
      "new_id": "68d617e343b9969d6f5c1ae78fc509fe1e2505c1",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp"
    },
    {
      "type": "modify",
      "old_id": "580ef51b559d807b246eda0cec871e7ba13c08ae",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/AMDGPULibFunc.h",
      "new_id": "5a44cc4fc799e1c335a019e064761d0617669f4e",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/AMDGPULibFunc.h"
    },
    {
      "type": "modify",
      "old_id": "5d08cef95810d70beb19c397e17ccb674013b3f0",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow-codegen.ll",
      "new_id": "afe0971088bc1f7b1e94641f4ab722bca83486ce",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow-codegen.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "961412ae45d2ca1a0511d064db78a4d604940b2d",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow-fast.ll"
    },
    {
      "type": "modify",
      "old_id": "69ffaab43d8d377352bfed97bf863ef59b1aa429",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll",
      "new_id": "b2d5bb2faeca7306bffc80953ace7ad8aa9e4de9",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "70b3f48728b13c7a39548451b46e5bc71d35addd",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pown-fast.ll"
    },
    {
      "type": "modify",
      "old_id": "b0d0d44cf266ff9c1e270653887556b5ffc98321",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pown.ll",
      "new_id": "b4182ccbf77a49338d5bf09b685325f84d23b2cc",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pown.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20ad490bdf0f8df228fe357b8ea04be9ad4b9793",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-powr-fast.ll"
    },
    {
      "type": "modify",
      "old_id": "4c6dbcc30ca35bbdd117e39f114d08df23f06a83",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-powr.ll",
      "new_id": "d65fcdcc4d3fe6280b8304dbde22301793ae74c8",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-powr.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "812f56a8d6f64cd6febd82128e97090cdb6871e1",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-rootn-fast.ll"
    },
    {
      "type": "modify",
      "old_id": "0f3d7db54ed482c314b20489436cdfd00430f929",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-rootn.ll",
      "new_id": "00b4583494c756ec8c29c3d8da4c5c5a39ad770f",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-rootn.ll"
    }
  ]
}
