)]}'
{
  "commit": "056f0a10b320fc2fd75f46aa67d68708303d89ad",
  "tree": "5a2c5c4f6f87097cc4cfd56daeb464ea89c9df06",
  "parents": [
    "22994edb5fd71198c48670255c979fcc962930a1"
  ],
  "author": {
    "name": "raoanag",
    "email": "127366241+raoanag@users.noreply.github.com",
    "time": "Wed Jul 16 11:28:55 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jul 16 11:28:55 2025 -0700"
  },
  "message": "[HLSL][DXIL] Implement `refract` intrinsic (#147342)\n\n- [x] Implement refract using HLSL source in hlsl_intrinsics.h\n- [x] Implement the refract SPIR-V target built-in in\nclang/include/clang/Basic/BuiltinsSPIRV.td\n- [x] Add sema checks for refract to CheckSPIRVBuiltinFunctionCall in\nclang/lib/Sema/SemaSPIRV.cpp\n- [x] Add codegen for spv refract to EmitSPIRVBuiltinExpr in\nCGBuiltin.cpp\n- [x] Add codegen tests to clang/test/CodeGenHLSL/builtins/refract.hlsl\n- [x] Add spv codegen test to clang/test/CodeGenSPIRV/Builtins/refract.c\n- [x] Add sema tests to clang/test/SemaHLSL/BuiltIns/refract-errors.hlsl\n- [x] Add spv sema tests to\nclang/test/SemaSPIRV/BuiltIns/refract-errors.c\n- [x] Create the int_spv_refract intrinsic in IntrinsicsSPIRV.td\n- [x] In SPIRVInstructionSelector.cpp create the refract lowering and\nmap it to int_spv_refract in SPIRVInstructionSelector::selectIntrinsic.\n- [x] Create SPIR-V backend test case in\nllvm/test/CodeGen/SPIRV/hlsl-intrinsics/refract.ll\n- [x] Check for what OpenCL support is needed.\n\nResolves https://github.com/llvm/llvm-project/issues/99153",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "61cc0343c415ef63636b91ceab669ff4736c6437",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/BuiltinsSPIRVVK.td",
      "new_id": "5dc3c7588cd2a5721964c69a539efaf22cada671",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/BuiltinsSPIRVVK.td"
    },
    {
      "type": "modify",
      "old_id": "16243951c7bec34136ade2b53cd5ca2529934d1a",
      "old_mode": 33188,
      "old_path": "clang/lib/CodeGen/TargetBuiltins/SPIR.cpp",
      "new_id": "243aad8bf7083cff489bc2a6e32f7db436272869",
      "new_mode": 33188,
      "new_path": "clang/lib/CodeGen/TargetBuiltins/SPIR.cpp"
    },
    {
      "type": "modify",
      "old_id": "4eb7b8f45c85a3da7befb13382a003be8d121441",
      "old_mode": 33188,
      "old_path": "clang/lib/Headers/hlsl/hlsl_intrinsic_helpers.h",
      "new_id": "e8ccccb4898151cc3044444ce9635c7d2e6c0643",
      "new_mode": 33188,
      "new_path": "clang/lib/Headers/hlsl/hlsl_intrinsic_helpers.h"
    },
    {
      "type": "modify",
      "old_id": "ea880105fac3bd74276a56f8bdf930426c1b1855",
      "old_mode": 33188,
      "old_path": "clang/lib/Headers/hlsl/hlsl_intrinsics.h",
      "new_id": "499a05328ee4f15e3b9ebf573f25eea76fee3371",
      "new_mode": 33188,
      "new_path": "clang/lib/Headers/hlsl/hlsl_intrinsics.h"
    },
    {
      "type": "modify",
      "old_id": "76d3cff908b3752e2dbb21a7111310e4de63a209",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaSPIRV.cpp",
      "new_id": "c8ea0d09c40815c53d74ad298db958a4f315e1f7",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaSPIRV.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eda256451ee2b8ca71aa78f3c9085ec6d6b16e6b",
      "new_mode": 33188,
      "new_path": "clang/test/CodeGenHLSL/builtins/refract.hlsl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f399462d68d4a2af711f5bf2fbb7cc8d4b39f2d1",
      "new_mode": 33188,
      "new_path": "clang/test/CodeGenSPIRV/Builtins/refract.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6cb3e56c20f0ec71217d58fb82b6cc6f9a85c2ca",
      "new_mode": 33188,
      "new_path": "clang/test/SemaHLSL/BuiltIns/refract-errors.hlsl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "07486c2a60cbf613453f248fab86bcbaf88d6efd",
      "new_mode": 33188,
      "new_path": "clang/test/SemaSPIRV/BuiltIns/refract-errors.c"
    },
    {
      "type": "modify",
      "old_id": "35c9cd63581d64fb4f839cb2851ab8803184f1e7",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/IR/IntrinsicsSPIRV.td",
      "new_id": "b5f0cdf479c08acfd4da8b6b28b792173298ffb6",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/IR/IntrinsicsSPIRV.td"
    },
    {
      "type": "modify",
      "old_id": "fd0bea0b90472fc82bfee24d760e53437d936233",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp",
      "new_id": "6608b3f2cbefd06228d01ea8368cdd0d526d827b",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b18e92956853424a6bb8a72ebd91ce7918085371",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/hlsl-intrinsics/refract.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "28208fb2e72f873e5f23226dfc8de052438e25ed",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/opencl/refract-error.ll"
    }
  ]
}
