Re-introduce some 64x2 instructions #101
Description
In #81, we wanted some performance data to support the inclusion of 64x2 instructions. In https://github.com/ngzhian/simd-benchmarks we documented steps to run benchmarks, and the results of running those benchmarks.
I would like to suggest the inclusion of 64x2 instructions back into the spec because we see real world workloads that benefit from these 64x2 instructions.
However, we don't see all 64x2 instructions getting the same usage and exposure, as such, we might want to consider including only a subset of these instructions.
Option 1, all 64x2 instructions 👀
- i64x2.{splat,extract_lane,replace_lane}
- i64x2.{add,sub,mul,neg}
- i64x2.{shl,shr_s,shr_u}
- i64x2.{any_true,all_true}
- i64x2.{eq,le,lts,ltu,gts,gtu,les,leu,ges,geu}
- i64x2.{abs,min,max}
- i64x2.trunc_{s,u}/f64x2
- f64x2.{splat,extract_lane,replace_lane}
- f64x2.{add,sub,mul,neg}
- f64x2.{div,sqrt}
- f64x2.{shl,shr_s,shr_u}
- f64x2.{any_true,all_true}
- f64x2.{eq,le,lt,ge,gt}
- f64x2.{abs,min,max}
- f64x2.convert_{s,u}/i64x2
Option 2, only f64x2 instructions 🚀
- all the f64x2 instructions (including conversions) from Option 1
Option 3, f64x2 instructions and common i64x2 instructions 🎉
- all the f64x2 instructions (including conversions) from Option 1
- i64x2.{splat,extract_lane,replace_lane}
- i64x2.{add,sub,mul,neg}
- i64x2.{shl,shr_s,shr_u}
I can put up a PR for changes to the docs when one of these options is decided.
Feel free to vote on this issue, eyes 👀 for 1, rocket 🚀 for 2, tada 🎉 for 3.