llvm-project/clang/test/SemaHLSL/BuiltIns/firstbitlow-errors.hlsl
Fraser Cormack 8cc9a48579
[clang] Improve diagnostics for vector builtins (#125673)
This commit improves the diagnostics for vector (elementwise) builtins
in a couple of ways.

It primarily provides more precise type-checking diagnostics for
builtins with specific type requirements. Previously many builtins were
receiving a catch-all diagnostic suggesting types which aren't valid.

It also makes consistent the type-checking behaviour between various
binary and ternary builtins. The binary builtins would check for
mismatched argument types before specific type requirements, whereas
ternary builtins would perform the checks in the reverse order. The
binary builtins now behave as the ternary ones do.
2025-03-18 18:11:45 +00:00

27 lines
984 B
HLSL

// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.6-library %s -fnative-half-type -emit-llvm-only -disable-llvm-passes -verify -verify-ignore-unexpected
int test_too_few_arg() {
return firstbitlow();
// expected-error@-1 {{no matching function for call to 'firstbitlow'}}
}
int test_too_many_arg(int p0) {
return firstbitlow(p0, p0);
// expected-error@-1 {{no matching function for call to 'firstbitlow'}}
}
double test_int_builtin(double p0) {
return firstbitlow(p0);
// expected-error@-1 {{call to 'firstbitlow' is ambiguous}}
}
double2 test_int_builtin_2(double2 p0) {
return __builtin_hlsl_elementwise_firstbitlow(p0);
// expected-error@-1 {{1st argument must be a scalar or vector of integer types (was 'double2' (aka 'vector<double, 2>'))}}
}
float test_int_builtin_3(float p0) {
return __builtin_hlsl_elementwise_firstbitlow(p0);
// expected-error@-1 {{1st argument must be a scalar or vector of integer types (was 'double')}}
}