diff options
-rw-r--r-- | tests/core/test_memcpy3.c | 51 | ||||
-rw-r--r-- | tests/core/test_memcpy3.out | 81 | ||||
-rw-r--r-- | tests/test_core.py | 7 |
3 files changed, 138 insertions, 1 deletions
diff --git a/tests/core/test_memcpy3.c b/tests/core/test_memcpy3.c new file mode 100644 index 00000000..1bf47be6 --- /dev/null +++ b/tests/core/test_memcpy3.c @@ -0,0 +1,51 @@ +#include <stdio.h> +#include <string.h> +#include <assert.h> + +#define TOTAL 10240 + +#define TEST(size, type) { \ + for (int i = 0; i < TOTAL; i++) { \ + buffer[i] = i*seed; \ + } \ + memcpy(buffer, buffer+size+1, size*sizeof(type)); \ + int v = 0; \ + for (int i = 0; i < TOTAL; i++) { \ + v += buffer[i]; \ + } \ + printf("final %d:%d\n", size, v); \ +} + +int main() { + #define RUN(type) \ + { \ + type buffer[TOTAL]; \ + volatile int seed = 123; \ + TEST(1, type); \ + TEST(2, type); \ + TEST(3, type); \ + TEST(4, type); \ + TEST(5, type); \ + TEST(6, type); \ + TEST(7, type); \ + TEST(8, type); \ + TEST(9, type); \ + TEST(10, type); \ + TEST(16, type); \ + TEST(32, type); \ + TEST(64, type); \ + TEST(128, type); \ + TEST(256, type); \ + TEST(512, type); \ + TEST(1024, type); \ + for (int x = 10; x < 100; x += 10) { TEST(x, type) }; \ + } + printf("8\n"); + RUN(unsigned char); + printf("16\n"); + RUN(unsigned short); + printf("32\n"); + RUN(unsigned); + return 1; +} + diff --git a/tests/core/test_memcpy3.out b/tests/core/test_memcpy3.out new file mode 100644 index 00000000..6f39e709 --- /dev/null +++ b/tests/core/test_memcpy3.out @@ -0,0 +1,81 @@ +8 +final 1:1305846 +final 2:1305826 +final 3:1305796 +final 4:1305756 +final 5:1305706 +final 6:1305646 +final 7:1305576 +final 8:1305496 +final 9:1305406 +final 10:1305306 +final 16:1305264 +final 32:1305696 +final 64:1305024 +final 128:1305728 +final 256:1305600 +final 512:1305600 +final 1024:1305600 +final 10:1305306 +final 20:1305548 +final 30:1305814 +final 40:1305336 +final 50:1305906 +final 60:1305476 +final 70:1305582 +final 80:1305712 +final 90:1304842 +16 +final 1:332555510 +final 2:332556002 +final 3:332556740 +final 4:332557724 +final 5:332558954 +final 6:332560430 +final 7:332562152 +final 8:332564120 +final 9:332566334 +final 10:332568794 +final 16:332588720 +final 32:332685152 +final 64:333066944 +final 128:334586240 +final 256:340647680 +final 512:332618240 +final 1024:332812288 +final 10:332568794 +final 20:332606924 +final 30:332669654 +final 40:332756984 +final 50:332868914 +final 60:333005444 +final 70:333166574 +final 80:333352304 +final 90:333562634 +32 +final 1:-2141821706 +final 2:-2141821214 +final 3:-2141820476 +final 4:-2141819492 +final 5:-2141818262 +final 6:-2141816786 +final 7:-2141815064 +final 8:-2141813096 +final 9:-2141810882 +final 10:-2141808422 +final 16:-2141788496 +final 32:-2141692064 +final 64:-2141310272 +final 128:-2139790976 +final 256:-2133729536 +final 512:-2109515264 +final 1024:-2012721152 +final 10:-2141808422 +final 20:-2141770292 +final 30:-2141707562 +final 40:-2141620232 +final 50:-2141508302 +final 60:-2141371772 +final 70:-2141210642 +final 80:-2141024912 +final 90:-2140814582 diff --git a/tests/test_core.py b/tests/test_core.py index fd8d18fe..55aeb697 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -2071,7 +2071,6 @@ def process(filename): def test_bigswitch(self): if self.run_name != 'default': return self.skip('TODO: issue #781') - src = open(path_from_root('tests', 'bigswitch.cpp')).read() self.do_run(src, '''34962: GL_ARRAY_BUFFER (0x8892) 26214: what? @@ -2589,6 +2588,12 @@ The current type of b is: 9 self.do_run_from_file(src, output) + def test_memcpy3(self): + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('need ta2') + test_path = path_from_root('tests', 'core', 'test_memcpy3') + src, output = (test_path + s for s in ('.c', '.out')) + self.do_run_from_file(src, output) + def test_getopt(self): if self.emcc_args is None: return self.skip('needs emcc for libc') |