Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Feb 2019 13:52:24 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        Steve Kargl <sgk@troutmask.apl.washington.edu>
Cc:        Dimitry Andric <dim@freebsd.org>, freebsd-toolchain@freebsd.org
Subject:   Re: clang broken on current? 
Message-ID:  <730656BB-9E5C-4144-A3DA-9CACECB0E4F5@yahoo.com>
In-Reply-To: <3357E34B-D91C-4197-86F0-9058C343CAC7@yahoo.com>
References:  <20190210050003.GA31811@troutmask.apl.washington.edu> <F26ACA01-4132-4020-8089-FB862347F37E@FreeBSD.org> <20190210184656.GD35569@troutmask.apl.washington.edu> <59881520-AB59-49C3-810F-C0676C3B037C@yahoo.com> <20190210193409.GA35990@troutmask.apl.washington.edu> <3357E34B-D91C-4197-86F0-9058C343CAC7@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On 2019-Feb-10, at 12:02, Mark Millard <marklmi at yahoo.com> wrote:



> On 2019-Feb-10, at 11:34, Steve Kargl <sgk at =
troutmask.apl.washington.edu> wrote:
>=20
>> Having set CFLAGS+=3D-march=3Dnative -mtune=3Dnative and trying to
>> force qt5-gui configure with -sse2 option, I have a config.summary
>> that contains (my in-line comments ***)
>>=20
>> Build type: freebsd-clang (i386, CPU features: <none>)
>>=20
>> *** What????? ***
>>=20
>> Compiler: clang 7.0.1
>> Configuration: compile_examples largefile rdrnd x86SimdAlways sharedr
>> rpath release c++11 c++14 concurrent dbus reduce_exports =
reduce_relocations
>> stl
>> Build options:
>> Mode ................................... release
>> Optimize release build for size ........ no
>> Building shared libraries .............. yes
>> Using C standard ....................... C11
>> Using C++ standard ..................... C++14
>> Using ccache ........................... no
>> Using gold linker ...................... no
>> Using precompiled headers .............. no
>> Using LTCG ............................. no
>> Target compiler supports:
>>   SSE .................................. <none>
>>=20
>> *** That's not good. ***
>>=20
>>   AVX .................................. <none>
>>   AVX512 ............................... <none>
>>   Other x86 ............................ RDRAND
>>   Intrinsics without -mXXX option ...... yes
>> Build parts ............................ libs tools
>=20
>=20
> /usr/ports/Mk/Uses/qt-dist.mk has:
>=20
> .    if ${ARCH} =3D=3D i386 && empty(MACHINE_CPU:Msse2)
> CONFIGURE_ARGS+=3D        -no-sse2
> .    endif
>=20
> This traces back to:
>=20
> /usr/src/share/mk/bsd.cpu.mk and its:
>=20
> . elif ${MACHINE_CPUARCH} =3D=3D "amd64"
> MACHINE_CPU =3D amd64 sse2 sse mmx
> . elif ${MACHINE_CPUARCH} =3D=3D "arm"
> MACHINE_CPU =3D arm
> . elif ${MACHINE_CPUARCH} =3D=3D "i386"
> MACHINE_CPU =3D i486
>=20
> and (I'll not list it all):
>=20
> ########## i386
> . if ${MACHINE_CPUARCH} =3D=3D "i386"
> .  if ${CPUTYPE} =3D=3D "znver1"
> MACHINE_CPU =3D avx2 avx sse42 sse41 ssse3 sse4a sse3 sse2 sse mmx k6 =
k5 i586
> .  elif ${CPUTYPE} =3D=3D "bdver4"
> MACHINE_CPU =3D xop avx2 avx sse42 sse41 ssse3 sse4a sse3 sse2 sse mmx =
k6 k5 i586
> .  elif ${CPUTYPE} =3D=3D "bdver3" || ${CPUTYPE} =3D=3D "bdver2" || \
>    ${CPUTYPE} =3D=3D "bdver1"
> MACHINE_CPU =3D xop avx sse42 sse41 ssse3 sse4a sse3 sse2 sse mmx k6 =
k5 i586
> .  elif ${CPUTYPE} =3D=3D "btver2"
> MACHINE_CPU =3D avx sse42 sse41 ssse3 sse4a sse3 sse2 sse mmx k6 k5 =
i586
> .  elif ${CPUTYPE} =3D=3D "btver1"
> MACHINE_CPU =3D ssse3 sse4a sse3 sse2 sse mmx k6 k5 i586
> .  elif ${CPUTYPE} =3D=3D "amdfam10"
> MACHINE_CPU =3D athlon-xp athlon k7 3dnow sse4a sse3 sse2 sse mmx k6 =
k5 i586
> .  elif ${CPUTYPE} =3D=3D "opteron-sse3" || ${CPUTYPE} =3D=3D =
"athlon64-sse3"
> MACHINE_CPU =3D athlon-xp athlon k7 3dnow sse3 sse2 sse mmx k6 k5 i586
> .  elif ${CPUTYPE} =3D=3D "opteron" || ${CPUTYPE} =3D=3D "athlon64" || =
\
>=20
> . . .
>=20
> and:
>=20
> ########## amd64
> . elif ${MACHINE_CPUARCH} =3D=3D "amd64"
> .  if ${CPUTYPE} =3D=3D "znver1"
> MACHINE_CPU =3D avx2 avx sse42 sse41 ssse3 sse4a sse3
> . . .
> .  endif
> MACHINE_CPU +=3D amd64 sse2 sse mmx
> ########## Mips
> . elif ${MACHINE_CPUARCH} =3D=3D "mips"
>=20
>=20
> So it looks like freeBSD expects CPUTYPE to be set for i368 in order
> to enable sse2 in MACHINE_CPU . Other things have a similar status
> for amd64 but amd64 always has sse2 .
>=20


[I see I switched which message that I was replying to. Sorry.]

Looks like when native works and clang is in use, and the context
is amd64 (or i386), CPUTYPE could be generated by the likes of
(example from my amd64 context):

# sh -c "clang -v -fsyntax-only -march=3Dnative -x c /dev/null 2>&1 | =
grep -e '-target-cpu' | sed -e 's|.*-target-cpu \([[:alnum:]]*\) =
.*|\1|'"
znver1

(I got that command from =
https://forums.freebsd.org/threads/make-conf-optimizations-optimizing-buil=
ds.63461/ .)

Trying such on a cortex-a57 (aarch64) got an empty-string result.
Same for cortex-a53 (aarch64) and cortex-a7 (armv7). (I do not have
a powerpc* available at the moment.)

=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?730656BB-9E5C-4144-A3DA-9CACECB0E4F5>