aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
diff options
context:
space:
mode:
authorDeric Cheung <cheung.deric@gmail.com>2025-01-21 14:30:29 -0800
committerGitHub <noreply@github.com>2025-01-21 14:30:29 -0800
commitdd860bcfb57df429c0a1ad2e2d869ff3b795bc4d (patch)
treeae5dacb3ba763c7cff17ee069d7a2ef649e7ac14 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
parentaf84ed8ae5c1a7af96fb745582244dd219e2e481 (diff)
downloadllvm-dd860bcfb57df429c0a1ad2e2d869ff3b795bc4d.zip
llvm-dd860bcfb57df429c0a1ad2e2d869ff3b795bc4d.tar.gz
llvm-dd860bcfb57df429c0a1ad2e2d869ff3b795bc4d.tar.bz2
[HLSL] Implement the `reflect` HLSL function (#122992)
Fixes #99152 Tasks completed: - Implement `reflect` in `clang/lib/Headers/hlsl/hlsl_intrinsics.h` - Implement the `reflect` SPIR-V target built-in in `clang/include/clang/Basic/BuiltinsSPIRV.td` - Add a SPIR-V fast path in `clang/lib/Headers/hlsl/hlsl_detail.h` in the form ```c++ #if (__has_builtin(__builtin_spirv_reflect)) return __builtin_spirv_reflect(...); #else return ...; // regular behavior #endif ``` - Add codegen for the SPIR-V `reflect` built-in to `EmitSPIRVBuiltinExpr` in `clang/lib/CodeGen/CGBuiltin.cpp` - Add HLSL codegen tests to `clang/test/CodeGenHLSL/builtins/reflect.hlsl` - Add SPIR-V built-in codegen tests to `clang/test/CodeGenSPIRV/Builtins/reflect.c` - Add sema tests to `clang/test/SemaHLSL/BuiltIns/reflect-errors.hlsl` - Add SPIR-V sema tests to `clang/test/CodeGenSPIRV/Builtins/reflect-errors.c` - Create the `int_spv_reflect` intrinsic in `llvm/include/llvm/IR/IntrinsicsSPIRV.td` - In `llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp` create the `reflect` lowering and map it to `int_spv_reflect` in `SPIRVInstructionSelector::selectIntrinsic` - Create a SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/hlsl-intrinsics/reflect.ll` Additional tasks completed: - Implement sema check for the `reflect` SPIR-V built-in in `clang/lib/Sema/SemaSPIRV.cpp` - Required for HLSL codegen to work via the SPIR-V fast path, because the types defined in `clang/include/clang/Basic/BuiltinsSPIRV.td` are being overridden - Create SPIR-V backend error test case in `llvm/test/CodeGen/SPIRV/opencl/reflect-error.ll` - Since `reflect` is only available in the GLSL extended instruction set, using it in OpenCL should result in an error Incomplete tasks: - Create SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/opencl/reflect.ll` - An OpenCL test is not applicable in this case because the [OpenCL SPIR-V extended instruction set](https://registry.khronos.org/SPIR-V/specs/unified1/OpenCL.ExtendedInstructionSet.100.html) does not include a `reflect` function
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
0 files changed, 0 insertions, 0 deletions