[llvm-dev] LLVM issuse:AArch64 TargetParser
Renato Golin via llvm-dev
llvm-dev at lists.llvm.org
Wed May 18 05:31:52 PDT 2016
On 18 May 2016 at 13:21, James Molloy via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> A64 versus A32/T32 code generation is controlled by the -target option which
> I don’t believe is under discussion here.
Indeed, that is the case. The -target option picks the back-end, and
-march chooses the support level, same as GCC.
Just to be clear:
"-target armv8" implies AArch32, so you can't use "-march=aarch64" with it.
"-target aarch64" is strictly AArch64, so you can't use
"-march=armv7" or lower with it.
However, the first case above is an *aberration* and the recommended usage is:
"-target arm -march=armv8a" which will select the "ARMv8A AArch32
ARM instruction set".
"-target aarch64 -march=armv8a" which will select the "ARMv8A
AArch64 instruction set".
Also, please do *not* use:
"-target thumb -march=armv8a", even though it works today in LLVM,
it's another aberration.
"-target arm -march=armv8a -mthumb". This will correctly choose the
"ARMv8A AArch32 Thumb2 instruction set".
More information about the llvm-dev