[llvm] r248921 - [ARM] Support for ARMv6-Z / ARMv6-ZK missing

Artyom Skrobov via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 30 10:25:52 PDT 2015


Author: askrobov
Date: Wed Sep 30 12:25:52 2015
New Revision: 248921

URL: http://llvm.org/viewvc/llvm-project?rev=248921&view=rev
Log:
[ARM] Support for ARMv6-Z / ARMv6-ZK missing

As Richard Barton observed at http://reviews.llvm.org/D12937#inline-107121
TargetParser in LLVM has insufficient support for ARMv6Z and ARMv6ZK.

In particular, there were no tests for TrustZone being supported in these
architectures.

The patch clears a FIXME: left by Saleem Abdulrasool in r201471, and fixes
his test case which hadn't really been testing what it was claiming to test.

Differential Revision: http://reviews.llvm.org/D13236

Modified:
    llvm/trunk/include/llvm/Support/ARMTargetParser.def
    llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
    llvm/trunk/test/MC/ARM/directive-arch_extension-sec.s

Modified: llvm/trunk/include/llvm/Support/ARMTargetParser.def
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ARMTargetParser.def?rev=248921&r1=248920&r2=248921&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/ARMTargetParser.def (original)
+++ llvm/trunk/include/llvm/Support/ARMTargetParser.def Wed Sep 30 12:25:52 2015
@@ -71,9 +71,9 @@ ARM_ARCH("armv6k", AK_ARMV6K, "6K", "v6k
 ARM_ARCH("armv6t2", AK_ARMV6T2, "6T2", "v6t2", ARMBuildAttrs::CPUArch::v6T2,
           AEK_DSP)
 ARM_ARCH("armv6z", AK_ARMV6Z, "6Z", "v6z", ARMBuildAttrs::CPUArch::v6KZ,
-          AEK_DSP)
+          (AEK_SEC | AEK_DSP))
 ARM_ARCH("armv6zk", AK_ARMV6ZK, "6ZK", "v6zk", ARMBuildAttrs::CPUArch::v6KZ,
-          AEK_DSP)
+          (AEK_SEC | AEK_DSP))
 ARM_ARCH("armv6-m", AK_ARMV6M, "6-M", "v6m", ARMBuildAttrs::CPUArch::v6_M,
           AEK_NONE)
 ARM_ARCH("armv6s-m", AK_ARMV6SM, "6S-M", "v6sm", ARMBuildAttrs::CPUArch::v6S_M,

Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=248921&r1=248920&r2=248921&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Wed Sep 30 12:25:52 2015
@@ -9902,8 +9902,7 @@ static const struct {
     {ARM::FeatureHWDiv, ARM::FeatureHWDivARM} },
   { ARM::AEK_MP, Feature_HasV7 | Feature_IsNotMClass, {ARM::FeatureMP} },
   { ARM::AEK_SIMD, Feature_HasV8, {ARM::FeatureNEON, ARM::FeatureFPARMv8} },
-  // FIXME: Also available in ARMv6-K
-  { ARM::AEK_SEC, Feature_HasV7, {ARM::FeatureTrustZone} },
+  { ARM::AEK_SEC, Feature_HasV6K, {ARM::FeatureTrustZone} },
   // FIXME: Only available in A-class, isel not predicated
   { ARM::AEK_VIRT, Feature_HasV7, {ARM::FeatureVirtualization} },
   // FIXME: Unsupported extensions.

Modified: llvm/trunk/test/MC/ARM/directive-arch_extension-sec.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/directive-arch_extension-sec.s?rev=248921&r1=248920&r2=248921&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/directive-arch_extension-sec.s (original)
+++ llvm/trunk/test/MC/ARM/directive-arch_extension-sec.s Wed Sep 30 12:25:52 2015
@@ -1,11 +1,13 @@
 @ RUN: not llvm-mc -triple armv6-eabi -filetype asm -o /dev/null 2>&1 %s \
-@ RUN:   | FileCheck %s -check-prefix CHECK-ARMv6 -check-prefix CHECK-V6
+@ RUN:   | FileCheck %s -check-prefix CHECK-V6
+@ RUN: not llvm-mc -triple armv6k-eabi -filetype asm -o /dev/null 2>&1 %s \
+@ RUN:   | FileCheck %s -check-prefix CHECK-V7
 @ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null 2>&1 %s \
-@ RUN:   | FileCheck %s -check-prefix CHECK-ARMv7 -check-prefix CHECK-V7
+@ RUN:   | FileCheck %s -check-prefix CHECK-V7
 @ RUN: not llvm-mc -triple thumbv6-eabi -filetype asm -o /dev/null 2>&1 %s \
-@ RUN:   | FileCheck %s -check-prefix CHECK-THUMBv6 -check-prefix CHECK-V6
+@ RUN:   | FileCheck %s -check-prefix CHECK-V6
 @ RUN: not llvm-mc -triple thumbv7-eabi -filetype asm -o /dev/null 2>&1 %s \
-@ RUN:   | FileCheck %s -check-prefix CHECK-THUMBv7 -check-prefix CHECK-V7
+@ RUN:   | FileCheck %s -check-prefix CHECK-V7
 
 	.syntax unified
 
@@ -13,6 +15,7 @@
 @ CHECK-V6: error: architectural extension 'sec' is not allowed for the current base architecture
 @ CHECK-V6-NEXT: 	.arch_extension sec
 @ CHECK-V6-NEXT:                     ^
+@ CHECK-V7-NOT: error: architectural extension 'sec' is not allowed for the current base architecture
 
 	.type sec,%function
 sec:
@@ -23,9 +26,11 @@ sec:
 @ CHECK-V6: error: architectural extension 'sec' is not allowed for the current base architecture
 @ CHECK-V6-NEXT: 	.arch_extension nosec
 @ CHECK-V6-NEXT:                     ^
+@ CHECK-V7-NOT: error: architectural extension 'sec' is not allowed for the current base architecture
 
 	.type nosec,%function
 nosec:
 	smc #0
 @ CHECK-V7: error: instruction requires: TrustZone
+@ CHECK-V7-NOT: error: instruction requires: TrustZone
 




More information about the llvm-commits mailing list