Hi Matthew, Thanks for your comments, update the patch.
*** gcc/ChangeLog *** 2016-11-03 Chenghua Xu <paul.hua...@gmail.com> * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for TARGET_LOONGSON_3A. (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A. Thanks, Paul On Thu, Nov 3, 2016 at 6:31 PM, Matthew Fortune <matthew.fort...@imgtec.com> wrote: > Paul Hua <paul.hua...@gmail.com> writes: >> Loongson3a has 4 operand fused madd instrcution. This patch set >> loongson3a use fused madd.d. > > Hi Paul, > > Thanks for the fix. I was vaguely aware that this was wrong for > loongson-3a but never confirmed it. > > I suspect this change is mechanical enough that it can bypass > copyright assignment but I'd need a global maintainer to comment. > > I've sent you copyright assignment paperwork separately. > > Two comments on the patch: > >> ChangeLog : >> >> *** gcc/ChangeLog *** >> >> 2016-11-03 Chenghua Xu <paul.hua...@gmail.com> >> >> config/mips/ >> * mips.h: Set loongson3a use fused madd.d. > > The changelog needs to reference what was changed rather than the > effect of the change: > > * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for > TARGET_LOONGSON_3A. > (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A. > > >>diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h >>index 81862a9..5076a2b 100644 >>--- a/gcc/config/mips/mips.h >>+++ b/gcc/config/mips/mips.h >>@@ -1056,11 +1056,11 @@ struct mips_cpu_info { >> >> /* ISA has 4 operand fused madd instructions of the form >> 'd = [+-] (a * b [+-] c)'. */ >>-#define ISA_HAS_FUSED_MADD4 TARGET_MIPS8000 >>+#define ISA_HAS_FUSED_MADD4 (TARGET_MIPS8000 || TARGET_LOONGSON_3A) >> >> /* ISA has 4 operand unfused madd instructions of the form >> 'd = [+-] (a * b [+-] c)'. */ >>-#define ISA_HAS_UNFUSED_MADD4 (ISA_HAS_FP4 && !TARGET_MIPS8000) >>+#define ISA_HAS_UNFUSED_MADD4 (ISA_HAS_FP4 && !TARGET_MIPS8000 && >>!TARGET_LOONGSON_3A) > > Please split this line and move && !TARGET_LOONGSON_3A to the next line > under ISA_HAS_FP4. > >> >> /* ISA has 3 operand r6 fused madd instructions of the form >> 'c = c [+-] (a * b)'. */ > > Thanks, > Matthew >
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 81862a9..2a7a3f2 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -1056,11 +1056,13 @@ struct mips_cpu_info { /* ISA has 4 operand fused madd instructions of the form 'd = [+-] (a * b [+-] c)'. */ -#define ISA_HAS_FUSED_MADD4 TARGET_MIPS8000 +#define ISA_HAS_FUSED_MADD4 (TARGET_MIPS8000 || TARGET_LOONGSON_3A) /* ISA has 4 operand unfused madd instructions of the form 'd = [+-] (a * b [+-] c)'. */ -#define ISA_HAS_UNFUSED_MADD4 (ISA_HAS_FP4 && !TARGET_MIPS8000) +#define ISA_HAS_UNFUSED_MADD4 (ISA_HAS_FP4 \ + && !TARGET_MIPS8000 \ + && !TARGET_LOONGSON_3A) /* ISA has 3 operand r6 fused madd instructions of the form 'c = c [+-] (a * b)'. */