)]}'
{
  "commit": "ebc56070eb8d25c8dc73a2e97caaeb4db0f7c9fa",
  "tree": "730610fe89058c635a7fc06dceacc39a5e1ecc2d",
  "parents": [
    "9cf815243b91147f0150db0c4ff2436b6920d372"
  ],
  "author": {
    "name": "Barbara Mitic",
    "email": "bmitic@amd.com",
    "time": "Thu Apr 09 13:33:13 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 09 13:33:13 2026 +0200"
  },
  "message": "[AMDGPU] Use wavefront scope for single-wave workgroup synchronization (#187673)\n\nWorkgroup-scoped fences and non-relaxed workgroup atomics were\npreviously legalized with synchronization strong enough for multi-wave\nworkgroups.\nWhen the kernel\u0027s maximum flat work-group size does not exceed the\nwavefront size, the workgroup contains only a single wavefront, so\nworkgroup-scoped synchronization is equivalent to wavefront scope and\nthe stronger legalization is unnecessary.\nSIMemoryLegalizer now demotes workgroup scope to wavefront scope\nin this case for workgroup-scoped fences and for non-relaxed atomic\nload, store, atomicrmw, and cmpxchg operations.\nThis allows subsequent legalization to operate at wavefront scope.\nThe decision is based on AMDGPUSubtarget::isSingleWavefrontWorkgroup.\n\n---------\n\nCo-authored-by: Barbara Mitic \u003cBarbara.Mitic@amd.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8d2bcfeca2a41b5ad098aed409ebf1235126b99e",
      "old_mode": 33188,
      "old_path": "llvm/docs/AMDGPUUsage.rst",
      "new_id": "d1b3dc1b7c61b3d69f24dc41a9c56b42d6e0bf11",
      "new_mode": 33188,
      "new_path": "llvm/docs/AMDGPUUsage.rst"
    },
    {
      "type": "modify",
      "old_id": "d490788a97685ad1e031294695c502682c504abe",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp",
      "new_id": "e089498693b2ff4e3b7326925ff37cf54e088278",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp"
    },
    {
      "type": "modify",
      "old_id": "fdb6b2eb2caf5f1711435e43792189941f29f94a",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp",
      "new_id": "fb4728609c8776b2327db600f68e37c5f944305a",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "d23f94243a4595464390bec3471dbe6e7e62b8f9",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h",
      "new_id": "07746c087904d8e26750f8d409ddd0f9c41ee2fc",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h"
    },
    {
      "type": "modify",
      "old_id": "2a2862ed24da291292b5c0f02431baf37c9b0e83",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp",
      "new_id": "fe87c5afda1b88960a62c825bd80db130f7c5ebc",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp"
    },
    {
      "type": "modify",
      "old_id": "275825a97341544add4b8c69942b39bd2f8f55f8",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll",
      "new_id": "9d0d43d9000262b1b9855e22495f16af2ec3c296",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/flat-saddr-atomics.ll"
    },
    {
      "type": "modify",
      "old_id": "58f7c4340276d1c1c95e8d4074cda9fb2c50063e",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AMDGPU/global-saddr-atomics.ll",
      "new_id": "466d7152a0d84714b01de140d9f45ca674850e73",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/global-saddr-atomics.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aaa295992c361ec9adcdd7a23fde7cf9b171f59f",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AMDGPU/memory-legalizer-single-wave-workgroup-memops.ll"
    }
  ]
}
