Author: Simon Pilgrim Date: 2022-01-28T14:31:36Z New Revision: 9d75ee1cd597a762c75e6b680e5af8039850a522
URL: https://github.com/llvm/llvm-project/commit/9d75ee1cd597a762c75e6b680e5af8039850a522 DIFF: https://github.com/llvm/llvm-project/commit/9d75ee1cd597a762c75e6b680e5af8039850a522.diff LOG: [Sema] Add signed/unsigned integer mismatch tests for min/max elementwise builtins As suggested on D117898 Differential Revision: https://reviews.llvm.org/D118464 Added: Modified: clang/test/Sema/builtins-elementwise-math.c Removed: ################################################################################ diff --git a/clang/test/Sema/builtins-elementwise-math.c b/clang/test/Sema/builtins-elementwise-math.c index 4243ddd1d71d7..f2da7a0327259 100644 --- a/clang/test/Sema/builtins-elementwise-math.c +++ b/clang/test/Sema/builtins-elementwise-math.c @@ -2,6 +2,7 @@ typedef float float4 __attribute__((ext_vector_type(4))); typedef int int3 __attribute__((ext_vector_type(3))); +typedef unsigned unsigned3 __attribute__((ext_vector_type(3))); typedef unsigned unsigned4 __attribute__((ext_vector_type(4))); struct Foo { @@ -32,7 +33,7 @@ void test_builtin_elementwise_abs(int i, double d, float4 v, int3 iv, unsigned u // expected-error@-1 {{1st argument must be a signed integer or floating point type (was 'unsigned4' (vector of 4 'unsigned int' values))}} } -void test_builtin_elementwise_max(int i, short s, double d, float4 v, int3 iv, int *p) { +void test_builtin_elementwise_max(int i, short s, double d, float4 v, int3 iv, unsigned3 uv, int *p) { i = __builtin_elementwise_max(p, d); // expected-error@-1 {{arguments are of diff erent types ('int *' vs 'double')}} @@ -51,6 +52,9 @@ void test_builtin_elementwise_max(int i, short s, double d, float4 v, int3 iv, i i = __builtin_elementwise_max(v, iv); // expected-error@-1 {{arguments are of diff erent types ('float4' (vector of 4 'float' values) vs 'int3' (vector of 3 'int' values))}} + i = __builtin_elementwise_max(uv, iv); + // expected-error@-1 {{arguments are of diff erent types ('unsigned3' (vector of 3 'unsigned int' values) vs 'int3' (vector of 3 'int' values))}} + s = __builtin_elementwise_max(i, s); enum e { one, @@ -84,7 +88,7 @@ void test_builtin_elementwise_max(int i, short s, double d, float4 v, int3 iv, i // expected-error@-1 {{1st argument must be a vector, integer or floating point type (was '_Complex float')}} } -void test_builtin_elementwise_min(int i, short s, double d, float4 v, int3 iv, int *p) { +void test_builtin_elementwise_min(int i, short s, double d, float4 v, int3 iv, unsigned3 uv, int *p) { i = __builtin_elementwise_min(p, d); // expected-error@-1 {{arguments are of diff erent types ('int *' vs 'double')}} @@ -103,6 +107,9 @@ void test_builtin_elementwise_min(int i, short s, double d, float4 v, int3 iv, i i = __builtin_elementwise_min(v, iv); // expected-error@-1 {{arguments are of diff erent types ('float4' (vector of 4 'float' values) vs 'int3' (vector of 3 'int' values))}} + i = __builtin_elementwise_min(uv, iv); + // expected-error@-1 {{arguments are of diff erent types ('unsigned3' (vector of 3 'unsigned int' values) vs 'int3' (vector of 3 'int' values))}} + s = __builtin_elementwise_min(i, s); enum e { one, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits