IBM S390X contrib cleanup
The Problem
the zlib accelerators for the IBM S390X (and IBM POWER) platform is in an unclean state. For the sake of easier patch generation for Linux distributions and potential merge into mainline zlib this should be cleaned up.
Analysis
the current open PR #410 is based on the work of the IBM POWER optimization #750. The Power work itself fragmented in the last years into 6 different PRs ( #857 #750 #478 #459 #458 #457 tracked in #847).
The S390X PR has multiple problems:
- it needs rebaseing on the newest development branch.
- it uses ifunc that causes problems with memory sanitizers and musl(critical for alpine linux).
- the CI only runs for configure
- the cmake build does not include the S390X accelerators
- the CI only runs with QEMU. QEMU has actually no support for the instructions used in the optimization and zlib will fall back on testing the software implementation.
- no dedicated crc32 test cases
Tracking
To get the S390X code in the clean state this are the issues and milestones that need to be solved.
- [x] de-mangle the POWER and S390X optimization
- [x] split the PR into chewable chunks
- [ ] #1052 [^1]
- [x] add S390X cmake target
- [x] remove the use of ifunc for the function mocking
- [ ] #1057
- [ ] #1060
- [ ] add crc32 testcases
- [ ] create a merged POWER and S390X patch-set for distributions to pickup
- [ ] get the different chunks merged [^2]
[^1]: There are free native IBM S390X workers for open source projects from Marist University [^2]: I need input if and under what circumstances the code could be merged.
I started working on this issues in my fork and will create PR(s) when i think they are ready. I work closely with @iii-i to cleanup and refine the code. Also I talked with a POWER dev and they state their interest in cleaning up their part.
Great! Let me know when it's ready and I'll merge it.
opened PR #1057 which adds vectorized crc32 for s390x platform
So, I started working on the S390X deflate/inflate optimization patch and would like to ask for the preferred review mode:
should I try to split it into multiple easy reviewable chunks or should I create one massive PR containing all the changes?
@fneddy: Nice to see this ticket!