diff options
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGen/builtins-ppc-crypto-diag.c | 47 | ||||
| -rw-r--r-- | clang/test/Sema/builtins-ppc.c | 51 |
2 files changed, 51 insertions, 47 deletions
diff --git a/clang/test/CodeGen/builtins-ppc-crypto-diag.c b/clang/test/CodeGen/builtins-ppc-crypto-diag.c deleted file mode 100644 index 4408ab48a11..00000000000 --- a/clang/test/CodeGen/builtins-ppc-crypto-diag.c +++ /dev/null @@ -1,47 +0,0 @@ -// REQUIRES: powerpc-registered-target -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T1LW -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T1 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T1MW -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T1 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T2LW -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T2 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T2MW -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T2 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T1LD -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T1 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T1MD -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T1 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T2LD -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T2 -// RUN: not %clang_cc1 -faltivec -triple powerpc64le-unknown-unknown -D_T2MD -target-feature +crypto -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-T2 -#include <altivec.h> - -#define W_INIT { 0x01020304, 0x05060708, \ - 0x090A0B0C, 0x0D0E0F10 }; -#define D_INIT { 0x0102030405060708, \ - 0x090A0B0C0D0E0F10 }; -vector unsigned int test_vshasigmaw_or(void) -{ - vector unsigned int a = W_INIT -#ifdef _T1LW // Arg1 too large - vector unsigned int b = __builtin_crypto_vshasigmaw(a, 2, 15); -#elif defined(_T1MW) // Arg1 negative - vector unsigned int c = __builtin_crypto_vshasigmaw(a, -1, 15); -#elif defined(_T2LW) // Arg2 too large - vector unsigned int d = __builtin_crypto_vshasigmaw(a, 0, 85); -#elif defined(_T2MW) // Arg1 negative - vector unsigned int e = __builtin_crypto_vshasigmaw(a, 1, -15); -#endif - return __builtin_crypto_vshasigmaw(a, 1, 15); -} - -vector unsigned long long test_vshasigmad_or(void) -{ - vector unsigned long long a = D_INIT -#ifdef _T1LD // Arg1 too large - vector unsigned long long b = __builtin_crypto_vshasigmad(a, 2, 15); -#elif defined(_T1MD) // Arg1 negative - vector unsigned long long c = __builtin_crypto_vshasigmad(a, -1, 15); -#elif defined(_T2LD) // Arg2 too large - vector unsigned long long d = __builtin_crypto_vshasigmad(a, 0, 85); -#elif defined(_T2MD) // Arg1 negative - vector unsigned long long e = __builtin_crypto_vshasigmad(a, 1, -15); -#endif - return __builtin_crypto_vshasigmad(a, 0, 15); -} - -// CHECK-T1: error: argument out of range (should be 0-1). -// CHECK-T2: error: argument out of range (should be 0-15). diff --git a/clang/test/Sema/builtins-ppc.c b/clang/test/Sema/builtins-ppc.c new file mode 100644 index 00000000000..60872a614e4 --- /dev/null +++ b/clang/test/Sema/builtins-ppc.c @@ -0,0 +1,51 @@ +// REQUIRES: powerpc-registered-target +// RUN: %clang_cc1 -faltivec -target-feature +htm \ +// RUN: -triple powerpc64-unknown-unknown -DTEST_HTM -fsyntax-only \ +// RUN: -verify %s + +// RUN: %clang_cc1 -faltivec -target-feature +crypto \ +// RUN: -triple powerpc64le-unknown-unknown -DTEST_CRYPTO -fsyntax-only \ +// RUN: -verify %s + +#ifdef TEST_HTM +void test_htm() { + __builtin_tbegin(4); // expected-error {{argument should be a value from 0 to 1}} + __builtin_tend(-1); // expected-error {{argument should be a value from 0 to 1}} + __builtin_tsr(55); // expected-error {{argument should be a value from 0 to 7}} + __builtin_tabortwc(-5, 2, 3); // expected-error {{argument should be a value from 0 to 31}} + __builtin_tabortdc(55, 2, 3); // expected-error {{argument should be a value from 0 to 31}} + __builtin_tabortwci(-5, 2, 5); // expected-error {{argument should be a value from 0 to 31}} + __builtin_tabortwci(5, 2, 55); // expected-error {{argument should be a value from 0 to 31}} + __builtin_tabortdci(-5, 2, 5); // expected-error {{argument should be a value from 0 to 31}} + __builtin_tabortdci(5, 2, 55); // expected-error {{argument should be a value from 0 to 31}} +} +#endif + + +#ifdef TEST_CRYPTO +#include <altivec.h> + +#define W_INIT { 0x01020304, 0x05060708, 0x090A0B0C, 0x0D0E0F10 }; +#define D_INIT { 0x0102030405060708, 0x090A0B0C0D0E0F10 }; +vector unsigned int test_vshasigmaw_or(void) +{ + vector unsigned int a = W_INIT + vector unsigned int b = __builtin_crypto_vshasigmaw(a, 2, 15); // expected-error {{argument should be a value from 0 to 1}} + vector unsigned int c = __builtin_crypto_vshasigmaw(a, -1, 15); // expected-error {{argument should be a value from 0 to 1}} + vector unsigned int d = __builtin_crypto_vshasigmaw(a, 0, 85); // expected-error {{argument should be a value from 0 to 15}} + vector unsigned int e = __builtin_crypto_vshasigmaw(a, 1, -15); // expected-error {{argument should be a value from 0 to 15}} + return __builtin_crypto_vshasigmaw(a, 1, 15); +} + +vector unsigned long long test_vshasigmad_or(void) +{ + vector unsigned long long a = D_INIT + vector unsigned long long b = __builtin_crypto_vshasigmad(a, 2, 15); // expected-error {{argument should be a value from 0 to 1}} + vector unsigned long long c = __builtin_crypto_vshasigmad(a, -1, 15); // expected-error {{argument should be a value from 0 to 1}} + vector unsigned long long d = __builtin_crypto_vshasigmad(a, 0, 85); // expected-error {{argument should be a value from 0 to 1}} + vector unsigned long long e = __builtin_crypto_vshasigmad(a, 1, -15); // expected-error {{argument should be a value from 0 to 1}} + return __builtin_crypto_vshasigmad(a, 0, 15); +} + +#endif + |

