Addition of arm64 half-precision v8.2 FABS, FNEG and FSQRT instructions. This is part of arm64 v8.2 container bug https://bugs.kde.org/show_bug.cgi?id=428016
Created attachment 135211 [details] Adds arm64 v8.2 FABS, FNEG and FSQRT instructions Patch ready for review.
When ready for checkin, please paste the following text as the Git commit message: - - - snip 432161 Addition of arm64 v8.2 FADDP, FNEG and FSQRT This patch adds FP half-precision support for the following: FABS <Hd>, <Hn> FABS <Vd>.<T>, <Vn>.<T> FNEG <Hd>, <Hn> FNEG <Vd>.<T>, <Vn>.<T> FSQRT <Hd>, <Hn> FSQRT <Vd>.<T>, <Vn>.<T> Fixes https://bugs.kde.org/show_bug.cgi?id=432161 - - - snip Unless there are any suggestions for improvements, I'll try and keep this Git commit message format for all future arm64 v8.2 instruction patches.
Nicely done! I did spot one bug though: @@ -3752,6 +3775,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_I32StoF32x4: case Iop_F32toI32Sx4: + case Iop_Sqrt16Fx8: + return unary16Fx8_w_rm(mce, vatom1, vatom2); case Iop_Sqrt32Fx4: return unary32Fx4_w_rm(mce, vatom1, vatom2); case Iop_Sqrt64Fx2: This isn't quite right, in that the two added lines change the behaviour for the fallthrough cases immediately above. I mean: consider what happens for Iop_I32StoF32x4 and Iop_F32toI32Sx4 with and without the added lines. Otherwise it's fine. One final question: did you check that the relevant test programs run OK (without any assertion failures) on memcheck, by running them by hand, with --tool=memcheck and also --tool=memcheck --track-origins=yes ? If not, could you please do that and make sure nothing breaks.
Created attachment 135237 [details] Adds arm64 v8.2 FABS, FNEG and FSQRT instructions Fixes bug raised in review (case Iop_Sqrt16Fx8: position).
> This isn't quite right, in that the two added lines change the behaviour for the fallthrough cases immediately above. Gah, of course! Careless of me. Fixed. > One final question: did you check that the relevant test programs run OK (without any assertion failures) on memcheck, by running them by hand, with --tool=memcheck and also --tool=memcheck --track-origins=yes ? Yes, there are no assertions and nothing breaks. Alse checked debug output displays new mnemonics and operands (using --trace-flags=10001111 --tool=none).
(In reply to ahashmi from comment #5) Looks good to me. Land!
Landed, 7593a4773997807695d6514e9d01a60cb489851c