-
Notifications
You must be signed in to change notification settings - Fork 15.6k
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
third_party/utf8_range: support arm neon #18126
Conversation
hi, I'm author of utf8_range, glad to see my lib adopted by protobuf. |
@acozzette will you have a look at this pr? or someone else can help? |
Hello Yibo, I'll reassign this to @danlark1 who is our ARM SIMD expert. Thanks for making this contribution. In the meantime, I'll approve this for integration testing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approve for integration testing.
(Do not submit until another approval from @danlark1)
Hmm..., looks this pr leads to java and ruby linux aarch64 job failure, will check. |
Should have fixed ruby error. Please help start CI jobs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
A bit struggling about the jave linux aarch64 job failure. Looks it's related to this PR. Any suggestion is welcomed. EDIT: managed to reproduce it locally, debugging... Fixed. |
This is the key changes to the original utf8_range.c sse validation code after moving arch dependent code to utf8_range_sse.inc. Might be useful for review.
|
Hopefully all issues are fixed. Please help trigger CI. |
Approval for code. Thank you a lot! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving again -- thanks for sending us this PR!
How to check CI error |
Hi Yibo -- This error message about Copybara failures is saying that it's pending internal integration tests to be run before we can pull it into Google. This CL looks good so far, we just need to get approvals internally to get it integrated into our monorepo (and then we can close this PR). There is no action needed on your part. We've been a bit busy these few days but hopefully we can get this merged soon. |
Protobuf uses utf8_range library for utf8 string validation. Currently, only SSE implementation is integrated. This patch adapts utf8_range Neon implementation to protobuf. Closes #18126 COPYBARA_INTEGRATE_REVIEW=#18126 from cyb70289:utf8-neon 5edbcc2 FUTURE_COPYBARA_INTEGRATE_REVIEW=#18126 from cyb70289:utf8-neon 5edbcc2 PiperOrigin-RevId: 679316668
This is failing our internal integration tests. I haven't fully debugged what's going on, but I can tell a behavior change happened in the SSE (non-neon) codepath, due to the changes that you mentioned in a previous comment, in these two places: ![]() ![]() If I revert these two changes, the regression disappears. Specifically it seems like the change on this line is somewhat problematic:
|
Oh I think I know what the problem is.
If I assign If, instead,
is not true. |
I'm going to rerun tests with the following patchset and see what happens:
|
Ouch! It's very lucky that internal test catches this bug.😓 |
Protobuf uses utf8_range library for utf8 string validation. Currently, only SSE implementation is integrated. This patch adapts utf8_range Neon implementation to protobuf. Closes #18126 COPYBARA_INTEGRATE_REVIEW=#18126 from cyb70289:utf8-neon 5edbcc2 FUTURE_COPYBARA_INTEGRATE_REVIEW=#18126 from cyb70289:utf8-neon 5edbcc2 PiperOrigin-RevId: 679316668
Protobuf uses utf8_range library for utf8 string validation. Currently, only SSE implementation is integrated. This patch adapts utf8_range Neon implementation to protobuf. Closes #18126 COPYBARA_INTEGRATE_REVIEW=#18126 from cyb70289:utf8-neon 5edbcc2 FUTURE_COPYBARA_INTEGRATE_REVIEW=#18126 from cyb70289:utf8-neon 5edbcc2 PiperOrigin-RevId: 679316668
I debugged this previously in PR #18126. There must've been some hiccup in Copybara ingestion because this patch didn't end up getting picked up. #18126 (comment) This is a fix-forward. PiperOrigin-RevId: 680734793
I debugged this previously in PR #18126. There must've been some hiccup in Copybara ingestion because this patch didn't end up getting picked up. #18126 (comment) This is a fix-forward. PiperOrigin-RevId: 680734793
I debugged this previously in PR #18126. There must've been some hiccup in Copybara ingestion because this patch didn't end up getting picked up. #18126 (comment) This is a fix-forward. PiperOrigin-RevId: 680757652
Protobuf uses utf8_range library for utf8 string validation.
Currently, only SSE implementation is integrated.
This patch adapts utf8_range Neon implementation to protobuf.