[llvm] r277364 - [AArch64] Add support for Samsung Exynos M2 (NFC).
Eric Christopher via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 19 17:56:20 PDT 2016
Hi Evandro,
For the record this is not a "no functional change" as can be evidenced by
the fact that your tests would have not passed before you added this
support.
Please be more careful about your labeling in the future.
-eric
On Mon, Aug 1, 2016 at 11:47 AM Evandro Menezes via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: evandro
> Date: Mon Aug 1 13:39:45 2016
> New Revision: 277364
>
> URL: http://llvm.org/viewvc/llvm-project?rev=277364&view=rev
> Log:
> [AArch64] Add support for Samsung Exynos M2 (NFC).
>
> Modified:
> llvm/trunk/include/llvm/Support/AArch64TargetParser.def
> llvm/trunk/include/llvm/Support/ARMTargetParser.def
> llvm/trunk/lib/Target/AArch64/AArch64.td
> llvm/trunk/lib/Target/ARM/ARM.td
> llvm/trunk/test/CodeGen/AArch64/cpus.ll
> llvm/trunk/test/CodeGen/AArch64/remat.ll
> llvm/trunk/test/CodeGen/ARM/build-attributes.ll
> llvm/trunk/unittests/Support/TargetParserTest.cpp
>
> Modified: llvm/trunk/include/llvm/Support/AArch64TargetParser.def
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/AArch64TargetParser.def?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/AArch64TargetParser.def (original)
> +++ llvm/trunk/include/llvm/Support/AArch64TargetParser.def Mon Aug 1
> 13:39:45 2016
> @@ -65,6 +65,8 @@ AARCH64_CPU_NAME("cyclone", AK_ARMV8A, F
> (AArch64::AEK_SIMD | AArch64::AEK_CRYPTO))
> AARCH64_CPU_NAME("exynos-m1", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> (AArch64::AEK_SIMD | AArch64::AEK_CRC |
> AArch64::AEK_CRYPTO))
> +AARCH64_CPU_NAME("exynos-m2", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> + (AArch64::AEK_SIMD | AArch64::AEK_CRC |
> AArch64::AEK_CRYPTO))
> AARCH64_CPU_NAME("kryo", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> (AArch64::AEK_SIMD | AArch64::AEK_CRC |
> AArch64::AEK_CRYPTO))
> AARCH64_CPU_NAME("vulcan", AK_ARMV8_1A, FK_CRYPTO_NEON_FP_ARMV8, false,
>
> Modified: llvm/trunk/include/llvm/Support/ARMTargetParser.def
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ARMTargetParser.def?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/ARMTargetParser.def (original)
> +++ llvm/trunk/include/llvm/Support/ARMTargetParser.def Mon Aug 1
> 13:39:45 2016
> @@ -232,6 +232,7 @@ ARM_CPU_NAME("cortex-a72", AK_ARMV8A, FK
> ARM_CPU_NAME("cortex-a73", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
> ARM_CPU_NAME("cyclone", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
> ARM_CPU_NAME("exynos-m1", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
> +ARM_CPU_NAME("exynos-m2", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
> // Non-standard Arch names.
> ARM_CPU_NAME("iwmmxt", AK_IWMMXT, FK_NONE, true, ARM::AEK_NONE)
> ARM_CPU_NAME("xscale", AK_XSCALE, FK_NONE, true, ARM::AEK_NONE)
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64.td
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64.td?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64.td (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64.td Mon Aug 1 13:39:45 2016
> @@ -270,6 +270,7 @@ def : ProcessorModel<"cortex-a72", Corte
> def : ProcessorModel<"cortex-a73", CortexA57Model, [ProcA73]>;
> def : ProcessorModel<"cyclone", CycloneModel, [ProcCyclone]>;
> def : ProcessorModel<"exynos-m1", ExynosM1Model, [ProcExynosM1]>;
> +def : ProcessorModel<"exynos-m2", ExynosM1Model, [ProcExynosM1]>;
> def : ProcessorModel<"kryo", KryoModel, [ProcKryo]>;
> def : ProcessorModel<"vulcan", VulcanModel, [ProcVulcan]>;
>
>
> Modified: llvm/trunk/lib/Target/ARM/ARM.td
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARM.td?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARM.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARM.td Mon Aug 1 13:39:45 2016
> @@ -798,6 +798,12 @@ def : ProcNoItin<"exynos-m1",
> FeatureCrypto,
> FeatureCRC]>;
>
> +def : ProcNoItin<"exynos-m2", [ARMv8a,
> ProcExynosM1,
> + FeatureHWDiv,
> + FeatureHWDivARM,
> + FeatureCrypto,
> + FeatureCRC]>;
> +
>
> //===----------------------------------------------------------------------===//
> // Register File Description
>
> //===----------------------------------------------------------------------===//
>
> Modified: llvm/trunk/test/CodeGen/AArch64/cpus.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/cpus.ll?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AArch64/cpus.ll (original)
> +++ llvm/trunk/test/CodeGen/AArch64/cpus.ll Mon Aug 1 13:39:45 2016
> @@ -8,6 +8,7 @@
> ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a72 2>&1 |
> FileCheck %s
> ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a73 2>&1 |
> FileCheck %s
> ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=exynos-m1 2>&1 |
> FileCheck %s
> +; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=exynos-m2 2>&1 |
> FileCheck %s
> ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=kryo 2>&1 |
> FileCheck %s
> ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=vulcan 2>&1 |
> FileCheck %s
> ; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=invalidcpu 2>&1 |
> FileCheck %s --check-prefix=INVALID
>
> Modified: llvm/trunk/test/CodeGen/AArch64/remat.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/remat.ll?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AArch64/remat.ll (original)
> +++ llvm/trunk/test/CodeGen/AArch64/remat.ll Mon Aug 1 13:39:45 2016
> @@ -4,6 +4,7 @@
> ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a72 -o - %s |
> FileCheck %s
> ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a73 -o - %s |
> FileCheck %s
> ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=exynos-m1 -o - %s |
> FileCheck %s
> +; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=exynos-m2 -o - %s |
> FileCheck %s
> ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=kryo -o - %s | FileCheck %s
> ; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=vulcan -o - %s | FileCheck
> %s
> ; RUN: llc -mtriple=aarch64-linux-gnuabi -mattr=+custom-cheap-as-move -o
> - %s | FileCheck %s
>
> Modified: llvm/trunk/test/CodeGen/ARM/build-attributes.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/build-attributes.ll?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/build-attributes.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/build-attributes.ll Mon Aug 1 13:39:45
> 2016
> @@ -128,6 +128,9 @@
> ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1 | FileCheck
> %s --check-prefix=EXYNOS-M1
> ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1
> -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math
> -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s
> --check-prefix=EXYNOS-M1-FAST
> ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1
> -enable-sign-dependent-rounding-fp-math | FileCheck %s
> --check-prefix=DYN-ROUNDING
> +; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2 | FileCheck
> %s --check-prefix=EXYNOS-M2
> +; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2
> -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math
> -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s
> --check-prefix=EXYNOS-M1-FAST
> +; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2
> -enable-sign-dependent-rounding-fp-math | FileCheck %s
> --check-prefix=DYN-ROUNDING
> ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-unsafe-fp-math
> -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math
> -fp-contract=fast | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A-FAST
> ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi
> -enable-sign-dependent-rounding-fp-math | FileCheck %s
> --check-prefix=DYN-ROUNDING
> ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 |
> FileCheck %s --check-prefix=CORTEX-A7-CHECK
> @@ -160,6 +163,8 @@
> ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72
> -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
> ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m1 |
> FileCheck %s --check-prefix=NO-STRICT-ALIGN
> ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m1
> -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
> +; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m2 |
> FileCheck %s --check-prefix=NO-STRICT-ALIGN
> +; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m2
> -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
>
> ; ARMv7a
> ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 |
> FileCheck %s --check-prefix=NO-STRICT-ALIGN
> @@ -1446,7 +1451,7 @@
> ; EXYNOS-M1: .eabi_attribute 38, 1
> ; EXYNOS-M1: .eabi_attribute 42, 1
> ; EXYNOS-M1-NOT: .eabi_attribute 44
> -; EXYNOS-M15: .eabi_attribute 68, 3
> +; EXYNOS-M1: .eabi_attribute 68, 3
>
> ; EXYNOS-M1-FAST-NOT: .eabi_attribute 19
> ;; The exynos-m1 has the ARMv8 FP unit, which always flushes preserving
> sign.
> @@ -1455,6 +1460,29 @@
> ; EXYNOS-M1-FAST-NOT: .eabi_attribute 22
> ; EXYNOS-M1-FAST: .eabi_attribute 23, 1
>
> +; EXYNOS-M2: .cpu exynos-m2
> +; EXYNOS-M2: .eabi_attribute 6, 14
> +; EXYNOS-M2: .eabi_attribute 7, 65
> +; EXYNOS-M2: .eabi_attribute 8, 1
> +; EXYNOS-M2: .eabi_attribute 9, 2
> +; EXYNOS-M2: .fpu crypto-neon-fp-armv8
> +; EXYNOS-M2: .eabi_attribute 12, 3
> +; EXYNOS-M2-NOT: .eabi_attribute 19
> +;; We default to IEEE 754 compliance
> +; EXYNOS-M2: .eabi_attribute 20, 1
> +; EXYNOS-M2: .eabi_attribute 21, 1
> +; EXYNOS-M2-NOT: .eabi_attribute 22
> +; EXYNOS-M2: .eabi_attribute 23, 3
> +; EXYNOS-M2: .eabi_attribute 24, 1
> +; EXYNOS-M2: .eabi_attribute 25, 1
> +; EXYNOS-M2-NOT: .eabi_attribute 27
> +; EXYNOS-M2-NOT: .eabi_attribute 28
> +; EXYNOS-M2: .eabi_attribute 36, 1
> +; EXYNOS-M2: .eabi_attribute 38, 1
> +; EXYNOS-M2: .eabi_attribute 42, 1
> +; EXYNOS-M2-NOT: .eabi_attribute 44
> +; EXYNOS-M2: .eabi_attribute 68, 3
> +
> ; GENERIC-FPU-VFPV3-FP16: .fpu vfpv3-fp16
> ; GENERIC-FPU-VFPV3-D16-FP16: .fpu vfpv3-d16-fp16
> ; GENERIC-FPU-VFPV3XD: .fpu vfpv3xd
>
> Modified: llvm/trunk/unittests/Support/TargetParserTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/TargetParserTest.cpp?rev=277364&r1=277363&r2=277364&view=diff
>
> ==============================================================================
> --- llvm/trunk/unittests/Support/TargetParserTest.cpp (original)
> +++ llvm/trunk/unittests/Support/TargetParserTest.cpp Mon Aug 1 13:39:45
> 2016
> @@ -310,8 +310,8 @@ TEST(TargetParserTest, ARMparseCPUArch)
> "cortex-r5", "cortex-r7", "cortex-r8", "sc300",
> "cortex-m3", "cortex-m4", "cortex-m7", "cortex-a32",
> "cortex-a35", "cortex-a53", "cortex-a57", "cortex-a72",
> - "cortex-a73", "cyclone", "exynos-m1", "iwmmxt",
> - "xscale", "swift"};
> + "cortex-a73", "cyclone", "exynos-m1", "exynos-m2",
> + "iwmmxt", "xscale", "swift"};
>
> for (const auto &ARMCPUName : kARMCPUNames)
> EXPECT_TRUE(contains(CPU, ARMCPUName.Name)
> @@ -535,7 +535,8 @@ TEST(TargetParserTest, AArch64parseArchE
> TEST(TargetParserTest, AArch64parseCPUArch) {
> const char *CPU[] = {"cortex-a35", "cortex-a53", "cortex-a57",
> "cortex-a72", "cortex-a73", "cyclone",
> - "exynos-m1", "kryo", "vulcan"};
> + "exynos-m1", "exynos-m2", "kryo",
> + "vulcan"};
>
> for (const auto &AArch64CPUName : kAArch64CPUNames)
> EXPECT_TRUE(contains(CPU, AArch64CPUName.Name)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160920/b11794e2/attachment.html>
More information about the llvm-commits
mailing list