Quoting Chuck Atkins (2018-09-24 10:34:22)
> Hi Dylan (and others?)
> 
> SWR has some checks to try to determine which compiler option is needed to
> enable a given instruction set.  The way this is implemented in Meson seems to
> be incorrect currently.  For example, the attempt to detect the correct
> compiler option to enable the AVX512 KNL instruction support:
> 
> swr_knl_args = cpp.first_supported_argument(
>   '-target-cpu=mic-knl', '-march=knl', '-xMIC-AVX512',
>   prefix : '''
>     #if !defined(__AVX512F__) || !defined(__AVX512ER__)
>     # error
>     #endif ''',
> )
> 
> I see a slew of warnings when I enable swr for "prefix" being an unsupported
> option to first_supported_argument.  Looking in the implementation, it seems
> that no keyword arguments are actually considered at all.  This ends up 
> working
> as-is for gcc since it errors out for arguments that are not supported.  Other
> compilers (intel icc, for instance) just display a warning for unsupported
> arguments and ignore them.  Which ends up with the first option always
> returning as the valid one, even though it's not.

This is a meson bug, I'll look into that.

> So is there a way to pass code to compile to determine which argument is valid
> or correct or do I need to create a custom function for this?
> 
> - Chuck

I was just looking at this Friday. I don't think there's a builtin, I think that
we'll have to do something like:

swr_skx_args = []
foreach a : ['-target-cpu=mic-knl', '-march=knl', '-xMIC-AVX512'],
  if ssw_skx_args == []
    if cpp.compiles('''
        #if !defined(__AVX512F__) || !defined(__AVX512ER__)
        # error
        #endif ''',
        args : a,
        name : 'SKX with flag @0@'.format(a))
      _found = true
      sw_skx_args = a
    endif
 endif
endforeach

Dylan

Attachment: signature.asc
Description: signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to