diff --git a/test/smoke-dev/xteam-scan-1/Makefile b/test/smoke-dev/xteam-scan-1/Makefile deleted file mode 100644 index f8cb1727dd..0000000000 --- a/test/smoke-dev/xteam-scan-1/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -include ../../Makefile.defs - -TESTNAME = xteam_scan_1 -TESTSRC_MAIN = xteam_scan_1.cpp -TESTSRC_AUX = -TESTSRC_ALL = $(TESTSRC_MAIN) $(TESTSRC_AUX) -RUNENV += LIBOMPTARGET_KERNEL_TRACE=1 - -RUNCMD = ./$(TESTNAME) 2>&1 | $(FILECHECK) $(TESTSRC_MAIN) - -CFLAGS += -fopenmp-target-xteam-scan -lm -O0 -CLANG = clang++ -OMP_BIN = $(AOMP)/bin/$(CLANG) -CC = $(OMP_BIN) $(VERBOSE) -#-ccc-print-phases -#"-\#\#\#" - -include ../Makefile.rules diff --git a/test/smoke-dev/xteam-scan-1/xteam_scan_1.cpp b/test/smoke-dev/xteam-scan-1/xteam_scan_1.cpp deleted file mode 100644 index e7a9c5ec4e..0000000000 --- a/test/smoke-dev/xteam-scan-1/xteam_scan_1.cpp +++ /dev/null @@ -1,199 +0,0 @@ -#include -#include -#include - -#define N 2000000 - -template -void run_test() { - T *in = (T*)malloc(sizeof(T) * N); - T *out1 = (T*)malloc(sizeof(T) * N); // For inclusive scan - T *out2 = (T *)malloc(sizeof(T) * N); // For exclusive scan - - for (int i = 0; i < N; i++) { - in[i] = 10; - out1[i] = 0; - } - - T sum1 = T(0); - -#pragma omp target teams distribute parallel for reduction(inscan, +:sum1) map(tofrom: in[0:N], out1[0:N]) num_threads(1024) - for (int i = 0; i < N; i++) { - sum1 += in[i]; // input phase -#pragma omp scan inclusive(sum1) - out1[i] = sum1; // scan phase - } - - T checksum = T(0); - for (int i = 0; i < N; i++) { - checksum += in[i]; - if (checksum != out1[i]) { - printf("Inclusive Scan: Failure. Wrong Result at %d. Exiting...\n", i); - return; - } - } - free(out1); - printf("Inclusive Scan: Success!\n"); - - T sum2 = T(0); - -#pragma omp target teams distribute parallel for reduction(inscan, +:sum2) map(tofrom: in[0:N], out2[0:N]) num_threads(1024) - for (int i = 0; i < N; i++) { - out2[i] = sum2; // scan phase -#pragma omp scan exclusive(sum2) - sum2 += in[i]; // input phase - } - - checksum = T(0); - for (int i = 0; i < N; i++) { - if (checksum != out2[i]) { - printf("Exclusive Scan: Failure. Wrong Result at %d. Exiting...\n", i); - return; - } - checksum += in[i]; - } - free(in); - free(out2); - printf("Exclusive Scan: Success!\n"); -} - -int main() { - printf("Testing for datatype int\n"); - run_test(); - - printf("Testing for datatype uint32_t\n"); - run_test(); - - printf("Testing for datatype uint64_t\n"); - run_test(); - - printf("Testing for datatype long\n"); - run_test(); - - printf("Testing for datatype double\n"); - run_test(); - - printf("Testing for datatype float\n"); - run_test(); - return 0; -} - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*i.*]]_l20 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l20_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*i.*]]_l40 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l40_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*j.*]]_l20 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l20_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*j.*]]_l40 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l40_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*m.*]]_l20 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l20_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*m.*]]_l40 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l40_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*l.*]]_l20 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l20_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*l.*]]_l40 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l40_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*d.*]]_l20 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l20_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*d.*]]_l40 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l40_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*f.*]]_l20 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l20_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED:.*f.*]]_l40 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args:10 teamsXthrds:( 104X1024) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l40_1 - -/// CHECK: Testing for datatype int -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype uint32_t -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype uint64_t -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype long -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype double -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype float -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! diff --git a/test/smoke-dev/xteam-scan-no-loop/Makefile b/test/smoke-dev/xteam-scan-no-loop/Makefile deleted file mode 100644 index c864751a64..0000000000 --- a/test/smoke-dev/xteam-scan-no-loop/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -include ../../Makefile.defs - -TESTNAME = xteam_scan_no_loop -TESTSRC_MAIN = xteam_scan_no_loop.cpp -TESTSRC_AUX = -TESTSRC_ALL = $(TESTSRC_MAIN) $(TESTSRC_AUX) -RUNENV += LIBOMPTARGET_KERNEL_TRACE=1 - -RUNCMD = ./$(TESTNAME) 2>&1 | $(FILECHECK) $(TESTSRC_MAIN) - -CFLAGS += -fopenmp-target-xteam-no-loop-scan -lm -O0 -CLANG = clang++ -OMP_BIN = $(AOMP)/bin/$(CLANG) -CC = $(OMP_BIN) $(VERBOSE) -#-ccc-print-phases -#"-\#\#\#" - -include ../Makefile.rules diff --git a/test/smoke-dev/xteam-scan-no-loop/xteam_scan_no_loop.cpp b/test/smoke-dev/xteam-scan-no-loop/xteam_scan_no_loop.cpp deleted file mode 100644 index d5a2b8346b..0000000000 --- a/test/smoke-dev/xteam-scan-no-loop/xteam_scan_no_loop.cpp +++ /dev/null @@ -1,201 +0,0 @@ -#include -#include -#include - -#define NUM_TEAMS 250 -#define NUM_THREADS 256 -#define N NUM_THREADS *NUM_TEAMS - -template -void run_test() { - T *in = (T*)malloc(sizeof(T) * N); - T *out1 = (T*)malloc(sizeof(T) * N); // For inclusive scan - T *out2 = (T *)malloc(sizeof(T) * N); // For exclusive scan - - for (int i = 0; i < N; i++) { - in[i] = 10; - out1[i] = 0; - } - - T sum1 = T(0); - -#pragma omp target teams distribute parallel for reduction(inscan, +:sum1) map(tofrom: in[0:N], out1[0:N]) num_teams(NUM_TEAMS) num_threads(NUM_THREADS) - for (int i = 0; i < N; i++) { - sum1 += in[i]; // input phase -#pragma omp scan inclusive(sum1) - out1[i] = sum1; // scan phase - } - - T checksum = T(0); - for (int i = 0; i < N; i++) { - checksum += in[i]; - if (checksum != out1[i]) { - printf("Inclusive Scan: Failure. Wrong Result at %d. Exiting...\n", i); - return; - } - } - free(out1); - printf("Inclusive Scan: Success!\n"); - - T sum2 = T(0); - -#pragma omp target teams distribute parallel for reduction(inscan, +:sum2) map(tofrom: in[0:N], out2[0:N]) num_teams(NUM_TEAMS) num_threads(NUM_THREADS) - for (int i = 0; i < N; i++) { - out2[i] = sum2; // scan phase -#pragma omp scan exclusive(sum2) - sum2 += in[i]; // input phase - } - - checksum = T(0); - for (int i = 0; i < N; i++) { - if (checksum != out2[i]) { - printf("Exclusive Scan: Failure. Wrong Result at %d. Exiting...\n", i); - return; - } - checksum += in[i]; - } - free(in); - free(out2); - printf("Exclusive Scan: Success!\n"); -} - -int main() { - printf("Testing for datatype int\n"); - run_test(); - - printf("Testing for datatype uint32_t\n"); - run_test(); - - printf("Testing for datatype uint64_t\n"); - run_test(); - - printf("Testing for datatype long\n"); - run_test(); - - printf("Testing for datatype double\n"); - run_test(); - - printf("Testing for datatype float\n"); - run_test(); - return 0; -} - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*i.*]]_l22 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l22_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*i.*]]_l42 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l42_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*j.*]]_l22 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l22_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*j.*]]_l42 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l42_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*m.*]]_l22 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l22_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*m.*]]_l42 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l42_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*l.*]]_l22 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l22_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*l.*]]_l42 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l42_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*d.*]]_l22 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l22_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*d.*]]_l42 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l42_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*f.*]]_l22 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l22_1 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED:.*f.*]]_l42 - -/// CHECK: DEVID:[[S:[ ]*]][[DEVID:[0-9]+]] SGN:8 -/// CHECK: args: 9 teamsXthrds:( 250X 256) -/// CHECK: n:__omp_offloading_[[MANGLED]]_l42_1 - -/// CHECK: Testing for datatype int -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype uint32_t -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype uint64_t -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype long -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype double -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! - -/// CHECK: Testing for datatype float -/// CHECK: Inclusive Scan: Success! -/// CHECK: Exclusive Scan: Success! \ No newline at end of file diff --git a/test/smoke-fails/xteam-red-min-max-scan/Makefile b/test/smoke-fails/xteam-red-min-max-scan/Makefile deleted file mode 100644 index 8aa3008ac2..0000000000 --- a/test/smoke-fails/xteam-red-min-max-scan/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -include ../../Makefile.defs - -TESTNAME = xteam-red-min-max-scan -TESTSRC_MAIN = xteam-red-min-max-scan.cpp -TESTSRC_AUX = -TESTSRC_ALL = $(TESTSRC_MAIN) $(TESTSRC_AUX) - -CFLAGS += -fopenmp-target-xteam-scan -lm -O0 -CLANG = clang++ -OMP_BIN = $(AOMP)/bin/$(CLANG) -CC = $(OMP_BIN) $(VERBOSE) -#-ccc-print-phases -#"-\#\#\#" - -include ../Makefile.rules diff --git a/test/smoke-fails/xteam-red-min-max-scan/xteam-red-min-max-scan.cpp b/test/smoke-fails/xteam-red-min-max-scan/xteam-red-min-max-scan.cpp deleted file mode 100644 index 6161d77314..0000000000 --- a/test/smoke-fails/xteam-red-min-max-scan/xteam-red-min-max-scan.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include -#include - -/* Scan and min/max not yet supported */ - -#define N 2000000 - -int run_test() { - int rc = 0; - float *in = new float[N]; - float *out1 = new float[N]; // For inclusive scan - float *out2 = new float[N]; // For exclusive scan - - for (int i = 0; i < N; i++) { - in[i] = 10; - out1[i] = 0; - } - - float max1 = 0; - float min1 = 3000000; - -#pragma omp target teams distribute parallel for reduction(inscan, min : min1) map(tofrom: in[0:N], out1[0:N]) - for (int i = 0; i < N; i++) { - min1 = fminf(min1, in[i]); // input phase -#pragma omp scan inclusive(min1) - out1[i] = min1; // scan phase - } - - float checksum = 3000000; - for (int i = 0; i < N; i++) { - checksum = fminf(checksum, in[i]); - if (checksum != out1[i]) { - printf("Inclusive Scan: Failure. Wrong Result at %d. Exiting...\n", i); - rc = 1; - break; - } - } - if (!rc) - printf("Inclusive Scan: Success!\n"); - if (min1 != 10) { - printf("Min failed: found %f, expected 10\n", min1); - rc = 1; - } - delete [] out1; - -#pragma omp target teams distribute parallel for reduction(inscan, max: max1) map(tofrom: in[0:N], out2[0:N]) - for (int i = 0; i < N; i++) { - out2[i] = max1; // scan phase -#pragma omp scan exclusive(max1) - max1 = fmaxf(max1, in[i]); // input phase - } - - checksum = 0; - for (int i = 0; i < N; i++) { - if (checksum != out2[i]) { - printf("Exclusive Scan: Failure. Wrong Result at %d. Exiting...\n", i); - rc = 1; - break; - } - checksum = fmaxf(checksum, in[i]); - } - if (!rc) - printf("Exclusive Scan: Success!\n"); - if (max1 != 10) { - printf("Max failed: found %f, expected 10\n", max1); - rc = 1; - } - delete [] in; - delete [] out2; - - return rc; -} - -int main() { - int rc = run_test(); - return rc; -}