[llvm-dev] clang triple and clang target

Daniel Sanders via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 14 08:27:57 PDT 2016


> I need to see how they look, whether it is ARM, Mips or X86.

The Mips triples you're most likely to need are:

·         mips-linux-gnu – 32-bit big-endian on GNU/Linux

·         mipsel-linux-gnu – 32-bit little-endian on GNU/Linux

·         mips64-linux-gnu – 64-bit big-endian on GNU/Linux

·         mips64el-linux-gnu – 64-bit little-endian on GNU/Linux

I should mention that Mips has quite a few triple-related bugs but if you're just looking at assembly the one you're most likely to encounter is that mips-*/mipsel-* only work for 32-bit subtargets and mips64-*/mips64el-* only work for 64-bit subtargets. If you don't match them up correctly then you'll either get an assertion from the code generator or a crash. This isn't supposed to be the case but there's been some unfortunate misunderstandings about GNU triples and Clang triples (they're not quite the same thing) that are difficult to resolve.

From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Rail Shafigulin via llvm-dev
Sent: 12 March 2016 19:52
To: Joerg Sonnenberger; llvm-dev
Subject: Re: [llvm-dev] clang triple and clang target

I assume with target you mean the backend? Consider the x86 backend. It
supports 32bit and 64bit mode, with the GNU x32 ABI in between. There
are three different executable formats support (ELF, PE, MachO) with
different constraints. Some platforms require 32bit alignment of the
stack, others require 128bit alignment. The list goes on. The triple specifies
the combination of target, OS and potentially file format and sub-ABI.

Joerg
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

Thanks for the response. I was trying to generate assembly which would use vector instructions. I need to see how they look, whether it is ARM, Mips or X86. However for some reason clang would generate an error saying that a given target does not exist. Here is the command line I used:

clang -S test.c -o test.sse2.x86-64.s --target=x86-unknown-linux-eabi -mfloat-abi=hard -mcpu=x86-64 -mfpu=SSE2 -fslp-vectorize-aggressive -fslp-vectorize-aggressive -fslp-vectorize -fvectorize -fno-lax-vector-conversions

Here is the response I got:
clang: warning: argument unused during compilation: '-mfloat-abi=hard'
clang: warning: argument unused during compilation: '-mcpu=x86-64'
clang: warning: argument unused during compilation: '-mfpu=SSE2'
error: unknown target triple 'x86-unknown-linux-eabi', please use -triple or -arch


I tried every possible combination of --target I could think of but nothing worked. Would you mind helping me out?
Any help is appreciated.

--
Rail Shafigulin
Software Engineer
Esencia Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160314/e6e1cc27/attachment.html>


More information about the llvm-dev mailing list