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(-)



Reply via email to