llvm-project
8d0c686c - [HLSL][DXIL][SPIRV] Added WaveActiveBitOr HLSL intrinsic (#165156)

Commit
16 days ago
[HLSL][DXIL][SPIRV] Added WaveActiveBitOr HLSL intrinsic (#165156) Adds the WaveActiveBitOr intrinsic from issue #99167. This intrinsic required a bit more work than the last intrinsics that I have done. There are some peculiarities, which I verified with dxcompiler: - WaveActiveBitOr only works on uint and uint64_t, no other types are allowed - There is no 16 bit version of WaveActiveBitOr Followed the checklist: - [x] Implement WaveActiveBitOr clang builtin, - [x] Link WaveActiveBitOr clang builtin with hlsl_intrinsics.h - [x] Add sema checks for WaveActiveBitOr to CheckHLSLBuiltinFunctionCall in SemaChecking.cpp - [x] Add codegen for WaveActiveBitOr to EmitHLSLBuiltinExpr in CGBuiltin.cpp - [x] Add codegen tests to clang/test/CodeGenHLSL/builtins/WaveActiveBitOr.hlsl - [x] Add sema tests to clang/test/SemaHLSL/BuiltIns/WaveActiveBitOr-errors.hlsl - [x] Create the int_dx_WaveActiveBitOr intrinsic in IntrinsicsDirectX.td - [x] Create the DXILOpMapping of int_dx_WaveActiveBitOr to 120 in DXIL.td - [x] Create the WaveActiveBitOr.ll and WaveActiveBitOr_errors.ll tests in llvm/test/CodeGen/DirectX/ - [x] Create the int_spv_WaveActiveBitOr intrinsic in IntrinsicsSPIRV.td - [x] In SPIRVInstructionSelector.cpp create the WaveActiveBitOr lowering and map it to int_spv_WaveActiveBitOr in SPIRVInstructionSelector::selectIntrinsic. - [x] Create SPIR-V backend test case in llvm/test/CodeGen/SPIRV/hlsl-intrinsics/WaveActiveBitOr.ll offload test: https://github.com/llvm/offload-test-suite/pull/487
Author
Parents
Loading