mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 18:36:05 +00:00

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.
26 lines
835 B
C
26 lines
835 B
C
// RUN: %clang_cc1 -triple riscv64 -target-feature +f -target-feature +d \
|
|
// RUN: -target-feature +v -target-feature +zfh -target-feature +zvfh \
|
|
// RUN: -disable-O0-optnone -o - -fsyntax-only %s -verify
|
|
// REQUIRES: riscv-registered-target
|
|
|
|
#include <riscv_vector.h>
|
|
|
|
|
|
vfloat32mf2_t test_log_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_log(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_log10_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_log10(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_log2_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_log2(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|