[llvm] r350953 - [AArch64] Create feature set for Exynos M4

Matt Morehouse via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 11 13:52:26 PST 2019


Hi Evandro,

This broke
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/28124:

Command Output (stderr):
--
/b/sanitizer-x86_64-linux-fast/build/llvm/test/CodeGen/ARM/build-attributes.ll:1626:14:
error: EXYNOS-M4: expected string not found in input
; EXYNOS-M4: .eabi_attribute 12, 4
             ^
<stdin>:10:2: note: scanning from here
 .eabi_attribute 12, 3 @ Tag_Advanced_SIMD_arch
 ^

Please take a look.

On Fri, Jan 11, 2019 at 10:58 AM Evandro Menezes via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: evandro
> Date: Fri Jan 11 10:54:25 2019
> New Revision: 350953
>
> URL: http://llvm.org/viewvc/llvm-project?rev=350953&view=rev
> Log:
> [AArch64] Create feature set for Exynos M4
>
> Complete the feature set for Exynos M4 and update test cases.
>
> 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/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=350953&r1=350952&r2=350953&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/AArch64TargetParser.def (original)
> +++ llvm/trunk/include/llvm/Support/AArch64TargetParser.def Fri Jan 11
> 10:54:25 2019
> @@ -102,8 +102,8 @@ AARCH64_CPU_NAME("exynos-m2", ARMV8A, FK
>                  (AArch64::AEK_CRC))
>  AARCH64_CPU_NAME("exynos-m3", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
>                  (AArch64::AEK_CRC))
> -AARCH64_CPU_NAME("exynos-m4", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> -                (AArch64::AEK_CRC))
> +AARCH64_CPU_NAME("exynos-m4", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
> +                (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD))
>  AARCH64_CPU_NAME("falkor", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
>                  (AArch64::AEK_CRC | AArch64::AEK_RDM))
>  AARCH64_CPU_NAME("saphira", ARMV8_3A, 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=350953&r1=350952&r2=350953&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/ARMTargetParser.def (original)
> +++ llvm/trunk/include/llvm/Support/ARMTargetParser.def Fri Jan 11
> 10:54:25 2019
> @@ -266,7 +266,8 @@ ARM_CPU_NAME("cyclone", ARMV8A, FK_CRYPT
>  ARM_CPU_NAME("exynos-m1", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
>  ARM_CPU_NAME("exynos-m2", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
>  ARM_CPU_NAME("exynos-m3", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
> -ARM_CPU_NAME("exynos-m4", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false,
> ARM::AEK_CRC)
> +ARM_CPU_NAME("exynos-m4", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
> +             (ARM::AEK_FP16 | ARM::AEK_DOTPROD))
>  ARM_CPU_NAME("kryo", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
>  // Non-standard Arch names.
>  ARM_CPU_NAME("iwmmxt", IWMMXT, 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=350953&r1=350952&r2=350953&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64.td (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64.td Fri Jan 11 10:54:25 2019
> @@ -540,6 +540,25 @@ def ProcExynosM3 : SubtargetFeature<"exy
>                                       FeaturePredictableSelectIsExpensive,
>                                       FeatureZCZeroingFP]>;
>
> +def ProcExynosM4 : SubtargetFeature<"exynosm4", "ARMProcFamily",
> "ExynosM3",
> +                                    "Samsung Exynos-M4 processors",
> +                                    [HasV8_2aOps,
> +                                     FeatureArithmeticBccFusion,
> +                                     FeatureArithmeticCbzFusion,
> +                                     FeatureCrypto,
> +                                     FeatureDotProd,
> +                                     FeatureExynosCheapAsMoveHandling,
> +                                     FeatureForce32BitJumpTables,
> +                                     FeatureFP16FML,
> +                                     FeatureFuseAddress,
> +                                     FeatureFuseAES,
> +                                     FeatureFuseCCSelect,
> +                                     FeatureFuseLiterals,
> +                                     FeatureLSLFast,
> +                                     FeaturePerfMon,
> +                                     FeaturePostRAScheduler,
> +                                     FeatureZCZeroing]>;
> +
>  def ProcKryo    : SubtargetFeature<"kryo", "ARMProcFamily", "Kryo",
>                                     "Qualcomm Kryo processors", [
>                                     FeatureCRC,
> @@ -677,7 +696,7 @@ def : ProcessorModel<"cyclone", CycloneM
>  def : ProcessorModel<"exynos-m1", ExynosM1Model, [ProcExynosM1]>;
>  def : ProcessorModel<"exynos-m2", ExynosM1Model, [ProcExynosM2]>;
>  def : ProcessorModel<"exynos-m3", ExynosM3Model, [ProcExynosM3]>;
> -def : ProcessorModel<"exynos-m4", ExynosM3Model, [ProcExynosM3]>;
> +def : ProcessorModel<"exynos-m4", ExynosM3Model, [ProcExynosM4]>;
>  def : ProcessorModel<"falkor", FalkorModel, [ProcFalkor]>;
>  def : ProcessorModel<"saphira", FalkorModel, [ProcSaphira]>;
>  def : ProcessorModel<"kryo", KryoModel, [ProcKryo]>;
>
> Modified: llvm/trunk/lib/Target/ARM/ARM.td
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARM.td?rev=350953&r1=350952&r2=350953&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARM.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARM.td Fri Jan 11 10:54:25 2019
> @@ -1079,6 +1079,9 @@ def : ProcNoItin<"exynos-m1",
>  def : ProcNoItin<"exynos-m2",                           [ARMv8a,
> ProcExynos]>;
>  def : ProcNoItin<"exynos-m3",                           [ARMv8a,
> ProcExynos]>;
>  def : ProcNoItin<"exynos-m4",                           [ARMv8a,
> ProcExynos]>;
> +def : ProcNoItin<"exynos-m4",                           [ARMv82a,
> ProcExynos,
> +                                                         FeatureFullFP16,
> +                                                         FeatureDotProd]>;
>
>  def : ProcNoItin<"kryo",                                [ARMv8a, ProcKryo,
>
> FeatureHWDivThumb,
>
> 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=350953&r1=350952&r2=350953&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/build-attributes.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/build-attributes.ll Fri Jan 11 10:54:25
> 2019
> @@ -1623,7 +1623,7 @@
>  ; EXYNOS-M4:  .eabi_attribute 8, 1
>  ; EXYNOS-M4:  .eabi_attribute 9, 2
>  ; EXYNOS-M4:  .fpu crypto-neon-fp-armv8
> -; EXYNOS-M4:  .eabi_attribute 12, 3
> +; EXYNOS-M4:  .eabi_attribute 12, 4
>  ; EXYNOS-M4-NOT:  .eabi_attribute 27
>  ; EXYNOS-M4:  .eabi_attribute 36, 1
>  ; EXYNOS-M4:  .eabi_attribute 42, 1
>
> Modified: llvm/trunk/unittests/Support/TargetParserTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/TargetParserTest.cpp?rev=350953&r1=350952&r2=350953&view=diff
>
> ==============================================================================
> --- llvm/trunk/unittests/Support/TargetParserTest.cpp (original)
> +++ llvm/trunk/unittests/Support/TargetParserTest.cpp Fri Jan 11 10:54:25
> 2019
> @@ -265,11 +265,12 @@ TEST(TargetParserTest, testARMCPU) {
>                           ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
>                           ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP,
>                           "8-A"));
> -  EXPECT_TRUE(testARMCPU("exynos-m4", "armv8-a", "crypto-neon-fp-armv8",
> +  EXPECT_TRUE(testARMCPU("exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
>                           ARM::AEK_CRC | ARM::AEK_SEC | ARM::AEK_MP |
>                           ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
> -                         ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP,
> -                         "8-A"));
> +                         ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
> ARM::AEK_DOTPROD |
> +                         ARM::AEK_FP16 | ARM::AEK_RAS,
> +                         "8.2-A"));
>    EXPECT_TRUE(testARMCPU("cortex-m23", "armv8-m.base", "none",
>                           ARM::AEK_HWDIVTHUMB, "8-M.Baseline"));
>    EXPECT_TRUE(testARMCPU("cortex-m33", "armv8-m.main", "fpv5-sp-d16",
> @@ -759,9 +760,11 @@ TEST(TargetParserTest, testAArch64CPU) {
>        AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP |
>        AArch64::AEK_SIMD, "8-A"));
>    EXPECT_TRUE(testAArch64CPU(
> -      "exynos-m4", "armv8-a", "crypto-neon-fp-armv8",
> -      AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP |
> -      AArch64::AEK_SIMD, "8-A"));
> +      "exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8",
> +      AArch64::AEK_CRC | AArch64::AEK_CRYPTO |
> +      AArch64::AEK_DOTPROD | AArch64::AEK_FP | AArch64::AEK_FP16 |
> +      AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM |
> +      AArch64::AEK_SIMD, "8.2-A"));
>    EXPECT_TRUE(testAArch64CPU(
>        "falkor", "armv8-a", "crypto-neon-fp-armv8",
>        AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP |
> @@ -870,8 +873,16 @@ TEST(TargetParserTest, testAArch64Extens
>                                      AArch64::ArchKind::INVALID, "ras"));
>    EXPECT_FALSE(testAArch64Extension("exynos-m3",
>                                      AArch64::ArchKind::INVALID, "ras"));
> +  EXPECT_TRUE(testAArch64Extension("exynos-m4",
> +                                   AArch64::ArchKind::INVALID, "lse"));
> +  EXPECT_TRUE(testAArch64Extension("exynos-m4",
> +                                   AArch64::ArchKind::INVALID, "rdm"));
> +  EXPECT_TRUE(testAArch64Extension("exynos-m4",
> +                                   AArch64::ArchKind::INVALID, "ras"));
>    EXPECT_FALSE(testAArch64Extension("exynos-m4",
> -                                    AArch64::ArchKind::INVALID, "ras"));
> +                                    AArch64::ArchKind::INVALID,
> "fullfp16"));
> +  EXPECT_TRUE(testAArch64Extension("exynos-m4",
> +                                   AArch64::ArchKind::INVALID,
> "dotprod"));
>    EXPECT_TRUE(testAArch64Extension("falkor",
>                                     AArch64::ArchKind::INVALID, "rdm"));
>    EXPECT_FALSE(testAArch64Extension("kryo",
>
>
> _______________________________________________
> 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/20190111/b7d0ef73/attachment.html>


More information about the llvm-commits mailing list