[patch 4/N][rs6000, cft] -mfused-add cleanup

Richard Henderson rth@redhat.com
Sun Nov 14 04:05:00 GMT 2010


On 11/11/2010 12:06 PM, Michael Meissner wrote:
> gcc.dg/var-expand3.c is a function using Altivec fused multiply/add
> instructions, and the loop unroller would unroll loops with (plus (mult (..)))
> but not (fma ...).  The code is analyze_insn_to_expand_var in loop-unroll.c
> where it doesn't realize fma is a loop accumulator.  I imagine it is probably
> simple to fix this function.

Fixed by 
  http://gcc.gnu.org/ml/gcc-patches/2010-11/msg01248.html
as yet unreviewed.

> gcc.target/powerpc/ppc-fma-{2,4}.c are failing because they use
> -mno-fused-madd, and the compiler gives a new warning that isn't accounted
> for.  Obviously we just need to switch to use -ffp-contract=off for these two
> tests (or add the warning message).

Fixed here.

> gfortran.fortran-torture/execute/in-pack.f90 is getting an internal compiler
> error when -maltivec is used:
> 
> /home/meissner/fsf-src/rth/gcc/testsuite/gfortran.fortran-torture/execute/in-pack.f90: In function 'csub4':
> /home/meissner/fsf-src/rth/gcc/testsuite/gfortran.fortran-torture/execute/in-pack.f90:59:0: error: unrecognizable insn:
> (insn 395 394 396 45 (set (reg:V4SF 592)
>         (fma:V4SF (reg:V4SF 363 [ vect_var_.731 ])
>             (reg:V4SF 593)
>             (reg:V4SI 594))) /home/meissner/fsf-src/rth/gcc/testsuite/gfortran.fortran-torture/execute/in-pack.f90:55 -1
>      (expr_list:REG_EQUAL (mult:V4SF (reg:V4SF 363 [ vect_var_.731 ])
>             (reg:V4SF 593))
>         (nil)))

Fixed here.  A silly mistake converting the altivec mulv4sf pattern.


r~



More information about the Gcc-patches mailing list