Treehugger Robot
53b40de572
Merge "Test that the _r_debug list looks OK"
2018-08-22 23:46:30 +00:00
Treehugger Robot
dbf54d2270
Merge "Fix linker's _r_debug (gdb) info"
2018-08-22 20:18:30 +00:00
Ryan Prichard
c20f9a583a
Test that the _r_debug list looks OK
...
Match it against the dl_iterate_phdr list. It should have the same entries,
but they could be in a different order.
Test that the dl_iterate_phdr callback always provides at least a PT_LOAD
segment.
Verify that the executable comes first in the _r_debug list.
Test: bionic-unit-tests
Bug: http://b/110967431
Change-Id: I9b6ec77d1205c4c45848adf65456bb7b3da4a3a1
2018-08-22 13:17:03 -07:00
Treehugger Robot
780cc6b189
Merge "Folks are starting to need a placeholder name for Q."
2018-08-22 20:11:19 +00:00
Elliott Hughes
5c18e6a153
Merge "Add PR_SET_VMA and PR_SET_VMA_ANON_NAME to <sys/prctl.h>."
2018-08-22 18:54:20 +00:00
Elliott Hughes
cf97d7f121
Folks are starting to need a placeholder name for Q.
...
Better to just have one place to update...
Bug: N/A
Test: builds
Change-Id: If7135d26f498b0841f9ae505bf6ca3ed05767345
2018-08-22 10:50:29 -07:00
Elliott Hughes
99d54656bd
Add PR_SET_VMA and PR_SET_VMA_ANON_NAME to <sys/prctl.h>.
...
We've copied & pasted these to too many places. And if we're going to
have another go at upstreaming these, that's probably yet another reason
to have the *values* in just one place. (Even if upstream wants different
names, we'll likely keep the legacy names around for a while for source
compatibility.)
Bug: http://b/111903542
Test: ran tests
Change-Id: I8ccc557453d69530e5b74f865cbe0b458c84e3ba
2018-08-22 10:36:23 -07:00
Ryan Prichard
0489645e00
Fix linker's _r_debug (gdb) info
...
* Initialize the exe's l_ld correctly, and initialize its l_addr field
earlier.
* Copy the phdr/phnum fields from the linker's temporary soinfo to its
final soinfo. This change ensures that dl_iterate_phdr shows the phdr
table for the linker.
* Change init_linker_info_for_gdb a little: use an soinfo's fields to
init the soinfo::link_map_head field, then reuse the new
init_link_map_head function to handle the linker and the executable.
Test: manual
Test: bionic-unit-tests
Bug: https://issuetracker.google.com/112627083
Bug: http://b/110967431
Change-Id: I40fad2c4d48f409347aaa1ccb98d96db89da1dfe
2018-08-21 17:20:07 -07:00
Treehugger Robot
8f2298e73f
Merge "Move [vdso] after exe/linker in _r_debug"
2018-08-22 00:13:00 +00:00
Treehugger Robot
750c01c4b1
Merge "Add benchmark for strncmp"
2018-08-21 22:16:46 +00:00
Haibo Huang
e466cc0d55
Add benchmark for strncmp
...
Test: run benchmark
Change-Id: Id99d81fe4d2a72a7f22414c7eea3ef3d873022ab
2018-08-21 21:04:43 +00:00
Haibo Huang
d1214b0c68
Merge "[AArch64] Improve strncmp for mutually misaligned inputs"
2018-08-21 21:04:15 +00:00
Adhemerval Zanella
65a6211f4d
[AArch64] Improve strncmp for mutually misaligned inputs
...
This patch was originally written by Siddhesh Poyarekar and pushed on
cortex-strings [1]. The mutually misaligned inputs on aarch64 are
compared with a simple byte copy, which is not very efficient.
This patch enhances the comparison similar to strcmp by loading a
double-word at a time.
Comparison on the default bionic and proposed optimized routines
shows the following performance improvements on A54 (using the
new proposed memcmp input data from test_strncmp.xml):
- No noticeable change on aligned inputs or with same alignment.
- Large improvements on unaligned inputs from sizes larger than
16 bytes.
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------
BM_string_strncmp/1/0/0 -0.0954 -0.0954 19 17 19 17
BM_string_strncmp/2/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/3/0/0 +0.1768 +0.1768 15 18 15 18
BM_string_strncmp/4/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/5/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/6/0/0 +0.1589 +0.1589 15 18 15 18
BM_string_strncmp/7/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/8/0/0 -0.0998 -0.0998 19 17 19 17
BM_string_strncmp/9/0/0 -0.0277 -0.0277 23 22 23 22
BM_string_strncmp/10/0/0 -0.0270 -0.0270 23 22 23 22
BM_string_strncmp/11/0/0 -0.0331 -0.0331 23 22 23 22
BM_string_strncmp/12/0/0 -0.0270 -0.0270 23 22 23 22
BM_string_strncmp/13/0/0 -0.0284 -0.0284 23 22 23 22
BM_string_strncmp/14/0/0 +0.1042 +0.1042 20 22 20 22
BM_string_strncmp/15/0/0 -0.0277 -0.0277 23 22 23 22
BM_string_strncmp/16/0/0 +0.0214 +0.0215 22 22 22 22
BM_string_strncmp/24/0/0 -0.1291 -0.1291 24 21 24 21
BM_string_strncmp/32/0/0 -0.0470 -0.0470 27 26 27 26
BM_string_strncmp/40/0/0 -0.0433 -0.0433 29 28 29 28
BM_string_strncmp/48/0/0 -0.0301 -0.0301 31 30 31 30
BM_string_strncmp/56/0/0 -0.0800 -0.0800 33 31 33 31
BM_string_strncmp/64/0/0 +0.0188 +0.0188 34 34 34 34
BM_string_strncmp/72/0/0 -0.0334 -0.0334 38 37 38 37
BM_string_strncmp/80/0/0 -0.0000 -0.0000 40 40 40 40
BM_string_strncmp/88/0/0 +0.0413 +0.0413 61 64 61 64
BM_string_strncmp/96/0/0 -0.0215 -0.0216 69 67 69 67
BM_string_strncmp/104/0/0 -0.0208 -0.0208 72 70 72 70
BM_string_strncmp/112/0/0 -0.0173 -0.0173 75 74 75 74
BM_string_strncmp/120/0/0 -0.0166 -0.0166 78 77 78 77
BM_string_strncmp/128/0/0 -0.0158 -0.0158 81 80 81 80
BM_string_strncmp/136/0/0 -0.0149 -0.0149 84 83 84 83
BM_string_strncmp/144/0/0 -0.0201 -0.0201 88 86 88 86
BM_string_strncmp/160/0/0 -0.0136 -0.0136 94 93 94 93
BM_string_strncmp/176/0/0 +0.0224 +0.0224 96 98 96 98
BM_string_strncmp/192/0/0 +0.0289 +0.0289 102 105 102 105
BM_string_strncmp/208/0/0 +0.0101 +0.0101 111 112 111 112
BM_string_strncmp/224/0/0 -0.0107 -0.0107 119 118 119 118
BM_string_strncmp/240/0/0 -0.0088 -0.0088 126 125 126 125
BM_string_strncmp/256/0/0 -0.0101 -0.0101 132 131 132 131
BM_string_strncmp/512/0/0 -0.0056 -0.0056 235 233 235 233
BM_string_strncmp/1024/0/0 -0.0030 -0.0030 439 437 439 437
BM_string_strncmp/8192/0/0 -0.0431 -0.0431 3799 3635 3799 3635
BM_string_strncmp/16384/0/0 -0.0069 -0.0069 6778 6732 6779 6732
BM_string_strncmp/32768/0/0 -0.0001 -0.0002 13405 13403 13405 13403
BM_string_strncmp/65536/0/0 +0.0005 +0.0005 26968 26981 26968 26981
BM_string_strncmp/131072/0/0 -0.0057 -0.0057 53959 53650 53958 53650
BM_string_strncmp/1/4/0 -0.1352 -0.1352 12 10 12 10
BM_string_strncmp/2/4/0 +0.0020 +0.0020 15 15 15 15
BM_string_strncmp/3/4/0 -0.1560 -0.1560 20 17 20 17
BM_string_strncmp/4/4/0 +0.0296 +0.0296 22 22 22 22
BM_string_strncmp/5/4/0 +0.0573 +0.0573 22 23 22 23
BM_string_strncmp/6/4/0 -0.0340 -0.0340 25 24 25 24
BM_string_strncmp/7/4/0 +0.0185 +0.0185 26 26 26 26
BM_string_strncmp/8/4/0 -0.0050 -0.0050 27 27 27 27
BM_string_strncmp/9/4/0 -0.1294 -0.1294 28 24 28 24
BM_string_strncmp/10/4/0 +0.0109 +0.0109 29 29 29 29
BM_string_strncmp/11/4/0 -0.0000 -0.0001 30 30 30 30
BM_string_strncmp/12/4/0 +0.0055 +0.0055 50 50 50 50
BM_string_strncmp/13/4/0 -0.0249 -0.0249 51 50 51 50
BM_string_strncmp/14/4/0 -0.0289 -0.0289 53 52 53 52
BM_string_strncmp/15/4/0 -0.0205 -0.0205 55 54 55 54
BM_string_strncmp/16/4/0 -0.4616 -0.4616 57 31 57 31
BM_string_strncmp/24/4/0 -0.4871 -0.4871 72 37 72 37
BM_string_strncmp/32/4/0 -0.5549 -0.5549 87 39 87 39
BM_string_strncmp/40/4/0 -0.5964 -0.5964 103 42 103 42
BM_string_strncmp/48/4/0 -0.6647 -0.6647 118 40 118 40
BM_string_strncmp/56/4/0 -0.6551 -0.6551 134 46 134 46
BM_string_strncmp/64/4/0 -0.6609 -0.6609 145 49 145 49
BM_string_strncmp/72/4/0 -0.5709 -0.5710 164 70 164 70
BM_string_strncmp/80/4/0 -0.5929 -0.5929 180 73 180 73
BM_string_strncmp/88/4/0 -0.6051 -0.6051 195 77 195 77
BM_string_strncmp/96/4/0 -0.6160 -0.6160 210 81 210 81
BM_string_strncmp/104/4/0 -0.6199 -0.6199 223 85 223 85
BM_string_strncmp/112/4/0 -0.6293 -0.6293 240 89 240 89
BM_string_strncmp/120/4/0 -0.6439 -0.6439 255 91 255 91
BM_string_strncmp/128/4/0 -0.6493 -0.6493 271 95 271 95
BM_string_strncmp/136/4/0 -0.6704 -0.6704 287 95 287 95
BM_string_strncmp/144/4/0 -0.6744 -0.6744 302 98 302 98
BM_string_strncmp/160/4/0 -0.6700 -0.6700 333 110 333 110
BM_string_strncmp/176/4/0 -0.6821 -0.6821 364 116 364 116
BM_string_strncmp/192/4/0 -0.6887 -0.6887 394 123 394 123
BM_string_strncmp/208/4/0 -0.6949 -0.6949 425 130 425 130
BM_string_strncmp/224/4/0 -0.7069 -0.7069 456 134 456 134
BM_string_strncmp/240/4/0 -0.7042 -0.7042 486 144 486 144
BM_string_strncmp/256/4/0 -0.7043 -0.7043 514 152 514 152
BM_string_strncmp/1/0/4 +0.0227 +0.0227 14 14 14 14
BM_string_strncmp/2/0/4 +0.0442 +0.0442 15 16 15 16
BM_string_strncmp/3/0/4 +0.5829 +0.5829 17 27 17 27
BM_string_strncmp/4/0/4 -0.1593 -0.1593 22 19 22 19
BM_string_strncmp/5/0/4 -0.0516 -0.0516 23 22 23 22
BM_string_strncmp/6/0/4 -0.1684 -0.1684 25 20 25 20
BM_string_strncmp/7/0/4 +0.0170 +0.0170 26 26 26 26
BM_string_strncmp/8/0/4 +0.0006 +0.0006 27 27 27 27
BM_string_strncmp/9/0/4 +0.1272 +0.1272 25 28 25 28
BM_string_strncmp/10/0/4 +0.0108 +0.0108 29 29 29 29
BM_string_strncmp/11/0/4 -0.0001 -0.0001 30 30 30 30
BM_string_strncmp/12/0/4 -0.3557 -0.3557 50 32 50 32
BM_string_strncmp/13/0/4 -0.3370 -0.3370 51 34 51 34
BM_string_strncmp/14/0/4 -0.3444 -0.3444 53 35 53 35
BM_string_strncmp/15/0/4 +0.0946 +0.0946 51 56 51 56
BM_string_strncmp/16/0/4 -0.5203 -0.5203 53 25 53 25
BM_string_strncmp/24/0/4 -0.6109 -0.6109 72 28 72 28
BM_string_strncmp/32/0/4 -0.6934 -0.6934 88 27 88 27
BM_string_strncmp/40/0/4 -0.6833 -0.6833 103 33 103 33
BM_string_strncmp/48/0/4 -0.6973 -0.6973 118 36 118 36
BM_string_strncmp/56/0/4 -0.7116 -0.7116 134 39 134 39
BM_string_strncmp/64/0/4 -0.6017 -0.6018 149 59 149 59
BM_string_strncmp/72/0/4 -0.6268 -0.6268 164 61 164 61
BM_string_strncmp/80/0/4 -0.6409 -0.6409 179 64 179 64
BM_string_strncmp/88/0/4 -0.6465 -0.6465 195 69 195 69
BM_string_strncmp/96/0/4 -0.6551 -0.6551 210 72 210 72
BM_string_strncmp/104/0/4 -0.6662 -0.6662 227 76 227 76
BM_string_strncmp/112/0/4 -0.6700 -0.6700 240 79 240 79
BM_string_strncmp/120/0/4 -0.6740 -0.6740 256 83 256 83
BM_string_strncmp/128/0/4 -0.6862 -0.6862 271 85 271 85
BM_string_strncmp/136/0/4 -0.6883 -0.6883 287 89 287 89
BM_string_strncmp/144/0/4 -0.7031 -0.7031 297 88 297 88
BM_string_strncmp/160/0/4 -0.6985 -0.6985 333 100 333 100
BM_string_strncmp/176/0/4 -0.7082 -0.7082 364 106 364 106
BM_string_strncmp/192/0/4 -0.7223 -0.7223 396 110 396 110
BM_string_strncmp/208/0/4 -0.7135 -0.7135 421 121 421 121
BM_string_strncmp/224/0/4 -0.7194 -0.7194 455 128 455 128
BM_string_strncmp/240/0/4 -0.7233 -0.7233 487 135 487 135
BM_string_strncmp/256/0/4 -0.7239 -0.7239 516 143 516 143
BM_string_strncmp/1/4/4 +0.0224 +0.0225 21 22 21 22
BM_string_strncmp/2/4/4 -0.0001 -0.0001 22 22 22 22
BM_string_strncmp/3/4/4 -0.0001 -0.0001 22 22 22 22
BM_string_strncmp/4/4/4 -0.0435 -0.0435 22 21 22 21
BM_string_strncmp/5/4/4 -0.0118 -0.0118 27 27 27 27
BM_string_strncmp/6/4/4 -0.0118 -0.0118 27 27 27 27
BM_string_strncmp/7/4/4 -0.0117 -0.0117 27 27 27 27
BM_string_strncmp/8/4/4 -0.0118 -0.0118 27 27 27 27
BM_string_strncmp/9/4/4 -0.0117 -0.0117 27 27 27 27
BM_string_strncmp/10/4/4 +0.1447 +0.1447 23 27 23 27
BM_string_strncmp/11/4/4 -0.0062 -0.0062 27 27 27 27
BM_string_strncmp/12/4/4 -0.0454 -0.0454 28 27 28 27
BM_string_strncmp/13/4/4 -0.1507 -0.1507 29 24 29 24
BM_string_strncmp/14/4/4 -0.0003 -0.0003 29 29 29 29
BM_string_strncmp/15/4/4 -0.0002 -0.0003 29 29 29 29
BM_string_strncmp/16/4/4 +0.0047 +0.0047 29 29 29 29
BM_string_strncmp/24/4/4 -0.0104 -0.0104 31 30 31 30
BM_string_strncmp/32/4/4 -0.0290 -0.0290 33 32 33 32
BM_string_strncmp/40/4/4 -0.0189 -0.0189 34 33 34 33
BM_string_strncmp/48/4/4 -0.0059 -0.0059 36 36 36 36
BM_string_strncmp/56/4/4 +0.0000 +0.0000 39 39 39 39
BM_string_strncmp/64/4/4 +0.0000 +0.0000 42 42 42 42
BM_string_strncmp/72/4/4 +0.0000 +0.0000 45 45 45 45
BM_string_strncmp/80/4/4 +0.0391 +0.0392 65 68 65 68
BM_string_strncmp/88/4/4 -0.0090 -0.0090 71 70 71 70
BM_string_strncmp/96/4/4 -0.0034 -0.0034 74 74 74 74
BM_string_strncmp/104/4/4 -0.0482 -0.0482 77 73 77 73
BM_string_strncmp/112/4/4 +0.0387 +0.0387 77 80 77 80
BM_string_strncmp/120/4/4 -0.0072 -0.0073 84 83 84 83
BM_string_strncmp/128/4/4 -0.0071 -0.0071 87 86 87 86
BM_string_strncmp/136/4/4 +0.0366 +0.0366 86 89 86 89
BM_string_strncmp/144/4/4 -0.0068 -0.0068 93 93 93 93
BM_string_strncmp/160/4/4 -0.0064 -0.0064 100 99 100 99
BM_string_strncmp/176/4/4 -0.0063 -0.0063 106 105 106 105
BM_string_strncmp/192/4/4 -0.0012 -0.0012 112 112 112 112
BM_string_strncmp/208/4/4 -0.0098 -0.0098 119 118 119 118
BM_string_strncmp/224/4/4 -0.0050 -0.0050 125 125 125 125
BM_string_strncmp/240/4/4 -0.0060 -0.0060 132 131 132 131
BM_string_strncmp/256/4/4 -0.0046 -0.0046 138 137 138 137
[1] Commit id: 26cc4faec37a55529e5d0a39949f7b6ec81008f9
Test: bionic tests and benchmarks on aarch64.
Change-Id: Ied579d2044b4092fc95fad486af6541d1eb71dc3
2018-08-21 19:50:09 +00:00
Treehugger Robot
2019f96247
Merge "HWASan support in bionic."
2018-08-21 19:42:36 +00:00
Treehugger Robot
2dc1dd587d
Merge changes I1eb1a9f2,I8a7621a5
...
* changes:
Use --Bsymbolic-functions on libm
Use -fno-math-errno for libm
2018-08-21 19:37:22 +00:00
Treehugger Robot
4f9bb7b9e7
Merge changes I75f89487,I2791e2b2
...
* changes:
[AArch64] Improve strcmp performance for misaligned strings
[AArch64] Optimize memcmp for medium to large sizes
2018-08-21 19:33:33 +00:00
Adhemerval Zanella
ab42e6fcbf
Use --Bsymbolic-functions on libm
...
This option removes mostly of the PLT calls for internal symbol, they
are routed to internal entrypoint instead. It should be safe for libm,
since symbol interposing is not supported.
For arm64 the remaining PLTs are __cxa_finalize, ldexp, __stack_chk_fail,
isnanf, memset, and isxdigit. All of them are expected (clang (r339432)
does not have optimization for isnan/isinf inline expansion and these
symbols are defined on libc.so).
Test: Builds, ran unit tests on arm and x86.
Change-Id: I1eb1a9f2b30f21788d9ad8639b4a0a15f6d0566a
2018-08-21 14:51:59 -03:00
Adhemerval Zanella
bd58729085
Use -fno-math-errno for libm
...
This option allows inline calls of single intructions if target,
supports it. Currently it optimizes internal sqrt calls on
armeabi-v7a, arm64-v8a, and x86_64 (by removing internal calls
to sqrt).
Test: Builds, ran unit tests on arm and x86.
Change-Id: I8a7621a55aae82ff5b80e886c9ed49d480ef6263
2018-08-21 14:51:59 -03:00
Adhemerval Zanella
b42ff1b5c3
[AArch64] Improve strcmp performance for misaligned strings
...
This patch was originally written by Siddhesh Poyarekar and pushed on
cortex-strings [1]. Replace the simple byte-wise compare in the
misaligned case with a dword compare with page boundary checks in
place. For simplicity its uses a 4K page boundary so that it does not
have to query the actual page size on the system.
Comparison on the default bionic and proposed optimized routines
shows the following performance improvements on A64 (using the
new proposed memcmp input data from test_strcmp.xml):
- Small improvement for aligned arguments with sizes up to 56 bytes
(from 10% to 20%).
- Large improvements for unaligned arguments for small sizes (from
3 to 256 bytes).
Benchmark Time CPU Time Old Time New CPU Old CPU New
-------------------------------------------------------------------------------------------------------------------
BM_string_strcmp/1/0/0 +0.0034 +0.0034 11 11 11 11
BM_string_strcmp/2/0/0 +0.0000 +0.0000 11 11 11 11
BM_string_strcmp/3/0/0 -0.1726 -0.1726 11 9 11 9
BM_string_strcmp/4/0/0 -0.1726 -0.1726 11 9 11 9
BM_string_strcmp/5/0/0 -0.1726 -0.1726 11 9 11 9
BM_string_strcmp/6/0/0 -0.1719 -0.1719 11 9 11 9
BM_string_strcmp/7/0/0 -0.1724 -0.1724 11 9 11 9
BM_string_strcmp/8/0/0 -0.1718 -0.1718 11 9 11 9
BM_string_strcmp/9/0/0 -0.2008 -0.2008 16 13 16 13
BM_string_strcmp/10/0/0 -0.2008 -0.2008 16 13 16 13
BM_string_strcmp/11/0/0 -0.2040 -0.2040 16 13 16 13
BM_string_strcmp/12/0/0 -0.1991 -0.1991 16 13 16 13
BM_string_strcmp/13/0/0 -0.1997 -0.1997 16 13 16 13
BM_string_strcmp/14/0/0 -0.1988 -0.1989 16 13 16 13
BM_string_strcmp/15/0/0 -0.2006 -0.2006 16 13 16 13
BM_string_strcmp/16/0/0 -0.2043 -0.2043 16 13 16 13
BM_string_strcmp/24/0/0 -0.1927 -0.1927 18 15 18 15
BM_string_strcmp/32/0/0 -0.1743 -0.1743 20 17 20 17
BM_string_strcmp/40/0/0 -0.1427 -0.1427 22 19 22 19
BM_string_strcmp/48/0/0 -0.1053 -0.1053 24 22 24 22
BM_string_strcmp/56/0/0 -0.0805 -0.0805 26 24 26 24
BM_string_strcmp/64/0/0 -0.0454 -0.0454 28 27 28 27
BM_string_strcmp/72/0/0 -0.0303 -0.0303 30 29 30 29
BM_string_strcmp/80/0/0 -0.0111 -0.0111 32 32 32 32
BM_string_strcmp/88/0/0 -0.0004 -0.0004 34 34 34 34
BM_string_strcmp/96/0/0 -0.0058 -0.0058 37 37 37 37
BM_string_strcmp/104/0/0 +0.0000 +0.0000 40 40 40 40
BM_string_strcmp/112/0/0 -0.0457 -0.0457 61 58 61 58
BM_string_strcmp/120/0/0 -0.0486 -0.0487 61 58 61 58
BM_string_strcmp/128/0/0 -0.0499 -0.0499 64 61 64 61
BM_string_strcmp/136/0/0 -0.0529 -0.0529 66 63 66 63
BM_string_strcmp/144/0/0 -0.0492 -0.0492 69 66 69 66
BM_string_strcmp/160/0/0 -0.0459 -0.0459 74 71 74 71
BM_string_strcmp/176/0/0 -0.0400 -0.0401 79 76 79 76
BM_string_strcmp/192/0/0 -0.0378 -0.0378 85 81 85 81
BM_string_strcmp/208/0/0 -0.0009 -0.0009 89 89 89 89
BM_string_strcmp/224/0/0 -0.0003 -0.0003 95 95 95 95
BM_string_strcmp/240/0/0 -0.0320 -0.0320 100 96 100 96
BM_string_strcmp/256/0/0 -0.0303 -0.0304 105 102 105 102
BM_string_strcmp/512/0/0 -0.0171 -0.0171 187 183 187 183
BM_string_strcmp/1024/0/0 -0.0091 -0.0091 350 347 350 347
BM_string_strcmp/8192/0/0 -0.0030 -0.0031 2668 2660 2668 2660
BM_string_strcmp/16384/0/0 +0.0007 +0.0007 5449 5452 5448 5452
BM_string_strcmp/32768/0/0 +0.0635 +0.0635 10868 11558 10867 11557
BM_string_strcmp/65536/0/0 -0.0017 -0.0017 21824 21786 21822 21784
BM_string_strcmp/131072/0/0 +0.0012 +0.0012 43485 43536 43480 43532
BM_string_strcmp/1/4/0 +0.7630 +0.7630 7 12 7 12
BM_string_strcmp/2/4/0 +0.9265 +0.9265 12 23 12 23
BM_string_strcmp/3/4/0 -0.0000 -0.0000 14 14 14 14
BM_string_strcmp/4/4/0 +0.0372 +0.0372 19 19 19 19
BM_string_strcmp/6/4/0 -0.0921 -0.0921 20 19 20 19
BM_string_strcmp/7/4/0 -0.0291 -0.0291 19 19 19 19
BM_string_strcmp/8/4/0 +0.0648 +0.0648 20 22 20 22
BM_string_strcmp/9/4/0 +0.0001 -0.0055 22 22 22 22
BM_string_strcmp/10/4/0 -0.1924 -0.1924 23 19 23 19
BM_string_strcmp/11/4/0 -0.2347 -0.2347 24 19 24 19
BM_string_strcmp/12/4/0 -0.2738 -0.2739 26 19 26 19
BM_string_strcmp/13/4/0 -0.3804 -0.3804 42 26 42 26
BM_string_strcmp/14/4/0 -0.3581 -0.3582 41 26 41 26
BM_string_strcmp/15/4/0 -0.3905 -0.3905 43 26 43 26
BM_string_strcmp/16/4/0 -0.4068 -0.4068 44 26 44 26
BM_string_strcmp/24/4/0 -0.4917 -0.4917 57 29 57 29
BM_string_strcmp/32/4/0 -0.5607 -0.5607 70 31 70 31
BM_string_strcmp/40/4/0 -0.5940 -0.5940 82 33 82 33
BM_string_strcmp/48/4/0 -0.5303 -0.5302 95 45 95 45
BM_string_strcmp/56/4/0 -0.4975 -0.4975 108 54 108 54
BM_string_strcmp/64/4/0 -0.5167 -0.5167 121 58 121 58
BM_string_strcmp/72/4/0 -0.5325 -0.5325 133 62 133 62
BM_string_strcmp/80/4/0 -0.5523 -0.5523 146 65 146 65
BM_string_strcmp/88/4/0 -0.5686 -0.5686 159 69 159 69
BM_string_strcmp/96/4/0 -0.5815 -0.5815 172 72 172 72
BM_string_strcmp/104/4/0 -0.5931 -0.5931 185 75 185 75
BM_string_strcmp/112/4/0 -0.6046 -0.6046 197 78 197 78
BM_string_strcmp/120/4/0 -0.6113 -0.6113 210 82 210 82
BM_string_strcmp/128/4/0 -0.6186 -0.6186 223 85 223 85
BM_string_strcmp/136/4/0 -0.6278 -0.6278 237 88 237 88
BM_string_strcmp/144/4/0 -0.6410 -0.6410 253 91 253 91
BM_string_strcmp/160/4/0 -0.6506 -0.6506 280 98 280 98
BM_string_strcmp/176/4/0 -0.6593 -0.6593 304 104 304 104
BM_string_strcmp/192/4/0 -0.6647 -0.6647 330 111 330 111
BM_string_strcmp/208/4/0 -0.6741 -0.6741 357 116 357 116
BM_string_strcmp/224/4/0 -0.6761 -0.6761 381 123 381 123
BM_string_strcmp/240/4/0 -0.6824 -0.6824 406 129 406 129
BM_string_strcmp/256/4/0 -0.6846 -0.6846 432 136 432 136
BM_string_strcmp/1/0/4 +1.0024 +1.0024 7 14 7 14
BM_string_strcmp/2/0/4 +0.1591 +0.1591 12 14 12 14
BM_string_strcmp/3/0/4 -0.0015 -0.0015 14 14 14 14
BM_string_strcmp/4/0/4 -0.0809 -0.0809 15 14 15 14
BM_string_strcmp/5/0/4 -0.1535 -0.1536 17 14 17 14
BM_string_strcmp/6/0/4 -0.2111 -0.2111 18 14 18 14
BM_string_strcmp/7/0/4 -0.2650 -0.2650 19 14 19 14
BM_string_strcmp/8/0/4 -0.3118 -0.3118 20 14 20 14
BM_string_strcmp/9/0/4 -0.1741 -0.1740 22 18 22 18
BM_string_strcmp/10/0/4 -0.2201 -0.2201 23 18 23 18
BM_string_strcmp/11/0/4 -0.2610 -0.2610 24 18 24 18
BM_string_strcmp/12/0/4 -0.2987 -0.2987 26 18 26 18
BM_string_strcmp/13/0/4 -0.5748 -0.5748 42 18 42 18
BM_string_strcmp/14/0/4 -0.5796 -0.5796 43 18 43 18
BM_string_strcmp/15/0/4 -0.6167 -0.6167 47 18 47 18
BM_string_strcmp/16/0/4 -0.6303 -0.6303 49 18 49 18
BM_string_strcmp/24/0/4 -0.6557 -0.6557 61 21 61 21
BM_string_strcmp/32/0/4 -0.6612 -0.6612 70 24 70 24
BM_string_strcmp/40/0/4 -0.6812 -0.6813 82 26 82 26
BM_string_strcmp/48/0/4 -0.6974 -0.6974 95 29 95 29
BM_string_strcmp/56/0/4 -0.7151 -0.7151 108 31 108 31
BM_string_strcmp/64/0/4 -0.5717 -0.5717 121 52 121 52
BM_string_strcmp/72/0/4 -0.5927 -0.5927 134 54 134 54
BM_string_strcmp/80/0/4 -0.6004 -0.6004 146 58 146 58
BM_string_strcmp/88/0/4 -0.6145 -0.6145 159 61 159 61
BM_string_strcmp/96/0/4 -0.6287 -0.6287 172 64 172 64
BM_string_strcmp/104/0/4 -0.6351 -0.6351 185 67 185 67
BM_string_strcmp/112/0/4 -0.6423 -0.6423 197 71 197 71
BM_string_strcmp/120/0/4 -0.6489 -0.6489 210 74 210 74
BM_string_strcmp/128/0/4 -0.6578 -0.6578 223 76 223 76
BM_string_strcmp/136/0/4 -0.6597 -0.6597 236 80 236 80
BM_string_strcmp/144/0/4 -0.6674 -0.6674 250 83 250 83
BM_string_strcmp/160/0/4 -0.6751 -0.6751 274 89 274 89
BM_string_strcmp/176/0/4 -0.6798 -0.6798 300 96 300 96
BM_string_strcmp/192/0/4 -0.6873 -0.6855 327 102 325 102
BM_string_strcmp/208/0/4 -0.6903 -0.6903 351 109 351 109
BM_string_strcmp/224/0/4 -0.6907 -0.6907 376 116 376 116
BM_string_strcmp/240/0/4 -0.6897 -0.6897 402 125 402 125
BM_string_strcmp/256/0/4 -0.6937 -0.6937 427 131 427 131
BM_string_strcmp/1/4/4 +0.0009 +0.0009 14 14 14 14
BM_string_strcmp/2/4/4 -0.2229 -0.2229 14 11 14 11
BM_string_strcmp/3/4/4 -0.2256 -0.2256 14 11 14 11
BM_string_strcmp/4/4/4 -0.2241 -0.2240 14 11 14 11
BM_string_strcmp/5/4/4 -0.2220 -0.2220 20 15 20 15
BM_string_strcmp/6/4/4 -0.2267 -0.2267 20 15 20 15
BM_string_strcmp/7/4/4 -0.2228 -0.2227 20 15 20 15
BM_string_strcmp/8/4/4 -0.2219 -0.2219 20 15 20 15
BM_string_strcmp/9/4/4 -0.2220 -0.2220 20 15 20 15
BM_string_strcmp/10/4/4 -0.2227 -0.2227 20 15 20 15
BM_string_strcmp/11/4/4 -0.2210 -0.2210 20 15 20 15
BM_string_strcmp/12/4/4 -0.2224 -0.2224 20 15 20 15
BM_string_strcmp/13/4/4 -0.1778 -0.1778 21 17 21 17
BM_string_strcmp/14/4/4 -0.1863 -0.1863 21 17 21 17
BM_string_strcmp/15/4/4 -0.1780 -0.1780 21 17 21 17
BM_string_strcmp/16/4/4 +0.0031 +0.0031 21 21 21 21
BM_string_strcmp/24/4/4 +0.0041 +0.0041 24 24 24 24
BM_string_strcmp/32/4/4 -0.0001 -0.0000 25 25 25 25
BM_string_strcmp/40/4/4 +0.0016 +0.0016 26 26 26 26
BM_string_strcmp/48/4/4 +0.0001 +0.0001 28 28 28 28
BM_string_strcmp/56/4/4 -0.0001 -0.0001 30 30 30 30
BM_string_strcmp/64/4/4 -0.0342 -0.0342 32 31 32 31
BM_string_strcmp/72/4/4 -0.0186 -0.0186 34 34 34 34
BM_string_strcmp/80/4/4 +0.0004 +0.0004 36 36 36 36
BM_string_strcmp/88/4/4 -0.0000 -0.0000 39 39 39 39
BM_string_strcmp/96/4/4 -0.0510 -0.0510 62 59 62 59
BM_string_strcmp/104/4/4 -0.0502 -0.0502 63 60 63 60
BM_string_strcmp/112/4/4 -0.0490 -0.0490 65 62 65 62
BM_string_strcmp/120/4/4 -0.0387 -0.0387 67 65 67 65
BM_string_strcmp/128/4/4 -0.0426 -0.0426 70 67 70 67
BM_string_strcmp/136/4/4 -0.0408 -0.0408 73 70 73 70
BM_string_strcmp/144/4/4 -0.0194 -0.0194 75 74 75 74
BM_string_strcmp/160/4/4 -0.0035 -0.0035 81 81 81 81
BM_string_strcmp/176/4/4 -0.0001 -0.0001 86 86 86 86
BM_string_strcmp/192/4/4 -0.0002 -0.0002 91 91 91 91
BM_string_strcmp/208/4/4 -0.0335 -0.0335 96 93 96 93
BM_string_strcmp/224/4/4 -0.0314 -0.0314 101 98 101 98
BM_string_strcmp/240/4/4 -0.0303 -0.0303 106 103 106 103
BM_string_strcmp/256/4/4 -0.0288 -0.0288 111 108 111 108
[1] Commit id: f98f2a6780d686ca3d44f8011c7823d42d9b083a
Test: bionic tests and benchmarks on aarch64.
Change-Id: I75f8948782b8bd459d21f15e75e1d420905f5e5a
2018-08-21 17:48:52 +00:00
Adhemerval Zanella
4ab56af82d
[AArch64] Optimize memcmp for medium to large sizes
...
This patch was originally written by Siddhesh Poyarekar and pushed on
cortex-strings [1]. This improved memcmp provides a fast path for
compares up to 16 bytes and then compares 16 bytes at a time, thus
optimizing loads from both sources.
Comparison on the default bionic and proposed optimized routines
shows the following performance improvements on A72 (using the
new proposed memcmp input data from test_memcmp.xml):
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------
BM_string_memcmp/1/0/0 -0.2074 -0.2074 15 12 15 12
BM_string_memcmp/2/0/0 -0.5193 -0.5193 31 15 31 15
BM_string_memcmp/3/0/0 -0.1291 -0.1291 19 17 19 17
BM_string_memcmp/4/0/0 -0.2889 -0.2889 17 12 17 12
BM_string_memcmp/5/0/0 -0.2606 -0.2606 15 11 15 11
BM_string_memcmp/6/0/0 -0.1656 -0.1655 17 14 17 14
BM_string_memcmp/7/0/0 -0.1721 -0.1721 19 15 19 15
BM_string_memcmp/8/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/9/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/10/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/11/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/12/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/13/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/14/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/15/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/16/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/24/0/0 -0.1209 -0.1209 15 13 15 13
BM_string_memcmp/32/0/0 -0.3228 -0.3228 20 13 20 13
BM_string_memcmp/40/0/0 -0.2937 -0.2937 22 15 22 15
BM_string_memcmp/48/0/0 -0.3299 -0.3299 23 15 23 15
BM_string_memcmp/56/0/0 -0.1845 -0.1845 24 20 24 20
BM_string_memcmp/64/0/0 -0.2247 -0.2247 26 20 26 20
BM_string_memcmp/72/0/0 -0.1947 -0.1947 27 22 27 22
BM_string_memcmp/80/0/0 -0.2275 -0.2275 28 22 28 22
BM_string_memcmp/88/0/0 -0.2360 -0.2360 29 22 29 22
BM_string_memcmp/96/0/0 -0.2675 -0.2675 31 22 31 22
BM_string_memcmp/104/0/0 -0.2559 -0.2559 32 24 32 24
BM_string_memcmp/112/0/0 -0.2787 -0.2786 33 24 33 24
BM_string_memcmp/120/0/0 -0.2599 -0.2599 34 25 34 25
BM_string_memcmp/128/0/0 -0.2860 -0.2860 35 25 35 25
BM_string_memcmp/136/0/0 -0.4708 -0.4708 53 28 53 28
BM_string_memcmp/144/0/0 -0.4719 -0.4719 53 28 53 28
BM_string_memcmp/160/0/0 -0.4680 -0.4680 56 30 56 30
BM_string_memcmp/176/0/0 -0.4645 -0.4645 60 32 60 32
BM_string_memcmp/192/0/0 -0.4641 -0.4641 63 34 63 34
BM_string_memcmp/208/0/0 -0.4555 -0.4555 66 36 66 36
BM_string_memcmp/224/0/0 -0.4558 -0.4557 69 38 69 38
BM_string_memcmp/240/0/0 -0.4534 -0.4534 72 40 72 40
BM_string_memcmp/256/0/0 -0.4463 -0.4463 75 42 75 42
BM_string_memcmp/512/0/0 -0.3077 -0.3077 126 88 126 88
BM_string_memcmp/1024/0/0 -0.3493 -0.3493 229 149 229 149
BM_string_memcmp/8192/0/0 -0.4173 -0.4173 1729 1007 1729 1007
BM_string_memcmp/16384/0/0 -0.3855 -0.3855 3377 2076 3377 2075
BM_string_memcmp/32768/0/0 -0.2968 -0.2968 6847 4815 6847 4814
BM_string_memcmp/65536/0/0 -0.2496 -0.2496 13715 10292 13714 10291
BM_string_memcmp/131072/0/0 -0.2676 -0.2676 27354 20033 27351 20031
BM_string_memcmp/262144/0/0 -0.2319 -0.2319 54604 41943 54598 41939
BM_string_memcmp/524288/0/0 -0.2359 -0.2359 109225 83460 109212 83449
BM_string_memcmp/1048576/0/0 -0.0439 -0.0439 423367 404791 423251 404686
BM_string_memcmp/2097152/0/0 -0.0023 -0.0024 762470 760701 761956 760122
BM_string_memcmp/512/4/4 -0.2853 -0.2853 125 89 125 89
BM_string_memcmp/1024/4/4 -0.3377 -0.3377 228 151 227 151
BM_string_memcmp/8192/4/4 -0.4083 -0.4083 1706 1009 1706 1009
BM_string_memcmp/16384/4/4 -0.3853 -0.3853 3376 2075 3376 2075
BM_string_memcmp/32768/4/4 -0.2974 -0.2974 6846 4810 6845 4810
BM_string_memcmp/65536/4/4 -0.2485 -0.2485 13619 10235 13618 10234
BM_string_memcmp/131072/4/4 -0.2387 -0.2387 27056 20597 27054 20595
BM_string_memcmp/512/4/0 -0.2898 -0.2898 123 88 123 88
BM_string_memcmp/1024/4/0 -0.3401 -0.3401 225 149 225 149
BM_string_memcmp/8192/4/0 -0.4167 -0.4167 1727 1007 1727 1007
BM_string_memcmp/16384/4/0 -0.3820 -0.3820 3384 2092 3384 2091
BM_string_memcmp/32768/4/0 -0.2535 -0.2535 6886 5141 6886 5140
BM_string_memcmp/65536/4/0 -0.1897 -0.1897 13850 11223 13849 11223
BM_string_memcmp/131072/4/0 -0.1972 -0.1972 27536 22106 27533 22104
BM_string_memcmp/512/0/4 -0.2854 -0.2854 125 89 125 89
BM_string_memcmp/1024/0/4 -0.3332 -0.3333 226 151 226 151
BM_string_memcmp/8192/0/4 -0.4199 -0.4199 1740 1009 1740 1009
BM_string_memcmp/16384/0/4 -0.3811 -0.3811 3383 2094 3383 2094
BM_string_memcmp/32768/0/4 -0.2409 -0.2409 6900 5238 6899 5237
BM_string_memcmp/65536/0/4 -0.1920 -0.1920 13922 11250 13921 11248
BM_string_memcmp/131072/0/4 -0.2029 -0.2029 27699 22079 27697 22077
I see similar improvements on A54 as well:
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------
BM_string_memcmp/1/0/0 -0.2074 -0.2074 15 12 15 12
BM_string_memcmp/2/0/0 -0.5193 -0.5193 31 15 31 15
BM_string_memcmp/3/0/0 -0.1291 -0.1291 19 17 19 17
BM_string_memcmp/4/0/0 -0.2889 -0.2889 17 12 17 12
BM_string_memcmp/5/0/0 -0.2606 -0.2606 15 11 15 11
BM_string_memcmp/6/0/0 -0.1656 -0.1655 17 14 17 14
BM_string_memcmp/7/0/0 -0.1721 -0.1721 19 15 19 15
BM_string_memcmp/8/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/9/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/10/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/11/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/12/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/13/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/14/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/15/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/16/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/24/0/0 -0.1209 -0.1209 15 13 15 13
BM_string_memcmp/32/0/0 -0.3228 -0.3228 20 13 20 13
BM_string_memcmp/40/0/0 -0.2937 -0.2937 22 15 22 15
BM_string_memcmp/48/0/0 -0.3299 -0.3299 23 15 23 15
BM_string_memcmp/56/0/0 -0.1845 -0.1845 24 20 24 20
BM_string_memcmp/64/0/0 -0.2247 -0.2247 26 20 26 20
BM_string_memcmp/72/0/0 -0.1947 -0.1947 27 22 27 22
BM_string_memcmp/80/0/0 -0.2275 -0.2275 28 22 28 22
BM_string_memcmp/88/0/0 -0.2360 -0.2360 29 22 29 22
BM_string_memcmp/96/0/0 -0.2675 -0.2675 31 22 31 22
BM_string_memcmp/104/0/0 -0.2559 -0.2559 32 24 32 24
BM_string_memcmp/112/0/0 -0.2787 -0.2786 33 24 33 24
BM_string_memcmp/120/0/0 -0.2599 -0.2599 34 25 34 25
BM_string_memcmp/128/0/0 -0.2860 -0.2860 35 25 35 25
BM_string_memcmp/136/0/0 -0.4708 -0.4708 53 28 53 28
BM_string_memcmp/144/0/0 -0.4719 -0.4719 53 28 53 28
BM_string_memcmp/160/0/0 -0.4680 -0.4680 56 30 56 30
BM_string_memcmp/176/0/0 -0.4645 -0.4645 60 32 60 32
BM_string_memcmp/192/0/0 -0.4641 -0.4641 63 34 63 34
BM_string_memcmp/208/0/0 -0.4555 -0.4555 66 36 66 36
BM_string_memcmp/224/0/0 -0.4558 -0.4557 69 38 69 38
BM_string_memcmp/240/0/0 -0.4534 -0.4534 72 40 72 40
BM_string_memcmp/256/0/0 -0.4463 -0.4463 75 42 75 42
BM_string_memcmp/512/0/0 -0.3077 -0.3077 126 88 126 88
BM_string_memcmp/1024/0/0 -0.3493 -0.3493 229 149 229 149
BM_string_memcmp/8192/0/0 -0.4173 -0.4173 1729 1007 1729 1007
BM_string_memcmp/16384/0/0 -0.3855 -0.3855 3377 2076 3377 2075
BM_string_memcmp/32768/0/0 -0.2968 -0.2968 6847 4815 6847 4814
BM_string_memcmp/65536/0/0 -0.2496 -0.2496 13715 10292 13714 10291
BM_string_memcmp/131072/0/0 -0.2676 -0.2676 27354 20033 27351 20031
BM_string_memcmp/262144/0/0 -0.2319 -0.2319 54604 41943 54598 41939
BM_string_memcmp/524288/0/0 -0.2359 -0.2359 109225 83460 109212 83449
BM_string_memcmp/1048576/0/0 -0.0439 -0.0439 423367 404791 423251 404686
BM_string_memcmp/2097152/0/0 -0.0023 -0.0024 762470 760701 761956 760122
BM_string_memcmp/512/4/4 -0.2853 -0.2853 125 89 125 89
BM_string_memcmp/1024/4/4 -0.3377 -0.3377 228 151 227 151
BM_string_memcmp/8192/4/4 -0.4083 -0.4083 1706 1009 1706 1009
BM_string_memcmp/16384/4/4 -0.3853 -0.3853 3376 2075 3376 2075
BM_string_memcmp/32768/4/4 -0.2974 -0.2974 6846 4810 6845 4810
BM_string_memcmp/65536/4/4 -0.2485 -0.2485 13619 10235 13618 10234
BM_string_memcmp/131072/4/4 -0.2387 -0.2387 27056 20597 27054 20595
BM_string_memcmp/512/4/0 -0.2898 -0.2898 123 88 123 88
BM_string_memcmp/1024/4/0 -0.3401 -0.3401 225 149 225 149
BM_string_memcmp/8192/4/0 -0.4167 -0.4167 1727 1007 1727 1007
BM_string_memcmp/16384/4/0 -0.3820 -0.3820 3384 2092 3384 2091
BM_string_memcmp/32768/4/0 -0.2535 -0.2535 6886 5141 6886 5140
BM_string_memcmp/65536/4/0 -0.1897 -0.1897 13850 11223 13849 11223
BM_string_memcmp/131072/4/0 -0.1972 -0.1972 27536 22106 27533 22104
BM_string_memcmp/512/0/4 -0.2854 -0.2854 125 89 125 89
BM_string_memcmp/1024/0/4 -0.3332 -0.3333 226 151 226 151
BM_string_memcmp/8192/0/4 -0.4199 -0.4199 1740 1009 1740 1009
BM_string_memcmp/16384/0/4 -0.3811 -0.3811 3383 2094 3383 2094
BM_string_memcmp/32768/0/4 -0.2409 -0.2409 6900 5238 6899 5237
BM_string_memcmp/65536/0/4 -0.1920 -0.1920 13922 11250 13921 11248
BM_string_memcmp/131072/0/4 -0.2029 -0.2029 27699 22079 27697 22077
[1] Commit id: f77e4c932b4fd65177b57dd5e220bd17fb4037d6
Test: bionic tests and benchmarks on aarch64.
Change-Id: I2791e2b20d1c0ad429e8e5a41d3e47b1ac02c921
2018-08-21 17:48:12 +00:00
Ryan Prichard
14dd9923b0
Move [vdso] after exe/linker in _r_debug
...
gdbserver assumes that the first entry is the exe, so it must come
first.
Fixes debugging of executables with gdb.
Bug: https://issuetracker.google.com/112627083
Bug: http://b/110967431
Test: gdbclient.py -r toybox
Change-Id: I7b30398d679c3f8b92d8d02572f9073ae0fce798
2018-08-20 22:07:27 -07:00
Evgenii Stepanov
be551f596f
HWASan support in bionic.
...
* Allow sanitization of libc (excluding existing global sanitizers)
and disallow sanitization of linker. The latter has not been
necessary before because HWASan is the first sanitizer to support
static binaries (with the exception of CFI, which is not used
globally).
* Static binary startup: initialize HWASan shadow very early so that
almost entire libc can be sanitized. The rest of initialization is
done in a global constructor; until that is done sanitized code can
run but can't report errors (will simply crash with SIGTRAP).
* Switch malloc_common from je_* to __sanitizer_*.
* Call hwasan functions when entering and leaving threads. We can not
intercept pthread_create when libc depends on libclang_rt.hwasan.
An alternative to this would be a callback interface like requested
here:
https://sourceware.org/glibc/wiki/ThreadPropertiesAPI
All of the above is behind a compile-time check
__has_feature(hwaddress_sanitizer). This means that HWASan actually
requires libc to be instrumented, and would not work otherwise. It's
an implementation choice that greatly reduces complexity of the tool.
Instrumented libc also guarantees that hwasan is present and
initialized in every process, which allows piecemeal sanitization
(i.e. library w/o main executable, or even individual static
libraries), unlike ASan.
Change-Id: If44c46b79b15049d1745ba46ec910ae4f355d19c
2018-08-21 00:15:47 +00:00
Christopher Ferris
3fd45bba48
Merge "Add more descriptive text around app starting."
2018-08-17 14:23:15 +00:00
Christopher Ferris
ad935c8139
Add more descriptive text around app starting.
...
Test: NA
Change-Id: If3bcf060b11ec08835863236b0a1408aebe43355
2018-08-16 17:57:23 -07:00
Christopher Ferris
841c9c1ce2
Merge "Add new malloc benchmarks."
2018-08-16 01:09:17 +00:00
Treehugger Robot
b3f24b1b86
Merge "libc: enable -Wimplicit-fallthrough"
2018-08-15 19:31:33 +00:00
George Burgess IV
fa5410fdb7
libc: enable -Wimplicit-fallthrough
...
libc had some -Wimplicit-fallthrough warnings. They all seem to be
benign. We're trying to enable this flag globally, so we need to
annotate these breaks here.
Bug: 112564944
Test: Builds
Change-Id: I5afae694cc4cf26ad1a61e2c8ae91f00cda7c733
2018-08-15 10:11:08 -07:00
Christopher Ferris
0dc784431b
Add new malloc benchmarks.
...
This runs through the trace of the allocations in a sql benchmark app
executed in the benchmark thread.
Add one benchmark with decay time set to 0 and another with decay time
set to 1.
Include a script that can generate a header file that can be used to
regenerate the data.
Bug: 112317428
Test: Builds, ran unit tests, ran benchmarks.
Change-Id: I62e287cc06b74b74bcc5a4bbee71b0fac0a196fd
2018-08-14 16:01:58 -07:00
Treehugger Robot
5285d5995b
Merge "Fix benchmark-tests"
2018-08-13 19:22:33 +00:00
Haibo Huang
510dda3ea1
Fix benchmark-tests
...
1. fix all_benchmarks. Some new benchmarks were added.
2. move some benchmark suites to the right place.
3. add unit test for https://android-review.googlesource.com/c/platform/bionic/+/724785
Test: compile and run bionic-benchmarks-tests on device.
Change-Id: I2b686b51910a422b664f9ea968199f37944039c0
2018-08-11 23:43:03 -07:00
Treehugger Robot
a7573441c1
Merge "Add new strcmp/strncmp benchmark"
2018-08-11 08:23:14 +00:00
Adhemerval Zanella
43f2b77c8b
Add new strcmp/strncmp benchmark
...
This patch adds a new strcmp/strcmp benchmark with different set of
inputs. It cover all pre-defined range values (small, medium, large)
for aligned inputs and also small range for unaligned ones.
Test: Ran new string test suite with a single bionic iteration.
Change-Id: Ice78d74c3583a33158eaba3309c10df54044aa28
2018-08-11 07:20:53 +00:00
Haibo Huang
68c8dd73ae
Merge "Add new memcmp benchmark"
2018-08-11 07:20:19 +00:00
Adhemerval Zanella
0e4fd755a0
Add new memcmp benchmark
...
This patch adds a new memcmp benchmark with different set of inputs.
It covers all pre-defined range values (small, medium, large) for
aligned inputs and also medium range for unaligned ones.
Test: Ran new string test suite with a single bionic iteration.
Change-Id: Icdb95220a62d46bd71fa6ffbbf4567a9a05b7685
2018-08-11 07:20:13 +00:00
Treehugger Robot
5288655f01
Merge "Add option to define ranges sets for benchmarks"
2018-08-11 01:23:02 +00:00
Adhemerval Zanella
eda94aa1ae
Add option to define ranges sets for benchmarks
...
This patch add an option to use the pre-define set of ranges along
with macros AT_ONEBUF_MANUAL_ALIGN_* and AT_TWOBUF_MANUAL_ALIGN1_*.
The size argument can be either a number or a string representing
the sets of values:
* SMALL for values between 1 and 256.
* MEDIUM for values between 512 and 128KB.
* LARGE for values between 256KB and 2048KB.
Test: Ran new string test suite with a single bionic iteration.
Change-Id: Ieda81ee9a5019991b0b2f97d4ca3a237127c5848
2018-08-11 00:27:27 +00:00
Treehugger Robot
0f06b34e33
Merge "Add hhb@ to OWNERS."
2018-08-10 18:20:21 +00:00
Elliott Hughes
ebbb8c8969
Add hhb@ to OWNERS.
...
Bug: N/A
Test: N/A
Change-Id: I86dd3425870a62a286c15bd2e08170104e5fc038
2018-08-10 10:14:13 -07:00
Bernie Innocenti
817f578bf4
Merge "Clear the resolver timeout when setting default __res_params"
2018-08-10 02:15:20 +00:00
Treehugger Robot
fce5dae8a3
Merge "Make the resolver retry timeout configurable via __res_params"
2018-08-10 01:55:09 +00:00
Treehugger Robot
a2650eaf1c
Merge "seccomp: Allow read(2) and getdents(2) in x86_64 for UBSan's sake"
2018-08-09 23:47:14 +00:00
Treehugger Robot
f0fae7d8e5
Merge "Use double-precision routines from arm-optimized-routines"
2018-08-09 21:42:18 +00:00
Luis Hector Chavez
ea82982b87
seccomp: Allow read(2) and getdents(2) in x86_64 for UBSan's sake
...
This change allows the use of read(2) and getdents(2) so that UBSan can
work correctly on x86_64.
Bug: 111999822
Test: CtsWrapWrapDebugTestCases
Change-Id: I44aac17fffdffc5c3f5d87fb3d876af28c8044b2
2018-08-09 12:32:01 -07:00
Adhemerval Zanella
f6b101d3ec
Use double-precision routines from arm-optimized-routines
...
This patch ues exp, exp2, log, log2, and pow from arm optimized
routines. For pow on x86_64, although slight slower it simplifies
the code required on both bionic and arm-optimized-routines (so
there is no need to select and export the symbol based on
architecture).
Performance-wise the improvements are:
x86_64 throughput latency
exp 1.16x 1.16x
log 1.08x 0.95x
exp2 1.27x 1.55x
log2 1.40x 1.43x
pow 0.77x 0.89x *
* I tried to check if AVX2/FMA but without success.
aarch64 throughput latency
exp 2.33x 2.16x
exp2 1.99x 1.50x
log 1.79x 1.43x
log2 2.15x 1.80x
pow 3.81x 3.07x
Test: ran bionic tests on static mode.
Change-Id: Ib16bf3280c5329fd257a3b3f0b6c4f2f3cb34deb
2018-08-09 11:22:24 -03:00
Bernie Innocenti
96c619f7db
Clear the resolver timeout when setting default __res_params
...
This is currently a non-functional change, because base_timeout_msec is
never set to a non-default value (other than in unit tests).
Test: netd_unit_test --gtest_filter='ResolverTest.*'
Change-Id: I21989bab5cc9f55ee1392e30965eb405d720a28e
2018-08-09 17:58:35 +09:00
Treehugger Robot
3652bcd775
Merge "Add pow benchmark"
2018-08-09 02:27:33 +00:00
Treehugger Robot
de8eb12517
Merge "Move unique_fd fdsan tests into bionic."
2018-08-09 02:14:48 +00:00
Josh Gao
7266e91f62
Move unique_fd fdsan tests into bionic.
...
EXPECT_DEATH requires special handling to work with fdsan, because of
our fork detection. Instead of duplicating the EXPECT_FDSAN_DEATH macro
in the libbase tests as well, move the unique_fd fdsan tests here.
Test: bionic_unit_tests
Change-Id: Ia7b65d4560601d5a78d143aced887a6773b401c0
2018-08-09 01:09:08 +00:00
Treehugger Robot
24c0eb1f30
Merge "Add log and log2 benchmark"
2018-08-09 00:33:42 +00:00
Adhemerval Zanella
72fe1c8df6
Add pow benchmark
...
As for exp/exp2 benchmark, this patch add two benchmark for pow:
one which measures thoughput and one which measures latency.
The input data is the same as powf.
Test: ran 32-bit and 64-bit x86 tests on host
Change-Id: I04335fac9e76fb3f39935323dacf6b7be6a6f917
2018-08-08 18:04:48 -03:00