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; [email protected]; 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
