Hi there,
I am Software product developer at Robert Bosch, Germany.
We are using armv8 64bit targets for our development. We have the need to do the cross compiling for our target on windows. I have compiled clang 5.0 from the vcs git. I have tried compiling the code with following options set:
clang.exe -target armv8 -fslp-vectorize-aggressive -mfpu=neon -mfloat-abi=hard -c test.cpp
As you can see in the options, we require neon feature as well as auto vectorizations on armv8 (64 bit). Can you tell me that is it true that clang supports neon and auto vectorizations with 64bit arm v8 architecture?
This setting says that neon is not in support, Can you explain why? As of my understanding, arm v8 is a 64 bit architecture!
clang.exe -target arm64 -fslp-vectorize-aggressive -mfpu=neon -mfloat-abi=hard -c test.cpp
Mit freundlichen Grüßen / Best regards
Zeeshan Haider
Chassis Systems Control, Engineering Software Coordination, Software Mainstream Management, Methods Group 1 (CC/ESM1)
Robert Bosch GmbH | Postfach 16 61 | 71226 Leonberg | GERMANY | www.bosch.com
Tel. +49(711)811-47379 | Fax +49(711)811-0 | Zeeshan...@de.bosch.com
Sitz: Stuttgart, Registergericht: Amtsgericht Stuttgart, HRB 14000;
Aufsichtsratsvorsitzender: Franz Fehrenbach; Geschäftsführung: Dr. Volkmar Denner,
Dr. Stefan Asenkerschbaumer, Dr. Rolf Bulander, Dr. Stefan Hartung, Dr. Markus Heyn, Dr. Dirk Hoheisel,
Christoph Kübel, Uwe Raschke, Dr. Werner Struth, Peter Tyroller
I'll have to make this quick as I need to leave the office to get on a
train. I hope my colleagues will be able to correct anything I've got
wrong.
I suggest taking a look at the set of command line options supported
by the aarch64 target. The armv8 target can mean m-profile without
ARM, r-profile or a-profile, floating point or neon is not uniform
across these targets.
For -target=aarch64 simd and hard precision floating point are the
default and assumed option, there is also no ABI support for
soft-floating point so the command line options are redundant. I
suggest just removing -mfpu and -mfloat-abi and you'll get the results
you want.
The -march and -mcpu options can give you some extra control, for
example --target=aarch64 -march=armv8-a+simd+fp.
Peter
On 3 February 2017 at 08:48, Haider Zeeshan (CC/ESM1) via llvm-dev
> _______________________________________________
> LLVM Developers mailing list
> llvm...@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Peter's advice is good (-mfpu and -mfloat-abi aren't needed). But also
note that "-target armv8" actually targets 32-bit ARM (v8 CPUs usually
support both modes).
You probably want to specify a full triple for the target, maybe
"-target aarch64-linux-gnu", otherwise the OS part might default to
Windows since that's where you're running. Clang doesnn't support
Windows on AArch64.
Cheers.
Tim.
On 3 February 2017 at 07:13, Haider Zeeshan (CC/ESM1)
<Zeeshan...@de.bosch.com> wrote:
> Being that said, can I be sure that for 64 bit arm architectures (e.g. arm cortex A57) the neon feature and auto-vectorization is supported as default by clang 5.0?
Yes, unless something has gone horribly wrong they will be. The
obvious quick test would be to compile something trivial like
void foo(float *arr) {
for (int i = 0; i < 128; ++i)
arr[i] += 1;
}
and look at the output.
Windows support for libc++ is very immature, and I would recommend disabling it on Windows. Work started on the port> Is it supported to be built with Visual studio or MinGW make files?only about a month ago and there are still a bunch of bugs and unimplemented features.Unfortunately building on Windows requires Clang since MSVC doesn't provide `#include_next`which is needed by libc++.I've only ever targeted Ninja on Windows but I assume CMake wouldbe able to target other generators as well. (Assuming Visual Studio build files allow using Clang).
Adding some people that know about libcxx and/or windows on arm.
Hi Saleem,
I would require cross compiled libcxx for the arm target. I have idea to cross compile it on Linux machine and use static libraries (eg. libcxx.a) in linking on windows with clang.
I am not sure it would work but I can try. Compiling libcxx on windows is a pain as far as I have tried.
@all: Do you think I can go with cross compiled standard c++ lib from gcc on windows with clang? I have no idea that gcc compiled binaries can be linked with clang compiler? I think that is possible as the backend of clang compiler is from gcc?
Yup, stdlibc++ works fine on ARM Linux. If you have them already
laying around, it'll avoid some extra work.
Or you can get the pre-release RC1 Clang+LLVM 4.0 image for ARM, which
already has libc++ / libc++abi and libunwind built in, though, as
shared libraries only.
http://llvm.org/pre-releases/4.0.0/
cheers,
--renato