As noticed elsewhere on the list mulu2_i32 is missing. Which led me to notice that add2_i32 and sub2_i32 were also missing and also led me to notice that division was incorrectly implemented.
My initial implementation of 32-bit division copied the existing practice of using the 64-bit division insns for sparcv9, with proper sign/zero extensions on the input operands. But that required extra temporaries and quickly got ugly. In the end I thought it was clearer to simply use the 32-bit division insns unconditionally. That excercise, however, made me notice that 32-bit extension was not special-cased, leading to the final patch. r~ Richard Henderson (5): tcg-sparc: Add tcg_out_arithc. tcg-sparc: Implement add2, sub2, mulu2. tcg-sparc: Do not remove %o[012] from 'r' constraint. tcg-sparc: Implement division properly. tcg-sparc: Implement ext32[su]_i64 tcg/sparc/tcg-target.c | 206 ++++++++++++++++++++++++++++++++---------------- tcg/sparc/tcg-target.h | 8 ++ 2 files changed, 145 insertions(+), 69 deletions(-)