diff options
author | Johan Tibell <johan.tibell@gmail.com> | 2014-03-26 17:08:29 +0100 |
---|---|---|
committer | Johan Tibell <johan.tibell@gmail.com> | 2014-03-26 17:08:29 +0100 |
commit | 11b31c3c9bbe05486e6532ec6217c8cf2587adbb (patch) | |
tree | b22cc07f0caf6c24557c339260ba4e319c3517cb /testsuite | |
parent | ce335cee31de24d817246a87935bb9ffd21168f9 (diff) | |
download | haskell-11b31c3c9bbe05486e6532ec6217c8cf2587adbb.tar.gz |
Add flags to control memcpy and memset inlining
This adds -fmax-inline-memcpy-insns and -fmax-inline-memset-insns.
These flags control when we inline calls to memcpy/memset with
statically known arguments. The flag naming style is taken from GCC
and the same limit is used by both GCC and LLVM.
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/.gitignore | 1 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_gen_asm/all.T | 2 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_gen_asm/memset-unroll.asm | 14 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_gen_asm/memset-unroll.cmm | 8 |
4 files changed, 25 insertions, 0 deletions
diff --git a/testsuite/.gitignore b/testsuite/.gitignore index 1e14dc151f..519d432273 100644 --- a/testsuite/.gitignore +++ b/testsuite/.gitignore @@ -139,6 +139,7 @@ tests/codeGen/should_compile/T2578 tests/codeGen/should_gen_asm/memcpy-unroll-conprop.s tests/codeGen/should_gen_asm/memcpy-unroll.s tests/codeGen/should_gen_asm/memcpy.s +tests/codeGen/should_gen_asm/memset-unroll.s tests/codeGen/should_run/1852 tests/codeGen/should_run/1861 tests/codeGen/should_run/2080 diff --git a/testsuite/tests/codeGen/should_gen_asm/all.T b/testsuite/tests/codeGen/should_gen_asm/all.T index be30d5fe10..9cd3b45771 100644 --- a/testsuite/tests/codeGen/should_gen_asm/all.T +++ b/testsuite/tests/codeGen/should_gen_asm/all.T @@ -4,3 +4,5 @@ test('memcpy-unroll', unless(platform('x86_64-unknown-linux'),skip), compile_cmp_asm, ['']) test('memcpy-unroll-conprop', unless(platform('x86_64-unknown-linux'),skip), compile_cmp_asm, ['']) +test('memset-unroll', + unless(platform('x86_64-unknown-linux'),skip), compile_cmp_asm, ['']) diff --git a/testsuite/tests/codeGen/should_gen_asm/memset-unroll.asm b/testsuite/tests/codeGen/should_gen_asm/memset-unroll.asm new file mode 100644 index 0000000000..4c5c20bfdf --- /dev/null +++ b/testsuite/tests/codeGen/should_gen_asm/memset-unroll.asm @@ -0,0 +1,14 @@ +.text + .align 8 +.globl callMemset +.type callMemset, @object +callMemset: +.Lc5: + movl $16843009,0(%rbx) + movl $16843009,4(%rbx) + movl $16843009,8(%rbx) + movl $16843009,12(%rbx) + jmp *(%rbp) + .size callMemset, .-callMemset +.section .note.GNU-stack,"",@progbits +.ident "GHC 7.9.20140311" diff --git a/testsuite/tests/codeGen/should_gen_asm/memset-unroll.cmm b/testsuite/tests/codeGen/should_gen_asm/memset-unroll.cmm new file mode 100644 index 0000000000..825e7ead90 --- /dev/null +++ b/testsuite/tests/codeGen/should_gen_asm/memset-unroll.cmm @@ -0,0 +1,8 @@ +#include "Cmm.h" + +// Small memsets should unroll +callMemset (W_ dst) +{ + prim %memset(dst, 1, 16, 4); + return (); +} |