diff options
author | Joey Gouly <joey.gouly@arm.com> | 2013-09-13 11:51:52 +0000 |
---|---|---|
committer | Joey Gouly <joey.gouly@arm.com> | 2013-09-13 11:51:52 +0000 |
commit | 8312905790f2250d7c807b4c153be7d64ab22572 (patch) | |
tree | 644b1a8dadf7cafb374e9f0fa5ffe77101d1641d | |
parent | 2c9d79beee7456c1404f474cdaaa8ec56ff9a5e6 (diff) | |
download | external_llvm-8312905790f2250d7c807b4c153be7d64ab22572.zip external_llvm-8312905790f2250d7c807b4c153be7d64ab22572.tar.gz external_llvm-8312905790f2250d7c807b4c153be7d64ab22572.tar.bz2 |
[ARMv8] Emit the proper .fpu directive.
Patch by Bradley Smith!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190683 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 9 | ||||
-rw-r--r-- | test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll | 7 |
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index 0e94045..ff43d46 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -807,8 +807,11 @@ void ARMAsmPrinter::emitAttributes() { if (Subtarget->hasNEON() && emitFPU) { /* NEON is not exactly a VFP architecture, but GAS emit one of - * neon/neon-vfpv4/vfpv3/vfpv2 for .fpu parameters */ - if (Subtarget->hasVFP4()) + * neon/neon-fp-armv8/neon-vfpv4/vfpv3/vfpv2 for .fpu parameters */ + if (Subtarget->hasV8FP()) + AttrEmitter->EmitTextAttribute(ARMBuildAttrs::Advanced_SIMD_arch, + "neon-fp-armv8"); + else if (Subtarget->hasVFP4()) AttrEmitter->EmitTextAttribute(ARMBuildAttrs::Advanced_SIMD_arch, "neon-vfpv4"); else @@ -823,7 +826,7 @@ void ARMAsmPrinter::emitAttributes() { AttrEmitter->EmitAttribute(ARMBuildAttrs::VFP_arch, ARMBuildAttrs::AllowV8FPA); if (emitFPU) - AttrEmitter->EmitTextAttribute(ARMBuildAttrs::VFP_arch, "v8fp"); + AttrEmitter->EmitTextAttribute(ARMBuildAttrs::VFP_arch, "fp-armv8"); /* VFPv4 + .fpu */ } else if (Subtarget->hasVFP4()) { AttrEmitter->EmitAttribute(ARMBuildAttrs::VFP_arch, diff --git a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll index e6d1518..174a641 100644 --- a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll +++ b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll @@ -3,6 +3,7 @@ ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi | FileCheck %s --check-prefix=Vt8 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=+v8fp | FileCheck %s --check-prefix=V8-V8FP ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=+neon | FileCheck %s --check-prefix=V8-NEON +; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=+v8fp -mattr=+neon | FileCheck %s --check-prefix=V8-V8FP-NEON ; This tests that MC/asm header conversion is smooth ; ; V7: .syntax unified @@ -22,11 +23,17 @@ ; V8-V8FP: .syntax unified ; V8-V8FP: .eabi_attribute 6, 14 ; V8-V8FP: .eabi_attribute 10, 7 +; V8-V8FP: .fpu fp-armv8 ; V8-NEON: .syntax unified ; V8-NEON: .eabi_attribute 6, 14 ; V8-NEON: .eabi_attribute 12, 3 +; V8-V8FP-NEON: .syntax unified +; V8-V8FP-NEON: .eabi_attribute 6, 14 +; V8-V8FP-NEON: .fpu neon-fp-armv8 +; V8-V8FP-NEON: .eabi_attribute 10, 7 + define i32 @f(i64 %z) { ret i32 0 } |