# External RFC ls012: Discuss priorities of Libre-SOC Scalar(Vector) ops * * * The purpose of this RFC is to give a full list of the upcoming Scalar opcodes developed by Libre-SOC, formally agree a priority order, which ones should be EXT022 Sandbox, and for IBM to get a clear picture of the Opcode Allocation needs. Worth bearing in mind that every "Defined Word" may or may not be Vectoriseable, but that every "Defined Word" should have merits on its own not just when Vectorised. An example of a borderline Vectoriseable Defined Word is `mv.swizzle` which only really becomes high-priority for Vector GPU and HPC Workloads, but has less merit as a Scalar-only operation. Power ISA Scalar (SFFS) has not been significantly advanced in 12 years. With VSX bring 914 instructions and 128-bit it is far too much for any new team to consider (10 years development effort) and far outside of Embedded or Tablet/Desktop/Laptop power budgets. Thus bringing Power Scalar up-to-date to modern standards is a reasonable goal, and the advantage is that lessons can be learned from other ISAs. SVP64 Prefixing - also known by the terms "Zero-Overhead-Loop-Prefixing" as well as "True-Scalable Vector Prefixing" - also literally brings new dimensions to the Power ISA. Thus when adding new Scalar "Defined Words" it has to unavoidably be taken into consideration their value when Vectorised. Instruction count guide and approximate priority order: * 6 - SVP64 Management [[ls008]] [[ls009]] [[ls010]] * 5 - CR weirds [[sv/cr_int_predication]] * 4 - INT<->FP mv [[ls006]] * 19 - GPR LD/ST-PostIncrement-Update (saves hugely in hot-loops) [[ls011]] * ~12 - FPR LD/ST-PostIncrement-Update (ditto) [[ls011]] * 2 - Float-Load-Immediate (always saves one LD L1/2/3 D-Cache op) [[ls002]] * 5 - Big-Integer Chained 3-in 2-out (64-bit Carry) [[sv/biginteger]] * 6 - Bitmanip LUT2/3 operations. high cost high reward [[sv/bitmanip]] * 1 - fclass (Scalar variant of xvtstdcsp) [[sv/fclass]] * 5 - Audio-Video [[sv/av_opcodes]] * 2 - Shift-and-Add (mitigates LD-ST-Shift; Cryptography e.g. twofish) * 2 - BMI group [[sv/vector_ops]] * 2 - GPU swizzle [[sv/mv.swizzle]] * 9 - FP DCT/FFT Butterfly (2/3-in 2-out) * ~9 Integer DCT/FFT Butterfly * 18 - Trigonometric (1-arg) [[openpower/transcendentals]] * 15 - Transcendentals (1-arg) [[openpower/transcendentals]] * 25 - Transcendentals (2-arg) [[openpower/transcendentals]] [[!inline pages="openpower/sv/rfc/ls012/areas.mdwn" raw=yes ]] [[!tag opf_rfc]]