================
@@ -12,6 +12,14 @@
int i = 1; \
float f = 1.0f;
+vector unsigned char test_bcdsetsign(void) {
+ DECL_COMMON_VARS
+ vector unsigned char res_a = __builtin_ppc_bcdsetsign(scalar, '\1'); //
expected-error {{argument 0 must be of type '__vector unsigned char' (vector of
16 'unsigned char' values}}
+ vector unsigned char res_b = __builtin_ppc_bcdsetsign(vec, 2); //
expected-error-re {{argument value {{.*}} is outside the valid range}}
+ vector unsigned char res_c = __builtin_ppc_bcdsetsign(vec, -1); //
expected-error-re {{argument value {{.*}} is outside the valid range}}
+ return __builtin_ppc_bcdsetsign(vec, '\1');
----------------
AditiRM wrote:
The builtin prototype takes an `unsigned char `as the second argument.
`'\1'` is used in the valid case to match the exact type.
`2` and `-1` are used intentionally to test the **constant range check (0–1)**;
they are constant expressions implicitly convertible to unsigned char, which is
sufficient to trigger the intended diagnostic.
https://github.com/llvm/llvm-project/pull/178121
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits