Message ID | 20241021142830.486149-1-iii@linux.ibm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | tests/tcg: Replace -mpower8-vector with -mvsx | expand |
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 <iii@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. > +ifneq ($(CROSS_CC_HAS_VSX),) > PPC64_TESTS=bcdsub non_signalling_xscv bcdsub is not in the base VSX instruction set, for instance. r~
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 <iii@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.
On 10/23/24 05:17, Ilya Leoshkevich wrote: > 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 <iii@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. It looks like I do, yes. Also in that vein, -mpower10 has been marked WarnRemoved in gcc trunk. > 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. Ah hah! Good sleuthing. r~
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 -include config-cc.mak @@ -23,15 +23,15 @@ run-threadcount: threadcount run-plugin-threadcount-with-%: $(call skip-test, $<, "BROKEN (flaky with clang) ") -ifneq ($(CROSS_CC_HAS_POWER8_VECTOR),) +ifneq ($(CROSS_CC_HAS_VSX),) PPC64_TESTS=bcdsub non_signalling_xscv endif -$(PPC64_TESTS): CFLAGS += -mpower8-vector +$(PPC64_TESTS): CFLAGS += -mvsx -ifneq ($(CROSS_CC_HAS_POWER8_VECTOR),) +ifneq ($(CROSS_CC_HAS_VSX),) PPC64_TESTS += vsx_f2i_nan endif -vsx_f2i_nan: CFLAGS += -mpower8-vector -I$(SRC_PATH)/include +vsx_f2i_nan: CFLAGS += -mvsx -I$(SRC_PATH)/include PPC64_TESTS += mtfsf PPC64_TESTS += mffsce
[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 <iii@linux.ibm.com> --- tests/tcg/ppc64/Makefile.target | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)