)]}'
{
  "commit": "70b970834c4f73c9e6171e4e8832039e1f22e291",
  "tree": "4d81d5d9ebb1da7b6a1500b877891f6faf84c82f",
  "parents": [
    "a4af861a04b92891b06e34f7fbee538f4b9f5ed2"
  ],
  "author": {
    "name": "Yang Gu",
    "email": "ygu@microsoft.com",
    "time": "Thu Jun 04 16:18:19 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jun 04 16:18:19 2026"
  },
  "message": "Skip quadBroadcast/quadSwap split tests when subgroup size \u003c 8 (#4656)\n\nWhen the implementation selects a subgroup size \u003c 8 for the test\u0027s\nworkgroup, the split predicate `id \u003c subgroupSize / 2` bisects the\nonly quad in the subgroup, leaving no fully active quad — which is\nundefined behavior for quad operations. This is observed on WARP\n(which selects its native D3D12 wave size: 4 on arm64 NEON, often 4\non x86 for small workgroups) and may occur on any implementation\nthat picks a small native subgroup size at runtime.\n\nTwo coordinated guards:\n\n  * In the shader, the quad call is wrapped in\n    `if subgroupSize \u003e\u003d 8u { ... }` so it never executes when the\n    split predicate would be unsafe.\n  * In the JS checker, the actual subgroupSize is read out of\n    metadata.subgroup_size[0] and the test is skipped with t.skip\n    when it is \u003c 8, so the missing output doesn\u0027t get flagged as a\n    failure.\n\nQuerying GPUAdapterInfo.subgroupMinSize would not be sufficient: the\nsize the implementation actually selects depends on the shader (its\nworkgroup size, register pressure, etc.), not just the adapter\u0027s\nminimum supported size. Reading subgroupSize from inside the test\nshader itself is the only reliable signal.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4d556618f624980f4471eb11bd7eef8f8bd944aa",
      "old_mode": 33188,
      "old_path": "src/webgpu/shader/execution/expression/call/builtin/quadBroadcast.spec.ts",
      "new_id": "8556a3d3ec429e6dda8507ec6319fcca1f27f2d5",
      "new_mode": 33188,
      "new_path": "src/webgpu/shader/execution/expression/call/builtin/quadBroadcast.spec.ts"
    },
    {
      "type": "modify",
      "old_id": "08f1b75cfb84f2bbf67eac7537bd6602c3f1f82d",
      "old_mode": 33188,
      "old_path": "src/webgpu/shader/execution/expression/call/builtin/quadSwap.spec.ts",
      "new_id": "93983d1962709f009a29b9b6857af24a68bee376",
      "new_mode": 33188,
      "new_path": "src/webgpu/shader/execution/expression/call/builtin/quadSwap.spec.ts"
    }
  ]
}
