<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">If nothing else, this strikes me as something that should really be multiple district patches. There’s multiple things going on here and I’m not sure what’s what.<div><br><div><div>On Sep 10, 2013, at 1:58 PM, Bob Wilson <<a href="mailto:bob.wilson@apple.com">bob.wilson@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">[ adding Jim Grosbach, who may have input on the architectures used in triples ]<br><br>On Sep 3, 2013, at 4:56 AM, Renato Golin <<a href="mailto:renato.golin@linaro.org">renato.golin@linaro.org</a>> wrote:<br><br><blockquote type="cite">Hi doug.gregor,<br><br>This is a cleanup of the ARMv7A CPUs and their options and features.<br><br>- Adding Cortex-A12 and A5 and making sure all cores are in all lists. (I'm not sure I got them all).<br>- Changing "v7" to "v7a", "7" to "7A" on v7A CPUs.<br>- Forced "vfp3" to A8/A9, added "vfp4" for A15 and fixed the NEON feature check<br>- Adding "armv7l" Arch, that seems popular with Linux distros<br><br>I'm not sure how to add tests for all these things, pointers welcome!<br><br><a href="http://llvm-reviews.chandlerc.com/D1579">http://llvm-reviews.chandlerc.com/D1579</a><br><br>Files:<br>lib/Basic/Targets.cpp<br>lib/Driver/ToolChain.cpp<br>lib/Driver/ToolChains.cpp<br>lib/Driver/Tools.cpp<br>test/Driver/arch.c<br><br>Index: lib/Driver/ToolChain.cpp<br>===================================================================<br>--- lib/Driver/ToolChain.cpp<br>+++ lib/Driver/ToolChain.cpp<br>@@ -237,8 +237,8 @@<br>   .Cases("arm1136j-s",  "arm1136jf-s",  "arm1176jz-s", "v6")<br>   .Cases("arm1176jzf-s",  "mpcorenovfp",  "mpcore", "v6")<br>   .Cases("arm1156t2-s",  "arm1156t2f-s", "v6t2")<br>-    .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7")<br>-    .Cases("cortex-a9", "cortex-a15", "v7")<br>+    .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7a")<br>+    .Cases("cortex-a9", "cortex-a12", "cortex-a15", "v7a")<br></blockquote><br>This is going to change the triples to use "armv7a" instead of "armv7".  What have you done to test that?  How important is it to make that change?  We could just continue to use "armv7" in place of "armv7a”.<br></div></blockquote><div><br></div>+1. I don’t follow why this is a good change to make. If it’s just nomenclature tidy-up, I really don’t think it’s worth it. Is there more too it than that?</div><div><br></div><div><blockquote type="cite" dir="auto"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br><blockquote type="cite">   .Case("cortex-r5", "v7r")<br>   .Case("cortex-m0", "v6m")<br>   .Case("cortex-m3", "v7m")<br>Index: lib/Driver/ToolChains.cpp<br>===================================================================<br>--- lib/Driver/ToolChains.cpp<br>+++ lib/Driver/ToolChains.cpp<br>@@ -112,6 +112,7 @@<br>   .Cases("armv7k", "armv7-k", "armv7k")<br>   .Cases("armv7m", "armv7-m", "armv7m")<br>   .Cases("armv7s", "armv7-s", "armv7s")<br>+    .Cases("armv7l", "armv7-l", "armv7l")<br></blockquote><br>What is armv7l for?  I see one place in lib/Driver/ToolChain.cpp where it is mapped to a cortex-a8 processor, but that doesn't make sense to me.<br><br></div></blockquote><div><br></div><div>First I’ve ever heard of it, too. I have no philosophical objection, really, but would like a bit more clarity on what it actually is if that’s possible.</div><br><blockquote type="cite" dir="auto"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite">   .Cases("armv8", "armv8a", "armv8-a", "armv8")<br>   .Default(0);<br>}<br>@@ -124,7 +125,9 @@<br>   .Case("xscale", "xscale")<br>   .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "arm1176jzf-s", "armv6")<br>   .Case("cortex-m0", "armv6m")<br>-    .Cases("cortex-a8", "cortex-r4", "cortex-a9", "cortex-a15", "armv7")<br>+    .Cases("cortex-a5", "cortex-a7", "cortex-a8", "armv7a")<br>+    .Cases("cortex-a9", "cortex-a12", "cortex-a15", "armv7a")<br></blockquote><br>This will break stuff.  It is only used by Darwin::getDarwinArchName, and Darwin does not ever expect to see an "armv7a" architecture.<br></div></blockquote><br><div>+1</div><br><blockquote type="cite" dir="auto"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite">+    .Case("cortex-r4", "armv7r")<br>   .Case("cortex-a9-mp", "armv7f")<br>   .Case("cortex-m3", "armv7m")<br>   .Case("cortex-m4", "armv7em")<br>Index: lib/Driver/Tools.cpp<br>===================================================================<br>--- lib/Driver/Tools.cpp<br>+++ lib/Driver/Tools.cpp<br>@@ -458,8 +458,8 @@<br>   .Cases("arm1136j-s",  "arm1136jf-s",  "arm1176jz-s", "v6")<br>   .Cases("arm1176jzf-s",  "mpcorenovfp",  "mpcore", "v6")<br>   .Cases("arm1156t2-s",  "arm1156t2f-s", "v6t2")<br>-    .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7")<br>-    .Cases("cortex-a9", "cortex-a15", "v7")<br>+    .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7a")<br>+    .Cases("cortex-a9", "cortex-a12", "cortex-a15", "v7a")<br></blockquote><br>Aside from adding cortex-a12, this shouldn't change anything.  The result of that function is either only compared to the "v7" prefix or handled in the StringSwitch at the end of getARMTargetCPU, where "v7" and "v7a" are treated the same.<br><br><blockquote type="cite">   .Case("cortex-r5", "v7r")<br>   .Case("cortex-m0", "v6m")<br>   .Case("cortex-m3", "v7m")<br>Index: test/Driver/arch.c<br>===================================================================<br>--- test/Driver/arch.c<br>+++ test/Driver/arch.c<br>@@ -1,5 +1,5 @@<br>// RUN: %clang -target armv7a-unknown-linux-gnueabi -S -emit-llvm %s -o - | FileCheck %s --check-prefix=V7<br>// RUN: %clang -target armv8a-unknown-linux-gnueabi -S -emit-llvm %s -o - | FileCheck %s --check-prefix=V8<br><br></blockquote></div></blockquote><div><br></div><div>The backend tools (llc, et. al.) also make the “v7 == v7a” triple simplification. If that’s changing in the front end, it should change in the backend too.</div><div><br></div><br><blockquote type="cite" dir="auto"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite">-// V7: target triple = "armv7-unknown-linux-gnueabi"<br>+// V7: target triple = "armv7a-unknown-linux-gnueabi"<br>// V8: target triple = "armv8-unknown-linux-gnueabi"<br><D1579.1.patch>_______________________________________________<br>cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</blockquote></div></blockquote></div><br></div></body></html>