[PATCH] D36731: [ARM][AArch64] Cortex-A75 and Cortex-A55 tests
This revision was automatically updated to reflect the committed changes. Closed by commit rL311319: [ARM][AArch64] Cortex-A75 and Cortex-A55 tests (authored by sam_parker). Changed prior to commit: https://reviews.llvm.org/D36731?vs=111664=111940#toc Repository: rL LLVM https://reviews.llvm.org/D36731 Files: cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp cfe/trunk/test/Driver/aarch64-cpus.c cfe/trunk/test/Driver/aarch64-dotprod.c cfe/trunk/test/Driver/aarch64-ras.c cfe/trunk/test/Driver/aarch64-rcpc.s cfe/trunk/test/Driver/arm-cortex-cpus.c cfe/trunk/test/Driver/arm-dotprod.c cfe/trunk/test/Driver/arm-ras.c Index: cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp === --- cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp +++ cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp @@ -87,6 +87,15 @@ return true; } +static void DecodeARMFeaturesFromCPU(const Driver , StringRef CPU, + std::vector ) { + if (CPU != "generic") { +llvm::ARM::ArchKind ArchKind = llvm::ARM::parseCPUArch(CPU); +unsigned Extension = llvm::ARM::getDefaultExtensions(CPU, ArchKind); +llvm::ARM::getExtensionFeatures(Extension, Features); + } +} + // Check if -march is valid by checking if it can be canonicalised and parsed. // getARMArch is used here instead of just checking the -march value in order // to handle -march=native correctly. @@ -331,6 +340,8 @@ for (auto : HostFeatures) Features.push_back( Args.MakeArgString((F.second ? "+" : "-") + F.first())); + } else if (!CPUName.empty()) { +DecodeARMFeaturesFromCPU(D, CPUName, Features); } // Honor -mfpu=. ClangAs gives preference to -Wa,-mfpu=. Index: cfe/trunk/test/Driver/aarch64-rcpc.s === --- cfe/trunk/test/Driver/aarch64-rcpc.s +++ cfe/trunk/test/Driver/aarch64-rcpc.s @@ -0,0 +1,14 @@ +// RUN: %clang -### -target aarch64 %s 2>&1 | FileCheck --check-prefix=CHECK-NONE %s +// RUN: %clang -### -target aarch64 -march=armv8.1a %s 2>&1 | FileCheck --check-prefix=CHECK-NONE %s +// RUN: %clang -### -target aarch64 -march=armv8.2a %s 2>&1 | FileCheck --check-prefix=CHECK-NONE %s +// CHECK-NONE-NOT: "-target-feature" "+rcpc" + +// RUN: %clang -### -target aarch64 -march=armv8.2a+rcpc %s 2>&1 | FileCheck %s +// RUN: %clang -### -target aarch64 -march=armv8.3a+rcpc %s 2>&1 | FileCheck %s +// RUN: %clang -### -target aarch64 -mcpu=cortex-a75 %s 2>&1 | FileCheck %s +// RUN: %clang -### -target aarch64 -mcpu=cortex-a55 %s 2>&1 | FileCheck %s +// CHECK: "-target-feature" "+rcpc" + +// RUN: %clang -### -target aarch64 -mcpu=cortex-a75+norcpc %s 2>&1 | FileCheck --check-prefix=CHECK-NO-RCPC %s +// RUN: %clang -### -target aarch64 -mcpu=cortex-a55+norcpc %s 2>&1 | FileCheck --check-prefix=CHECK-NO-RCPC %s +// CHECK-NO-RCPC: "-rcpc" Index: cfe/trunk/test/Driver/arm-ras.c === --- cfe/trunk/test/Driver/arm-ras.c +++ cfe/trunk/test/Driver/arm-ras.c @@ -1,5 +1,7 @@ // RUN: %clang -target arm-none-none-eabi -march=armv8a+ras -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s // RUN: %clang -target arm-none-none-eabi -mcpu=generic+ras -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s +// RUN: %clang -target arm-none-none-eabi -mcpu=cortex-a75 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s +// RUN: %clang -target arm-none-none-eabi -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s // CHECK-RAS: "-target-feature" "+ras" // RUN: %clang -target arm-none-none-eabi -march=armv8a+noras -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-NORAS %s Index: cfe/trunk/test/Driver/aarch64-dotprod.c === --- cfe/trunk/test/Driver/aarch64-dotprod.c +++ cfe/trunk/test/Driver/aarch64-dotprod.c @@ -0,0 +1,11 @@ +// RUN: %clang -### -target aarch64 %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target aarch64 -march=armv8.1a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target aarch64 -march=armv8.2a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target aarch64 -march=armv8.3a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// CHECK-NONE-NOT: "-target-feature" "+dotprod" + +// RUN: %clang -### -target aarch64 -march=armv8.2a+dotprod %s 2>&1 | FileCheck %s +// RUN: %clang -### -target aarch64 -march=armv8.3a+dotprod %s 2>&1 | FileCheck %s +// RUN: %clang -### -target aarch64 -mcpu=cortex-a75 %s 2>&1 | FileCheck %s +// RUN: %clang -### -target aarch64 -mcpu=cortex-a55 %s 2>&1 | FileCheck %s +// CHECK: "+dotprod" Index: cfe/trunk/test/Driver/arm-dotprod.c === --- cfe/trunk/test/Driver/arm-dotprod.c +++ cfe/trunk/test/Driver/arm-dotprod.c @@ -0,0 +1,11 @@ +// RUN: %clang -### -target arm %s 2>&1
[PATCH] D36731: [ARM][AArch64] Cortex-A75 and Cortex-A55 tests
SjoerdMeijer accepted this revision. SjoerdMeijer added a comment. This revision is now accepted and ready to land. Looks good to me too. Two nits (no new review required): one is inlined, and the other one in the summary: ARMv8.2-A => Armv8.2-A :-/ Comment at: test/Driver/arm-dotprod.c:2 +// RUN: %clang -### -target arm %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target arm -march=armv8.1a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target arm -march=armv8.2a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE Perhaps also test "v8.0" and add -march=armv8a? https://reviews.llvm.org/D36731 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36731: [ARM][AArch64] Cortex-A75 and Cortex-A55 tests
rengolin added a comment. I'm happy with the patch, but I'll let @SjoerdMeijer approve. https://reviews.llvm.org/D36731 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36731: [ARM][AArch64] Cortex-A75 and Cortex-A55 tests
samparker updated this revision to Diff 111664. samparker added a comment. Reverted the default cpu v8.2-a to generic, I will update https://reviews.llvm.org/D36667 accordingly. Also fixed up the boolean issues. https://reviews.llvm.org/D36731 Files: lib/Driver/ToolChains/Arch/ARM.cpp test/Driver/aarch64-cpus.c test/Driver/aarch64-dotprod.c test/Driver/aarch64-ras.c test/Driver/aarch64-rcpc.s test/Driver/arm-cortex-cpus.c test/Driver/arm-dotprod.c test/Driver/arm-ras.c Index: test/Driver/arm-ras.c === --- test/Driver/arm-ras.c +++ test/Driver/arm-ras.c @@ -1,5 +1,7 @@ // RUN: %clang -target arm-none-none-eabi -march=armv8a+ras -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s // RUN: %clang -target arm-none-none-eabi -mcpu=generic+ras -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s +// RUN: %clang -target arm-none-none-eabi -mcpu=cortex-a75 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s +// RUN: %clang -target arm-none-none-eabi -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-RAS %s // CHECK-RAS: "-target-feature" "+ras" // RUN: %clang -target arm-none-none-eabi -march=armv8a+noras -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-NORAS %s Index: test/Driver/arm-dotprod.c === --- /dev/null +++ test/Driver/arm-dotprod.c @@ -0,0 +1,11 @@ +// RUN: %clang -### -target arm %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target arm -march=armv8.1a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target arm -march=armv8.2a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// RUN: %clang -### -target arm -march=armv8.3a %s 2>&1 | FileCheck %s --check-prefix=CHECK-NONE +// CHECK-NONE-NOT: "-target-feature" "+dotprod" + +// RUN: %clang -### -target arm -march=armv8.2a+dotprod %s 2>&1 | FileCheck %s +// RUN: %clang -### -target arm -march=armv8.3a+dotprod %s 2>&1 | FileCheck %s +// RUN: %clang -### -target arm -mcpu=cortex-a75 %s 2>&1 | FileCheck %s +// RUN: %clang -### -target arm -mcpu=cortex-a55 %s 2>&1 | FileCheck %s +// CHECK: "+dotprod" Index: test/Driver/arm-cortex-cpus.c === --- test/Driver/arm-cortex-cpus.c +++ test/Driver/arm-cortex-cpus.c @@ -507,6 +507,12 @@ // RUN: %clang -target arm -mcpu=exynos-m3 -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV8A %s // CHECK-CPUV8A: "-cc1"{{.*}} "-triple" "armv8-{{.*}} +// RUN: %clang -target arm -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV82A %s +// RUN: %clang -target arm -mcpu=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV82A %s +// RUN: %clang -target arm -mcpu=cortex-a55 -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV82A %s +// RUN: %clang -target arm -mcpu=cortex-a75 -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV82A %s +// CHECK-CPUV82A: "-cc1"{{.*}} "-triple" "armv8.2a-{{.*}} + // RUN: %clang -target armeb -mcpu=cortex-a32 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV8A %s // RUN: %clang -target armeb -mcpu=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV8A %s // RUN: %clang -target armeb -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV8A %s @@ -527,6 +533,12 @@ // RUN: %clang -target arm -mcpu=exynos-m3 -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV8A %s // CHECK-BE-CPUV8A: "-cc1"{{.*}} "-triple" "armebv8-{{.*}} +// RUN: %clang -target armeb -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV82A %s +// RUN: %clang -target armeb -mcpu=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV82A %s +// RUN: %clang -target arm -mcpu=cortex-a55 -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV82A %s +// RUN: %clang -target arm -mcpu=cortex-a75 -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE-CPUV82A %s +// CHECK-BE-CPUV82A: "-cc1"{{.*}} "-triple" "armebv8.2a-{{.*}} + // RUN: %clang -target arm-linux-gnueabi -mcpu=cortex-r52 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV8R %s // CHECK-CPUV8R: "-cc1"{{.*}} "-triple" "armv8r-{{.*}} @@ -550,6 +562,12 @@ // RUN: %clang -target arm -mcpu=exynos-m3 -mlittle-endian -mthumb -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CPUV8A-THUMB %s // CHECK-CPUV8A-THUMB: "-cc1"{{.*}} "-triple" "thumbv8-{{.*}} +// RUN: %clang -target arm -mcpu=cortex-a55 -mthumb -### -c %s 2>&1 | FileCheck -check-prefix=CHECKCPUV82A-THUMB %s +// RUN: %clang -target arm -mcpu=cortex-a75 -mthumb -### -c %s 2>&1 | FileCheck -check-prefix=CHECKCPUV82A-THUMB %s +// RUN: %clang -target arm -mcpu=cortex-a55 -mlittle-endian -mthumb -### -c %s 2>&1 | FileCheck -check-prefix=CHECKCPUV82A-THUMB %s +// RUN: %clang -target arm -mcpu=cortex-a75 -mlittle-endian -mthumb -### -c %s 2>&1 | FileCheck
[PATCH] D36731: [ARM][AArch64] Cortex-A75 and Cortex-A55 tests
samparker added a comment. Thanks guys, I will sort my logic out. Renato, the new Decode function is really just there to allow me to double check the target features. This is already possible with AArch64 and it just felt right to also be able to test ARM in the same way. I've renamed the title so others aren't mislead. cheers, sam Comment at: test/Driver/arm-cortex-cpus.c:261 // RUN: %clang -target arm -mlittle-endian -march=armv8.2-a -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-V82A %s -// CHECK-V82A: "-cc1"{{.*}} "-triple" "armv8.2{{.*}}" "-target-cpu" "generic" +// CHECK-V82A: "-cc1"{{.*}} "-triple" "armv8.2{{.*}}" "-target-cpu" "cortex-a55" SjoerdMeijer wrote: > Just checking: why has the default cpu changed from generic to cortex-a55, > and secondly, is that what we want? I was thinking about this on the way to work, and no I don't think it is what we want! I will change this. https://reviews.llvm.org/D36731 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits