Closed ankith26 closed 2 months ago
This PR is now done from my side. I have edited the opening comment in this PR to describe the PR in more detail
After this PR does it mean people on Pi will get NEON acceleration by default?
Basically whichever pi has NEON support in hardware will have NEON acceleration by default (so like all pi except pi 1 and older pi zero). And whichever pi doesn't, runtime detection that we have ensures that the NEON instructions won't be invoked (which will crash with illegal instruction error). It was a long standing speculation that this wouldn't work, but now this PR has tests that pass and therefore show that this approach works.
Basically whichever pi has NEON support in hardware will have NEON acceleration by default (so like all pi except pi 1 and older pi zero). And whichever pi doesn't, runtime detection that we have ensures that the NEON instructions won't be invoked (which will crash with illegal instruction error). It was a long standing speculation that this wouldn't work, but now this PR has tests that pass and therefore show that this approach works.
Very nice!
This does sound like something it would be to good to verify with a tester after our next dev release though, just to be sure.
This PR mainly does
32 thingsFixes arm32 specific warnings across the codebaseHas been moved out to be done in a later PRsse2neon.h
are only passed to the files that need it. Therefore, I made it so that only the files that require thesse2neon.h
header include it. If any file that shouldn't be including it tries to include it, the compilation fails.pygame-ce
wheels over at https://www.piwheels.org/project/pygame-ce/