On Tue, Feb 2, 2021 at 8:19 AM Jeffrey Walton noloader@gmail.com wrote:
On Tue, Feb 2, 2021 at 8:00 AM Michael Weiser michael.weiser@gmx.de wrote:
llvm-as wouldn't recognize pmull instruction without adding -march=armv8-a+crypto flag at least with the version I use "3.8.1"
3.8.1 was released in 2017. It might not support recent aarch64 additions regarding .arch directive and friends.
I tried both .arch armv8-a+crypto and .arch_extension crypto and they worked only for gas while llvm-as produces errors for pmull using.
Is there any documentation for llvm-as? Best I could find is the minimal man page https://www.llvm.org/docs/CommandGuide/llvm-as.html, with no info whatsoever on, e.g., supported pseudoops.
I think my mentioning of llvm-as was a red herring. Looking at the output of clang -v, llvm-as isn't involved at all. This is supported by the man page stating that llvm-as accepts LLVM assembly and emits LLVM bytecode. It appears, clang implements the assembler internally and we'd need documentation on that. The clang man page even says so):
Clang always uses its integrated assembler unless you pass -fno-integrated-as. If you use -fno-integrated-as, then be sure you have an assembler that supports the ISA you are targeting. On OS X, GNU's AS may not support the ISA.
Clang's assembler is crippled on OS X. Apple's Clang still does not support pmull or crc instructions.
And I forgot to mention... On OS X, when using a port like MacPorts with GCC... You want to pass -Wa,-q to GCC so GCC uses Clang's integrated assembler. Without -Wa,-q, GCC will try to use GNU's AS.
Jeff