Hi Lijia, On Mon, Jun 24, 2019 at 01:00:05AM -0500, Li Jia He wrote: > >From PowerPC ISA3.0, the description of `maddld RT, RA.RB, RC` is as follows: > 64-bit RA and RB are multiplied and then the RC is signed extend to 128 bits, > and add them together. > > We only apply it to 64-bit mode (DI) when implementing maddld. However, if we > can guarantee that the result of the maddld operation will be limited to > 32-bit > mode (SI), we can still apply it to 32-bit mode (SI).
Great :-) Just some testcase comments: > diff --git a/gcc/testsuite/gcc.target/powerpc/maddld-1.c > b/gcc/testsuite/gcc.target/powerpc/maddld-1.c > new file mode 100644 > index 00000000000..06f5f5774d4 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/maddld-1.c > @@ -0,0 +1,19 @@ > +/* { dg-do compile { target { powerpc*-*-* } } } */ powerpc* is the default in gcc.target/powerpc, so you can leave it out: /* { dg-do compile } */ (and that is default itself, but it is good documentation for the target tests, many of those are run tests). > +/* { dg-require-effective-target powerpc_p9modulo_ok } */ You don't need this line, it tests if the assembler supports p9. > +/* { dg-final { scan-assembler-times "maddld " 2 } } */ > +/* { dg-final { scan-assembler-not "mulld " } } */ > +/* { dg-final { scan-assembler-not "add " } } */ You can easier write this using \m and \M, a bit more exact even: /* { dg-final { scan-assembler-times {\mmaddld\M} 2 } } */ /* { dg-final { scan-assembler-not {\mmul} } } */ /* { dg-final { scan-assembler-not {\madd} } } */ Which allows only the exact mnemonic "maddld", and disallows anything starting with "mul" or "add". Okay for trunk, with the testcase improvements please. Thanks! Segher