r210625 - [AArch64] Add default features for CPUs on AArch64 target.

Eric Christopher echristo at gmail.com
Thu Jun 12 11:19:28 PDT 2014


Depressing.

What's wrong with using -march?

-eric

On Tue, Jun 10, 2014 at 6:42 PM, Kevin Qin <Kevin.Qin at arm.com> wrote:
> Author: kevinqin
> Date: Tue Jun 10 20:42:16 2014
> New Revision: 210625
>
> URL: http://llvm.org/viewvc/llvm-project?rev=210625&view=rev
> Log:
> [AArch64] Add default features for CPUs on AArch64 target.
>
> For ARM target, we can use CRYPTO and CRC features if we select
> cortex-a57 by '-mcpu', but for AArch64 target, it doesn't work
> unless adding with '-mfpu=crypto-neon-fp-armv8'. To keep consistency
> between front-end and back-end and get end-users more easier to use,
> we'd better add default feature for CPUs on AArch64 target as well.
>
> Modified:
>     cfe/trunk/lib/Basic/Targets.cpp
>     cfe/trunk/test/Preprocessor/aarch64-target-features.c
>
> Modified: cfe/trunk/lib/Basic/Targets.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=210625&r1=210624&r2=210625&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Basic/Targets.cpp (original)
> +++ cfe/trunk/lib/Basic/Targets.cpp Tue Jun 10 20:42:16 2014
> @@ -4243,6 +4243,7 @@ class AArch64TargetInfo : public TargetI
>      NeonMode
>    };
>
> +  std::string CPU;
>    unsigned FPU;
>    unsigned CRC;
>    unsigned Crypto;
> @@ -4302,6 +4303,8 @@ public:
>                          .Cases("cortex-a53", "cortex-a57", true)
>                          .Case("cyclone", true)
>                          .Default(false);
> +    if (CPUKnown)
> +      CPU = Name;
>      return CPUKnown;
>    }
>
> @@ -4373,6 +4376,23 @@ public:
>        (Feature == "neon" && FPU == NeonMode);
>    }
>
> +  void getDefaultFeatures(llvm::StringMap<bool> &Features) const override {
> +
> +  if (CPU == "cyclone") {
> +    Features["fp-armv8"] = true;
> +    Features["neon"] = true;
> +    Features["crypto"] = true;
> +    Features["crc"] = true;
> +    Features["zcm"] = true;
> +    Features["zcz"] = true;
> +  } else if (CPU == "cortex-a53" || CPU == "cortex-a57") {
> +    Features["fp-armv8"] = true;
> +    Features["neon"] = true;
> +    Features["crypto"] = true;
> +    Features["crc"] = true;
> +  }
> +}
> +
>    bool handleTargetFeatures(std::vector<std::string> &Features,
>                              DiagnosticsEngine &Diags) override {
>      FPU = FPUMode;
>
> Modified: cfe/trunk/test/Preprocessor/aarch64-target-features.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/aarch64-target-features.c?rev=210625&r1=210624&r2=210625&view=diff
> ==============================================================================
> --- cfe/trunk/test/Preprocessor/aarch64-target-features.c (original)
> +++ cfe/trunk/test/Preprocessor/aarch64-target-features.c Tue Jun 10 20:42:16 2014
> @@ -49,3 +49,13 @@
>  // RUN: %clang -target arm64-none-linux-gnu -mfpu=neon -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-NEON %s
>  // CHECK-NEON: __ARM_NEON 1
>  // CHECK-NEON: __ARM_NEON_FP 0xe
> +
> +// RUN: %clang -target aarch64-none-linux-gnu -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FEATURE %s
> +// RUN: %clang -target aarch64-none-linux-gnu -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FEATURE %s
> +// RUN: %clang -target aarch64-none-linux-gnu -mcpu=cyclone -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FEATURE %s
> +// CHECK-FEATURE: __ARM_FEATURE_CRC32 1
> +// CHECK-FEATURE: __ARM_FEATURE_CRYPTO 1
> +// CHECK-FEATURE: __ARM_NEON 1
> +// CHECK-FEATURE: __ARM_NEON_FP 0xe
> +
> +
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list