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

Evandro Menezes via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 11 15:35:58 PST 2019


This seems to be a fluke.

The attribute value of 4 is correct. This value corresponds to 
ARMv8.1-a, which is implied by ARMv8.2-a, which was changed in 
https://is.gd/fcYj7x in the same patch.  The value of 3 should never be 
emitted with this patch.

As I continue investigating this issue, I'd appreciate if anyone could 
independently verify it.

Thank you,

-- 
Evandro Menezes

On 01/11/19 16:42, Evandro Menezes wrote:
> I cannot reproduce it:
>
>     bin/llc -o - -mtriple=armv8-linux-gnueabi -mcpu=exynos-m4 ~/src/llvm.svn/test/CodeGen/ARM/build-attributes.ll |& egrep eabi_attribute.+12
>     	.eabi_attribute	12, 4	@ Tag_Advanced_SIMD_arch
>
> Will continue looking...
> -- 
> Evandro Menezes
>
> On 01/11/19 16:31, Evandro Menezes wrote:
>> On it!
>> -- 
>> Evandro Menezes
>>
>> On 01/11/19 15:52, Matt Morehouse wrote:
>>> 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 <mailto: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 <mailto: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/77d61c2b/attachment.html>


More information about the llvm-commits mailing list