------- Comment #12 from wilson at codesourcery dot com 2010-06-17 04:29 ------- Subject: Re: suboptimal MIPS widening multiply accumulate
On Wed, 2010-06-16 at 13:29 +0000, bernds at gcc dot gnu dot org wrote: > Could you retest the MIPS fixed-point testcases with the obvious fix? You > probably have the MIPS toolchain set up already and it would probably take me > more time. Unfortunately, the fix is not quite that easy. We need to handle saturating types in the optab check. I already wrote the multiply add check that way, but the widening-multiply check needs to be fixed. It turns out that there isn't any obtab for saturating widening multiply, so we have to add one. Also, there is also no pattern for it in the mips-fixed.md file. There is only the saturating widening multiply accumulate pattern. I believe I can fix this by adding a multiply accumulate pattern that adds zero, but now I'm starting to get cascading patches here. This could take a few days. Since I was looking at adding zero, I couldn't help but notice that the MIPS fixed point support seems incomplete. _Sat long _Fract f1 (void) { return 0; } gives me j $31 lw $2,.LC0 .LC0: .word 0x0 But this can be split off into a separate bug report. Jim -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43902