<div dir="ltr">On 8 February 2013 21:42, David Given <span dir="ltr"><<a href="mailto:dg@cowlark.com" target="_blank">dg@cowlark.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
The box itself is an Allwinner A10; armv7l. /proc/cpuinfo says it's got<br>
swp half thumb fastmult vfp edsp neon vfpv3.<br></blockquote><div><br></div><div style>Yes, it's a Cortex-A8.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I've been unable to find any values for CPU which are accepted (it just<br>
says 'unknown target CPU'. I've tried arm, armv7, armv7a, armv7l, arm7,<br>
armv4t... Any suggestions? Is there a way to get clang and llc to emit a<br>
list of what triples they support?<br></blockquote><div><br></div><div style>armv7 and armv7a should default to Cortex-A8, "arm" will default to 7TDMI.</div><div style><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Target: arm-unknown-linux-gnueabihf<br></blockquote><div><br></div><div style>Auto-detected wrongly (as expected),</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
"/usr/bin/clang" -cc1 -triple armv4t-unknown-linux-gnueabihf -S<br></blockquote><div><br></div><div style>Defaulted to armv4t == ARM7TDMI.</div><div style><br></div><div style><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I'm particularly curious about the way that the triple passed into the<br>
compiler backend starts 'armv4t' when it's rejected as a CPU type if I<br>
specify it manually.<br></blockquote><div><br></div><div style>What does: 'clang -v -mcpu=cortex-a8 -S -O3 test.c' prints as a target?</div><div><br></div><div style>Just need to do that on the latest Clang, and only paste the target line.</div>
<div style><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">But this *should* all be auto-detected, right?</blockquote>
<div><br></div><div style>Should, but it isn't. Unfortunately, auto-detection in the ARM world is not as simple as in the Intel world, and it's just not implemented.</div><div style><br></div><div style>If your compiler's name is "armv7a-unknown-linux-gnueabihf-clang", you might get it right, since that part is implemented and should guess cortex-a8 (not because it'll detect your CPU, but because it's hard-coded armv7 -> A8).</div>
<div style><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">If I'm using the JIT, I<br>

shouldn't need platform-specific knowledge to set up the code generator?<br></blockquote><div><br></div><div style>You should. The IR (which the execution engine runs) is not platform independent. The front-end has to make some assumptions when generating IR, depending on the platform, so you need to generate the correct code to begin with.</div>
<div style><br></div><div style>Also, as Amara said, you can set hard-float manually, in the execution engine, but if your CPU is still v4, I don't think it'll work. You should make sure you got a v7, than force hard-float, and NEON, and then you'll get the execution correct. However, if your command line contains "-mcpu=cortex-a8", you should get all that for free when you build your Target with the triple above.</div>
<div style><br></div><div style>cheers,</div><div style>--renato</div></div></div></div>