[llvm] r350953 - [AArch64] Create feature set for Exynos M4
Evandro Menezes via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 11 17:11:25 PST 2019
Though I couldn't reproduce the issue, I noticed a typo that could lead
to it.
Committed r350986 to fix it.
Thank you,
--
Evandro Menezes
On 01/11/19 17:35, Evandro Menezes wrote:
> 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/06a4cc5d/attachment-0001.html>
More information about the llvm-commits
mailing list