On Sun, Jan 21, 2024 at 10:37 AM <pbhagavat...@marvell.com> wrote: > > From: Pavan Nikhilesh <pbhagavat...@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 <pbhagavat...@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 >