Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/c-c++-common/cilk-plus/AN/test_builtin_return.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line source
/* { dg-options "-lm -fcilkplus" } */ /* { dg-do run } */ #if HAVE_IO #include <stdio.h> #endif #include <math.h> #define NUMBER 5 int func1 (int *a1, int *a2) { return __sec_reduce_add (a1[0:NUMBER] * a2[0:NUMBER:1]); } int func2 (int *a1, int *a2) { return (__sec_reduce_add (a1[0:NUMBER] * a2[0:NUMBER]) + __sec_reduce_mul (a1[0:NUMBER] + a2[0:NUMBER])); } int func3 (int *a1, int *a2) { return (int) sqrt ((double)(__sec_reduce_add (a1[0:NUMBER] * a2[0:NUMBER]) + a2[0] + a2[1] + a2[3])); } int func4 (int *a1, int *a2) { return a1[NUMBER-1] * (__sec_reduce_add (a1[0:NUMBER] * a2[0:NUMBER]) + a2[0] + a2[1] + a2[3])/a1[NUMBER-2]; } int main(void) { int array[NUMBER], array2[NUMBER]; int return_value = 0; int ii = 0; int argc = 1; __asm volatile ("" : "+r" (argc)); for (ii = 0; ii < NUMBER; ii++) { array[ii] = argc; /* This should calculate to 1. */ array2[ii] = argc * argc + argc; /* This should calculate to 2. */ } return_value = func1 (array, array2); #if HAVE_IO printf("Return_value = %d\n", return_value); #endif if (return_value != (2+2+2+2+2)) return 1; return_value = func2 (array2, array); #if HAVE_IO printf("Return_value = %d\n", return_value); #endif if (return_value != (3*3*3*3*3) + (2+2+2+2+2)) return 2; return_value = func3 (array, array2); #if HAVE_IO printf("Return_value = %d\n", return_value); #endif if (return_value != 4) return 3; return_value = func4 (array, array2); #if HAVE_IO printf("Return_value = %d\n", return_value); #endif if (return_value != 16) return 4; return 0; }