Hi Thomas,

On 13/02/18 10:24, Thomas Preudhomme wrote:

Due to there being no multilib mapping for Armv8-R, default multilib
targeting -march=armv4t with softfloat floating-point arithmetic is
being used. This patch maps it instead to the existing Armv7 multilibs.
Note that since there is no single-precision multilib compatible with
R profile, -march=armv8-r+fp.sp is mapped to -march=armv7 ie. Armv7
with softfloat floating-point.

Thanks for doing this.

Changelog entry is as follows:

*** gcc/ChangeLog ***

2018-02-12  Thomas Preud'homme <thomas.preudho...@arm.com>

        * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.


Ran -print-multi-directory for all combinations of extensions one can
pass to -march=armv8-r (including no extension but only considering a
single ordering of extension). All gave the expected result. Details in

Is this ok for stage4?

Best regards,


Appendix: output of -print-multi-directory for all extensions available
to -march=armv8-r

Can you please add a representative subset of these as tests to 
That way we can have the peace of mind that they have sane mappings as we go 

<snip, thanks for the results>

diff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib
--- a/gcc/config/arm/t-multilib
+++ b/gcc/config/arm/t-multilib
@@ -70,6 +70,7 @@ v8_a_simd_variants    := $(call all_feat_combs, simd crypto)
 v8_1_a_simd_variants   := $(call all_feat_combs, simd crypto)
 v8_2_a_simd_variants   := $(call all_feat_combs, simd fp16 fp16fml crypto 
 v8_4_a_simd_variants   := $(call all_feat_combs, simd fp16 crypto)
+v8_r_nosimd_variants   := $(call all_feat_combs, crc fp.sp)
ifneq (,$(HAS_APROFILE))
 include $(srcdir)/config/arm/t-aprofile
@@ -105,6 +106,20 @@ MULTILIB_MATCHES   += march?armv7+fp=march?armv7-r+fp+idiv
MULTILIB_MATCHES += $(foreach ARCH, $(all_early_arch), \
+# Armv8-r: map down onto common v7 code.

Please use Armv8-R.

 +# Note 1: there is no single-precision armv7 multilib so +fp.sp is mapped
+# down to softfloat armv7 (second MULTILIB_MATCHES).
+# Note 2: +fp.sp being a subset of +simd and +crypto, there is no need to
+# consider the combination of +fp.sp with a simd extension since matching
+# is run after canonicalization
+MULTILIB_MATCHES       += march?armv7=march?armv8-r
+MULTILIB_MATCHES       += $(foreach ARCH, $(v8_r_nosimd_variants), \
+                            march?armv7=march?armv8-r$(ARCH))
+MULTILIB_MATCHES       += $(foreach ARCH,+simd +crypto, \
+                            march?armv7+fp=march?armv8-r$(ARCH) \
+                            march?armv7+fp=march?armv8-r+crc$(ARCH))
ifeq (,$(HAS_APROFILE))
 # Map all v7-a

Reply via email to