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

Kevin Qin kevinqindev at gmail.com
Thu Jun 12 18:57:14 PDT 2014


Hi Eric,

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.


Regards,
Kevin Qin


2014-06-13 2:19 GMT+08:00 Eric Christopher <echristo at gmail.com>:

> 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
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>



-- 
Best Regards,

Kevin Qin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140613/e8b8269d/attachment.html>


More information about the cfe-commits mailing list