On 3/12/25 13:03, Philippe Mathieu-Daudé wrote:
Solaris defines FSCALE in <sys/param.h>:

   301 /*
   302  * Scale factor for scaled integers used to count
   303  * %cpu time and load averages.
   304  */
   305 #define FSHIFT  8               /* bits to right of fixed binary point */
   306 #define FSCALE  (1<<FSHIFT)

When emulating the SVE FSCALE instruction, we defines the same name
in decodetree format in target/arm/tcg/sve.decode:

   1129:FSCALE          01100101 .. 00 1001 100 ... ..... .....    @rdn_pg_rm

This leads to a definition clash:

   In file included from ../target/arm/tcg/translate-sve.c:21:
   ../target/arm/tcg/translate.h:875:17: error: pasting "trans_" and "(" does 
not give a valid preprocessing token
     875 |     static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \
         |                 ^~~~~~
   ../target/arm/tcg/translate-sve.c:4205:5: note: in expansion of macro 
'TRANS_FEAT'
    4205 |     TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, 
name##_zpzz_fns[a->esz], a)
         |     ^~~~~~~~~~
   ../target/arm/tcg/translate-sve.c:4249:1: note: in expansion of macro 
'DO_ZPZZ_FP'
    4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn)
         | ^~~~~~~~~~
   ../target/arm/tcg/translate-sve.c:4249:12: error: expected declaration 
specifiers or '...' before numeric constant
    4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn)
         |            ^~~~~~
   ../target/arm/tcg/translate.h:875:25: note: in definition of macro 
'TRANS_FEAT'
     875 |     static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \
         |                         ^~~~
   ../target/arm/tcg/translate-sve.c:4249:1: note: in expansion of macro 
'DO_ZPZZ_FP'
    4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn)
         | ^~~~~~~~~~
   ../target/arm/tcg/translate.h:875:47: error: pasting "arg_" and "(" does not 
give a valid preprocessing token
     875 |     static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \
         |                                               ^~~~
   ../target/arm/tcg/translate-sve.c:4205:5: note: in expansion of macro 
'TRANS_FEAT'
    4205 |     TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, 
name##_zpzz_fns[a->esz], a)
         |     ^~~~~~~~~~
   ../target/arm/tcg/translate-sve.c:4249:1: note: in expansion of macro 
'DO_ZPZZ_FP'
    4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn)
         | ^~~~~~~~~~
   In file included from ../target/arm/tcg/translate-sve.c:100:
   libqemu-aarch64-softmmu.a.p/decode-sve.c.inc:1227:13: warning: 
'trans_FSCALE' used but never defined
    1227 | static bool trans_FSCALE(DisasContext *ctx, arg_FSCALE *a);
         |             ^~~~~~~~~~~~
   ../target/arm/tcg/translate-sve.c:4249:30: warning: 'sve_fscalbn_zpzz_fns' 
defined but not used [-Wunused-const-variable=]
    4249 | DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn)
         |                              ^~~~~~~~~~~
   ../target/arm/tcg/translate-sve.c:4201:42: note: in definition of macro 
'DO_ZPZZ_FP'
    4201 |     static gen_helper_gvec_4_ptr * const name##_zpzz_fns[4] = { \
         |                                          ^~~~

As a kludge, undefine it globally in <qemu/osdep.h>.

Suggested-by: Richard Henderson <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
  include/qemu/osdep.h | 6 ++++++
  1 file changed, 6 insertions(+)

Per IRC:
Reviewed-by: Richard Henderson <[email protected]>


Reply via email to