================
@@ -0,0 +1,40 @@
+// Testfile to verify Sema diagnostics for BCD builtins bcdshift, 
bcdshiftround, bcdtruncate.
+
+// REQUIRES: powerpc-registered-target
+// RUN: %clang_cc1 -target-feature +altivec -triple powerpc64-unknown-unknown 
-fsyntax-only -verify %s
+// RUN: %clang_cc1 -target-feature +altivec -triple 
powerpc64le-unknown-unknown -fsyntax-only -verify %s
+// RUN: %clang_cc1 -target-feature +altivec -triple powerpc-unknown-unknown 
-fsyntax-only -verify %s
+
+#include <altivec.h>
+#define DECL_COMMON_VARS            \
+  vector unsigned char vec = {1,2,3,4}; \
+  unsigned char scalar = 1;         \
+  int i = 1;                        \
+  float f = 1.0f;
+
+vector unsigned char test_bcdshift(void) {
+  DECL_COMMON_VARS
+  vector unsigned char res_a = __builtin_ppc_bcdshift(scalar, i, i); // 
expected-error {{argument 0 must be of type '__vector unsigned char' (vector of 
16 'unsigned char' values)}}
+  vector unsigned char res_b = __builtin_ppc_bcdshift(vec, f, i); // 
expected-error {{argument 1 must be of integer type}}
+  vector unsigned char res_c =  __builtin_ppc_bcdshift(vec, i, 2); // 
expected-error-re {{argument value {{.*}} is outside the valid range}}
+  vector unsigned char res_d = __builtin_ppc_bcdshift(vec, i, -1); // 
expected-error-re {{argument value {{.*}} is outside the valid range}}
+  return __builtin_ppc_bcdshift(vec, i, 1);
+}
+
+vector unsigned char test_bcdshiftround(void) {
+  DECL_COMMON_VARS
+  vector unsigned char res_a = __builtin_ppc_bcdshiftround(scalar, i, i); // 
expected-error {{argument 0 must be of type '__vector unsigned char' (vector of 
16 'unsigned char' values)}}
+  vector unsigned char res_b = __builtin_ppc_bcdshiftround(vec, f, i); // 
expected-error {{argument 1 must be of integer type}}
+  vector unsigned char res_c = __builtin_ppc_bcdshiftround(vec, i, 2); // 
expected-error-re {{argument value {{.*}} is outside the valid range}}
+  vector unsigned char res_d = __builtin_ppc_bcdshiftround(vec, i, -1); // 
expected-error-re {{argument value {{.*}} is outside the valid range}}
+  return __builtin_ppc_bcdshiftround(vec, i, 1);
+}
+
+vector unsigned char test_bcdtruncate(void) {
+  DECL_COMMON_VARS
+  vector unsigned char res_a =  __builtin_ppc_bcdtruncate(scalar, i, i); // 
expected-error {{argument 0 must be of type '__vector unsigned char' (vector of 
16 'unsigned char' values)}}
+  vector unsigned char res_b =  __builtin_ppc_bcdtruncate(vec, f, i); // 
expected-error {{argument 1 must be of integer type}}
+  vector unsigned char res_c =  __builtin_ppc_bcdtruncate(vec, i, 2); // 
expected-error-re {{argument value {{.*}} is outside the valid range}}
+  vector unsigned char res_d =  __builtin_ppc_bcdtruncate(vec, i, -1); // 
expected-error-re {{argument value {{.*}} is outside the valid range}}
+  return  __builtin_ppc_bcdtruncate(vec, i, 1);
+}
----------------
lei137 wrote:

I think this red circle with a bar inside is due to this file not having a `\n` 
following `}`.  I feel like this causes some issues but I can't remember 
exactly why... save to just add EOL to the end of the file 🙂 

https://github.com/llvm/llvm-project/pull/154715
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to