Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable the use of [SU]Int32Size and EnumSize templates for AArch64 #11102

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/google/protobuf/wire_format_lite.cc
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ static size_t VarintSize(const T* data, const int n) {
} else if (SignExtended) {
msb_sum += x >> 31;
}
// clang is so smart that it produces optimal SSE sequence unrolling
// clang is so smart that it produces optimal SIMD sequence unrolling
// the loop 8 ints at a time. With a sequence of 4
// cmpres = cmpgt x, sizeclass ( -1 or 0)
// sum = sum - cmpres
Expand Down Expand Up @@ -712,7 +712,7 @@ static size_t VarintSize64(const T* data, const int n) {
// and other platforms are untested, in those cases using the optimized
avieira-arm marked this conversation as resolved.
Show resolved Hide resolved
// varint size routine for each element is faster.
// Hence we enable it only for clang
#if defined(__SSE__) && defined(__clang__)
#if (defined(__SSE__) || defined(__aarch64__)) && defined(__clang__)
size_t WireFormatLite::Int32Size(const RepeatedField<int32_t>& value) {
return VarintSize<false, true>(value.data(), value.size());
}
Expand All @@ -730,7 +730,7 @@ size_t WireFormatLite::EnumSize(const RepeatedField<int>& value) {
return VarintSize<false, true>(value.data(), value.size());
}

#else // !(defined(__SSE4_1__) && defined(__clang__))
#else // !((defined(__SSE__) || defined(__aarch64__) && defined(__clang__))

size_t WireFormatLite::Int32Size(const RepeatedField<int32_t>& value) {
size_t out = 0;
Expand Down