By: --- (---.delete@this.redheron.com), May 22, 2022 1:59 pm
Room: Moderated Discussions
Doug S (foo.delete@this.bar.bar) on May 22, 2022 11:01 am wrote:
> --- (---.delete@this.redheron.com) on May 21, 2022 6:59 pm wrote:
> > Maybe yes, maybe no, the devil is in the details.
> > JPEG XL has an option for ANS as the entropy coding and Apple's
> > version of NEON has ANS accelerator instructions...
> > https://patents.google.com/patent/US20210072994A1
>
>
> Apple's implementation of NEON has its own instructions that ARM hasn't defined?
Why not?
There's a whole range of instruction encodings that can be used by licensees as they wish. Apple uses it (as far as is known) for
- AMX
- LZ engine (conceptually like AMX, associated with a cluster). Not as high compression as SW LZ, but a lot faster, so used under conditions of either
+ extreme memory pressure (so the priority is more on fast page encode than on 10% smaller pages)
+ low power conditions (obv more relevant for mobile devices)
- these NEON ANS extensions.
There are a few other instructions that are known, but not what they do:
https://github.com/AsahiLinux/docs/wiki/HW:Apple-Instructions
lists ones discovered by (I believe) scanning the OS proper, but not Apple libraries.
The ANS ones are known only by patent, but I expect they are waiting for some investigator to figure out the details. Looking at the Accelerate library is the obvious place to start.
> --- (---.delete@this.redheron.com) on May 21, 2022 6:59 pm wrote:
> > Maybe yes, maybe no, the devil is in the details.
> > JPEG XL has an option for ANS as the entropy coding and Apple's
> > version of NEON has ANS accelerator instructions...
> > https://patents.google.com/patent/US20210072994A1
>
>
> Apple's implementation of NEON has its own instructions that ARM hasn't defined?
Why not?
There's a whole range of instruction encodings that can be used by licensees as they wish. Apple uses it (as far as is known) for
- AMX
- LZ engine (conceptually like AMX, associated with a cluster). Not as high compression as SW LZ, but a lot faster, so used under conditions of either
+ extreme memory pressure (so the priority is more on fast page encode than on 10% smaller pages)
+ low power conditions (obv more relevant for mobile devices)
- these NEON ANS extensions.
There are a few other instructions that are known, but not what they do:
https://github.com/AsahiLinux/docs/wiki/HW:Apple-Instructions
lists ones discovered by (I believe) scanning the OS proper, but not Apple libraries.
The ANS ones are known only by patent, but I expect they are waiting for some investigator to figure out the details. Looking at the Accelerate library is the obvious place to start.