https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53949
Oleg Endo <olegendo at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-01-30 Ever confirmed|0 |1 --- Comment #12 from Oleg Endo <olegendo at gcc dot gnu.org> --- This is an example from Renesas public material regarding the SH-DSP. The example program can utilize either the regular mac.w instruction, or the DSP ISA (found on SH2-DSP, SH3-DSP, SH4AL-DSP). typedef short Fixed; typedef long Lfixed; typedef long Laccum; #define __X #define __Y void func(__X Fixed x[5],Fixed *out, __Y Fixed y[128][5] ) { int i; __Y Fixed *yp=y[0]; __X Fixed *xp=x; Fixed x0,y0; Lfixed m0; Laccum a0; for(i=0;i<128;i++) { a0=0; x0=*xp++; y0=*yp++; m0=x0*y0; x0=*xp++; y0=*yp++; a0+=m0; m0=x0*y0; x0=*xp++; y0=*yp++; a0+=m0; m0=x0*y0; x0=*xp++; y0=*yp++; a0+=m0; m0=x0*y0; x0=*xp++; y0=*yp++; a0+=m0; m0=x0*y0; a0+=m0; *out++=a0; } } which should compile to something like: _func: mov #-128,r1 mov r5,r3 extu.b r1,r1 .L11: clrmac mac.w @r6+,@r4+ dt r1 mac.w @r6+,@r4+ mac.w @r6+,@r4+ mac.w @r6+,@r4+ sts macl,r2 mov.w r2,@r3 bf/s .L11 add #2,r3 rts nop