Hi, How about a patch like this to support signed and unsigned multiplication and addition? We can extend to MSUB/MSUBU as well. Thanks!
2007-04-20 Chao-ying Fu <[EMAIL PROTECTED]> * optabs.c (init_optabs): Initialize smadd_widen_optab and umadd_widen_optab. * optabs.h (optab_index): Add OTI_smadd_widen and OTI_umadd_widen. (smadd_widen_optab, umadd_widen_optab): Define. * genopinit.c (optabs): Add smadd_widen_optab and usmadd_widen_optab. * expr.c (expand_expr_real_1): Add rtx of op2. Process PLUS_EXPR to generate multiplication and add instructions. * config/mips/mips-dspr2.md (maddsidi4, umaddsidi4): New patterns. Ex: (bug72.c) long long t1 (int a, int b, long long c) { return (long long)a * b + c; } unsigned long long t2 (unsigned int a, unsigned int b, unsigned long long c) { return (unsigned long long)a * b + c; } # <812> ~/dev/gcc4x/install32/bin/mipsisa32r2-elf-gcc -S -mdspr2 bug72.c -O t1: mtlo $7 mthi $6 madd $ac0,$5,$4 mflo $7 mfhi $6 move $2,$6 j $31 move $3,$7 t2: mtlo $7 mthi $6 maddu $ac0,$5,$4 mflo $7 mfhi $6 move $2,$6 j $31 move $3,$7 Regards, Chao-ying > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of > Richard Sandiford > Sent: Friday, April 20, 2007 8:05 AM > To: Stephens, Nigel > Cc: Fu, Chao-Ying; gcc@gcc.gnu.org; Thekkath, Radhika > Subject: Re: [MIPS] MADD issue > > > Nigel Stephens <[EMAIL PROTECTED]> writes: > > OK, so maybe as the person who removed adddi3 from the MIPS > backend, and > > the main proponent of the new fused opcodes, you get to > volunteer to > > implement this? :) > > Hey, I was pretty happy with the status quo ;) > > Richard >
gcc.diff
Description: gcc.diff