[PATCH 1/1] R600: FMA is VecALU only instruction

Tom Stellard tom at stellard.net
Fri Oct 10 07:50:11 PDT 2014


On Thu, Oct 09, 2014 at 07:59:55PM -0400, Jan Vesely wrote:
> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>

This patch looks good to me.  However, according
to the docs, FMA only exists on double precision
parts.  As a follow on patch it would be nice to
make this instruction conditional on FeatureFP64
and also mark FMA to exapand for targets that
don't support FeatureFP64.

-Tom

> ---
> 
> Fixes hangs/failures of sin/cos/tan tests on my EG card
> 
>  lib/Target/R600/R600Instructions.td | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/Target/R600/R600Instructions.td b/lib/Target/R600/R600Instructions.td
> index a883c83..114c6e4 100644
> --- a/lib/Target/R600/R600Instructions.td
> +++ b/lib/Target/R600/R600Instructions.td
> @@ -917,7 +917,7 @@ class MULADD_IEEE_Common <bits<5> inst> : R600_3OP <
>  
>  class FMA_Common <bits<5> inst> : R600_3OP <
>    inst, "FMA",
> -  [(set f32:$dst, (fma f32:$src0, f32:$src1, f32:$src2))]
> +  [(set f32:$dst, (fma f32:$src0, f32:$src1, f32:$src2))], VecALU
>  >;
>  
>  class CNDE_Common <bits<5> inst> : R600_3OP <
> -- 
> 1.9.3
> 



More information about the llvm-commits mailing list