<div dir="ltr">Hi Eric,<div><br></div><div>As far as I know, -march is useless for AArch64 as there is only one arch available at moment. Also, features are bound to CPUs, not architecture. For AArch64, features like neon, crypto and crc are all optional.</div>
<div><br></div><div><br></div><div>Regards,</div><div>Kevin Qin</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-13 2:19 GMT+08:00 Eric Christopher <span dir="ltr"><<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Depressing.<br>
<br>
What's wrong with using -march?<br>
<span class="HOEnZb"><font color="#888888"><br>
-eric<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Tue, Jun 10, 2014 at 6:42 PM, Kevin Qin <<a href="mailto:Kevin.Qin@arm.com">Kevin.Qin@arm.com</a>> wrote:<br>
> Author: kevinqin<br>
> Date: Tue Jun 10 20:42:16 2014<br>
> New Revision: 210625<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=210625&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=210625&view=rev</a><br>
> Log:<br>
> [AArch64] Add default features for CPUs on AArch64 target.<br>
><br>
> For ARM target, we can use CRYPTO and CRC features if we select<br>
> cortex-a57 by '-mcpu', but for AArch64 target, it doesn't work<br>
> unless adding with '-mfpu=crypto-neon-fp-armv8'. To keep consistency<br>
> between front-end and back-end and get end-users more easier to use,<br>
> we'd better add default feature for CPUs on AArch64 target as well.<br>
><br>
> Modified:<br>
>     cfe/trunk/lib/Basic/Targets.cpp<br>
>     cfe/trunk/test/Preprocessor/aarch64-target-features.c<br>
><br>
> Modified: cfe/trunk/lib/Basic/Targets.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=210625&r1=210624&r2=210625&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=210625&r1=210624&r2=210625&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/lib/Basic/Targets.cpp (original)<br>
> +++ cfe/trunk/lib/Basic/Targets.cpp Tue Jun 10 20:42:16 2014<br>
> @@ -4243,6 +4243,7 @@ class AArch64TargetInfo : public TargetI<br>
>      NeonMode<br>
>    };<br>
><br>
> +  std::string CPU;<br>
>    unsigned FPU;<br>
>    unsigned CRC;<br>
>    unsigned Crypto;<br>
> @@ -4302,6 +4303,8 @@ public:<br>
>                          .Cases("cortex-a53", "cortex-a57", true)<br>
>                          .Case("cyclone", true)<br>
>                          .Default(false);<br>
> +    if (CPUKnown)<br>
> +      CPU = Name;<br>
>      return CPUKnown;<br>
>    }<br>
><br>
> @@ -4373,6 +4376,23 @@ public:<br>
>        (Feature == "neon" && FPU == NeonMode);<br>
>    }<br>
><br>
> +  void getDefaultFeatures(llvm::StringMap<bool> &Features) const override {<br>
> +<br>
> +  if (CPU == "cyclone") {<br>
> +    Features["fp-armv8"] = true;<br>
> +    Features["neon"] = true;<br>
> +    Features["crypto"] = true;<br>
> +    Features["crc"] = true;<br>
> +    Features["zcm"] = true;<br>
> +    Features["zcz"] = true;<br>
> +  } else if (CPU == "cortex-a53" || CPU == "cortex-a57") {<br>
> +    Features["fp-armv8"] = true;<br>
> +    Features["neon"] = true;<br>
> +    Features["crypto"] = true;<br>
> +    Features["crc"] = true;<br>
> +  }<br>
> +}<br>
> +<br>
>    bool handleTargetFeatures(std::vector<std::string> &Features,<br>
>                              DiagnosticsEngine &Diags) override {<br>
>      FPU = FPUMode;<br>
><br>
> Modified: cfe/trunk/test/Preprocessor/aarch64-target-features.c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/aarch64-target-features.c?rev=210625&r1=210624&r2=210625&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/aarch64-target-features.c?rev=210625&r1=210624&r2=210625&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/test/Preprocessor/aarch64-target-features.c (original)<br>
> +++ cfe/trunk/test/Preprocessor/aarch64-target-features.c Tue Jun 10 20:42:16 2014<br>
> @@ -49,3 +49,13 @@<br>
>  // RUN: %clang -target arm64-none-linux-gnu -mfpu=neon -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-NEON %s<br>
>  // CHECK-NEON: __ARM_NEON 1<br>
>  // CHECK-NEON: __ARM_NEON_FP 0xe<br>
> +<br>
> +// RUN: %clang -target aarch64-none-linux-gnu -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FEATURE %s<br>
> +// RUN: %clang -target aarch64-none-linux-gnu -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FEATURE %s<br>
> +// RUN: %clang -target aarch64-none-linux-gnu -mcpu=cyclone -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FEATURE %s<br>
> +// CHECK-FEATURE: __ARM_FEATURE_CRC32 1<br>
> +// CHECK-FEATURE: __ARM_FEATURE_CRYPTO 1<br>
> +// CHECK-FEATURE: __ARM_NEON 1<br>
> +// CHECK-FEATURE: __ARM_NEON_FP 0xe<br>
> +<br>
> +<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Best Regards,<div><br></div><div>Kevin Qin</div></div>
</div>