Hi all, On Tue, Feb 02, 2021 at 08:23:39AM -0500, Jeffrey Walton wrote:
> > > 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 I've downloaded binary builds of clang for aarch64 from https://releases.llvm.org/download.html. 3.9.1 was the oldest prebuilt toolchain I could find there and 11.0.0 the most recent. As expected, a one-liner with just a pmull throws errors with gas and the two clangs: $ cat t.s pmull v2.1q, v2.1d, v1.1d $ aarch64-unknown-linux-gnu-as -v -o t.o t.s GNU assembler version 2.35.1 (aarch64-unknown-linux-gnu) using BFD version (Gentoo 2.35.1 p2) 2.35.1 t.s: Assembler messages: t.s:1: Error: selected processor does not support `pmull v2.1q,v2.1d,v1.1d' $ clang+llvm-3.9.1-aarch64-linux-gnu/bin/clang -c -o t.o t.s t.s:1:1: error: instruction requires: crypto pmull v2.1q, v2.1d, v1.1d ^ $ clang+llvm-11.0.0-aarch64-linux-gnu/bin/clang -c -o t.o t.s t.s:1:1: error: instruction requires: aes pmull v2.1q, v2.1d, v1.1d ^ This can be solved for all three with the -march option: $ aarch64-unknown-linux-gnu-as -o t.o t.s -march=armv8-a+crypto $ clang+llvm-3.9.1-aarch64-linux-gnu/bin/clang -c -o t.o t.s -march=armv8-a+crypto $ clang+llvm-11.0.0-aarch64-linux-gnu/bin/clang -c -o t.o t.s -march=armv8-a+crypto $ They also all support the .arch directive: $ cat t.s .arch armv8-a+crypto pmull v2.1q, v2.1d, v1.1d $ aarch64-unknown-linux-gnu-as -o t.o t.s $ clang+llvm-3.9.1-aarch64-linux-gnu/bin/clang -c -o t.o t.s $ clang+llvm-11.0.0-aarch64-linux-gnu/bin/clang -c -o t.o t.s $ clang does not, however, support the .arch_extension directive. 3.9.1 complains about the directive, 11.0.0 seems to silently ignore it: $ cat t.s .arch_extension crypto pmull v2.1q, v2.1d, v1.1d $ aarch64-unknown-linux-gnu-as -o t.o t.s $ clang+llvm-3.9.1-aarch64-linux-gnu/bin/clang -c -o t.o t.s t.s:1:1: error: unknown directive .arch_extension crypto ^ t.s:2:1: error: instruction requires: crypto pmull v2.1q, v2.1d, v1.1d ^ $ clang+llvm-11.0.0-aarch64-linux-gnu/bin/clang -c -o t.o t.s t.s:2:1: error: instruction requires: aes pmull v2.1q, v2.1d, v1.1d ^ -- HTH, Michael _______________________________________________ nettle-bugs mailing list [email protected] http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs
