[PATCH 2/2] config/arm: add support for fallback march

Juraj Linkeš juraj.linkes at pantheon.tech
Mon Jan 22 12:04:08 CET 2024


On Sun, Jan 21, 2024 at 10:37 AM <pbhagavatula at marvell.com> wrote:
>
> From: Pavan Nikhilesh <pbhagavatula at marvell.com>
>
> Some ARM CPUs have specific march requirements and
> are not compatible with the supported march list.
> Add fallback march in case the mcpu and the march
> advertised in the part_number_config are not supported
> by the compiler.
>

It's not clear to me what this patch adds. We already have a fallback
mechanism and this basically does the same thing, but there's some
extra logic that's not clear to me. Looks like there are some extra
conditions around mcpu. In that case, all of the mcpu/march processing
should be done first and then we should do a common fallback.

> Example
>         mcpu = neoverse-n2
>         march = armv9-a
>         fallback_march = armv8.5-a
>
>         mcpu, march not supported
>         machine_args = ['-march=armv8.5-a']
>
>         mcpu, march, fallback_march not supported
>         least march supported = armv8-a
>
>         machine_args = ['-march=armv8-a']
>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula at marvell.com>
> ---
>  config/arm/meson.build | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/config/arm/meson.build b/config/arm/meson.build
> index 8c8cfccca0..2aaf78a81a 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -94,6 +94,7 @@ part_number_config_arm = {
>      '0xd49': {
>          'march': 'armv9-a',
>          'march_features': ['sve2'],
> +        'fallback_march': 'armv8.5-a',
>          'mcpu': 'neoverse-n2',
>          'flags': [
>              ['RTE_MACHINE', '"neoverse-n2"'],
> @@ -709,14 +710,14 @@ if update_flags
>
>      # probe supported archs and their features
>      candidate_march = ''
> +    supported_marchs = ['armv9-a', 'armv8.6-a', 'armv8.5-a', 'armv8.4-a',
> +                        'armv8.3-a', 'armv8.2-a', 'armv8.1-a', 'armv8-a']
>      if part_number_config.has_key('march')
>          if part_number_config.get('force_march', false) or support_mcpu
>              if cc.has_argument('-march=' +  part_number_config['march'])
>                  candidate_march = part_number_config['march']
>              endif
>          else
> -            supported_marchs = ['armv8.6-a', 'armv8.5-a', 'armv8.4-a', 'armv8.3-a',
> -                                'armv8.2-a', 'armv8.1-a', 'armv8-a']
>              check_compiler_support = false
>              foreach supported_march: supported_marchs
>                  if supported_march == part_number_config['march']
> @@ -733,6 +734,16 @@ if update_flags
>          endif
>
>          if candidate_march != part_number_config['march']
> +            if part_number_config.has_key('fallback_march') and not support_mcpu
> +                fallback_march = part_number_config['fallback_march']
> +                foreach supported_march: supported_marchs
> +                    if (supported_march == fallback_march
> +                        and cc.has_argument('-march=' + supported_march))
> +                        candidate_march = supported_march
> +                        break
> +                    endif
> +                endforeach
> +            endif
>              warning('Configuration march version is @0@, not supported.'
>                      .format(part_number_config['march']))
>              if candidate_march != ''
> --
> 2.25.1
>


More information about the dev mailing list