This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, rs6000] Fix AIX expected builtin instruction counts


Hi Carl,

On Mon, Jun 18, 2018 at 01:52:15PM -0700, Carl Love wrote:
> Per our discussions, the previous patch had issues with the target
> !powerpc*-*-aix* not working correctly and thus the instruction count
> test was not being done.  I have addressed those issues and verified by
> inspecting the gcc/testsuite/gcc/gcc.log file to make sure the test was
> actually executed.
> 
> As for the issues with the xxlxor being used as a move instruction in
> builtins-1.c, I moved vec_or instructions to a new file.  The number of
> xxlor instructions from the vec_or test cases can now be cleanly
> counted without the move instructions from other tests.

:-)

> I found in a few places that by qualifying the instruction counts
> better, I was able to remove the target for BE and LE and m32 versus
> m64.
> 
> I added the -dp option to the vsx-vector-6.p7.c test file.

But you do not use the -dp output it seems?  If you add it you can see the
difference between xxlor generated as an OR or just as a register me (by
looking at the pattern name); if you don't use that (like, you moved the
ORs to a separate file so you don't need it), don't use -dp.

> -     vec_andc                       xxnor
> -                                    xxland
> +     vec_andc                       xxlnor (vnor AIX)
> +                                    xxland (vand AIX)
>       vec_vxor                       xxlxor

Both vnor and xxlnor are correct everywhere; same for xxlxor and maybe
others.  Change the comments to just "vec_andc   xxlnor/vnor" etc.?

> +/* { dg-final { scan-assembler-times {\mxxlnor\M|\mvnor\M} 4 } } */
> +/* { dg-final { scan-assembler-times {\mxxland\M|\mvand\M} 4 } } */
> +/* { dg-final { scan-assembler-times "xxlxor" 5 { target { powerpc*-*-linux* } } } } */
> +/* { dg-final { scan-assembler-times "xxlxor" 0 { target { powerpc*-*-aix* } } } } */

Will this work with

> +/* { dg-final { scan-assembler-times {\mxxlxor\M|\mvxor\M} 4 } } */

?

> +/* { dg-final { scan-assembler-times "bl __divdi3" 3  { target { ilp32 && powerpc*-*-linux* } } } } */
> +/* { dg-final { scan-assembler-times "bl __udivdi3" 3  { target {ilp32 && powerpc*-*-linux* } } } } */
> +/* { dg-final { scan-assembler-times "bl .__divdi3" 2  { target { ilp32 && powerpc*-*-aix* } } } } */
> +/* { dg-final { scan-assembler-times "bl .__udivdi3" 2  { target { ilp32 && powerpc*-*-aix* } } } } */

What causes the difference here?  (Sorry if that is a dumb question, I didn't
look at the testcase).

Rest looks good, thanks!


Segher


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]