mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 05:36:06 +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.
68 lines
2.2 KiB
C
68 lines
2.2 KiB
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_asin_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_asin(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_acos_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_acos(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_atan_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_atan(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_atan2_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_atan2(v, v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_sin_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_sin(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_cos_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_cos(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_tan_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_tan(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_sinh_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_sinh(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_cosh_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_cosh(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|
|
vfloat32mf2_t test_tanh_vv_i8mf8(vfloat32mf2_t v) {
|
|
|
|
return __builtin_elementwise_tanh(v);
|
|
// expected-error@-1 {{1st argument must be a scalar or vector of floating-point types}}
|
|
}
|
|
|