On Mon, 2024-10-21 at 19:59 -0700, Richard Henderson wrote: > On 10/21/24 07:27, Ilya Leoshkevich wrote: > > [1] deprecated -mpower8-vector, resulting in: > > > > powerpc64-linux-gnu-gcc: warning: switch '-mpower8-vector' is > > no longer supported > > qemu/tests/tcg/ppc64/vsx_f2i_nan.c:4:15: error: expected ';' > > before 'float' > > 4 | typedef vector float vsx_float32_vec_t; > > | ^~~~~~ > > > > Similar to how this was done for the GCC testcases, replace > > -mpower8-vector with -mvsx. > > > > [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109987 > > > > Signed-off-by: Ilya Leoshkevich <i...@linux.ibm.com> > > --- > > tests/tcg/ppc64/Makefile.target | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/tests/tcg/ppc64/Makefile.target > > b/tests/tcg/ppc64/Makefile.target > > index 1940886c737..d1b00d2bf09 100644 > > --- a/tests/tcg/ppc64/Makefile.target > > +++ b/tests/tcg/ppc64/Makefile.target > > @@ -6,7 +6,7 @@ VPATH += $(SRC_PATH)/tests/tcg/ppc64 > > > > config-cc.mak: Makefile > > $(quiet-@)( \ > > - $(call cc-option,-mpower8-vector, > > CROSS_CC_HAS_POWER8_VECTOR); \ > > + $(call cc-option,-mvsx, CROSS_CC_HAS_VSX); > > \ > > $(call cc-option,-mpower10, > > CROSS_CC_HAS_POWER10)) 3> config-cc.mak > > I don't think this is quite right. > I think you need -mpower8 to get OPTION_MASK_P8_VECTOR set.
Do you mean -mcpu=power8? -mpower8 is a GAS option. > > > +ifneq ($(CROSS_CC_HAS_VSX),) > > PPC64_TESTS=bcdsub non_signalling_xscv > > bcdsub is not in the base VSX instruction set, for instance. > > > r~ I was confused why -mvsx works in practice, so I spent some time and managed to create a "hostile" gcc build, in which this is now a problem, using: ./configure --target=powerpc64-linux-gnu --enable-checking \ --disable-bootstrap \ --with-as="$(which powerpc64-linux-gnu-as)" The issue is masked by two things: - GCC passes "-many" to GAS. GCC commit e154242724b0 ("[RS6000] Don't pass -many to the assembler") stops --enable-checking builds from doing this. - binutils has the following line: /* The minimum supported cpu for 64-bit little-endian is power8. */ ppc_cpu |= ppc_parse_cpu (ppc_cpu, &sticky, "power8"); so one needs to use the big-endian toolchain to see the problem. I'll send a v2.