)]}'
{
  "commit": "eaa7516e15ce50d0e49eecfc4bceb9e6cd91ff8f",
  "tree": "04d8376069e146eb478c0534df711b6487cd58f6",
  "parents": [
    "fb0881f62891e4042725731ec2e4cbc7e8f37e7c"
  ],
  "author": {
    "name": "calm",
    "email": "148254234+calm329@users.noreply.github.com",
    "time": "Wed Jan 14 15:43:11 2026 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jan 14 15:43:11 2026 -0800"
  },
  "message": "[X86] Lower scalar llvm.clmul intrinsics to PCLMULQDQ (#175189) (#175216)\n\nAdd support for lowering scalar llvm.clmul intrinsics (i8/i16/i32/i64)\nto the PCLMULQDQ hardware instruction on X86 targets with the PCLMUL\nfeature, instead of using the default software expansion.\n\nThe lowering:\n\n- Extends smaller types to the target\u0027s native width (i64 on x86-64, i32\non i686)\n- Uses SCALAR_TO_VECTOR to create vectors (v2i64 on x86-64, v4i32 with\nbitcast to v2i64 on i686)\n- Performs X86ISD::PCLMULQDQ with immediate 0x00\n- Extracts the result and truncates back to the original type\n\ni8/i16/i32 CLMUL is enabled on both 32-bit and 64-bit targets. i64\nCLMUL/CLMULH is only enabled on 64-bit targets.\n\nAlso adds ISD::CLMULH i64 support by extracting the upper element from\nthe v2i64 result.\n\nFixes #175189",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "02a356353e5876674c48281115d5cb3e6f8393c0",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/X86/X86ISelLowering.cpp",
      "new_id": "bad0376a57a9b0ebabde7739721b2972b1ca9a24",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/X86/X86ISelLowering.cpp"
    },
    {
      "type": "modify",
      "old_id": "a31ac8191ee40712e585a17b174b13aa60b3d16b",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/X86/X86ISelLowering.h",
      "new_id": "0016b85c9e05bf451b79fbb08714ddd803e3e73d",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/X86/X86ISelLowering.h"
    },
    {
      "type": "modify",
      "old_id": "a15fef952ac4e281b160664f116451766aa7b4d8",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/X86/X86InstrAVX512.td",
      "new_id": "0392100f8c6c325236b350ebdeaca3f12826f97e",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/X86/X86InstrAVX512.td"
    },
    {
      "type": "modify",
      "old_id": "0803a4946b37995db6352ea815cde26ecadb8e27",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/X86/X86InstrFragmentsSIMD.td",
      "new_id": "a2b09c62af9583573bd86a64eb7e9f44c4341d93",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/X86/X86InstrFragmentsSIMD.td"
    },
    {
      "type": "modify",
      "old_id": "6c6e8386e4b58dda2406f8e69b04c4fcfd66875e",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/X86/X86InstrSSE.td",
      "new_id": "e915e47046d9ce6e8e3eba01b8a85ae7b72e89ab",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/X86/X86InstrSSE.td"
    },
    {
      "type": "modify",
      "old_id": "88ade87e1dca810007dfd80a64c0e9494dbabc35",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/X86/X86IntrinsicsInfo.h",
      "new_id": "c0c98c1f3549188e09c8dcf61707252a4ee7503a",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/X86/X86IntrinsicsInfo.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "52d689adf2689d033e9ac45f6c485906fb0579d9",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/X86/clmul-x86.ll"
    },
    {
      "type": "modify",
      "old_id": "c57c827080814031328cbaddc27237b604125c8f",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/X86/clmul.ll",
      "new_id": "49c0e41e565ea6443ff265022505c7da72b5e3d9",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/X86/clmul.ll"
    }
  ]
}
