Re: [r17-2335 Regression] FAIL: gcc.target/i386/bmi2-mulx-highpart-1.c check-function-bodies div7 on Linux/x86_64
herumi--- via Gcc-regression <[email protected]> Tue, 14 Jul 2026 03:31:11 +0900
| Newsgroups | gmane.comp.gcc.regression,gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
From: MITSUNARI Shigeo <[email protected]> Thanks for the report. The check-function-bodies pattern in this test expects the instruction order produced with generic tuning. With -march=cascadelake the scheduler reorders the movl and movabsq instructions, so the (order-sensitive) body match fails; the generated instructions themselves are unchanged. The same applies to gcc.target/i386/mulq-highpart.c from r17-2334, so the patch below fixes both tests by pinning -mtune=generic, as many other i386 tests do. Tested on x86_64-linux with both the default target board and unix{-m64 -march=cascadelake}: both tests pass with the patch and the reported FAIL is reproducible without it. I don't have write access, so could someone push this for me? -- >8 -- Subject: i386: Add -mtune=generic to highpart multiplication tests The check-function-bodies patterns in bmi2-mulx-highpart-1.c and mulq-highpart.c expect the instruction order produced with generic tuning. With -march=cascadelake the scheduler swaps the movl and movabsq instructions, so pin -mtune=generic. gcc/testsuite/ChangeLog: * gcc.target/i386/bmi2-mulx-highpart-1.c: Add -mtune=generic to dg-options. * gcc.target/i386/mulq-highpart.c: Likewise. Signed-off-by: MITSUNARI Shigeo <[email protected]> --- diff --git a/gcc/testsuite/gcc.target/i386/bmi2-mulx-highpart-1.c b/gcc/testsuite/gcc.target/i386/bmi2-mulx-highpart-1.c index 8b3b6725d1b..ccb9875f828 100644 --- a/gcc/testsuite/gcc.target/i386/bmi2-mulx-highpart-1.c +++ b/gcc/testsuite/gcc.target/i386/bmi2-mulx-highpart-1.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O2 -mbmi2" } */ +/* { dg-options "-O2 -mbmi2 -mtune=generic" } */ /* { dg-final { check-function-bodies "**" "" "" { target *-*-linux* *-*-gnu* } } } */ /* %edx is fixed by the ISA (implicit mulx source) and %edi by the ABI diff --git a/gcc/testsuite/gcc.target/i386/mulq-highpart.c b/gcc/testsuite/gcc.target/i386/mulq-highpart.c index 56728cd5b7c..fff0eac239a 100644 --- a/gcc/testsuite/gcc.target/i386/mulq-highpart.c +++ b/gcc/testsuite/gcc.target/i386/mulq-highpart.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O2 -mno-bmi2" } */ +/* { dg-options "-O2 -mno-bmi2 -mtune=generic" } */ /* { dg-final { check-function-bodies "**" "" "" { target *-*-linux* *-*-gnu* } } } */ /* %rax, %rdx and %edi are fixed by the ISA (mulq) and the ABI (first