- Apr 22, 2020
-
-
Noel Gordon authored
Add DEFLATE_FILL_WINDOW_SSE2 define for the fill_window_sse feature and use it to guard the feature code (not ADLER32_SIMD_SSSE3). The fill_window_sse feature only requires SSE2: use x86_cpu_enable_sse2 for the run-time check. No-presubmit: true Bug: 1072308 Change-Id: I770fffa619c998dae1c1f8da1cac8b973e43a509 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2156330 Commit-Queue: Noel Gordon <noel@chromium.org> Auto-Submit: Noel Gordon <noel@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#761279} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: cd8dcf969915890e5b0d6aa5f9c35ec9a0363290
-
- Apr 21, 2020
-
-
Noel Gordon authored
Add build config for zlib_x86_simd, and define CRC32_SIMD_SSE42_PCLMUL within it. Change crc32.c to use it to guard the crc_folding code, not the unrelated ADLER32_SIMD_SSSE3 guard. Bug: 1072308 Change-Id: I7146cf8b83086e5f706ae0c3ad4c13caa2ec0b01 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2156233 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#760909} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 4d8c68ab66b3cf9d3ba6fee4d0fb9f9b92e18d87
-
- Apr 20, 2020
-
-
Noel Gordon authored
The zlib no-chromium-code rule leached into some build sub-rules where they are not actually needed: undo that. Rule configs and source_sets have separate sections dealing with Intel vs Arm: keep them separate (no if's with else's), white-space helps. Minor ordering changes: generally it's sources first, defines && deps, then configs. Use that order most everywhere. Special case: "warnings" do not quite fit. Leave them till last which matches their comments as a side-effect. Bug: 1072308 Change-Id: I2cbce82f165fad4d594b93a5169d6bc57585717e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2156228 Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Auto-Submit: Noel Gordon <noel@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#760669} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 3d38d588dfd76b6861f4fc4dfff878fb90222665
-
- Apr 08, 2020
-
-
Adenilson Cavalcanti authored
One of the optimizations (i.e. chunk_copy) will perform vector stores on 16 bytes chunks instead of the original 3 bytes scalar operations. It is interesting to validate its safety while operating with small payloads (i.e. data input smaller than a single load/store). Even though it is a corner case (i.e. the payload would be smaller than the wrapper used for the DEFLATE stream for GZIP), it is good to certify that the optimization works as expected. This will also add gtest as a dependency as the plan is to write some tests to stress the optimizations we ship. Bug: 1032721 Change-Id: Ifc6a81879e3dba6a9c4b7cfde80e7207258b934c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2128836 Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Victor Costan <pwnall@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#757639} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 272595ed5f469ee379e28dd5c40ef0230b6680a5
-
- Feb 14, 2020
-
-
Richard Townsend authored
MSVC's support for Arm intrinsics is incomplete. To restore the build and make sure MSVC-compiled downstream projects can compile V8 for Windows on Arm, temporarily disable these optimizations until we can fix them or MSVC improves. Bug: v8:10012 Change-Id: Iaa599aa20ace167e0fcc2a2472e97e7f2ac53773 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2054884 Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#741287} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 4d4b04f0d0da2f044e7c6f74708cf1b218294ad0
-
- Jan 28, 2020
-
-
Nico Weber authored
`gn format` recently changed its formatting behavior for deps, source, and a few other elements when they are assigned (with =) single-element lists to be consistent with the formatting of updates (with +=) with single-element. Now that we've rolled in a GN binary with the change, reformat all files so that people don't get presubmit warnings due to this. Most changes have landed by now via `git cl split`. This is what remains after two weeks. Bug: 1041419 Change-Id: Ia813d744e57e5647266a91d4f6c725bf921fb11c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2024471 Commit-Queue: Nico Weber <thakis@chromium.org> Auto-Submit: Nico Weber <thakis@chromium.org> Reviewed-by:
Kentaro Hara <haraken@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#735958} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 852532f442a478b767bb452c63b5aa9b2e5e19fe
-
- Jan 24, 2020
-
-
Hans Wennborg authored
This reverts commit 0aa05cca9db25a9fa8d18f77bf6b2452bc608ead. Reason for revert: This broke arm64-builder-rel and some other builders, see bug. Original change's description: > Roll clang n333938-3a6da112-1 : n340158-efb130fc-2. > > Ran `tools/clang/scripts/upload_revision.py efb130fc93059bdf02d3a83950ddabc5d119f9de`. > > This increases the clang version from 10 to 11. > > It also disables the use of vector instructions in zlib to work around > new false positives in msan (see crbug.com/1045291). > > Bug: 1030664 > Change-Id: I5417d3063f0d67a61cdf31141b05a51a56e84482 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2014904 > Reviewed-by:
Nico Weber <thakis@chromium.org> > Commit-Queue: Hans Wennborg <hans@chromium.org> > Cr-Commit-Position: refs/heads/master@{#735080} TBR=thakis@chromium.org,hans@chromium.org Change-Id: I48754484c26ebf6b1f0b4a47c82fe3c74ee39837 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 1030664,1045592 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2020785 Reviewed-by:
Hans Wennborg <hans@chromium.org> Commit-Queue: Hans Wennborg <hans@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#735124} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: ec2aab7d123590cfb332ba56d7faee2e1ff4a779
-
Nico Weber authored
Ran `tools/clang/scripts/upload_revision.py efb130fc93059bdf02d3a83950ddabc5d119f9de`. This increases the clang version from 10 to 11. It also disables the use of vector instructions in zlib to work around new false positives in msan (see crbug.com/1045291). Bug: 1030664 Change-Id: I5417d3063f0d67a61cdf31141b05a51a56e84482 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2014904 Reviewed-by:
Nico Weber <thakis@chromium.org> Commit-Queue: Hans Wennborg <hans@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#735080} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 0aa05cca9db25a9fa8d18f77bf6b2452bc608ead
-
- Jan 08, 2020
-
-
Adenilson Cavalcanti authored
This will allow to remove some duplicated code (i.e. thread synchronization) while at same time removing unnecessary use of inline ASM for Intel features detection. A few other advantages: - remove some extra logic (e.g. no need to test the platform to include the correct CPU detection header). - simplifies the buildsystem (i.e. we always include cpu_features.c) - get rid of the simd_stub file. Bug: 1032721 Change-Id: I9427b34ec09dddc41925844a6ec4e6aa4d8f3207 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1987190 Reviewed-by:
Mike Klein <mtklein@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#729515} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: d989ac2c596e88e7581eb93d053945a43c611124
-
- Dec 21, 2019
-
-
Hans Wennborg authored
This reverts commit 6f7e5e79cefe982ad84a88927565a88db2e592be. Reason for revert: This broke the build, e.g. https://ci.chromium.org/p/chromium/builders/ci/ios-device/144512 ../../third_party/zlib/cpu_features.c:75:13: error: unused function '_cpu_check_features' [-Werror,-Wunused-function] static void _cpu_check_features(void) ^ Original change's description: > Unify CPU features detection code > > This will allow to remove some duplicated code (i.e. thread synchronization) > while at same time removing unnecessary use of inline ASM for Intel features > detection. > > A few other advantages: > - remove some extra logic (e.g. no need to test the platform to include the > correct CPU detection header). > - simplifies the buildsystem (i.e. we always include cpu_features.c) > - get rid of the simd_stub file. > > Bug: 1032721 > Change-Id: Ic93472d3337bc2cbe092d4cf8fbe4b31b1ceca6d > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1976820 > Reviewed-by:
Chris Blume <cblume@chromium.org> > Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> > Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> > Cr-Commit-Position: refs/heads/master@{#727038} TBR=cavalcantii@chromium.org,cblume@chromium.org,mtklein@chromium.org,adenilson.cavalcanti@arm.com Change-Id: I20c5dedb98ba8b5d304ff1339042bcf243505e88 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 1032721 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1979790 Reviewed-by:
Hans Wennborg <hans@chromium.org> Commit-Queue: Hans Wennborg <hans@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#727039} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 9d8f976414a7608c3361718462253104a761c6bb
-
Adenilson Cavalcanti authored
This will allow to remove some duplicated code (i.e. thread synchronization) while at same time removing unnecessary use of inline ASM for Intel features detection. A few other advantages: - remove some extra logic (e.g. no need to test the platform to include the correct CPU detection header). - simplifies the buildsystem (i.e. we always include cpu_features.c) - get rid of the simd_stub file. Bug: 1032721 Change-Id: Ic93472d3337bc2cbe092d4cf8fbe4b31b1ceca6d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1976820 Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#727038} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 6f7e5e79cefe982ad84a88927565a88db2e592be
-
- Dec 12, 2019
-
-
Adenilson Cavalcanti authored
This change will unify the x86 and Arm optimized implementations for insert_string (used for compression). The objective here is two-fold: a) Remove duplicated code. b) Better insulate deflate.c divergence when compared to vanilla zlib. Bug: 1032721 Change-Id: Id2f65398aeb5a6384708493f0f6ae1fcd14022c2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960893 Reviewed-by:
Chris Blume <cblume@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#724325} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 9d4ec9349a1bf609eedb917c44c69eb0df9ff6bb
-
- Aug 27, 2019
-
-
Sam Maier authored
cpu_features GN target moved from android_sdk to android_ndk TBR: minor rename of target Bug: 990407 Change-Id: I82e25a24716d73e17f2e19dd5e83e94b636b8b0f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1756203 Auto-Submit: Sam Maier <smaier@chromium.org> Reviewed-by:
Andrew Grieve <agrieve@chromium.org> Commit-Queue: Sam Maier <smaier@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#690799} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 801f0550ba72ea0021e97552ec9b98267b69f673
-
- Jun 24, 2019
-
-
Tomasz Śniatowski authored
Check use_thin_lto instead of thin_lto_enable_optimizations, as the latter is only defined in a BUILD.gn so can't be checked outside of it. Plus the intent of https://crrev.com/c/1642730 appears to have been to error out on LTO in general anyway. Fixes gn gen --args="is_clang=false target_cpu=\"arm\"" failing with: ERROR at //third_party/zlib/BUILD.gn:105:17: Undefined identifier assert(!thin_lto_enable_optimizations, ^---------------------------- Bug: 819294 Change-Id: Ibbcae447b01043edc8a118f4a3a3923f2d0ae261 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1667663 Auto-Submit: Tomasz Śniatowski <tsniatowski@vewd.com> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#671713} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 28065982319c824cccff912f0ce561f60d054796
-
- Jun 10, 2019
-
-
Jose Dapena Paz authored
GCC compilation in ARM architectures with CRC32 extension was broken, as the extension was guarded for clang. For GCC we are enforcing armv8-a+crc architecture at module level, so the builtin extensions are available. Then we just include arm_acle.h to declare the required builtins. ThinLTO requires all modules to use same target, so this change makes GCC fail with ThinLTO (that was not supported anyway). Added a GN assert to explicitely fail in this case. Adapted from Vladislav Mukulov <vladislav.mukulov@lge.com> original patch. Bug: 819294 Change-Id: Ifa5cf64318f88220052c44126db90bef999b7113 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1642730 Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Commit-Queue: José Dapena Paz <jose.dapena@lge.com> Cr-Original-Commit-Position: refs/heads/master@{#667541} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 68e95088b6f73f489aa1e1023b7864794627cae1
-
- Apr 18, 2019
-
-
Richard Townsend authored
This CL integrates feature detection across the file so that similar sections do similar things across all operating systems. Bug: 810125 Change-Id: I066226be69453ada72fa67632d09567ce246a860 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1569929 Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#652187} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 8ef80a6282ba32c909c8a4ca52c767c192f0a6bd
-
- Apr 15, 2019
-
-
Richard Townsend authored
Fixes a failing GN assertion for Windows on Arm as it uses a separate path to check CRC32 extension support, so no OS-specific defines are needed. Bug: 810125 Change-Id: I172b4ecd66d94d195f1ccac4c6108ea2a40972a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1567678 Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Commit-Queue: Richard Townsend <richard.townsend@arm.com> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#651040} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 38bf6e359de031ec11566e446d6f7bbcd4dfc9d6
-
Noel Gordon authored
Add OS_FUCHSIA ARM CPU feature detection and enable the crc32 feature on the ARM version of Fuchsia (which is aarch64 only, FTR). For perf, see the results crbug.com/810125/#c17 .. crbug.com/810125/#c19. Add BUILD.gn asserts in the ARM crc32 feature rules: to vet any build expectations (e.g., that the android NDK is installed on is_android), or cause gn errors if the ARM OS type is not supported. Bug: 810125 Change-Id: Id6759d4c6142924c09c591b61117dca529955175 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1472990 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Sergey Ulanov <sergeyu@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#650712} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: c96f4c5c7a0cdaf823373c4bb417978b8321ffb2
-
- Apr 08, 2019
-
-
Tom Anderson authored
//third_party/zlib currently gets duplicated in 418 DSOs when building 'all'. This CL makes zlib a component so that component builds are a bit smaller/faster. Also rename zlib/names.h to zlib/chromeconf.h and remove it from patch files. BUG=941663 R=thakis Change-Id: I520d7ed30d0cfc322ebf1b9fb31bfbf5469f0209 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1545510 Commit-Queue: Thomas Anderson <thomasanderson@chromium.org> Reviewed-by:
Nico Weber <thakis@chromium.org> Auto-Submit: Thomas Anderson <thomasanderson@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#648854} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: d7ee2f99fc936f2162a65b9bf087af94646248e8
-
- Mar 28, 2019
-
-
Peter Wen authored
Move the build targets to //third_party/android_sdk. Move files for android_platform into //third_party/android_platform. Tbr for build target renaming. Tbr: thakis@chromium.org Bug: 947060 Change-Id: I1ec7117b042a2bfe22c6dbc7985256465318cab7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1543468 Commit-Queue: Peter Wen <wnwen@chromium.org> Reviewed-by:
Nico Weber <thakis@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#645538} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 22bc3ec1ab45842fc3fa00ad2b1924680b678118
-
- Jan 31, 2019
-
-
Adenilson Cavalcanti authored
This enables reading bigger chunks of data in the DEFLATE decoder on aarch64. Basically instead of performing 2x 32-bit loads (i.e. ldrb w22,[x9]) followed by a second write in higher lane of the register (i.e. w23), memcpy will do a 64-bit load to the same register. (i.e. ldr x22, [x9]). This also allows to halve the amount of following operations (i.e. adds and shifts), improving performance in decompression. For JavaScript content the gain was close to 14% in big cores (A72) and 9% for little cores (A53). Bug: 812499 Change-Id: I010604ee62e72a769ce2a7912afb7e334adefacf Reviewed-on: https://chromium-review.googlesource.com/c/1447042 Reviewed-by:
Mike Klein <mtklein@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#628091} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: e2aef12cf002ca3577b9bfea3f2a89eed5379a4f
-
- Dec 13, 2018
-
-
Tiancong Wang authored
Using the ARM crc32 instruction can boost the speed of gzip content decompression, which can improve performances in cases where lots of webpages are served using 'content-encoding: gzip'. Expected to have ~50% decompression speed improvement on elm. Bug: 848897, 810125 Change-Id: I9f090950209e6a68271c6926700b7335e14c7cbf Reviewed-on: https://chromium-review.googlesource.com/c/1372548 Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#616210} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 9b3f32ad27fdd569e39289f241043f7111da78fa
-
- Oct 31, 2018
-
-
Daniel Bratell authored
There are some circular include dependencies in the zlib build system because some parts are extracted into their own targets. To make gn check understand that, those targets need to be added to the allow_circular_includes_from list. Bug: 898837 Change-Id: Ic94c5f5ac88e10792b458f4d734c4ad0487023c2 Reviewed-on: https://chromium-review.googlesource.com/c/1299135 Reviewed-by:
Chris Blume <cblume@chromium.org> Commit-Queue: Daniel Bratell <bratell@opera.com> Cr-Original-Commit-Position: refs/heads/master@{#604210} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: f2f7bfe61121c05d9a510b949931e395dce40608
-
- Aug 23, 2018
-
-
George Burgess IV authored
ThinLTO emits warnings when linking modules with different target triples. Android uses armv7-a as its default triple, so the mixing with armv8-a here is problematic. Bug: 807147 Test: md5sum <(objdump -d crc32_simd.o) is the same for Android. Change-Id: If2bffc4090d3d94f158eea80d19ee9eb827fc837 Reviewed-on: https://chromium-review.googlesource.com/1147867 Commit-Queue: George Burgess <gbiv@chromium.org> Reviewed-by:
Mike Klein <mtklein@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#585338} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 708d7d6be05885487cb5ccdffeab08a09ab1ea60
-
- Aug 07, 2018
-
-
Adenilson Cavalcanti authored
This should help with compression of data, using NEON instructions (therefore useful for ARMv7/ARMv8). Average gains were around 4% to 5% in data compression, depending on the data entropy. Re-write of a patch contributed to Fedora Core, for reference: https://src.fedoraproject.org/rpms/zlib/c/25e9802713484882c27c1f979a6610a42414ee13?branch=master Bug: 863257 Change-Id: I76573d75843d6a63de75d8a9536da98515314543 Reviewed-on: https://chromium-review.googlesource.com/1136940 Reviewed-by:
Mike Klein <mtklein@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#581241} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: ddbbeb05cb3f0a4c27e7a5d5d0305462db373677
-
- May 30, 2018
-
-
Tom Anderson authored
After [1], a manual dependency on exe_and_shlib_deps is no longer necessary since it's automatically added. This CL removes all remaining manual references to exe_and_shlib_deps. [1] https://chromium.googlesource.com/chromium/src.git/+/d7ed1f0a9c28c932fddc834ca5de44f28266c7f5 BUG=845700 R=dpranke TBR=sky,mark Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:ios-simulator-full-configs;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_compile_x64_dbg;master.tryserver.chromium.android:android_compile_x86_dbg;master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.linux:closure_compilation;master.tryserver.chromium.linux:linux_vr;master.tryserver.chromium.mac:ios-simulator-cronet Change-Id: I647442fb09eba4c055697bf26504abc3b3284d94 Reviewed-on: https://chromium-review.googlesource.com/1073613 Reviewed-by:
Dirk Pranke <dpranke@chromium.org> Reviewed-by:
Thomas Anderson <thomasanderson@chromium.org> Commit-Queue: Thomas Anderson <thomasanderson@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#563028} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: ce772faa73ab8fa58e848b61b786d449bb988237
-
- Mar 27, 2018
-
-
Adenilson Cavalcanti authored
Generate optimized code that will help ARMv8 chips (between 2 to 10% perf gain on ARMv8 little/big cores) at the expense of a small perf regression on older chips (i.e. ARMv7). Bug: 772870 Change-Id: Ifc47870724da9790c944f76fedcc225d0a896caf Reviewed-on: https://chromium-review.googlesource.com/976521 Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Noel Gordon <noel@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#546016} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: ffc960a39d26fda610e0023667b2465118b8580a
-
- Feb 16, 2018
-
-
Adenilson Cavalcanti authored
CRC32 affects performance for both image decoding (PNG) as also in general browsing while accessing websites that serve content using compression (i.e. Content-Encoding: gzip). This patch implements an optimized CRC32 function using the dedicated instruction available in ARMv8a. We only support ARM Little-Endian (LE). This instruction is available in new Android devices featuring an ARMv8 SoC, like Nexus 5x and Google Pixel. It should be between 3x (A72) to 7x faster (A53) than the C implementation currently used by zlib for 8KB vectors. This is performance critical code and can be called with both large (8KB) or small vectors, therefore we must avoid extraneous function calls or branching (otherwise the performance benefits are negated). So the use of 'public' variables to read the CPU features status flags (i.e. arm_cpu_enable_crc32 | pmull). Finally it also introduces code to perform run-time ARM CPU feature detection on the supported platforms: Android and Linux/CrOS. We build and link the CRC32 instruction dependent code, but will decide to use it at run-time if the ARM CPU supports the CRC32 instruction. Otherwise, we fallback to using zlib's default C implementation. This approach allows to use the instruction in both 32bits and 64bits and works fine either in ARMv7 or ARMv8 processor. I tested the generated Chrome apk in both a Nexus 6 (ARMv7) and a Google Pixel (ARMv8). The crc32 function benefited from input from Yang Zang and Mike Klein, while the arm_features benefited from input from Noel Gordon. Bug: 709716 Change-Id: I315c1216f8b3a8d88607630a28737c41f52a2f5d Reviewed-on: https://chromium-review.googlesource.com/801108 Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Noel Gordon <noel@chromium.org> Commit-Queue: Noel Gordon <noel@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#537179} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 28c9623083688b3a354c33bf77746f4c51f58826
-
- Feb 12, 2018
-
-
Noel Gordon authored
Run git cl format over BUILD.gn, and add a line space here and there to increase readability. Tbr: cavalcanti@chromium.org Bug: None Change-Id: Id46ff314c0fe820880fd441858cbaca6d7754b46 Reviewed-on: https://chromium-review.googlesource.com/912209 Reviewed-by:
Noel Gordon <noel@chromium.org> Commit-Queue: Noel Gordon <noel@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#536036} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 94793843358349ff7e5259eef7a3c5519a90da09
-
Noel Gordon authored
This reverts commit b07c92a12d39e1ac51fe0dab8e4cb98f91f0d213. Reason for revert: the litmus test of running this code on linux x86 bots worked. However, performance-wise we're not so sure. Back this change out to restrict it to Intel x64 for now. Original change's description: > Add x86 bots to the read64le party > > thestig@ reminds me we do have linux x86 bots on the waterfall. Add them > to the read64le party. Minor: run git cl format over BUILD.gn, and add a > line space here and there for readability. > > Bug: 760853 > Change-Id: Ia47296a26bff77f9be699e31053d8b94aac583f4 > Reviewed-on: https://chromium-review.googlesource.com/910328 > Reviewed-by:
Mike Klein <mtklein@chromium.org> > Commit-Queue: Noel Gordon <noel@chromium.org> > Cr-Commit-Position: refs/heads/master@{#535612} TBR=noel@chromium.org,mtklein@chromium.org,nigeltao@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 760853 Change-Id: If3d24a2cdc6614ff82c781019623108a52dbd16a Reviewed-on: https://chromium-review.googlesource.com/913029 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Noel Gordon <noel@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#536020} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: b7fef3927da4a703c523e7e8916fd8d4c031a402
-
- Feb 09, 2018
-
-
Noel Gordon authored
thestig@ reminds me we do have linux x86 bots on the waterfall. Add them to the read64le party. Minor: run git cl format over BUILD.gn, and add a line space here and there for readability. Bug: 760853 Change-Id: Ia47296a26bff77f9be699e31053d8b94aac583f4 Reviewed-on: https://chromium-review.googlesource.com/910328 Reviewed-by:
Mike Klein <mtklein@chromium.org> Commit-Queue: Noel Gordon <noel@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#535612} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: b07c92a12d39e1ac51fe0dab8e4cb98f91f0d213
-
- Feb 08, 2018
-
-
Noel Gordon authored
The chunk-copy code contribution deals with writing decoded DEFLATE data to the output with SIMD methods to increase inflate decode speed. Modern compilers such as gcc/clang/msvc elide the portable memcpy() calls used, replacing them with much faster SIMD machine instructions. Similarly, reading the input data to the DEFLATE decoder with wide, SIMD methods can also increase decode speed. See https://crbug.com/760853#c32 for details; content-encoding: gzip decoding speed improves by 2.17x, in the median over the snappy testdata corpus, when this method is combined with the chunk-copy, and the adler32, and crc32 SIMD contributions (this method improves our current inflate decode speed by 20-30%). Update the chunk-copy code with a wide input data reader, which consumes input in 64-bit (8 byte) chunks. Update inflate_fast_chunk_() to use the wide reader. This feature is supported on little endian machines, and is enabled with the INFLATE_CHUNK_READ_64LE build flag in BUILD.gn on Intel CPU only for now. The wide reader idea is due to nigeltao@chromium.org who did the initial work. This patch is based on his patch [1]. No change in behavior (other than more inflate decode speed), so no new tests. [1] https://chromium-review.googlesource.com/c/chromium/src/+/601694/16 Bug: 760853 Change-Id: Ia806d9a225737039367e1b803624cd59e286ce51 Reviewed-on: https://chromium-review.googlesource.com/900982 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Mike Klein <mtklein@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#535365} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 6e212423a214e0e41794e8c9969c2896e2c33121
-
- Jan 21, 2018
-
-
Noel Gordon authored
Add a tool for measuring encode/decode performance of gzip, zlib, and raw data encoded in DEFLATE compressed format. Given a file containing any data, encode (compress) it into gzip, zlib, or raw DEFLATE format (selected from the command line) then decode (uncompress) the DEFLATE data. Verify that the file data and the uncompressed data match. Output the median and maximum encoding and decoding rates in MB/s. Bug: 798943 Change-Id: I6729a8e875452c6656bd16d5c798f5d1f3c12689 Reviewed-on: https://chromium-review.googlesource.com/850652 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#530780} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 875ad5e3c08831f1efa91adade7fc350b1ef45bc
-
- Jan 04, 2018
-
-
Noel Gordon authored
Using an SSE4.2-based crc32 improves the decoding rate of the PNG 140 corpus by 4% average, giving a total 40% performance increase when combined with adler32 SIMD code and inflate chunk copy code, see https://crbug.com/796178#c2 for details. Raw crc32 speed is 5x - 25x faster than the zlib default "BYFOUR" crc32, and gzip- and zlib-wrapped inflate performance improves by 69% and 50% for the snappy corpus (https://crbug.com/796178#c3 #4 for details). Add crc32 SIMD implementation and update the call-site in crc32.c to use the new crc32 code, using run-time detection of the SSE4.2 and PCLMUL support required by the crc32 SIMD code. Update BUILD.gn to compile the crc32 SIMD code for Intel devices, also update names.h with the new symbol defined by the crc32 SIMD code path. Bug: 796178 Change-Id: I1bb94b47c9a4934eed01ba3d4feda51d67c4bf85 Reviewed-on: https://chromium-review.googlesource.com/833820 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#526935} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 65e2abcb74b1c07fa14f46abaa1fb1717892eec3
-
- Dec 20, 2017
-
-
Noel Gordon authored
MSVC noted the unsigned |n| = size_t |blocks| could be a possible loss in precision. No loss in precision occurs since (n > blocks) at this point: |blocks| fits in an unsigned type. To silence compiler warnings, first update BUILD.gn for the adler SIMD code to use chromium compiler:chromium_code rule (more error checking), rather than the permissive "compiler:no_chromium_code" rule. Then cast |blocks| to unsigned on assigment to |n| (this is safe to do as mentioned above). No change in behavior, no new tests. Tbr: cblume@chromium.org Bug: 762564 Change-Id: Ia97120bcca206287fd42b97674f8a6215283e4a5 Reviewed-on: https://chromium-review.googlesource.com/835927 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Sam McNally <sammc@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#525285} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 0cb9a22e2fb55e092342192d66f7e33c14432d27
-
- Dec 13, 2017
-
-
Noel Gordon authored
Speculative fix: back off from using -O3 on Android for the inflate chunk copy code to see if -O3 caused the perf bot regression on the Android One bot, http://bit.ly/2AfaxhG Bug: 772870 Change-Id: I06bd941224dacbc5d7024a65934faaa53e4a4ce5 Reviewed-on: https://chromium-review.googlesource.com/823503 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Mike Klein <mtklein@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Noel Gordon <noel@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#523679} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 53edf03e13a1569f146f136c9e43bc6e476bf33e
-
- Dec 12, 2017
-
-
Lei Zhang authored
Change-Id: I69bbbfa9d4c317a522a39e097b478d0f80e61fad Reviewed-on: https://chromium-review.googlesource.com/818606 Reviewed-by:
Scott Graham <scottmg@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Max Moroz <mmoroz@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#523273} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 1295fa76d2e7c8efc134219dde4a55fc0630f0cb
-
- Dec 08, 2017
-
-
Noel Gordon authored
Using SSE2 chunk copies improves the decoding rate of the PNG 140 corpus by an average 17%, giving a total 37% performance increase when combined with SIMD adler32 code (https://crbug.com/772870#c3 for details). Move the arm-specific code back into the main chunk copy code and generalize the SIMD parts of chunkset_core() with inline function calls for ARM, and Intel SSE2 devices. This removes the TODO from arm/chunkcopy_arm.h, and that file can be deleted as a result. Add SSE2 vector load / store SSE helpers for chunkset_core(). The existing NEON load code had alignment issues, as noted in review. Fix that: use unaligned loads in the ARM helper code. Change chunkcopy.h to use __builtin_memcpy if it's available, use zmemcpy otherwise such as on MSVC. Also call x86_check_features() in inflateInit2_() to keep the adler32 SIMD code path enabled. Update BUILD.gn to conditionally compile the SIMD chunk copy code on Intel SSE2 and ARM NEON devices. Update names.h to add the new symbol defined by the inflate chunk copy code path. Code had various comment styles; pick one and use it consistently everywhere. Add inffast_chunk.h TODO(cblume). Bug: 772870 Change-Id: I47004c68ee675acf418825fb0e1f8fa8018d4342 Reviewed-on: https://chromium-review.googlesource.com/708834 Commit-Queue: Noel Gordon <noel@chromium.org> Reviewed-by:
Chris Blume <cblume@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#522764} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: c293a3255eb27dee8879f85f2c45dedff58e2452
-
- Nov 30, 2017
-
-
Boris Sazonov authored
This reverts commit 35988c821c051a57e30c76f9fcd87b7b677bd9bd. Reason for revert: broke build ('cpu-features.h' not found) https://uberchromegw.corp.google.com/i/internal.client.clank/builders/x64-builder/builds/13697 Original change's description: > Using ARMv8 CRC32 specific instruction > > CRC32 affects performance for both image decompression (PNG) > as also in general browsing while accessing websites that serve > content using compression (i.e. Content-Encoding: gzip). > > This patch implements an optimized CRC32 function using the > dedicated instruction available in ARMv8. This instruction is available > in new Android devices featuring an ARMv8 SoC, like Nexus 5x and > Google Pixel. > > It should be between 6x (A53: 116ms X 22ms for a 4Kx4Kx4 buffer) to > 10x faster (A72: 91ms x 9ms) than the C implementation currently used > by zlib. > > PNG decoding performance gains should be around 5-9%. > > Finally it also introduces code to perform the ARM CPU features detection > using getauxval()@Linux/CrOS or android_getCpuFeatures(). We pre-built > and link the CRC32 instruction dependent code but will decide if to > use it at run time. > > If the feature is not supported, we fallback to the C implementation. > > This approach allows to use the instruction in both 32bits and 64bits > builds and works fine either in ARMv7 or ARMv8 processor. I tested the > generated Chromium apk in both a ARMv7 (Nexus 4 and 6) and ARMv8 (Nexus 5x and > Google Pixel). > > Change-Id: I069408ebc06c49a3c2be4ba3253319e025ee09d7 > Bug: 709716 > Reviewed-on: https://chromium-review.googlesource.com/612629 > Reviewed-by:
Chris Blume <cblume@chromium.org> > Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> > Cr-Commit-Position: refs/heads/master@{#520377} TBR=agl@chromium.org,noel@chromium.org,cavalcantii@chromium.org,cblume@chromium.org,mtklein@chromium.org,adenilson.cavalcanti@arm.com Change-Id: Ief2c32df5c8a37635f937cd6a671f5574f5a53a3 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 709716 Reviewed-on: https://chromium-review.googlesource.com/799930 Reviewed-by:
Chris Blume <cblume@chromium.org> Reviewed-by:
Boris Sazonov <bsazonov@chromium.org> Commit-Queue: Boris Sazonov <bsazonov@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#520497} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: e7d9a4649bde6f047105d29f0026dd8c3d54143a
-
Adenilson Cavalcanti authored
CRC32 affects performance for both image decompression (PNG) as also in general browsing while accessing websites that serve content using compression (i.e. Content-Encoding: gzip). This patch implements an optimized CRC32 function using the dedicated instruction available in ARMv8. This instruction is available in new Android devices featuring an ARMv8 SoC, like Nexus 5x and Google Pixel. It should be between 6x (A53: 116ms X 22ms for a 4Kx4Kx4 buffer) to 10x faster (A72: 91ms x 9ms) than the C implementation currently used by zlib. PNG decoding performance gains should be around 5-9%. Finally it also introduces code to perform the ARM CPU features detection using getauxval()@Linux/CrOS or android_getCpuFeatures(). We pre-built and link the CRC32 instruction dependent code but will decide if to use it at run time. If the feature is not supported, we fallback to the C implementation. This approach allows to use the instruction in both 32bits and 64bits builds and works fine either in ARMv7 or ARMv8 processor. I tested the generated Chromium apk in both a ARMv7 (Nexus 4 and 6) and ARMv8 (Nexus 5x and Google Pixel). Change-Id: I069408ebc06c49a3c2be4ba3253319e025ee09d7 Bug: 709716 Reviewed-on: https://chromium-review.googlesource.com/612629 Reviewed-by:
Chris Blume <cblume@chromium.org> Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#520377} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 35988c821c051a57e30c76f9fcd87b7b677bd9bd
-