diff options
author | Bradley Smith <bradley.smith@arm.com> | 2013-11-01 13:27:35 +0000 |
---|---|---|
committer | Bradley Smith <bradley.smith@arm.com> | 2013-11-01 13:27:35 +0000 |
commit | 6186de5c54b580414b2d162e0f335b62b3d9812c (patch) | |
tree | b3344d5f6878a35572e91d1bd11679795623afed /lib/Target/ARM/ARMAsmPrinter.cpp | |
parent | 479a2de32a994b1902869b88e56253936d943531 (diff) | |
download | llvm-6186de5c54b580414b2d162e0f335b62b3d9812c.tar.gz llvm-6186de5c54b580414b2d162e0f335b62b3d9812c.tar.bz2 llvm-6186de5c54b580414b2d162e0f335b62b3d9812c.tar.xz |
[ARM] Add Virtualization subtarget feature and more build attributes in this area
Add a Virtualization ARM subtarget feature along with adding proper build
attribute emission for Tag_Virtualization_use (encodes Virtualization and
TrustZone) and Tag_MPextension_use.
Also rework test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll testcase to
something that is more maintainable. This changes the focus of this
testcase away from testing CPU defaults (which is tested elsewhere), onto
specifically testing that attributes are encoded correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193859 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMAsmPrinter.cpp')
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index c0f6d1fad3..aa54e0ddf3 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -703,6 +703,9 @@ void ARMAsmPrinter::emitAttributes() { // FIXME: Should we signal R9 usage? + if (Subtarget->hasMPExtension()) + ATS.emitAttribute(ARMBuildAttrs::MPextension_use, ARMBuildAttrs::AllowMP); + if (Subtarget->hasDivide()) { // Check if hardware divide is only available in thumb2 or ARM as well. ATS.emitAttribute(ARMBuildAttrs::DIV_use, @@ -710,6 +713,16 @@ void ARMAsmPrinter::emitAttributes() { ARMBuildAttrs::AllowDIVIfExists); } + if (Subtarget->hasTrustZone() && Subtarget->hasVirtualization()) + ATS.emitAttribute(ARMBuildAttrs::Virtualization_use, + ARMBuildAttrs::AllowTZVirtualization); + else if (Subtarget->hasTrustZone()) + ATS.emitAttribute(ARMBuildAttrs::Virtualization_use, + ARMBuildAttrs::AllowTZ); + else if (Subtarget->hasVirtualization()) + ATS.emitAttribute(ARMBuildAttrs::Virtualization_use, + ARMBuildAttrs::AllowVirtualization); + ATS.finishAttributeSection(); } |