summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorJohan Tibell <johan.tibell@gmail.com>2014-03-26 17:08:29 +0100
committerJohan Tibell <johan.tibell@gmail.com>2014-03-26 17:08:29 +0100
commit11b31c3c9bbe05486e6532ec6217c8cf2587adbb (patch)
treeb22cc07f0caf6c24557c339260ba4e319c3517cb /testsuite
parentce335cee31de24d817246a87935bb9ffd21168f9 (diff)
downloadhaskell-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/.gitignore1
-rw-r--r--testsuite/tests/codeGen/should_gen_asm/all.T2
-rw-r--r--testsuite/tests/codeGen/should_gen_asm/memset-unroll.asm14
-rw-r--r--testsuite/tests/codeGen/should_gen_asm/memset-unroll.cmm8
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 ();
+}