
Resolves https://github.com/llvm/llvm-project/issues/99161 - [x] Implement `WaveActiveAllTrue` clang builtin, - [x] Link `WaveActiveAllTrue` clang builtin with `hlsl_intrinsics.h` - [x] Add sema checks for `WaveActiveAllTrue` to `CheckHLSLBuiltinFunctionCall` in `SemaChecking.cpp` - [x] Add codegen for `WaveActiveAllTrue` to `EmitHLSLBuiltinExpr` in `CGBuiltin.cpp` - [x] Add codegen tests to `clang/test/CodeGenHLSL/builtins/WaveActiveAllTrue.hlsl` - [x] Add sema tests to `clang/test/SemaHLSL/BuiltIns/WaveActiveAllTrue-errors.hlsl` - [x] Create the `int_dx_WaveActiveAllTrue` intrinsic in `IntrinsicsDirectX.td` - [x] Create the `DXILOpMapping` of `int_dx_WaveActiveAllTrue` to `114` in `DXIL.td` - [x] Create the `WaveActiveAllTrue.ll` and `WaveActiveAllTrue_errors.ll` tests in `llvm/test/CodeGen/DirectX/` - [x] Create the `int_spv_WaveActiveAllTrue` intrinsic in `IntrinsicsSPIRV.td` - [x] In SPIRVInstructionSelector.cpp create the `WaveActiveAllTrue` lowering and map it to `int_spv_WaveActiveAllTrue` in `SPIRVInstructionSelector::selectIntrinsic`. - [x] Create SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/hlsl-intrinsics/WaveActiveAllTrue.ll`
22 lines
643 B
HLSL
22 lines
643 B
HLSL
// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.6-library %s -emit-llvm-only -disable-llvm-passes -verify
|
|
|
|
bool test_too_few_arg() {
|
|
return __builtin_hlsl_wave_active_all_true();
|
|
// expected-error@-1 {{too few arguments to function call, expected 1, have 0}}
|
|
}
|
|
|
|
bool test_too_many_arg(bool p0) {
|
|
return __builtin_hlsl_wave_active_all_true(p0, p0);
|
|
// expected-error@-1 {{too many arguments to function call, expected 1, have 2}}
|
|
}
|
|
|
|
struct Foo
|
|
{
|
|
int a;
|
|
};
|
|
|
|
bool test_type_check(Foo p0) {
|
|
return __builtin_hlsl_wave_active_all_true(p0);
|
|
// expected-error@-1 {{no viable conversion from 'Foo' to 'bool'}}
|
|
}
|