From: David Schleef Date: Mon, 16 May 2011 19:45:22 +0000 (-0700) Subject: tests: Handle new modifiers X-Git-Tag: orc-0.4.15~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b6320bed4978eaa4190aeb8c7f86198f9cd5f6bd;p=platform%2Fupstream%2Forc.git tests: Handle new modifiers --- diff --git a/orc-test/orcarray.c b/orc-test/orcarray.c index 0686008..aeab06e 100644 --- a/orc-test/orcarray.c +++ b/orc-test/orcarray.c @@ -22,13 +22,15 @@ #define MISALIGNMENT 0 OrcArray * -orc_array_new (int n, int m, int element_size, int misalignment) +orc_array_new (int n, int m, int element_size, int misalignment, + int alignment) { OrcArray *ar; void *data; #ifdef HAVE_POSIX_MEMALIGN int ret; #endif + int offset; ar = malloc (sizeof(OrcArray)); memset (ar, 0, sizeof(OrcArray)); @@ -48,8 +50,11 @@ orc_array_new (int n, int m, int element_size, int misalignment) #endif ar->alloc_data = data; + if (alignment == 0) alignment = element_size; + offset = (alignment * misalignment) & (ALIGNMENT - 1); + ar->data = ORC_PTR_OFFSET (ar->alloc_data, - ar->stride * EXTEND_ROWS + element_size * misalignment); + ar->stride * EXTEND_ROWS + offset); return ar; } diff --git a/orc-test/orcarray.h b/orc-test/orcarray.h index eb57c57..53c7770 100644 --- a/orc-test/orcarray.h +++ b/orc-test/orcarray.h @@ -27,7 +27,8 @@ enum { ORC_PATTERN_FLOAT_DENORMAL }; -OrcArray *orc_array_new (int n, int m, int element_size, int misalignment); +OrcArray *orc_array_new (int n, int m, int element_size, int misalignment, + int alignment); void orc_array_free (OrcArray *array); void orc_array_set_pattern (OrcArray *array, int value); diff --git a/orc-test/orctest.c b/orc-test/orctest.c index 21c1f3c..4dde900 100644 --- a/orc-test/orctest.c +++ b/orc-test/orctest.c @@ -589,15 +589,15 @@ orc_test_compare_output_full (OrcProgram *program, int flags) if (program->vars[i].vartype == ORC_VAR_TYPE_SRC) { src[i-ORC_VAR_S1] = orc_array_new (n, m, program->vars[i].size, - misalignment); + misalignment, program->vars[i].alignment); orc_array_set_random (src[i-ORC_VAR_S1], &rand_context); misalignment++; } else if (program->vars[i].vartype == ORC_VAR_TYPE_DEST) { dest_exec[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, - misalignment); + misalignment, program->vars[i].alignment); orc_array_set_pattern (dest_exec[i], ORC_OOB_VALUE); dest_emul[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, - misalignment); + misalignment, program->vars[i].alignment); orc_array_set_pattern (dest_emul[i], ORC_OOB_VALUE); misalignment++; } else if (program->vars[i].vartype == ORC_VAR_TYPE_PARAM) { @@ -990,15 +990,15 @@ orc_test_performance_full (OrcProgram *program, int flags, if (program->vars[i].vartype == ORC_VAR_TYPE_SRC) { src[i-ORC_VAR_S1] = orc_array_new (n, m, program->vars[i].size, - misalignment); + misalignment, program->vars[i].alignment); orc_array_set_random (src[i-ORC_VAR_S1], &rand_context); misalignment++; } else if (program->vars[i].vartype == ORC_VAR_TYPE_DEST) { dest_exec[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, - misalignment); + misalignment, program->vars[i].alignment); orc_array_set_pattern (dest_exec[i], ORC_OOB_VALUE); dest_emul[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, - misalignment); + misalignment, program->vars[i].alignment); orc_array_set_pattern (dest_emul[i], ORC_OOB_VALUE); misalignment++; } else if (program->vars[i].vartype == ORC_VAR_TYPE_PARAM) { diff --git a/testsuite/show_parse.c b/testsuite/show_parse.c index f6f9daa..931ed9b 100644 --- a/testsuite/show_parse.c +++ b/testsuite/show_parse.c @@ -286,10 +286,10 @@ show (OrcProgram *program) if (program->vars[i].name == NULL) continue; if (program->vars[i].vartype == ORC_VAR_TYPE_SRC) { - src[i-ORC_VAR_S1] = orc_array_new (n, m, program->vars[i].size, 0); + src[i-ORC_VAR_S1] = orc_array_new (n, m, program->vars[i].size, 0, 0); orc_array_set_random (src[i-ORC_VAR_S1], &rand_context); } else if (program->vars[i].vartype == ORC_VAR_TYPE_DEST) { - dest[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, 0); + dest[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, 0, 0); orc_array_set_pattern (dest[i], ORC_OOB_VALUE); } else if (program->vars[i].vartype == ORC_VAR_TYPE_PARAM) { switch (program->vars[i].param_type) { diff --git a/testsuite/test.orc b/testsuite/test.orc index ad8222f..5843afa 100644 --- a/testsuite/test.orc +++ b/testsuite/test.orc @@ -2346,4 +2346,35 @@ splitwb t1, t2, vv avgub v, t1, t2 +.function memcpy_aligned +.dest 1 d1 align 16 void +.source 1 s1 align 16 void + +copyb d1, s1 + + +.function memcpy_large +.n minimum 4096 +.dest 1 d1 void +.source 1 s1 void + +copyb d1, s1 + + +.function memcpy_small +.n maximum 4096 +.dest 1 d1 void +.source 1 s1 void + +copyb d1, s1 + + +.function memcpy_aligned_n16 +.n multiple 16 +.dest 1 d1 align 16 void +.source 1 s1 align 16 void + +copyb d1, s1 + +