[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