public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit
@ 2020-05-30 10:12 jan at jki dot io
2020-05-30 10:12 ` [Bug target/95435] " jan at jki dot io
` (13 more replies)
0 siblings, 14 replies; 15+ messages in thread
From: jan at jki dot io @ 2020-05-30 10:12 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
Bug ID: 95435
Summary: bad builtin memcpy performance with znver1/znver2 and
32bit
Product: gcc
Version: 10.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jan at jki dot io
Target Milestone: ---
Created attachment 48641
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48641&action=edit
gcc -g -m32 -march=znver2 -O1 -s testmem_modified.c -o tm32
Hi,
I have found a regression with znver2 and 32bit compiles regarding builtin
memcpy.
Test program is this one:
https://github.com/level1wendell/memcpy_sse
results:
gcc -g -m32 -march=znver2 -O1 -s testmem_modified.c -o tm32
32 MB = 2.462717 ms
gcc -g -m32 -march=skylake -O1 -s testmem_modified.c -o tm32
32 MB = 1.135762 ms
gcc -fno-builtin-memcpy -g -m32 -march=znver2 -O1 -s testmem_modified.c -o
tm32
32 MB = 1.138656 ms
I have attached the generated assembler code for the first 2 cases.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
@ 2020-05-30 10:12 ` jan at jki dot io
2020-05-30 10:16 ` jan at jki dot io
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jan at jki dot io @ 2020-05-30 10:12 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #1 from Jan <jan at jki dot io> ---
Created attachment 48642
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48642&action=edit
gcc -g -m32 -march=skylake -O1 -s testmem_modified.c -o tm32
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
2020-05-30 10:12 ` [Bug target/95435] " jan at jki dot io
@ 2020-05-30 10:16 ` jan at jki dot io
2020-05-30 10:18 ` glisse at gcc dot gnu.org
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jan at jki dot io @ 2020-05-30 10:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #2 from Jan <jan at jki dot io> ---
Created attachment 48643
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48643&action=edit
source code
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
2020-05-30 10:12 ` [Bug target/95435] " jan at jki dot io
2020-05-30 10:16 ` jan at jki dot io
@ 2020-05-30 10:18 ` glisse at gcc dot gnu.org
2020-05-30 10:23 ` jan at jki dot io
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: glisse at gcc dot gnu.org @ 2020-05-30 10:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
Marc Glisse <glisse at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |x86-*-*
--- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> ---
"regression" means that a new version of gcc is working worse than an older
one, can you mention which older version you are comparing to and what results
you were getting with it?
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (2 preceding siblings ...)
2020-05-30 10:18 ` glisse at gcc dot gnu.org
@ 2020-05-30 10:23 ` jan at jki dot io
2020-05-30 16:43 ` amonakov at gcc dot gnu.org
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jan at jki dot io @ 2020-05-30 10:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #4 from Jan <jan at jki dot io> ---
Sorry bad wording on my site. I meant the code is getting slower with znver2.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (3 preceding siblings ...)
2020-05-30 10:23 ` jan at jki dot io
@ 2020-05-30 16:43 ` amonakov at gcc dot gnu.org
2020-06-01 9:27 ` marxin at gcc dot gnu.org
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: amonakov at gcc dot gnu.org @ 2020-05-30 16:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
Alexander Monakov <amonakov at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |amonakov at gcc dot gnu.org
--- Comment #5 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
Ugh. Stringop tuning for Ryzens is terribly anachronistic, all AMD processors
since K8 (!!) use the exact same tables, and 32-bit memset/memcpy don't use
libcall for large sizes:
static stringop_algs znver2_memcpy[2] = {
{libcall, {{6, loop, false}, {14, unrolled_loop, false},
{-1, rep_prefix_4_byte, false}}},
{libcall, {{16, loop, false}, {64, rep_prefix_4_byte, false},
{-1, libcall, false}}}};
(first subarray is 32-bit tuning, the second is for 64-bit)
Using test_stringop microbenchmark from PR43052 it's easy to see that library
memset/memcpy are fastest on sizes 256 and above. Below that, the result from
the microbenchmark may be debatable, I think we should prefer the libcall
almost always except for tiniest sizes for I-cache locality reasons.
But anyway, current tuning is completely inappropriate.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (4 preceding siblings ...)
2020-05-30 16:43 ` amonakov at gcc dot gnu.org
@ 2020-06-01 9:27 ` marxin at gcc dot gnu.org
2020-06-01 9:33 ` marxin at gcc dot gnu.org
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-06-01 9:27 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |marxin at gcc dot gnu.org
Last reconfirmed| |2020-06-01
Assignee|unassigned at gcc dot gnu.org |marxin at gcc dot gnu.org
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (5 preceding siblings ...)
2020-06-01 9:27 ` marxin at gcc dot gnu.org
@ 2020-06-01 9:33 ` marxin at gcc dot gnu.org
2020-06-01 9:48 ` ubizjak at gmail dot com
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-06-01 9:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
All right, there are results for a micro-benchmark that we have in contrib
folder:
ZNVER1 (AMD Ryzen 7 2700X):
64-bit:
contrib/bench-stringop 64 320000000 gcc -march=znver1
memcpy
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.06
0:00.07 0:00.06 0:00.07 0:00.05 0:00.06 0:00.17 0:00.05 0:00.05 0:00.05
libcall
819200 0:00.04 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.04
0:00.05 0:00.04 0:00.05 0:00.04 0:00.04 0:00.15 0:00.04 0:00.04 0:00.04
libcall
81920 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.02
0:00.04 0:00.02 0:00.04 0:00.02 0:00.03 0:00.16 0:00.02 0:00.01 0:00.02
libcall
20480 0:00.01 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.03
0:00.04 0:00.03 0:00.04 0:00.02 0:00.03 0:00.32 0:00.02 0:00.01 0:00.01
libcall
8192 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.03
0:00.04 0:00.02 0:00.04 0:00.02 0:00.03 0:00.16 0:00.02 0:00.02 0:00.02
libcall
4096 0:00.02 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.02
0:00.04 0:00.03 0:00.04 0:00.02 0:00.03 0:00.16 0:00.05 0:00.05 0:00.02
libcall
2048 0:00.02 0:00.07 0:00.07 0:00.07 0:00.07 0:00.06 0:00.07 0:00.03
0:00.05 0:00.03 0:00.05 0:00.03 0:00.03 0:00.17 0:00.06 0:00.06 0:00.02
libcall
1024 0:00.03 0:00.09 0:00.09 0:00.08 0:00.09 0:00.08 0:00.08 0:00.04
0:00.05 0:00.03 0:00.05 0:00.04 0:00.04 0:00.18 0:00.08 0:00.08 0:00.03
libcall
512 0:00.03 0:00.12 0:00.12 0:00.10 0:00.11 0:00.08 0:00.09 0:00.05
0:00.06 0:00.04 0:00.05 0:00.05 0:00.05 0:00.19 0:00.08 0:00.08 0:00.03
libcall
256 0:00.04 0:00.19 0:00.19 0:00.14 0:00.14 0:00.06 0:00.06 0:00.06
0:00.07 0:00.05 0:00.06 0:00.08 0:00.08 0:00.21 0:00.05 0:00.05 0:00.04
libcall
128 0:00.08 0:00.29 0:00.29 0:00.10 0:00.10 0:00.08 0:00.08 0:00.09
0:00.09 0:00.09 0:00.09 0:00.14 0:00.11 0:00.24 0:00.08 0:00.08 0:00.08
libcall
64 0:00.15 0:00.39 0:00.39 0:00.15 0:00.14 0:00.14 0:00.14 0:00.15
0:00.16 0:00.17 0:00.18 0:00.24 0:00.20 0:00.30 0:00.14 0:00.14 0:00.14
rep4noalign
48 0:00.19 0:00.41 0:00.41 0:00.18 0:00.18 0:00.18 0:00.18 0:00.18
0:00.19 0:00.22 0:00.23 0:00.32 0:00.29 0:00.34 0:00.18 0:00.18 0:00.18 loop
32 0:00.32 0:00.34 0:00.34 0:00.26 0:00.25 0:00.27 0:00.26 0:00.30
0:00.33 0:00.37 0:00.40 0:00.37 0:00.37 0:00.37 0:00.27 0:00.27 0:00.25
rep4noalign
24 0:00.40 0:00.40 0:00.39 0:00.33 0:00.32 0:00.34 0:00.33 0:00.36
0:00.40 0:00.50 0:00.53 0:00.52 0:00.52 0:00.43 0:00.34 0:00.34 0:00.32
rep4noalign
16 0:00.67 0:00.51 0:00.51 0:00.48 0:00.46 0:00.55 0:00.51 0:00.67
0:00.77 0:00.91 0:00.91 0:00.52 0:00.52 0:00.52 0:00.67 0:00.70 0:00.46
rep4noalign
14 0:00.66 0:00.58 0:00.58 0:00.52 0:00.51 0:00.56 0:00.54 0:00.64
0:00.72 0:00.92 0:00.93 0:00.62 0:00.63 0:00.62 0:00.60 0:00.61 0:00.51
rep4noalign
12 0:00.85 0:00.64 0:00.64 0:00.62 0:00.61 0:00.66 0:00.66 0:00.82
0:00.93 0:01.11 0:01.11 0:00.69 0:00.70 0:00.64 0:00.78 0:00.81 0:00.61
rep4noalign
10 0:00.86 0:00.75 0:00.75 0:00.70 0:00.69 0:00.78 0:00.74 0:00.92
0:00.98 0:01.17 0:01.18 0:00.75 0:00.75 0:00.68 0:00.91 0:00.92 0:00.68 byte
8 0:01.19 0:00.92 0:00.92 0:00.95 0:00.93 0:01.25 0:01.13 0:01.57
0:01.62 0:01.72 0:01.73 0:00.92 0:00.92 0:00.92 0:01.59 0:01.59 0:00.92 byte
6 0:01.20 0:01.20 0:01.19 0:01.08 0:01.06 0:01.37 0:01.22 0:01.46
0:01.54 0:01.57 0:01.54 0:01.07 0:01.07 0:01.05 0:01.46 0:01.46 0:01.05 byte
4 0:02.06 0:01.75 0:01.74 0:02.01 0:01.99 0:03.29 0:03.30 0:03.30
0:03.29 0:03.26 0:03.30 0:02.15 0:02.16 0:02.16 0:03.31 0:02.15 0:01.74
rep1noalign
1 0:01.49 0:05.41 0:05.43 0:00.58 0:00.58 0:00.58 0:00.58 0:00.58
0:00.58 0:00.58 0:00.58 0:00.73 0:00.72 0:00.72 0:00.48 0:00.73 0:00.58 loop
Aligned
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.08 0:00.10 0:00.10 0:00.10 0:00.10 0:00.10 0:00.10 0:00.10
0:00.10 0:00.10 0:00.10 0:00.09 0:00.09 0:00.20 0:00.08 0:00.09 0:00.08
libcall
819200 0:00.04 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.04
0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.16 0:00.04 0:00.04 0:00.04
libcall
81920 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.03
0:00.03 0:00.02 0:00.02 0:00.02 0:00.02 0:00.16 0:00.02 0:00.02 0:00.02
libcall
20480 0:00.01 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.03
0:00.03 0:00.03 0:00.02 0:00.02 0:00.02 0:00.33 0:00.02 0:00.02 0:00.01
libcall
8192 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04
0:00.04 0:00.03 0:00.03 0:00.02 0:00.02 0:00.17 0:00.02 0:00.02 0:00.02
libcall
4096 0:00.02 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.04
0:00.04 0:00.03 0:00.03 0:00.02 0:00.02 0:00.16 0:00.05 0:00.05 0:00.02
libcall
2048 0:00.02 0:00.07 0:00.07 0:00.07 0:00.07 0:00.06 0:00.06 0:00.05
0:00.05 0:00.03 0:00.03 0:00.03 0:00.03 0:00.18 0:00.06 0:00.07 0:00.02
libcall
1024 0:00.03 0:00.07 0:00.07 0:00.07 0:00.07 0:00.07 0:00.06 0:00.06
0:00.06 0:00.04 0:00.04 0:00.04 0:00.04 0:00.18 0:00.06 0:00.07 0:00.03
libcall
512 0:00.05 0:00.11 0:00.11 0:00.10 0:00.10 0:00.08 0:00.08 0:00.08
0:00.08 0:00.06 0:00.06 0:00.07 0:00.07 0:00.20 0:00.08 0:00.08 0:00.05
libcall
256 0:00.07 0:00.15 0:00.15 0:00.13 0:00.12 0:00.07 0:00.07 0:00.09
0:00.08 0:00.07 0:00.07 0:00.10 0:00.10 0:00.22 0:00.07 0:00.07 0:00.07
libcall
128 0:00.09 0:00.21 0:00.21 0:00.11 0:00.12 0:00.10 0:00.11 0:00.11
0:00.11 0:00.10 0:00.10 0:00.15 0:00.15 0:00.25 0:00.10 0:00.11 0:00.09
libcall
64 0:00.15 0:00.33 0:00.33 0:00.17 0:00.17 0:00.20 0:00.20 0:00.18
0:00.18 0:00.16 0:00.16 0:00.21 0:00.27 0:00.30 0:00.17 0:00.20 0:00.15
libcall
48 0:00.19 0:00.39 0:00.39 0:00.21 0:00.21 0:00.20 0:00.20 0:00.19
0:00.19 0:00.19 0:00.19 0:00.32 0:00.31 0:00.35 0:00.20 0:00.20 0:00.19
libcall
32 0:00.27 0:00.37 0:00.37 0:00.29 0:00.28 0:00.33 0:00.33 0:00.29
0:00.29 0:00.28 0:00.28 0:00.39 0:00.39 0:00.39 0:00.29 0:00.33 0:00.27
libcall
24 0:00.35 0:00.46 0:00.46 0:00.38 0:00.38 0:00.37 0:00.37 0:00.34
0:00.34 0:00.36 0:00.36 0:00.54 0:00.54 0:00.44 0:00.36 0:00.37 0:00.34 loop
16 0:00.47 0:00.58 0:00.58 0:00.51 0:00.51 0:00.55 0:00.55 0:00.50
0:00.51 0:00.51 0:00.50 0:00.55 0:00.56 0:00.56 0:00.48 0:00.50 0:00.47
libcall
14 0:00.52 0:00.67 0:00.67 0:00.59 0:00.59 0:00.58 0:00.58 0:00.53
0:00.53 0:00.55 0:00.55 0:00.68 0:00.68 0:00.68 0:00.52 0:00.53 0:00.52
libcall
12 0:00.60 0:00.75 0:00.75 0:00.66 0:00.66 0:00.65 0:00.65 0:00.62
0:00.62 0:00.62 0:00.62 0:00.73 0:00.73 0:00.67 0:00.61 0:00.62 0:00.60
libcall
10 0:00.72 0:00.86 0:00.86 0:00.82 0:00.82 0:00.81 0:00.80 0:00.73
0:00.73 0:00.76 0:00.76 0:00.90 0:00.90 0:00.81 0:00.74 0:00.73 0:00.72
libcall
8 0:00.79 0:00.99 0:00.98 0:00.86 0:00.86 0:00.89 0:00.89 0:00.86
0:00.86 0:00.85 0:00.85 0:00.91 0:00.90 0:00.91 0:00.86 0:00.86 0:00.79
libcall
6 0:01.03 0:01.30 0:01.28 0:01.09 0:01.09 0:01.21 0:01.20 0:01.17
0:01.17 0:01.17 0:01.18 0:01.16 0:01.17 0:01.15 0:01.17 0:01.16 0:01.03
libcall
4 0:01.39 0:01.68 0:01.68 0:01.39 0:01.39 0:01.50 0:01.50 0:01.50
0:01.51 0:01.51 0:01.50 0:01.48 0:01.49 0:01.49 0:01.55 0:01.48 0:01.39
libcall
1 0:02.94 0:04.18 0:04.18 0:02.55 0:02.58 0:02.55 0:02.55 0:02.56
0:02.54 0:02.54 0:02.55 0:02.56 0:02.54 0:02.55 0:02.56 0:02.55 0:02.54
loopnoalign
memset
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.05
0:00.04 0:00.03 0:00.04 0:00.03 0:00.04 0:00.16 0:00.02 0:00.02 0:00.02
libcall
819200 0:00.05 0:00.04 0:00.04 0:00.04 0:00.05 0:00.04 0:00.05 0:00.06
0:00.06 0:00.05 0:00.06 0:00.06 0:00.06 0:00.16 0:00.05 0:00.05 0:00.04 rep1
81920 0:00.01 0:00.01 0:00.01 0:00.01 0:00.02 0:00.01 0:00.02 0:00.04
0:00.03 0:00.02 0:00.03 0:00.02 0:00.03 0:00.15 0:00.01 0:00.01 0:00.01
libcall
20480 0:00.01 0:00.01 0:00.01 0:00.02 0:00.02 0:00.01 0:00.02 0:00.02
0:00.04 0:00.02 0:00.03 0:00.02 0:00.03 0:00.16 0:00.01 0:00.01 0:00.01
libcall
8192 0:00.01 0:00.01 0:00.01 0:00.01 0:00.02 0:00.01 0:00.02 0:00.02
0:00.03 0:00.02 0:00.03 0:00.02 0:00.03 0:00.15 0:00.01 0:00.01 0:00.01
libcall
4096 0:00.01 0:00.02 0:00.02 0:00.02 0:00.03 0:00.02 0:00.02 0:00.02
0:00.03 0:00.02 0:00.03 0:00.02 0:00.03 0:00.15 0:00.02 0:00.02 0:00.01
libcall
2048 0:00.01 0:00.02 0:00.02 0:00.02 0:00.03 0:00.02 0:00.03 0:00.02
0:00.03 0:00.02 0:00.03 0:00.03 0:00.03 0:00.16 0:00.02 0:00.02 0:00.01
libcall
1024 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03
0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.16 0:00.03 0:00.03 0:00.02
libcall
512 0:00.02 0:00.06 0:00.05 0:00.04 0:00.05 0:00.04 0:00.04 0:00.04
0:00.04 0:00.03 0:00.04 0:00.03 0:00.04 0:00.17 0:00.04 0:00.04 0:00.02
libcall
256 0:00.04 0:00.09 0:00.09 0:00.07 0:00.07 0:00.04 0:00.04 0:00.05
0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.18 0:00.04 0:00.04 0:00.04
libcall
128 0:00.07 0:00.15 0:00.16 0:00.08 0:00.08 0:00.06 0:00.07 0:00.08
0:00.07 0:00.06 0:00.06 0:00.06 0:00.06 0:00.21 0:00.06 0:00.06 0:00.06 rep8
64 0:00.15 0:00.25 0:00.25 0:00.12 0:00.11 0:00.13 0:00.14 0:00.13
0:00.14 0:00.13 0:00.13 0:00.13 0:00.13 0:00.25 0:00.13 0:00.13 0:00.11
rep4noalign
48 0:00.20 0:00.29 0:00.29 0:00.14 0:00.14 0:00.16 0:00.18 0:00.17
0:00.19 0:00.17 0:00.16 0:00.17 0:00.17 0:00.28 0:00.16 0:00.17 0:00.14 rep4
32 0:00.42 0:00.27 0:00.27 0:00.20 0:00.22 0:00.27 0:00.33 0:00.29
0:00.35 0:00.28 0:00.28 0:00.28 0:00.29 0:00.32 0:00.28 0:00.28 0:00.20 rep4
24 0:00.57 0:00.33 0:00.33 0:00.25 0:00.27 0:00.44 0:00.54 0:00.47
0:00.57 0:00.44 0:00.43 0:00.44 0:00.43 0:00.34 0:00.42 0:00.43 0:00.25 rep4
16 0:00.99 0:00.40 0:00.39 0:00.42 0:00.52 0:00.91 0:01.02 0:00.90
0:01.03 0:00.93 0:00.93 0:00.93 0:00.93 0:00.42 0:00.91 0:00.92 0:00.39
rep1noalign
14 0:01.14 0:00.47 0:00.47 0:00.50 0:00.62 0:01.10 0:01.22 0:01.09
0:01.22 0:01.10 0:01.10 0:01.10 0:01.10 0:00.45 0:01.10 0:01.10 0:00.45 byte
12 0:01.27 0:00.51 0:00.52 0:00.74 0:00.96 0:01.31 0:01.39 0:01.31
0:01.40 0:01.33 0:01.32 0:01.32 0:01.32 0:00.50 0:01.32 0:01.33 0:00.50 byte
10 0:01.45 0:00.59 0:00.59 0:01.12 0:01.40 0:01.53 0:01.60 0:01.53
0:01.60 0:01.55 0:01.55 0:01.55 0:01.53 0:00.56 0:01.55 0:01.54 0:00.56 byte
8 0:01.73 0:00.67 0:00.67 0:01.66 0:01.82 0:01.83 0:01.85 0:01.83
0:01.85 0:01.83 0:01.83 0:01.83 0:01.83 0:00.65 0:01.82 0:01.83 0:00.65 byte
6 0:02.15 0:00.86 0:00.86 0:02.21 0:02.34 0:02.36 0:02.40 0:02.35
0:02.39 0:02.37 0:02.38 0:02.38 0:02.38 0:00.86 0:02.37 0:02.37 0:00.86 byte
4 0:02.83 0:01.79 0:01.79 0:02.98 0:02.99 0:02.99 0:02.98 0:02.99
0:02.99 0:02.99 0:02.99 0:02.99 0:02.99 0:02.17 0:02.97 0:02.17 0:01.79 rep1
1 0:01.78 0:02.88 0:02.88 0:00.58 0:00.58 0:00.58 0:00.59 0:00.58
0:00.59 0:00.58 0:00.58 0:00.59 0:00.58 0:00.58 0:00.43 0:00.58 0:00.58 byte
Aligned
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.08 0:00.08 0:00.08 0:00.08 0:00.08 0:00.08 0:00.08 0:00.08
0:00.09 0:00.08 0:00.08 0:00.08 0:00.09 0:00.19 0:00.08 0:00.08 0:00.08
libcall
819200 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.06
0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.16 0:00.05 0:00.05 0:00.05
libcall
81920 0:00.01 0:00.01 0:00.01 0:00.01 0:00.01 0:00.01 0:00.02 0:00.02
0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.16 0:00.01 0:00.01 0:00.01
libcall
20480 0:00.01 0:00.01 0:00.01 0:00.01 0:00.02 0:00.02 0:00.01 0:00.04
0:00.04 0:00.02 0:00.02 0:00.02 0:00.02 0:00.16 0:00.01 0:00.02 0:00.01
libcall
8192 0:00.01 0:00.02 0:00.02 0:00.01 0:00.02 0:00.01 0:00.02 0:00.03
0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.15 0:00.02 0:00.02 0:00.01
libcall
4096 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.03
0:00.03 0:00.02 0:00.02 0:00.02 0:00.02 0:00.16 0:00.02 0:00.02 0:00.02
libcall
2048 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.02 0:00.03 0:00.03
0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.16 0:00.02 0:00.02 0:00.02
libcall
1024 0:00.03 0:00.05 0:00.05 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04
0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.17 0:00.04 0:00.04 0:00.03
libcall
512 0:00.04 0:00.08 0:00.07 0:00.07 0:00.07 0:00.06 0:00.06 0:00.06
0:00.06 0:00.05 0:00.05 0:00.05 0:00.05 0:00.20 0:00.06 0:00.06 0:00.04
libcall
256 0:00.06 0:00.11 0:00.11 0:00.09 0:00.09 0:00.07 0:00.07 0:00.07
0:00.07 0:00.06 0:00.06 0:00.06 0:00.06 0:00.21 0:00.07 0:00.07 0:00.06
libcall
128 0:00.09 0:00.17 0:00.17 0:00.11 0:00.11 0:00.10 0:00.10 0:00.11
0:00.10 0:00.09 0:00.09 0:00.09 0:00.09 0:00.23 0:00.10 0:00.10 0:00.09
libcall
64 0:00.14 0:00.26 0:00.26 0:00.15 0:00.16 0:00.18 0:00.18 0:00.19
0:00.19 0:00.15 0:00.15 0:00.15 0:00.15 0:00.29 0:00.18 0:00.18 0:00.14
libcall
48 0:00.17 0:00.31 0:00.31 0:00.20 0:00.20 0:00.20 0:00.20 0:00.17
0:00.17 0:00.17 0:00.17 0:00.17 0:00.17 0:00.31 0:00.17 0:00.17 0:00.17
libcall
32 0:00.24 0:00.36 0:00.36 0:00.27 0:00.27 0:00.25 0:00.25 0:00.26
0:00.26 0:00.23 0:00.24 0:00.23 0:00.23 0:00.37 0:00.24 0:00.23 0:00.23 sse
24 0:00.30 0:00.45 0:00.44 0:00.34 0:00.35 0:00.30 0:00.30 0:00.29
0:00.29 0:00.30 0:00.30 0:00.30 0:00.30 0:00.42 0:00.30 0:00.30 0:00.29 loop
16 0:00.42 0:00.56 0:00.56 0:00.46 0:00.46 0:00.41 0:00.41 0:00.40
0:00.40 0:00.41 0:00.41 0:00.41 0:00.41 0:00.54 0:00.41 0:00.41 0:00.40 loop
14 0:00.46 0:00.64 0:00.65 0:00.51 0:00.51 0:00.46 0:00.46 0:00.44
0:00.44 0:00.46 0:00.45 0:00.45 0:00.45 0:00.59 0:00.46 0:00.45 0:00.44 loop
12 0:00.54 0:00.71 0:00.71 0:00.59 0:00.59 0:00.52 0:00.52 0:00.50
0:00.50 0:00.52 0:00.52 0:00.52 0:00.52 0:00.66 0:00.52 0:00.52 0:00.50 loop
10 0:00.63 0:00.91 0:00.91 0:00.67 0:00.67 0:00.59 0:00.58 0:00.57
0:00.57 0:00.59 0:00.59 0:00.59 0:00.59 0:00.79 0:00.59 0:00.59 0:00.57 loop
8 0:00.75 0:00.89 0:00.89 0:00.75 0:00.76 0:00.69 0:00.69 0:00.68
0:00.68 0:00.68 0:00.68 0:00.68 0:00.68 0:00.85 0:00.69 0:00.68 0:00.68 loop
6 0:00.98 0:01.24 0:01.24 0:00.99 0:00.99 0:00.90 0:00.90 0:00.89
0:00.89 0:00.90 0:00.90 0:00.90 0:00.90 0:01.11 0:00.90 0:00.91 0:00.89 loop
4 0:01.32 0:01.44 0:01.45 0:01.28 0:01.28 0:01.22 0:01.22 0:01.23
0:01.23 0:01.22 0:01.23 0:01.23 0:01.23 0:01.37 0:01.22 0:01.38 0:01.22 rep8
1 0:03.11 0:03.01 0:03.01 0:02.52 0:02.52 0:02.52 0:02.54 0:02.52
0:02.50 0:02.50 0:02.52 0:02.50 0:02.52 0:02.52 0:02.49 0:02.50 0:02.50
loopnoalign
32-bit:
contrib/bench-stringop 32 320000000 gcc -march=znver1
memcpy
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.04 0:00.05 0:00.05 0:00.05 0:00.05 0:00.08 0:00.08 0:00.07
0:00.09 0:00.06 0:00.06 0:00.23 0:00.05 0:00.05 0:00.04 libcall
819200 0:00.02 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06
0:00.08 0:00.04 0:00.04 0:00.22 0:00.06 0:00.06 0:00.02 libcall
81920 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.05 0:00.05 0:00.05
0:00.08 0:00.02 0:00.03 0:00.23 0:00.04 0:00.04 0:00.02 libcall
20480 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.08 0:00.06 0:00.05
0:00.08 0:00.02 0:00.03 0:00.23 0:00.04 0:00.04 0:00.02 libcall
8192 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.06 0:00.05 0:00.04
0:00.07 0:00.02 0:00.03 0:00.21 0:00.04 0:00.04 0:00.02 libcall
4096 0:00.02 0:00.05 0:00.05 0:00.05 0:00.05 0:00.06 0:00.06 0:00.04
0:00.07 0:00.02 0:00.03 0:00.22 0:00.05 0:00.05 0:00.02 libcall
2048 0:00.02 0:00.07 0:00.07 0:00.07 0:00.07 0:00.06 0:00.06 0:00.05
0:00.07 0:00.03 0:00.03 0:00.22 0:00.07 0:00.07 0:00.02 libcall
1024 0:00.03 0:00.09 0:00.09 0:00.08 0:00.09 0:00.07 0:00.07 0:00.05
0:00.08 0:00.04 0:00.04 0:00.22 0:00.08 0:00.08 0:00.03 libcall
512 0:00.04 0:00.12 0:00.12 0:00.11 0:00.11 0:00.08 0:00.08 0:00.06
0:00.08 0:00.06 0:00.05 0:00.23 0:00.11 0:00.11 0:00.04 libcall
256 0:00.05 0:00.19 0:00.19 0:00.14 0:00.15 0:00.09 0:00.09 0:00.07
0:00.09 0:00.09 0:00.08 0:00.25 0:00.14 0:00.14 0:00.05 libcall
128 0:00.09 0:00.29 0:00.29 0:00.11 0:00.10 0:00.12 0:00.12 0:00.10
0:00.11 0:00.15 0:00.12 0:00.27 0:00.10 0:00.11 0:00.09 libcall
64 0:00.15 0:00.39 0:00.39 0:00.15 0:00.15 0:00.16 0:00.16 0:00.15
0:00.16 0:00.25 0:00.21 0:00.31 0:00.15 0:00.15 0:00.15 libcall
48 0:00.20 0:00.41 0:00.41 0:00.18 0:00.19 0:00.21 0:00.18 0:00.19
0:00.19 0:00.27 0:00.26 0:00.34 0:00.19 0:00.18 0:00.18 loopnoalign
32 0:00.28 0:00.33 0:00.33 0:00.27 0:00.25 0:00.28 0:00.28 0:00.28
0:00.29 0:00.38 0:00.38 0:00.38 0:00.26 0:00.27 0:00.25 rep4noalign
24 0:00.35 0:00.40 0:00.40 0:00.33 0:00.34 0:00.34 0:00.34 0:00.34
0:00.35 0:00.45 0:00.45 0:00.44 0:00.34 0:00.33 0:00.33 rep4
16 0:00.50 0:00.50 0:00.50 0:00.50 0:00.47 0:00.55 0:00.59 0:00.60
0:00.62 0:00.53 0:00.53 0:00.54 0:00.49 0:00.50 0:00.47 rep4noalign
14 0:00.58 0:00.58 0:00.58 0:00.52 0:00.53 0:00.54 0:00.55 0:00.55
0:00.61 0:00.57 0:00.57 0:00.57 0:00.56 0:00.55 0:00.52 rep4
12 0:00.66 0:00.66 0:00.66 0:00.61 0:00.63 0:00.65 0:00.70 0:00.68
0:00.76 0:00.64 0:00.64 0:00.64 0:00.70 0:00.67 0:00.61 rep4
10 0:00.78 0:00.76 0:00.76 0:00.70 0:00.70 0:00.73 0:00.75 0:00.76
0:00.84 0:00.68 0:00.68 0:00.68 0:00.79 0:00.77 0:00.68 byte
8 0:00.95 0:00.91 0:00.91 0:00.96 0:00.94 0:01.28 0:01.37 0:01.37
0:01.52 0:00.95 0:00.93 0:00.93 0:01.27 0:01.40 0:00.91 rep1
6 0:01.26 0:01.19 0:01.19 0:01.07 0:01.08 0:01.15 0:01.24 0:01.18
0:01.36 0:01.04 0:01.04 0:01.05 0:01.14 0:01.17 0:01.04 sse
4 0:01.74 0:01.73 0:01.73 0:02.01 0:02.06 0:02.90 0:03.05 0:03.36
0:03.40 0:02.29 0:02.29 0:02.28 0:02.57 0:02.29 0:01.73 rep1
1 0:02.30 0:05.35 0:05.34 0:00.58 0:00.58 0:00.58 0:00.58 0:00.58
0:00.58 0:00.77 0:00.77 0:00.78 0:00.73 0:00.77 0:00.58 loop
Aligned
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.05 0:00.06 0:00.06 0:00.06 0:00.06 0:00.08 0:00.08 0:00.07
0:00.08 0:00.06 0:00.06 0:00.24 0:00.06 0:00.06 0:00.05 libcall
819200 0:00.03 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.07 0:00.06
0:00.06 0:00.04 0:00.04 0:00.22 0:00.06 0:00.06 0:00.03 libcall
81920 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.06 0:00.06 0:00.05
0:00.05 0:00.02 0:00.02 0:00.23 0:00.04 0:00.04 0:00.02 libcall
20480 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.06 0:00.06 0:00.04
0:00.04 0:00.02 0:00.02 0:00.22 0:00.04 0:00.04 0:00.02 libcall
8192 0:00.02 0:00.04 0:00.04 0:00.04 0:00.04 0:00.06 0:00.06 0:00.04
0:00.04 0:00.02 0:00.02 0:00.22 0:00.04 0:00.04 0:00.02 libcall
4096 0:00.02 0:00.05 0:00.05 0:00.05 0:00.05 0:00.06 0:00.06 0:00.04
0:00.04 0:00.02 0:00.03 0:00.22 0:00.05 0:00.05 0:00.02 libcall
2048 0:00.03 0:00.07 0:00.07 0:00.07 0:00.07 0:00.06 0:00.06 0:00.05
0:00.05 0:00.03 0:00.03 0:00.22 0:00.07 0:00.07 0:00.03 libcall
1024 0:00.03 0:00.10 0:00.10 0:00.10 0:00.10 0:00.07 0:00.07 0:00.06
0:00.06 0:00.04 0:00.04 0:00.23 0:00.10 0:00.10 0:00.03 libcall
512 0:00.05 0:00.15 0:00.15 0:00.13 0:00.13 0:00.08 0:00.08 0:00.07
0:00.07 0:00.06 0:00.06 0:00.24 0:00.13 0:00.13 0:00.05 libcall
256 0:00.06 0:00.24 0:00.24 0:00.17 0:00.17 0:00.10 0:00.10 0:00.09
0:00.08 0:00.09 0:00.08 0:00.25 0:00.17 0:00.17 0:00.06 libcall
128 0:00.10 0:00.35 0:00.35 0:00.11 0:00.11 0:00.13 0:00.13 0:00.12
0:00.12 0:00.14 0:00.14 0:00.28 0:00.11 0:00.11 0:00.10 libcall
64 0:00.18 0:00.49 0:00.49 0:00.17 0:00.17 0:00.18 0:00.18 0:00.18
0:00.18 0:00.24 0:00.24 0:00.33 0:00.17 0:00.17 0:00.17 rep4
48 0:00.23 0:00.51 0:00.51 0:00.21 0:00.22 0:00.22 0:00.22 0:00.22
0:00.22 0:00.30 0:00.28 0:00.38 0:00.22 0:00.22 0:00.21 rep4
32 0:00.31 0:00.37 0:00.37 0:00.30 0:00.30 0:00.32 0:00.32 0:00.32
0:00.32 0:00.43 0:00.43 0:00.43 0:00.30 0:00.30 0:00.30 rep4
24 0:00.38 0:00.44 0:00.44 0:00.39 0:00.39 0:00.38 0:00.38 0:00.38
0:00.38 0:00.48 0:00.48 0:00.48 0:00.38 0:00.39 0:00.38 libcall
16 0:00.56 0:00.62 0:00.62 0:00.58 0:00.58 0:00.69 0:00.69 0:00.70
0:00.70 0:00.66 0:00.65 0:00.65 0:00.57 0:00.58 0:00.56 libcall
14 0:00.65 0:00.68 0:00.68 0:00.62 0:00.62 0:00.62 0:00.62 0:00.65
0:00.65 0:00.65 0:00.65 0:00.65 0:00.62 0:00.65 0:00.62 loop
12 0:00.74 0:00.76 0:00.76 0:00.74 0:00.73 0:00.76 0:00.76 0:00.78
0:00.78 0:00.75 0:00.75 0:00.74 0:00.74 0:00.78 0:00.73 rep4noalign
10 0:00.88 0:00.90 0:00.90 0:00.82 0:00.82 0:00.84 0:00.84 0:00.87
0:00.88 0:00.81 0:00.81 0:00.81 0:00.82 0:00.88 0:00.81 byte
8 0:01.07 0:01.08 0:01.08 0:01.10 0:01.10 0:01.31 0:01.32 0:01.35
0:01.36 0:01.05 0:01.05 0:01.04 0:01.12 0:01.36 0:01.04 byte
6 0:01.45 0:01.47 0:01.45 0:01.31 0:01.31 0:01.31 0:01.32 0:01.36
0:01.38 0:01.23 0:01.24 0:01.25 0:01.31 0:01.32 0:01.23 sse
4 0:01.97 0:02.09 0:02.08 0:02.11 0:02.11 0:02.58 0:02.57 0:02.80
0:02.80 0:02.14 0:02.13 0:02.15 0:02.35 0:02.13 0:01.97 libcall
1 0:02.55 0:06.00 0:06.04 0:01.48 0:01.47 0:01.48 0:01.51 0:01.48
0:01.56 0:01.54 0:01.57 0:01.53 0:01.54 0:01.53 0:01.47 rep4noalign
memset
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.05 0:00.08 0:00.05
0:00.06 0:00.05 0:00.06 0:00.16 0:00.02 0:00.02 0:00.02 libcall
819200 0:00.04 0:00.04 0:00.10 0:00.04 0:00.05 0:00.06 0:00.08 0:00.06
0:00.07 0:00.06 0:00.07 0:00.15 0:00.04 0:00.04 0:00.04 libcall
81920 0:00.01 0:00.01 0:00.01 0:00.01 0:00.02 0:00.04 0:00.08 0:00.04
0:00.05 0:00.04 0:00.05 0:00.16 0:00.01 0:00.01 0:00.01 libcall
20480 0:00.01 0:00.01 0:00.01 0:00.01 0:00.02 0:00.04 0:00.05 0:00.04
0:00.05 0:00.04 0:00.05 0:00.32 0:00.01 0:00.01 0:00.01 libcall
8192 0:00.02 0:00.02 0:00.01 0:00.02 0:00.02 0:00.09 0:00.05 0:00.04
0:00.05 0:00.04 0:00.05 0:00.15 0:00.01 0:00.01 0:00.01 rep1noalign
4096 0:00.01 0:00.02 0:00.02 0:00.02 0:00.02 0:00.08 0:00.05 0:00.04
0:00.05 0:00.04 0:00.05 0:00.15 0:00.02 0:00.02 0:00.01 libcall
2048 0:00.01 0:00.02 0:00.02 0:00.02 0:00.03 0:00.08 0:00.05 0:00.04
0:00.05 0:00.04 0:00.05 0:00.16 0:00.02 0:00.01 0:00.01 libcall
1024 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.08 0:00.05 0:00.05
0:00.05 0:00.05 0:00.05 0:00.16 0:00.03 0:00.03 0:00.02 libcall
512 0:00.03 0:00.07 0:00.07 0:00.04 0:00.04 0:00.09 0:00.06 0:00.04
0:00.05 0:00.05 0:00.05 0:00.17 0:00.04 0:00.05 0:00.03 libcall
256 0:00.05 0:00.09 0:00.09 0:00.06 0:00.07 0:00.10 0:00.06 0:00.06
0:00.06 0:00.06 0:00.06 0:00.18 0:00.07 0:00.06 0:00.05 libcall
128 0:00.08 0:00.16 0:00.16 0:00.08 0:00.08 0:00.11 0:00.09 0:00.07
0:00.08 0:00.07 0:00.08 0:00.22 0:00.08 0:00.08 0:00.07 sse
64 0:00.13 0:00.25 0:00.24 0:00.12 0:00.12 0:00.12 0:00.12 0:00.11
0:00.11 0:00.11 0:00.11 0:00.26 0:00.11 0:00.12 0:00.11 sse
48 0:00.17 0:00.29 0:00.29 0:00.14 0:00.14 0:00.14 0:00.15 0:00.14
0:00.14 0:00.14 0:00.14 0:00.41 0:00.14 0:00.14 0:00.14 loop
32 0:00.24 0:00.27 0:00.27 0:00.20 0:00.22 0:00.21 0:00.23 0:00.20
0:00.22 0:00.21 0:00.22 0:00.31 0:00.20 0:00.20 0:00.20 rep4
24 0:00.30 0:00.33 0:00.33 0:00.25 0:00.27 0:00.28 0:00.30 0:00.26
0:00.28 0:00.27 0:00.29 0:00.45 0:00.26 0:00.27 0:00.25 rep4
16 0:00.49 0:00.39 0:00.40 0:00.43 0:00.52 0:00.48 0:00.56 0:00.45
0:00.52 0:00.45 0:00.52 0:00.41 0:00.45 0:00.45 0:00.39 rep1
14 0:00.58 0:00.46 0:00.46 0:00.47 0:00.61 0:00.57 0:00.72 0:00.53
0:00.64 0:00.53 0:00.64 0:00.51 0:00.52 0:00.54 0:00.46 rep1
12 0:00.70 0:00.51 0:00.51 0:00.70 0:00.95 0:00.80 0:01.00 0:00.69
0:00.88 0:00.68 0:00.87 0:00.55 0:00.70 0:00.69 0:00.51 rep1
10 0:00.79 0:00.59 0:00.59 0:01.03 0:01.39 0:01.13 0:01.39 0:00.96
0:01.23 0:01.01 0:01.23 0:00.59 0:01.03 0:01.02 0:00.59 byte
8 0:00.90 0:00.67 0:00.67 0:01.65 0:01.78 0:01.59 0:01.82 0:01.55
0:01.79 0:01.55 0:01.79 0:00.64 0:01.63 0:01.63 0:00.64 byte
6 0:01.23 0:00.86 0:00.86 0:02.20 0:02.25 0:02.20 0:02.33 0:02.21
0:02.24 0:02.21 0:02.25 0:00.86 0:02.20 0:02.22 0:00.86 byte
4 0:01.80 0:01.75 0:01.76 0:02.98 0:03.00 0:02.99 0:02.99 0:02.99
0:02.99 0:02.99 0:02.98 0:02.10 0:02.99 0:02.09 0:01.75 rep1
1 0:02.45 0:02.90 0:02.88 0:00.49 0:00.48 0:00.48 0:00.48 0:00.48
0:00.48 0:00.48 0:00.49 0:00.53 0:00.58 0:00.53 0:00.48 loop
Aligned
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.03 0:00.04 0:00.04 0:00.04 0:00.04 0:00.09 0:00.09 0:00.06
0:00.06 0:00.06 0:00.06 0:00.17 0:00.03 0:00.03 0:00.03 libcall
819200 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.08 0:00.08 0:00.13
0:00.07 0:00.06 0:00.06 0:00.16 0:00.04 0:00.04 0:00.04 libcall
81920 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.08 0:00.08 0:00.04
0:00.04 0:00.04 0:00.05 0:00.16 0:00.01 0:00.01 0:00.02 libcall
20480 0:00.01 0:00.01 0:00.01 0:00.02 0:00.01 0:00.05 0:00.04 0:00.04
0:00.04 0:00.05 0:00.04 0:00.33 0:00.01 0:00.01 0:00.01 libcall
8192 0:00.01 0:00.02 0:00.02 0:00.02 0:00.02 0:00.04 0:00.04 0:00.04
0:00.04 0:00.04 0:00.04 0:00.16 0:00.01 0:00.02 0:00.01 libcall
4096 0:00.02 0:00.02 0:00.01 0:00.02 0:00.02 0:00.04 0:00.04 0:00.04
0:00.04 0:00.04 0:00.04 0:00.15 0:00.02 0:00.02 0:00.01 rep1noalign
2048 0:00.02 0:00.03 0:00.03 0:00.02 0:00.02 0:00.05 0:00.04 0:00.05
0:00.04 0:00.04 0:00.04 0:00.16 0:00.02 0:00.02 0:00.02 libcall
1024 0:00.03 0:00.04 0:00.04 0:00.04 0:00.04 0:00.05 0:00.05 0:00.05
0:00.05 0:00.05 0:00.05 0:00.16 0:00.04 0:00.04 0:00.03 libcall
512 0:00.04 0:00.06 0:00.06 0:00.05 0:00.05 0:00.06 0:00.06 0:00.06
0:00.05 0:00.05 0:00.06 0:00.17 0:00.05 0:00.05 0:00.04 libcall
256 0:00.05 0:00.09 0:00.09 0:00.07 0:00.07 0:00.08 0:00.07 0:00.06
0:00.07 0:00.06 0:00.07 0:00.19 0:00.07 0:00.07 0:00.05 libcall
128 0:00.09 0:00.16 0:00.16 0:00.08 0:00.08 0:00.10 0:00.09 0:00.09
0:00.08 0:00.08 0:00.08 0:00.22 0:00.08 0:00.09 0:00.08 rep4
64 0:00.15 0:00.26 0:00.25 0:00.14 0:00.14 0:00.14 0:00.14 0:00.14
0:00.13 0:00.13 0:00.13 0:00.27 0:00.13 0:00.14 0:00.13 sse
48 0:00.19 0:00.30 0:00.30 0:00.17 0:00.17 0:00.17 0:00.17 0:00.16
0:00.16 0:00.16 0:00.16 0:00.42 0:00.16 0:00.17 0:00.16 sse
32 0:00.27 0:00.30 0:00.30 0:00.23 0:00.24 0:00.24 0:00.24 0:00.25
0:00.24 0:00.25 0:00.25 0:00.34 0:00.23 0:00.23 0:00.23 rep4
24 0:00.33 0:00.36 0:00.36 0:00.29 0:00.28 0:00.30 0:00.30 0:00.29
0:00.29 0:00.29 0:00.29 0:00.47 0:00.29 0:00.29 0:00.28 rep4noalign
16 0:00.52 0:00.48 0:00.48 0:00.51 0:00.51 0:00.54 0:00.54 0:00.52
0:00.53 0:00.53 0:00.53 0:00.48 0:00.51 0:00.52 0:00.48 byte
14 0:00.62 0:00.53 0:00.53 0:00.52 0:00.52 0:00.61 0:00.61 0:00.56
0:00.56 0:00.56 0:00.56 0:00.51 0:00.50 0:00.56 0:00.51 byte
12 0:00.74 0:00.59 0:00.59 0:00.69 0:00.69 0:00.80 0:00.79 0:00.72
0:00.72 0:00.72 0:00.72 0:00.62 0:00.59 0:00.72 0:00.59 rep1
10 0:00.85 0:00.69 0:00.69 0:01.03 0:01.02 0:01.11 0:01.10 0:01.00
0:01.01 0:01.00 0:01.01 0:00.69 0:00.81 0:01.01 0:00.69 byte
8 0:00.98 0:00.81 0:00.82 0:01.38 0:01.39 0:01.39 0:01.38 0:01.33
0:01.36 0:01.35 0:01.34 0:00.80 0:01.39 0:01.40 0:00.80 byte
6 0:01.34 0:01.03 0:01.03 0:01.76 0:01.76 0:01.76 0:01.77 0:01.71
0:01.71 0:01.71 0:01.70 0:00.99 0:01.66 0:01.76 0:00.99 byte
4 0:01.93 0:01.46 0:01.49 0:02.18 0:02.16 0:02.16 0:02.16 0:02.19
0:02.19 0:02.19 0:02.19 0:01.56 0:02.17 0:01.57 0:01.46 rep1
1 0:02.53 0:02.90 0:02.90 0:01.45 0:01.46 0:01.47 0:01.46 0:01.46
0:01.45 0:01.50 0:01.45 0:01.45 0:01.46 0:01.57 0:01.45 byte
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (6 preceding siblings ...)
2020-06-01 9:33 ` marxin at gcc dot gnu.org
@ 2020-06-01 9:48 ` ubizjak at gmail dot com
2020-06-01 10:24 ` amonakov at gcc dot gnu.org
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: ubizjak at gmail dot com @ 2020-06-01 9:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hjl.tools at gmail dot com
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> ---
I think that stringops (including memcmp) for x86 targets should be retuned for
new glibc, once [1] is approved and committed. Please note that currently
bench-stringop doesn't benchmark memcmp.
[1] https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546919.html
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (7 preceding siblings ...)
2020-06-01 9:48 ` ubizjak at gmail dot com
@ 2020-06-01 10:24 ` amonakov at gcc dot gnu.org
2020-06-01 10:48 ` ubizjak at gmail dot com
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: amonakov at gcc dot gnu.org @ 2020-06-01 10:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #8 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
There's no tuning tables for memcmp at all, existing structs cover only memset
and memcpy. So as far as I see retuning memset/memcpy doesn't need to wait for
[1], because there's no infrastructure in place for memcmp tuning, and adding
that can be done independently. Updating Ryzen tables would not touch any code
updated by H.J.Lu's patchset at all.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (8 preceding siblings ...)
2020-06-01 10:24 ` amonakov at gcc dot gnu.org
@ 2020-06-01 10:48 ` ubizjak at gmail dot com
2020-06-01 10:58 ` marxin at gcc dot gnu.org
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: ubizjak at gmail dot com @ 2020-06-01 10:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #9 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Alexander Monakov from comment #8)
> There's no tuning tables for memcmp at all, existing structs cover only
> memset and memcpy. So as far as I see retuning memset/memcpy doesn't need to
> wait for [1], because there's no infrastructure in place for memcmp tuning,
> and adding that can be done independently. Updating Ryzen tables would not
> touch any code updated by H.J.Lu's patchset at all.
Agreed.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (9 preceding siblings ...)
2020-06-01 10:48 ` ubizjak at gmail dot com
@ 2020-06-01 10:58 ` marxin at gcc dot gnu.org
2020-07-30 8:32 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-06-01 10:58 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #10 from Martin Liška <marxin at gcc dot gnu.org> ---
And this is for znver2:
AMD EPYC 7502P 32-Core Processor
64-bit:
memcpy
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.05 0:00.08 0:00.08 0:00.08 0:00.08 0:00.08 0:00.08 0:00.09
0:00.10 0:00.06 0:00.09 0:00.04 0:00.04 0:00.63 0:00.04 0:00.04 0:00.04 sse
819200 0:00.03 0:00.07 0:00.07 0:00.06 0:00.06 0:00.06 0:00.06 0:00.08
0:00.09 0:00.05 0:00.08 0:00.03 0:00.04 0:00.61 0:00.03 0:00.03 0:00.03
libcall
81920 0:00.02 0:00.06 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.08
0:00.09 0:00.05 0:00.08 0:00.02 0:00.03 0:00.63 0:00.03 0:00.02 0:00.02
libcall
20480 0:00.02 0:00.05 0:00.05 0:00.05 0:00.06 0:00.05 0:00.05 0:00.08
0:00.10 0:00.05 0:00.09 0:00.03 0:00.04 0:00.75 0:00.02 0:00.02 0:00.02
libcall
8192 0:00.02 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.08
0:00.09 0:00.05 0:00.08 0:00.03 0:00.04 0:00.61 0:00.02 0:00.02 0:00.02
libcall
4096 0:00.02 0:00.06 0:00.06 0:00.06 0:00.07 0:00.06 0:00.06 0:00.08
0:00.09 0:00.05 0:00.08 0:00.04 0:00.05 0:00.60 0:00.02 0:00.03 0:00.02
libcall
2048 0:00.03 0:00.09 0:00.09 0:00.09 0:00.09 0:00.08 0:00.09 0:00.09
0:00.10 0:00.06 0:00.09 0:00.06 0:00.06 0:00.61 0:00.03 0:00.03 0:00.03
libcall
1024 0:00.04 0:00.13 0:00.13 0:00.12 0:00.12 0:00.11 0:00.11 0:00.09
0:00.11 0:00.07 0:00.09 0:00.09 0:00.09 0:00.58 0:00.04 0:00.04 0:00.04
libcall
512 0:00.06 0:00.21 0:00.20 0:00.17 0:00.18 0:00.14 0:00.15 0:00.11
0:00.12 0:00.08 0:00.10 0:00.14 0:00.14 0:00.62 0:00.06 0:00.05 0:00.06
libcall
256 0:00.10 0:00.33 0:00.33 0:00.23 0:00.24 0:00.12 0:00.12 0:00.13
0:00.14 0:00.11 0:00.11 0:00.21 0:00.20 0:00.64 0:00.10 0:00.10 0:00.10
libcall
128 0:00.21 0:00.53 0:00.59 0:00.22 0:00.22 0:00.18 0:00.18 0:00.17
0:00.18 0:00.19 0:00.20 0:00.51 0:00.47 0:00.68 0:00.23 0:00.18 0:00.17 loop
64 0:00.40 0:00.75 0:00.71 0:00.24 0:00.20 0:00.17 0:00.16 0:00.16
0:00.31 0:00.38 0:00.39 0:00.73 0:00.58 0:00.45 0:00.33 0:00.31 0:00.16 loop
48 0:00.48 0:00.88 0:00.83 0:00.42 0:00.40 0:00.39 0:00.38 0:00.38
0:00.36 0:00.41 0:00.40 0:00.70 0:00.55 0:00.46 0:00.41 0:00.40 0:00.36
loopnoalign
32 0:00.85 0:00.76 0:00.76 0:00.56 0:00.54 0:00.57 0:00.54 0:00.55
0:00.60 0:00.79 0:00.85 0:00.72 0:00.85 0:00.85 0:00.41 0:00.33 0:00.54
rep4noalign
24 0:00.45 0:00.48 0:00.48 0:00.39 0:00.38 0:00.39 0:00.37 0:00.37
0:00.72 0:00.91 0:00.94 0:01.03 0:01.03 0:00.87 0:00.73 0:00.73 0:00.37 loop
16 0:00.90 0:00.63 0:00.60 0:00.56 0:00.54 0:00.60 0:00.57 0:00.62
0:00.72 0:01.27 0:01.27 0:00.56 0:00.56 0:00.56 0:01.13 0:01.06 0:00.54
rep4noalign
14 0:00.70 0:00.69 0:00.69 0:00.61 0:00.59 0:00.62 0:00.59 0:00.59
0:00.63 0:00.84 0:00.84 0:00.63 0:00.63 0:00.64 0:01.10 0:01.10 0:00.59 loop
12 0:01.20 0:00.78 0:00.77 0:00.72 0:00.70 0:00.74 0:00.71 0:00.73
0:00.80 0:01.00 0:01.01 0:00.72 0:00.72 0:00.69 0:01.17 0:01.36 0:00.69 byte
10 0:01.18 0:00.89 0:00.88 0:01.50 0:01.14 0:00.83 0:00.80 0:00.82
0:01.65 0:01.88 0:01.88 0:01.47 0:01.11 0:00.77 0:01.20 0:00.82 0:00.77 byte
8 0:01.10 0:01.93 0:01.93 0:01.97 0:01.90 0:01.41 0:01.14 0:01.40
0:01.60 0:03.15 0:03.16 0:01.85 0:01.82 0:01.84 0:01.37 0:02.45 0:01.10
libcall
6 0:02.16 0:02.37 0:01.39 0:02.18 0:02.14 0:01.39 0:02.21 0:01.43
0:01.38 0:01.37 0:02.41 0:02.10 0:01.26 0:01.16 0:01.30 0:01.30 0:01.16 byte
4 0:02.07 0:01.96 0:01.95 0:02.00 0:01.96 0:03.61 0:03.59 0:03.61
0:04.76 0:04.71 0:03.65 0:03.26 0:02.15 0:03.19 0:03.98 0:03.20 0:01.95
rep1noalign
1 0:02.21 0:06.20 0:06.14 0:00.63 0:00.70 0:00.63 0:00.63 0:00.63
0:00.63 0:01.22 0:01.06 0:01.78 0:01.27 0:01.78 0:00.82 0:00.97 0:00.63 loop
Aligned
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.08 0:00.10 0:00.10 0:00.11 0:00.11 0:00.11 0:00.11 0:00.10
0:00.10 0:00.09 0:00.09 0:00.09 0:00.08 0:00.65 0:00.08 0:00.08 0:00.08
libcall
819200 0:00.03 0:00.07 0:00.06 0:00.07 0:00.06 0:00.07 0:00.06 0:00.08
0:00.08 0:00.05 0:00.05 0:00.04 0:00.03 0:00.60 0:00.03 0:00.03 0:00.03
libcall
81920 0:00.03 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.08
0:00.08 0:00.05 0:00.05 0:00.03 0:00.03 0:00.63 0:00.02 0:00.03 0:00.03
libcall
20480 0:00.03 0:00.06 0:00.06 0:00.06 0:00.06 0:00.05 0:00.05 0:00.08
0:00.09 0:00.05 0:00.05 0:00.03 0:00.03 0:00.77 0:00.03 0:00.03 0:00.03
libcall
8192 0:00.03 0:00.06 0:00.06 0:00.05 0:00.05 0:00.05 0:00.05 0:00.09
0:00.09 0:00.05 0:00.05 0:00.03 0:00.03 0:00.61 0:00.02 0:00.02 0:00.03
libcall
4096 0:00.03 0:00.07 0:00.07 0:00.07 0:00.07 0:00.06 0:00.07 0:00.09
0:00.09 0:00.05 0:00.06 0:00.04 0:00.04 0:00.61 0:00.03 0:00.03 0:00.03
libcall
2048 0:00.04 0:00.10 0:00.10 0:00.09 0:00.09 0:00.09 0:00.09 0:00.10
0:00.10 0:00.07 0:00.07 0:00.07 0:00.07 0:00.61 0:00.04 0:00.04 0:00.04
libcall
1024 0:00.06 0:00.16 0:00.15 0:00.12 0:00.14 0:00.12 0:00.13 0:00.12
0:00.12 0:00.08 0:00.08 0:00.11 0:00.10 0:00.63 0:00.06 0:00.06 0:00.06
libcall
512 0:00.09 0:00.25 0:00.23 0:00.19 0:00.19 0:00.16 0:00.16 0:00.14
0:00.14 0:00.10 0:00.11 0:00.17 0:00.17 0:00.64 0:00.09 0:00.09 0:00.09
libcall
256 0:00.15 0:00.38 0:00.39 0:00.27 0:00.27 0:00.15 0:00.15 0:00.16
0:00.17 0:00.14 0:00.14 0:00.29 0:00.29 0:00.66 0:00.15 0:00.14 0:00.14 unrl
128 0:00.27 0:00.63 0:00.61 0:00.24 0:00.23 0:00.20 0:00.18 0:00.17
0:00.16 0:00.14 0:00.23 0:00.51 0:00.51 0:00.68 0:00.29 0:00.24 0:00.14 unrl
64 0:00.49 0:01.01 0:00.95 0:00.23 0:00.22 0:00.34 0:00.34 0:00.31
0:00.31 0:00.23 0:00.28 0:00.79 0:00.79 0:00.79 0:00.37 0:00.41 0:00.22
rep4noalign
48 0:00.56 0:01.03 0:00.92 0:00.28 0:00.28 0:00.26 0:00.26 0:00.29
0:00.29 0:00.35 0:00.33 0:00.58 0:00.58 0:00.51 0:00.46 0:00.49 0:00.26 rep8
32 0:00.85 0:00.78 0:00.56 0:00.36 0:00.36 0:00.69 0:00.83 0:00.76
0:00.71 0:00.59 0:00.47 0:00.51 0:00.51 0:00.51 0:00.60 0:00.60 0:00.36 rep4
24 0:00.67 0:00.58 0:00.56 0:00.81 0:00.81 0:00.69 0:00.51 0:00.47
0:00.46 0:00.52 0:00.95 0:01.08 0:00.76 0:00.56 0:00.80 0:00.81 0:00.46
loopnoalign
16 0:01.11 0:01.19 0:00.78 0:00.66 0:00.66 0:00.91 0:00.88 0:00.71
0:00.70 0:00.90 0:00.90 0:00.69 0:01.19 0:01.09 0:00.97 0:00.74 0:00.66 rep4
14 0:01.17 0:01.52 0:01.53 0:01.35 0:01.35 0:01.32 0:01.31 0:01.07
0:00.72 0:01.36 0:01.13 0:00.80 0:00.78 0:00.78 0:01.03 0:01.23 0:00.72
loopnoalign
12 0:01.16 0:00.96 0:00.92 0:00.85 0:01.45 0:01.50 0:01.07 0:00.82
0:00.82 0:00.86 0:00.86 0:00.88 0:00.88 0:00.85 0:01.05 0:00.84 0:00.82 loop
10 0:00.94 0:01.06 0:01.80 0:01.68 0:01.64 0:01.19 0:01.68 0:01.56
0:01.22 0:01.03 0:01.03 0:01.07 0:01.08 0:01.06 0:01.20 0:01.56 0:00.94
libcall
8 0:01.31 0:01.26 0:01.27 0:01.71 0:01.32 0:01.22 0:01.19 0:01.21
0:01.24 0:01.30 0:01.31 0:01.70 0:01.34 0:01.15 0:01.94 0:01.30 0:01.15 byte
6 0:01.27 0:01.63 0:02.49 0:01.44 0:01.46 0:01.53 0:01.52 0:01.41
0:02.25 0:01.53 0:02.33 0:01.49 0:01.46 0:02.09 0:01.44 0:01.43 0:01.27
libcall
4 0:02.03 0:02.95 0:02.15 0:02.67 0:01.96 0:02.12 0:02.10 0:02.11
0:02.12 0:02.12 0:02.11 0:01.92 0:01.91 0:01.96 0:02.23 0:02.60 0:01.91
ssenoalign
1 0:03.64 0:06.56 0:06.73 0:02.90 0:03.04 0:02.97 0:03.03 0:03.10
0:02.96 0:03.20 0:02.98 0:03.14 0:02.93 0:02.92 0:02.83 0:03.01 0:02.90 rep4
memset
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.02 0:00.02 0:00.03 0:00.02 0:00.03 0:00.03 0:00.04 0:00.10
0:00.06 0:00.05 0:00.06 0:00.05 0:00.06 0:00.38 0:00.02 0:00.02 0:00.02
libcall
819200 0:00.02 0:00.03 0:00.02 0:00.02 0:00.03 0:00.03 0:00.03 0:00.09
0:00.06 0:00.05 0:00.06 0:00.05 0:00.06 0:00.36 0:00.02 0:00.02 0:00.02
libcall
81920 0:00.02 0:00.02 0:00.02 0:00.02 0:00.03 0:00.02 0:00.03 0:00.09
0:00.06 0:00.04 0:00.06 0:00.04 0:00.06 0:00.37 0:00.02 0:00.02 0:00.02
libcall
20480 0:00.02 0:00.02 0:00.02 0:00.02 0:00.03 0:00.02 0:00.03 0:00.05
0:00.10 0:00.05 0:00.06 0:00.05 0:00.06 0:00.38 0:00.02 0:00.02 0:00.02
libcall
8192 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.05
0:00.06 0:00.04 0:00.06 0:00.05 0:00.06 0:00.36 0:00.02 0:00.02 0:00.02
libcall
4096 0:00.02 0:00.02 0:00.02 0:00.02 0:00.03 0:00.02 0:00.03 0:00.05
0:00.06 0:00.05 0:00.06 0:00.05 0:00.06 0:00.36 0:00.02 0:00.02 0:00.02
libcall
2048 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.05
0:00.06 0:00.05 0:00.06 0:00.05 0:00.06 0:00.36 0:00.02 0:00.02 0:00.02
libcall
1024 0:00.02 0:00.05 0:00.05 0:00.04 0:00.04 0:00.04 0:00.04 0:00.06
0:00.07 0:00.05 0:00.06 0:00.05 0:00.06 0:00.37 0:00.02 0:00.02 0:00.02
libcall
512 0:00.04 0:00.08 0:00.09 0:00.07 0:00.07 0:00.07 0:00.07 0:00.07
0:00.08 0:00.06 0:00.07 0:00.06 0:00.07 0:00.38 0:00.04 0:00.03 0:00.04
libcall
256 0:00.07 0:00.16 0:00.15 0:00.14 0:00.14 0:00.09 0:00.09 0:00.08
0:00.09 0:00.07 0:00.08 0:00.07 0:00.08 0:00.40 0:00.08 0:00.06 0:00.07
libcall
128 0:00.17 0:00.29 0:00.29 0:00.18 0:00.17 0:00.13 0:00.12 0:00.14
0:00.13 0:00.12 0:00.12 0:00.12 0:00.12 0:00.40 0:00.13 0:00.11 0:00.12
rep8noalign
64 0:00.51 0:00.52 0:00.52 0:00.25 0:00.22 0:00.19 0:00.16 0:00.16
0:00.17 0:00.14 0:00.13 0:00.13 0:00.13 0:00.28 0:00.22 0:00.22 0:00.13 sse
48 0:00.75 0:00.55 0:00.42 0:00.19 0:00.17 0:00.28 0:00.27 0:00.30
0:00.34 0:00.30 0:00.30 0:00.30 0:00.30 0:00.52 0:00.29 0:00.28 0:00.17
rep4noalign
32 0:01.50 0:00.65 0:00.65 0:00.40 0:00.37 0:00.43 0:00.42 0:00.48
0:00.63 0:00.52 0:00.52 0:00.47 0:00.37 0:00.34 0:00.43 0:00.42 0:00.34 byte
24 0:01.22 0:00.44 0:00.81 0:00.52 0:00.49 0:00.45 0:00.57 0:00.85
0:01.02 0:00.58 0:00.43 0:00.42 0:00.76 0:00.61 0:00.52 0:00.51 0:00.42 sse
16 0:01.89 0:00.89 0:00.89 0:00.58 0:00.41 0:00.80 0:01.83 0:01.10
0:01.91 0:01.09 0:00.91 0:01.68 0:01.68 0:00.63 0:00.69 0:00.69 0:00.41
rep4noalign
14 0:01.86 0:00.62 0:00.62 0:00.43 0:00.44 0:00.94 0:01.15 0:01.13
0:01.24 0:01.10 0:01.10 0:01.11 0:01.10 0:00.43 0:00.81 0:00.64 0:00.43 byte
12 0:02.28 0:00.72 0:01.24 0:00.86 0:00.60 0:01.28 0:01.38 0:02.37
0:02.46 0:01.37 0:01.36 0:01.36 0:02.38 0:00.53 0:00.91 0:00.91 0:00.53 byte
10 0:02.12 0:00.76 0:00.75 0:00.59 0:00.66 0:01.56 0:01.64 0:01.59
0:01.66 0:01.59 0:02.64 0:01.61 0:01.59 0:00.56 0:00.98 0:00.65 0:00.56 byte
8 0:02.72 0:01.42 0:01.16 0:01.11 0:01.61 0:01.82 0:01.81 0:01.82
0:01.83 0:02.87 0:02.82 0:01.82 0:01.81 0:00.67 0:01.57 0:01.11 0:00.67 byte
6 0:02.09 0:01.10 0:01.11 0:01.85 0:02.26 0:02.50 0:03.59 0:03.56
0:03.58 0:03.54 0:03.59 0:02.52 0:02.53 0:00.88 0:02.95 0:02.89 0:00.88 byte
4 0:03.57 0:02.47 0:01.46 0:03.73 0:03.68 0:02.67 0:03.72 0:02.68
0:02.67 0:03.73 0:03.73 0:02.67 0:02.67 0:01.91 0:02.69 0:01.90 0:01.46
rep1noalign
1 0:02.87 0:04.79 0:04.82 0:00.58 0:00.58 0:00.59 0:00.59 0:01.08
0:01.04 0:01.07 0:01.03 0:00.70 0:01.08 0:01.17 0:01.09 0:01.17 0:00.58 rep4
Aligned
block size libcall rep1 noalg rep4 noalg rep8 noalg loop
noalg unrl noalg sse noalg byte PGO dynamic BEST
8192000 0:00.06 0:00.07 0:00.07 0:00.07 0:00.07 0:00.07 0:00.07 0:00.08
0:00.08 0:00.08 0:00.08 0:00.08 0:00.08 0:00.39 0:00.06 0:00.06 0:00.06
libcall
819200 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.05
0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.36 0:00.02 0:00.02 0:00.02
libcall
81920 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.05
0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.38 0:00.02 0:00.02 0:00.02
libcall
20480 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.10
0:00.10 0:00.05 0:00.05 0:00.05 0:00.05 0:00.39 0:00.02 0:00.02 0:00.02
libcall
8192 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.05
0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.36 0:00.02 0:00.02 0:00.02
libcall
4096 0:00.02 0:00.03 0:00.03 0:00.02 0:00.02 0:00.02 0:00.02 0:00.05
0:00.05 0:00.05 0:00.05 0:00.05 0:00.05 0:00.36 0:00.02 0:00.02 0:00.02
libcall
2048 0:00.03 0:00.04 0:00.04 0:00.04 0:00.04 0:00.03 0:00.04 0:00.06
0:00.06 0:00.06 0:00.06 0:00.06 0:00.06 0:00.37 0:00.03 0:00.03 0:00.03
libcall
1024 0:00.04 0:00.06 0:00.06 0:00.05 0:00.05 0:00.05 0:00.05 0:00.07
0:00.07 0:00.06 0:00.06 0:00.06 0:00.06 0:00.38 0:00.04 0:00.04 0:00.04
libcall
512 0:00.06 0:00.10 0:00.10 0:00.08 0:00.08 0:00.08 0:00.08 0:00.09
0:00.09 0:00.07 0:00.07 0:00.07 0:00.07 0:00.39 0:00.06 0:00.06 0:00.06
libcall
256 0:00.10 0:00.17 0:00.17 0:00.16 0:00.15 0:00.10 0:00.10 0:00.10
0:00.10 0:00.09 0:00.09 0:00.09 0:00.09 0:00.42 0:00.09 0:00.09 0:00.09 sse
128 0:00.16 0:00.30 0:00.30 0:00.19 0:00.19 0:00.14 0:00.14 0:00.14
0:00.14 0:00.14 0:00.14 0:00.13 0:00.13 0:00.34 0:00.14 0:00.13 0:00.13 sse
64 0:00.34 0:00.55 0:00.55 0:00.27 0:00.27 0:00.22 0:00.22 0:00.24
0:00.22 0:00.21 0:00.22 0:00.20 0:00.19 0:00.33 0:00.22 0:00.22 0:00.19
ssenoalign
48 0:00.42 0:00.65 0:00.63 0:00.31 0:00.29 0:00.21 0:00.21 0:00.22
0:00.22 0:00.22 0:00.27 0:00.28 0:00.28 0:00.66 0:00.30 0:00.29 0:00.21 rep8
32 0:00.54 0:00.75 0:00.75 0:00.42 0:00.37 0:00.32 0:00.30 0:00.35
0:00.37 0:00.36 0:00.36 0:00.36 0:00.35 0:00.66 0:00.37 0:00.36 0:00.30
rep8noalign
24 0:00.48 0:00.88 0:00.62 0:00.57 0:00.59 0:00.47 0:00.45 0:00.38
0:00.37 0:00.35 0:00.35 0:00.35 0:00.36 0:00.44 0:00.59 0:00.56 0:00.35 sse
16 0:00.51 0:00.64 0:01.15 0:00.68 0:00.59 0:00.49 0:00.48 0:00.47
0:00.55 0:00.56 0:00.57 0:00.56 0:00.57 0:00.83 0:00.70 0:00.63 0:00.47 loop
14 0:00.54 0:01.37 0:01.39 0:00.81 0:00.94 0:00.70 0:00.69 0:00.58
0:00.57 0:00.59 0:00.59 0:00.54 0:00.63 0:01.17 0:00.99 0:00.86 0:00.54
libcall
12 0:00.62 0:00.86 0:00.83 0:00.96 0:00.95 0:00.65 0:00.57 0:00.56
0:00.62 0:00.64 0:00.63 0:00.60 0:00.57 0:00.76 0:00.89 0:00.68 0:00.56 loop
10 0:00.64 0:01.63 0:01.57 0:00.92 0:00.73 0:00.84 0:00.84 0:00.69
0:00.69 0:00.71 0:00.65 0:00.64 0:00.63 0:01.07 0:01.11 0:01.02 0:00.63
ssenoalign
8 0:00.75 0:01.03 0:01.51 0:01.12 0:01.09 0:00.80 0:00.91 0:00.81
0:00.82 0:00.83 0:00.82 0:00.78 0:00.81 0:00.89 0:00.98 0:00.83 0:00.75
libcall
6 0:01.21 0:01.69 0:01.34 0:01.13 0:01.11 0:01.00 0:01.14 0:01.15
0:01.00 0:01.05 0:01.01 0:01.14 0:01.17 0:01.30 0:01.60 0:01.26 0:01.00
loopnoalign
4 0:01.70 0:01.96 0:02.39 0:01.46 0:01.46 0:01.36 0:01.34 0:01.32
0:01.34 0:01.36 0:01.34 0:01.36 0:01.33 0:01.50 0:01.89 0:01.65 0:01.32 loop
1 0:03.54 0:05.47 0:05.36 0:02.47 0:02.50 0:02.49 0:02.47 0:02.64
0:02.60 0:02.50 0:02.71 0:02.56 0:02.68 0:02.52 0:02.79 0:02.47 0:02.47 rep4
and 32-bit:
memcpy
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.05 0:00.07 0:00.08 0:00.08 0:00.08 0:00.16 0:00.16 0:00.10
0:00.14 0:00.04 0:00.04 0:00.62 0:00.08 0:00.08 0:00.04 sse
819200 0:00.04 0:00.06 0:00.06 0:00.06 0:00.06 0:00.15 0:00.15 0:00.10
0:00.13 0:00.03 0:00.04 0:00.58 0:00.07 0:00.06 0:00.03 sse
81920 0:00.03 0:00.05 0:00.05 0:00.05 0:00.05 0:00.15 0:00.15 0:00.10
0:00.13 0:00.03 0:00.03 0:00.61 0:00.06 0:00.05 0:00.03 libcall
20480 0:00.03 0:00.05 0:00.05 0:00.05 0:00.05 0:00.19 0:00.15 0:00.10
0:00.14 0:00.03 0:00.04 0:00.62 0:00.05 0:00.05 0:00.03 libcall
8192 0:00.03 0:00.05 0:00.05 0:00.05 0:00.05 0:00.15 0:00.13 0:00.09
0:00.13 0:00.03 0:00.04 0:00.59 0:00.05 0:00.05 0:00.03 libcall
4096 0:00.04 0:00.06 0:00.07 0:00.06 0:00.07 0:00.15 0:00.13 0:00.10
0:00.13 0:00.04 0:00.04 0:00.59 0:00.06 0:00.06 0:00.04 libcall
2048 0:00.05 0:00.09 0:00.09 0:00.08 0:00.09 0:00.16 0:00.14 0:00.10
0:00.13 0:00.05 0:00.06 0:00.59 0:00.09 0:00.08 0:00.05 libcall
1024 0:00.06 0:00.13 0:00.13 0:00.11 0:00.12 0:00.17 0:00.15 0:00.12
0:00.14 0:00.08 0:00.08 0:00.59 0:00.12 0:00.11 0:00.06 libcall
512 0:00.07 0:00.21 0:00.21 0:00.17 0:00.18 0:00.18 0:00.16 0:00.14
0:00.16 0:00.14 0:00.12 0:00.60 0:00.17 0:00.18 0:00.07 libcall
256 0:00.11 0:00.35 0:00.35 0:00.26 0:00.25 0:00.22 0:00.20 0:00.16
0:00.18 0:00.24 0:00.21 0:00.54 0:00.24 0:00.24 0:00.11 libcall
128 0:00.18 0:00.55 0:00.54 0:00.23 0:00.22 0:00.25 0:00.24 0:00.21
0:00.21 0:00.42 0:00.39 0:00.53 0:00.23 0:00.23 0:00.18 libcall
64 0:00.30 0:00.76 0:00.72 0:00.23 0:00.20 0:00.18 0:00.18 0:00.17
0:00.18 0:00.38 0:00.38 0:00.38 0:00.33 0:00.33 0:00.17 unrl
48 0:00.39 0:00.83 0:00.68 0:00.23 0:00.22 0:00.22 0:00.21 0:00.21
0:00.21 0:00.43 0:00.85 0:00.82 0:00.42 0:00.40 0:00.21 loopnoalign
32 0:00.44 0:00.46 0:00.41 0:00.31 0:00.29 0:00.30 0:00.31 0:00.56
0:00.59 0:00.81 0:00.79 0:00.59 0:00.56 0:00.46 0:00.29 rep4noalign
24 0:00.46 0:00.49 0:00.49 0:00.40 0:00.73 0:00.68 0:00.67 0:00.68
0:00.61 0:00.88 0:00.88 0:00.72 0:00.65 0:00.48 0:00.40 rep4
16 0:01.00 0:01.05 0:00.71 0:00.56 0:00.54 0:00.57 0:00.61 0:01.16
0:01.26 0:01.05 0:00.95 0:00.63 0:00.60 0:01.03 0:00.54 rep4noalign
14 0:01.12 0:00.79 0:00.71 0:00.61 0:01.16 0:01.00 0:00.68 0:00.60
0:00.63 0:00.60 0:00.60 0:00.60 0:01.11 0:01.04 0:00.60 byte
12 0:00.84 0:00.79 0:00.79 0:00.72 0:00.72 0:00.69 0:00.70 0:00.72
0:00.75 0:00.69 0:00.69 0:01.27 0:01.33 0:01.13 0:00.69 loop
10 0:00.81 0:00.91 0:00.91 0:00.81 0:00.80 0:00.77 0:00.80 0:01.52
0:01.21 0:00.77 0:00.76 0:00.76 0:01.51 0:01.52 0:00.76 byte
8 0:01.33 0:01.04 0:01.05 0:01.95 0:01.91 0:01.41 0:01.39 0:01.43
0:01.54 0:01.87 0:01.21 0:01.87 0:01.31 0:01.43 0:01.04 rep1
6 0:02.12 0:02.41 0:02.37 0:02.18 0:01.30 0:01.18 0:02.22 0:01.35
0:02.32 0:01.18 0:01.14 0:01.14 0:01.17 0:02.15 0:01.14 byte
4 0:01.99 0:01.94 0:01.94 0:02.02 0:01.96 0:03.89 0:03.13 0:04.16
0:04.10 0:02.25 0:03.28 0:02.25 0:03.66 0:02.26 0:01.94 rep1
1 0:04.04 0:06.14 0:06.17 0:00.59 0:00.59 0:00.59 0:01.08 0:01.08
0:00.91 0:01.03 0:01.01 0:01.83 0:00.89 0:01.00 0:00.59 loop
Aligned
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.06 0:00.09 0:00.09 0:00.09 0:00.09 0:00.16 0:00.16 0:00.11
0:00.11 0:00.07 0:00.06 0:00.62 0:00.09 0:00.09 0:00.06 libcall
819200 0:00.04 0:00.06 0:00.06 0:00.06 0:00.06 0:00.15 0:00.15 0:00.10
0:00.10 0:00.03 0:00.03 0:00.59 0:00.07 0:00.07 0:00.03 sse
81920 0:00.03 0:00.05 0:00.05 0:00.05 0:00.05 0:00.16 0:00.16 0:00.10
0:00.10 0:00.03 0:00.03 0:00.61 0:00.06 0:00.05 0:00.03 libcall
20480 0:00.03 0:00.06 0:00.05 0:00.05 0:00.05 0:00.16 0:00.16 0:00.10
0:00.10 0:00.03 0:00.03 0:00.63 0:00.05 0:00.05 0:00.03 libcall
8192 0:00.04 0:00.06 0:00.06 0:00.05 0:00.05 0:00.15 0:00.15 0:00.10
0:00.10 0:00.03 0:00.03 0:00.59 0:00.05 0:00.05 0:00.03 sse
4096 0:00.04 0:00.07 0:00.07 0:00.07 0:00.06 0:00.14 0:00.15 0:00.10
0:00.10 0:00.04 0:00.04 0:00.58 0:00.07 0:00.06 0:00.04 libcall
2048 0:00.05 0:00.10 0:00.10 0:00.09 0:00.09 0:00.15 0:00.16 0:00.11
0:00.11 0:00.06 0:00.05 0:00.58 0:00.09 0:00.09 0:00.05 libcall
1024 0:00.07 0:00.15 0:00.15 0:00.13 0:00.13 0:00.17 0:00.17 0:00.13
0:00.12 0:00.09 0:00.08 0:00.60 0:00.13 0:00.13 0:00.07 libcall
512 0:00.08 0:00.25 0:00.24 0:00.20 0:00.20 0:00.19 0:00.19 0:00.15
0:00.15 0:00.13 0:00.12 0:00.48 0:00.20 0:00.20 0:00.08 libcall
256 0:00.12 0:00.40 0:00.40 0:00.27 0:00.26 0:00.23 0:00.23 0:00.18
0:00.18 0:00.25 0:00.23 0:00.63 0:00.27 0:00.27 0:00.12 libcall
128 0:00.19 0:00.62 0:00.62 0:00.25 0:00.25 0:00.25 0:00.22 0:00.17
0:00.16 0:00.24 0:00.43 0:00.70 0:00.25 0:00.25 0:00.16 unrlnoalign
64 0:00.33 0:00.86 0:00.73 0:00.27 0:00.27 0:00.29 0:00.30 0:00.26
0:00.24 0:00.43 0:00.43 0:00.43 0:00.38 0:00.40 0:00.24 unrlnoalign
48 0:00.43 0:01.05 0:00.95 0:00.32 0:00.26 0:00.25 0:00.25 0:00.25
0:00.25 0:00.45 0:00.90 0:00.90 0:00.45 0:00.45 0:00.25 loop
32 0:00.50 0:00.53 0:00.48 0:00.38 0:00.38 0:00.38 0:00.38 0:00.37
0:00.67 0:00.93 0:00.79 0:00.56 0:00.63 0:00.65 0:00.37 unrl
24 0:00.75 0:00.66 0:00.97 0:00.81 0:00.80 0:00.74 0:00.74 0:00.74
0:00.68 0:00.61 0:00.53 0:00.53 0:00.67 0:00.50 0:00.53 byte
16 0:00.63 0:01.35 0:01.16 0:00.73 0:01.18 0:01.17 0:00.81 0:00.81
0:00.81 0:00.77 0:00.77 0:00.76 0:01.19 0:01.13 0:00.63 libcall
14 0:00.76 0:00.85 0:00.84 0:00.75 0:00.74 0:00.73 0:00.73 0:00.75
0:00.76 0:00.75 0:00.75 0:00.75 0:00.75 0:01.28 0:00.73 loop
12 0:01.51 0:01.13 0:00.95 0:00.90 0:01.50 0:01.46 0:01.20 0:00.92
0:00.92 0:00.88 0:00.88 0:00.88 0:00.90 0:01.53 0:00.88 byte
10 0:01.26 0:01.13 0:01.14 0:01.04 0:01.04 0:01.02 0:01.01 0:01.04
0:01.05 0:01.03 0:01.62 0:01.27 0:01.72 0:01.27 0:01.01 loopnoalign
8 0:01.19 0:01.40 0:01.41 0:01.42 0:01.42 0:02.37 0:02.39 0:01.59
0:02.53 0:02.10 0:02.08 0:02.14 0:01.36 0:01.51 0:01.19 libcall
6 0:02.38 0:02.65 0:02.67 0:02.53 0:02.49 0:01.54 0:01.52 0:01.76
0:02.61 0:01.64 0:01.57 0:01.51 0:02.49 0:01.68 0:01.51 byte
4 0:03.15 0:02.56 0:02.58 0:02.54 0:02.50 0:02.91 0:02.91 0:03.13
0:03.14 0:02.50 0:03.32 0:02.52 0:02.58 0:02.48 0:02.50 rep4noalign
1 0:04.12 0:07.51 0:07.52 0:01.56 0:01.60 0:01.56 0:01.86 0:01.84
0:01.81 0:01.74 0:01.71 0:01.60 0:01.77 0:02.22 0:01.56 loop
memset
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.03 0:00.02 0:00.03 0:00.03 0:00.03 0:00.07 0:00.13 0:00.07
0:00.07 0:00.06 0:00.07 0:00.23 0:00.04 0:00.04 0:00.02 rep1
819200 0:00.02 0:00.03 0:00.03 0:00.03 0:00.03 0:00.09 0:00.18 0:00.09
0:00.10 0:00.09 0:00.10 0:00.36 0:00.03 0:00.03 0:00.02 libcall
81920 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.09 0:00.19 0:00.09
0:00.10 0:00.09 0:00.10 0:00.37 0:00.02 0:00.02 0:00.02 libcall
20480 0:00.03 0:00.02 0:00.02 0:00.02 0:00.03 0:00.10 0:00.11 0:00.10
0:00.11 0:00.10 0:00.11 0:00.76 0:00.02 0:00.03 0:00.02 rep1
8192 0:00.03 0:00.02 0:00.02 0:00.02 0:00.03 0:00.18 0:00.10 0:00.09
0:00.10 0:00.09 0:00.10 0:00.36 0:00.02 0:00.03 0:00.02 rep1
4096 0:00.03 0:00.02 0:00.02 0:00.02 0:00.03 0:00.18 0:00.10 0:00.09
0:00.10 0:00.09 0:00.10 0:00.36 0:00.03 0:00.03 0:00.02 rep1
2048 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.18 0:00.10 0:00.09
0:00.10 0:00.09 0:00.10 0:00.36 0:00.03 0:00.03 0:00.03 libcall
1024 0:00.04 0:00.05 0:00.05 0:00.04 0:00.04 0:00.19 0:00.11 0:00.10
0:00.11 0:00.10 0:00.11 0:00.37 0:00.04 0:00.04 0:00.04 libcall
512 0:00.05 0:00.09 0:00.09 0:00.07 0:00.07 0:00.19 0:00.12 0:00.11
0:00.12 0:00.11 0:00.12 0:00.38 0:00.07 0:00.07 0:00.05 libcall
256 0:00.08 0:00.16 0:00.16 0:00.14 0:00.14 0:00.22 0:00.15 0:00.12
0:00.12 0:00.12 0:00.12 0:00.36 0:00.14 0:00.14 0:00.08 libcall
128 0:00.13 0:00.29 0:00.29 0:00.18 0:00.17 0:00.23 0:00.17 0:00.14
0:00.14 0:00.14 0:00.13 0:00.36 0:00.18 0:00.17 0:00.13 libcall
64 0:00.25 0:00.52 0:00.52 0:00.26 0:00.23 0:00.20 0:00.19 0:00.16
0:00.16 0:00.14 0:00.14 0:00.29 0:00.26 0:00.26 0:00.14 sse
48 0:00.34 0:00.60 0:00.55 0:00.24 0:00.21 0:00.15 0:00.15 0:00.14
0:00.14 0:00.14 0:00.15 0:00.49 0:00.32 0:00.32 0:00.14 sse
32 0:00.48 0:00.64 0:00.64 0:00.40 0:00.35 0:00.30 0:00.27 0:00.21
0:00.23 0:00.20 0:00.24 0:00.38 0:00.22 0:00.41 0:00.20 sse
24 0:00.58 0:00.79 0:00.64 0:00.32 0:00.28 0:00.26 0:00.28 0:00.26
0:00.28 0:00.49 0:00.52 0:00.94 0:00.46 0:00.39 0:00.26 loop
16 0:00.99 0:00.89 0:00.90 0:00.69 0:00.57 0:00.50 0:00.53 0:00.44
0:00.92 0:00.81 0:00.73 0:00.43 0:00.55 0:00.80 0:00.43 byte
14 0:01.21 0:00.74 0:00.60 0:00.45 0:00.44 0:00.52 0:00.67 0:00.51
0:00.60 0:00.51 0:00.60 0:00.50 0:00.54 0:00.94 0:00.44 rep4noalign
12 0:01.47 0:01.02 0:00.67 0:00.50 0:00.49 0:00.70 0:00.95 0:01.23
0:01.31 0:00.67 0:00.82 0:00.53 0:00.63 0:00.66 0:00.49 rep4noalign
10 0:00.94 0:00.74 0:00.74 0:00.59 0:00.63 0:01.07 0:01.43 0:00.96
0:01.21 0:00.96 0:01.21 0:00.59 0:00.94 0:00.96 0:00.59 byte
8 0:00.99 0:00.77 0:01.42 0:01.98 0:01.72 0:02.74 0:01.75 0:01.57
0:01.69 0:02.65 0:01.74 0:00.67 0:01.68 0:02.76 0:00.67 byte
6 0:01.34 0:01.10 0:02.00 0:02.72 0:03.10 0:03.32 0:03.50 0:03.28
0:02.35 0:02.23 0:03.38 0:00.87 0:03.28 0:02.26 0:00.87 byte
4 0:01.97 0:02.46 0:02.46 0:03.71 0:03.67 0:03.72 0:03.72 0:02.69
0:02.67 0:02.69 0:02.67 0:01.86 0:02.68 0:02.91 0:01.86 byte
1 0:03.17 0:04.85 0:04.86 0:00.61 0:01.12 0:01.12 0:01.05 0:00.69
0:00.61 0:00.61 0:00.61 0:01.08 0:00.68 0:00.59 0:00.61 rep4
Aligned
block size libcall rep1 noalg rep4 noalg loop noalg unrl
noalg sse noalg byte PGO dynamic BEST
8192000 0:00.04 0:00.04 0:00.04 0:00.04 0:00.04 0:00.12 0:00.11 0:00.07
0:00.11 0:00.11 0:00.11 0:00.38 0:00.04 0:00.04 0:00.04 libcall
819200 0:00.03 0:00.03 0:00.03 0:00.03 0:00.03 0:00.18 0:00.18 0:00.09
0:00.09 0:00.09 0:00.09 0:00.36 0:00.03 0:00.03 0:00.03 libcall
81920 0:00.02 0:00.02 0:00.02 0:00.02 0:00.02 0:00.19 0:00.19 0:00.09
0:00.09 0:00.09 0:00.09 0:00.38 0:00.02 0:00.02 0:00.02 libcall
20480 0:00.03 0:00.02 0:00.02 0:00.02 0:00.02 0:00.10 0:00.10 0:00.10
0:00.10 0:00.10 0:00.10 0:00.76 0:00.03 0:00.03 0:00.02 rep1
8192 0:00.03 0:00.02 0:00.02 0:00.02 0:00.02 0:00.09 0:00.09 0:00.09
0:00.09 0:00.09 0:00.09 0:00.36 0:00.03 0:00.03 0:00.02 rep1
4096 0:00.03 0:00.03 0:00.03 0:00.02 0:00.02 0:00.09 0:00.09 0:00.09
0:00.09 0:00.09 0:00.09 0:00.36 0:00.03 0:00.03 0:00.02 rep4
2048 0:00.03 0:00.03 0:00.04 0:00.03 0:00.03 0:00.10 0:00.10 0:00.10
0:00.10 0:00.10 0:00.10 0:00.35 0:00.04 0:00.03 0:00.03 libcall
1024 0:00.05 0:00.06 0:00.05 0:00.05 0:00.05 0:00.11 0:00.11 0:00.11
0:00.11 0:00.11 0:00.11 0:00.38 0:00.05 0:00.05 0:00.05 libcall
512 0:00.06 0:00.09 0:00.09 0:00.08 0:00.08 0:00.12 0:00.12 0:00.12
0:00.12 0:00.12 0:00.12 0:00.37 0:00.08 0:00.08 0:00.06 libcall
256 0:00.09 0:00.16 0:00.16 0:00.15 0:00.15 0:00.15 0:00.15 0:00.13
0:00.13 0:00.13 0:00.13 0:00.41 0:00.14 0:00.15 0:00.09 libcall
128 0:00.16 0:00.30 0:00.30 0:00.18 0:00.17 0:00.18 0:00.18 0:00.16
0:00.15 0:00.16 0:00.16 0:00.46 0:00.18 0:00.18 0:00.15 unrlnoalign
64 0:00.29 0:00.54 0:00.54 0:00.26 0:00.26 0:00.24 0:00.24 0:00.33
0:00.32 0:00.31 0:00.30 0:00.36 0:00.25 0:00.26 0:00.24 loop
48 0:00.36 0:00.61 0:00.57 0:00.27 0:00.23 0:00.18 0:00.29 0:00.29
0:00.29 0:00.29 0:00.29 0:00.81 0:00.34 0:00.34 0:00.18 loop
32 0:00.46 0:00.50 0:00.41 0:00.25 0:00.25 0:00.26 0:00.26 0:00.26
0:00.26 0:00.26 0:00.26 0:00.39 0:00.43 0:00.42 0:00.25 rep4
24 0:00.61 0:00.83 0:00.76 0:00.40 0:00.33 0:00.31 0:00.31 0:00.31
0:00.31 0:00.31 0:00.31 0:00.54 0:00.49 0:00.45 0:00.31 loop
16 0:00.66 0:00.98 0:00.97 0:00.61 0:00.49 0:00.56 0:00.55 0:00.54
0:00.55 0:00.54 0:00.55 0:00.90 0:00.58 0:00.91 0:00.49 rep4noalign
14 0:01.24 0:00.76 0:00.71 0:00.89 0:00.88 0:00.77 0:00.61 0:00.58
0:00.92 0:00.91 0:00.74 0:00.57 0:00.83 0:00.91 0:00.57 byte
12 0:01.05 0:01.27 0:01.27 0:00.88 0:01.02 0:01.21 0:01.12 0:00.75
0:00.71 0:00.71 0:00.71 0:00.65 0:00.61 0:00.72 0:00.65 byte
10 0:01.76 0:01.09 0:01.45 0:01.27 0:01.15 0:01.90 0:01.29 0:01.02
0:01.04 0:01.70 0:01.69 0:00.86 0:00.82 0:01.70 0:00.86 byte
8 0:01.85 0:01.10 0:01.01 0:01.05 0:01.06 0:01.44 0:01.45 0:01.42
0:01.43 0:01.42 0:01.42 0:00.83 0:02.32 0:01.48 0:00.83 byte
6 0:01.60 0:01.36 0:01.35 0:01.43 0:02.27 0:01.93 0:01.90 0:01.78
0:01.75 0:01.75 0:01.76 0:01.07 0:01.67 0:01.86 0:01.07 byte
4 0:02.18 0:01.85 0:01.90 0:02.17 0:02.20 0:02.34 0:02.34 0:02.36
0:02.37 0:02.39 0:03.22 0:01.59 0:02.36 0:01.62 0:01.59 byte
1 0:03.24 0:06.12 0:06.04 0:01.64 0:01.56 0:01.73 0:01.63 0:01.62
0:01.59 0:01.56 0:01.60 0:01.62 0:01.87 0:01.59 0:01.56 rep4noalign
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (10 preceding siblings ...)
2020-06-01 10:58 ` marxin at gcc dot gnu.org
@ 2020-07-30 8:32 ` cvs-commit at gcc dot gnu.org
2020-07-30 8:39 ` cvs-commit at gcc dot gnu.org
2020-07-30 8:44 ` marxin at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-07-30 8:32 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Martin Liska <marxin@gcc.gnu.org>:
https://gcc.gnu.org/g:dc65aba7a4725d1b464c8c64a5f739ee910e8943
commit r11-2422-gdc65aba7a4725d1b464c8c64a5f739ee910e8943
Author: Martin Liska <mliska@suse.cz>
Date: Mon Jun 1 13:21:40 2020 +0200
Tune memcpy and memset for Zen cores.
Based on the collected numbers in PR95435, I suggest the following
tuning changes:
gcc/ChangeLog:
PR target/95435
* config/i386/x86-tune-costs.h: Use libcall for large sizes for
-m32. Start using libcall from 128+ bytes.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (11 preceding siblings ...)
2020-07-30 8:32 ` cvs-commit at gcc dot gnu.org
@ 2020-07-30 8:39 ` cvs-commit at gcc dot gnu.org
2020-07-30 8:44 ` marxin at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-07-30 8:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Martin Liska
<marxin@gcc.gnu.org>:
https://gcc.gnu.org/g:809b4d226c7f5ded392a88ffafe8d652f911b473
commit r10-8554-g809b4d226c7f5ded392a88ffafe8d652f911b473
Author: Martin Liska <mliska@suse.cz>
Date: Mon Jun 1 13:21:40 2020 +0200
Tune memcpy and memset for Zen cores.
Based on the collected numbers in PR95435, I suggest the following
tuning changes:
gcc/ChangeLog:
PR target/95435
* config/i386/x86-tune-costs.h: Use libcall for large sizes for
-m32. Start using libcall from 128+ bytes.
(cherry picked from commit dc65aba7a4725d1b464c8c64a5f739ee910e8943)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/95435] bad builtin memcpy performance with znver1/znver2 and 32bit
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
` (12 preceding siblings ...)
2020-07-30 8:39 ` cvs-commit at gcc dot gnu.org
@ 2020-07-30 8:44 ` marxin at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-07-30 8:44 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95435
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #13 from Martin Liška <marxin at gcc dot gnu.org> ---
Fixed on master and gcc-10 release branch, closing now.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2020-07-30 8:44 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-30 10:12 [Bug target/95435] New: bad builtin memcpy performance with znver1/znver2 and 32bit jan at jki dot io
2020-05-30 10:12 ` [Bug target/95435] " jan at jki dot io
2020-05-30 10:16 ` jan at jki dot io
2020-05-30 10:18 ` glisse at gcc dot gnu.org
2020-05-30 10:23 ` jan at jki dot io
2020-05-30 16:43 ` amonakov at gcc dot gnu.org
2020-06-01 9:27 ` marxin at gcc dot gnu.org
2020-06-01 9:33 ` marxin at gcc dot gnu.org
2020-06-01 9:48 ` ubizjak at gmail dot com
2020-06-01 10:24 ` amonakov at gcc dot gnu.org
2020-06-01 10:48 ` ubizjak at gmail dot com
2020-06-01 10:58 ` marxin at gcc dot gnu.org
2020-07-30 8:32 ` cvs-commit at gcc dot gnu.org
2020-07-30 8:39 ` cvs-commit at gcc dot gnu.org
2020-07-30 8:44 ` marxin at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).