mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-20 02:58:10 +00:00
Emit Tag_ABI_FP_denormal correctly in fast-math mode.
The default ARM floating-point mode does not support IEEE 754 mode exactly. Of relevance to this patch is that input denormals are flushed to zero. The way in which they're flushed to zero depends on the architecture, * For VFPv2, it is implementation defined as to whether the sign of zero is preserved. * For VFPv3 and above, the sign of zero is always preserved when a denormal is flushed to zero. When FP support has been disabled, the strategy taken by this patch is to assume the software support will mirror the behaviour of the hardware support for the target *if it existed*. That is, for architectures which can only have VFPv2, it is assumed the software will flush to positive zero. For later architectures it is assumed the software will flush to zero preserving sign. Change-Id: Icc5928633ba222a4ba3ca8c0df44a440445865fd git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223110 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4b0964871d
commit
364f2f3fcf
@ -171,6 +171,8 @@ enum {
|
||||
WCharWidth4Bytes = 4, // sizeof(wchar_t) == 4
|
||||
|
||||
// Tag_ABI_FP_denormal, (=20), uleb128
|
||||
PositiveZero = 0,
|
||||
IEEEDenormals = 1,
|
||||
PreserveFPSign = 2, // sign when flushed-to-zero is preserved
|
||||
|
||||
// Tag_ABI_FP_number_model, (=23), uleb128
|
||||
|
@ -694,9 +694,34 @@ void ARMAsmPrinter::emitAttributes() {
|
||||
|
||||
// Signal various FP modes.
|
||||
if (!TM.Options.UnsafeFPMath) {
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal, ARMBuildAttrs::Allowed);
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal,
|
||||
ARMBuildAttrs::IEEEDenormals);
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_exceptions,
|
||||
ARMBuildAttrs::Allowed);
|
||||
} else {
|
||||
if (!Subtarget->hasVFP2()) {
|
||||
// When the target doesn't have an FPU (by design or
|
||||
// intention), the assumptions made on the software support
|
||||
// mirror that of the equivalent hardware support *if it
|
||||
// existed*. For v7 and better we indicate that denormals are
|
||||
// flushed preserving sign, and for V6 we indicate that
|
||||
// denormals are flushed to positive zero.
|
||||
if (Subtarget->hasV7Ops())
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal,
|
||||
ARMBuildAttrs::PreserveFPSign);
|
||||
} else if (Subtarget->hasVFP3()) {
|
||||
// In VFPv4, VFPv4U, VFPv3, or VFPv3U, it is preserved. That is,
|
||||
// the sign bit of the zero matches the sign bit of the input or
|
||||
// result that is being flushed to zero.
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal,
|
||||
ARMBuildAttrs::PreserveFPSign);
|
||||
}
|
||||
// For VFPv2 implementations it is implementation defined as
|
||||
// to whether denormals are flushed to positive zero or to
|
||||
// whatever the sign of zero is (ARM v7AR ARM 2.7.5). Historically
|
||||
// LLVM has chosen to flush this to positive zero (most likely for
|
||||
// GCC compatibility), so that's the chosen value here (the
|
||||
// absence of its emission implies zero).
|
||||
}
|
||||
|
||||
if (TM.Options.NoInfsFPMath && TM.Options.NoNaNsFPMath)
|
||||
|
@ -3,39 +3,66 @@
|
||||
|
||||
; RUN: llc < %s -mtriple=thumbv5-linux-gnueabi -mcpu=xscale | FileCheck %s --check-prefix=XSCALE
|
||||
; RUN: llc < %s -mtriple=armv6-linux-gnueabi | FileCheck %s --check-prefix=V6
|
||||
; RUN: llc < %s -mtriple=armv6-linux-gnueabi -enable-unsafe-fp-math | FileCheck %s --check-prefix=V6-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi | FileCheck %s --check-prefix=V6M
|
||||
; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -enable-unsafe-fp-math | FileCheck %s --check-prefix=V6M-FAST
|
||||
; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s | FileCheck %s --check-prefix=ARM1156T2F-S
|
||||
; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s -enable-unsafe-fp-math | FileCheck %s --check-prefix=ARM1156T2F-S-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi | FileCheck %s --check-prefix=V7M
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -enable-unsafe-fp-math | FileCheck %s --check-prefix=V7M-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=V7
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -enable-unsafe-fp-math | FileCheck %s --check-prefix=V7-FAST
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -enable-unsafe-fp-math | FileCheck %s --check-prefix=V8-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi | FileCheck %s --check-prefix=Vt8
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-neon,-crypto | FileCheck %s --check-prefix=V8-FPARMv8
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-fp-armv8,-crypto | FileCheck %s --check-prefix=V8-NEON
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-crypto | FileCheck %s --check-prefix=V8-FPARMv8-NEON
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8-FPARMv8-NEON-CRYPTO
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 | FileCheck %s --check-prefix=CORTEX-A5-DEFAULT
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A5-DEFAULT-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-neon,+d16 | FileCheck %s --check-prefix=CORTEX-A5-NONEON
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A5-NOFPU
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A5-NOFPU-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-A9-SOFT
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A9-SOFT-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-A9-HARD
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A9-HARD-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 | FileCheck %s --check-prefix=CORTEX-A12-DEFAULT
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A12-DEFAULT-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A12-NOFPU
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A12-NOFPU-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 | FileCheck %s --check-prefix=CORTEX-A15
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A15-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 | FileCheck %s --check-prefix=CORTEX-A17-DEFAULT
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A17-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A17-NOFPU
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A17-NOFPU-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=CORTEX-M0
|
||||
; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-M0-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=CORTEX-M3
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-M3-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-M4-SOFT
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-M4-SOFT-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-M4-HARD
|
||||
; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-M4-HARD-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SOFT
|
||||
; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-M7-NOFPU-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=+fp-only-sp | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SINGLE
|
||||
; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-DOUBLE
|
||||
; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=+fp-only-sp -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-M7-FAST
|
||||
; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 | FileCheck %s --check-prefix=CORTEX-M7-DOUBLE
|
||||
; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=CORTEX-R5
|
||||
; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-R5-FAST
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A53-FAST
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=CORTEX-A57
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A57-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=CORTEX-A7-CHECK
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A7-CHECK-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-NOFPU
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A7-NOFPU-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon -enable-unsafe-fp-math | FileCheck %s --check-prefix=CORTEX-A7-FPUV4-FAST
|
||||
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,,+d16,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=pic | FileCheck %s --check-prefix=RELOC-PIC
|
||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=static | FileCheck %s --check-prefix=RELOC-OTHER
|
||||
@ -84,6 +111,11 @@
|
||||
|
||||
; V6: .eabi_attribute 6, 6
|
||||
; V6: .eabi_attribute 8, 1
|
||||
;; The default choice made by llc is for a V6 CPU without an FPU.
|
||||
;; This is not an interesting detail, but for such CPUs, the default intention is to use
|
||||
;; software floating-point support. The choice is not important for targets without
|
||||
;; FPU support!
|
||||
; V6: .eabi_attribute 20, 1
|
||||
; V6: .eabi_attribute 24, 1
|
||||
; V6: .eabi_attribute 25, 1
|
||||
; V6-NOT: .eabi_attribute 27
|
||||
@ -92,10 +124,20 @@
|
||||
; V6-NOT: .eabi_attribute 42
|
||||
; V6-NOT: .eabi_attribute 68
|
||||
|
||||
;; Despite the V6 CPU having no FPU by default, we chose to flush to
|
||||
;; positive zero here. There's no hardware support doing this, but the
|
||||
;; fast maths software library might.
|
||||
; V6-FAST-NOT: .eabi_attribute 20
|
||||
|
||||
; V6M: .eabi_attribute 6, 12
|
||||
; V6M-NOT: .eabi_attribute 7
|
||||
; V6M: .eabi_attribute 8, 0
|
||||
; V6M: .eabi_attribute 9, 1
|
||||
;; The default choice made by llc is for a V6M CPU without an FPU.
|
||||
;; This is not an interesting detail, but for such CPUs, the default intention is to use
|
||||
;; software floating-point support. The choice is not important for targets without
|
||||
;; FPU support!
|
||||
; V6M: .eabi_attribute 20, 1
|
||||
; V6M: .eabi_attribute 24, 1
|
||||
; V6M: .eabi_attribute 25, 1
|
||||
; V6M-NOT: .eabi_attribute 27
|
||||
@ -104,11 +146,17 @@
|
||||
; V6M-NOT: .eabi_attribute 42
|
||||
; V6M-NOT: .eabi_attribute 68
|
||||
|
||||
;; Despite the V6M CPU having no FPU by default, we chose to flush to
|
||||
;; positive zero here. There's no hardware support doing this, but the
|
||||
;; fast maths software library might.
|
||||
; V6M-FAST-NOT: .eabi_attribute 20
|
||||
|
||||
; ARM1156T2F-S: .cpu arm1156t2f-s
|
||||
; ARM1156T2F-S: .eabi_attribute 6, 8
|
||||
; ARM1156T2F-S: .eabi_attribute 8, 1
|
||||
; ARM1156T2F-S: .eabi_attribute 9, 2
|
||||
; ARM1156T2F-S: .fpu vfpv2
|
||||
;; We default to IEEE 754 compliance
|
||||
; ARM1156T2F-S: .eabi_attribute 20, 1
|
||||
; ARM1156T2F-S: .eabi_attribute 21, 1
|
||||
; ARM1156T2F-S: .eabi_attribute 23, 3
|
||||
@ -120,10 +168,20 @@
|
||||
; ARM1156T2F-S-NOT: .eabi_attribute 42
|
||||
; ARM1156T2F-S-NOT: .eabi_attribute 68
|
||||
|
||||
;; V6 cores default to flush to positive zero (value 0). Note that value 2 is also equally
|
||||
;; valid for this core, it's an implementation defined question as to which of 0 and 2 you
|
||||
;; select. LLVM historically picks 0.
|
||||
; ARM1156T2F-S-FAST-NOT: .eabi_attribute 20
|
||||
|
||||
; V7M: .eabi_attribute 6, 10
|
||||
; V7M: .eabi_attribute 7, 77
|
||||
; V7M: .eabi_attribute 8, 0
|
||||
; V7M: .eabi_attribute 9, 2
|
||||
;; The default choice made by llc is for a V7M CPU without an FPU.
|
||||
;; This is not an interesting detail, but for such CPUs, the default intention is to use
|
||||
;; software floating-point support. The choice is not important for targets without
|
||||
;; FPU support!
|
||||
; V7M: .eabi_attribute 20, 1
|
||||
; V7M: .eabi_attribute 24, 1
|
||||
; V7M: .eabi_attribute 25, 1
|
||||
; V7M-NOT: .eabi_attribute 27
|
||||
@ -133,8 +191,14 @@
|
||||
; V7M-NOT: .eabi_attribute 44
|
||||
; V7M-NOT: .eabi_attribute 68
|
||||
|
||||
;; Despite the V7M CPU having no FPU by default, we chose to flush
|
||||
;; preserving sign. This matches what the hardware would do in the
|
||||
;; architecture revision were to exist on the current target.
|
||||
; V7M-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; V7: .syntax unified
|
||||
; V7: .eabi_attribute 6, 10
|
||||
;; In safe-maths mode we default to an IEEE 754 compliant choice.
|
||||
; V7: .eabi_attribute 20, 1
|
||||
; V7: .eabi_attribute 21, 1
|
||||
; V7: .eabi_attribute 23, 3
|
||||
@ -146,8 +210,16 @@
|
||||
; V7-NOT: .eabi_attribute 42
|
||||
; V7-NOT: .eabi_attribute 68
|
||||
|
||||
;; The default CPU does have an FPU and it must be VFPv3 or better, so it flushes
|
||||
;; denormals to zero preserving the sign.
|
||||
; V7-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; V8: .syntax unified
|
||||
; V8: .eabi_attribute 6, 14
|
||||
; V8: .eabi_attribute 20, 1
|
||||
|
||||
;; The default does have an FPU, and for V8-A, it flushes preserving sign.
|
||||
; V8-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; Vt8: .syntax unified
|
||||
; Vt8: .eabi_attribute 6, 14
|
||||
@ -175,74 +247,84 @@
|
||||
; NO-STRICT-ALIGN: .eabi_attribute 34, 1
|
||||
; STRICT-ALIGN: .eabi_attribute 34, 0
|
||||
|
||||
; Tag_CPU_arch 'ARMv7'
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 6, 10
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 6, 10
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 6, 10
|
||||
; Tag_CPU_arch 'ARMv7'
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 6, 10
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 6, 10
|
||||
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 6, 10
|
||||
|
||||
; Tag_CPU_arch_profile 'A'
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 7, 65
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 7, 65
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 7, 65
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 7, 65
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 7, 65
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 7, 65
|
||||
|
||||
; Tag_ARM_ISA_use
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 8, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 8, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 8, 1
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 8, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 8, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 8, 1
|
||||
|
||||
; Tag_THUMB_ISA_use
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 9, 2
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 9, 2
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 9, 2
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 9, 2
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 9, 2
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 9, 2
|
||||
|
||||
; CORTEX-A7-CHECK: .fpu neon-vfpv4
|
||||
; CORTEX-A7-CHECK: .fpu neon-vfpv4
|
||||
; CORTEX-A7-NOFPU-NOT: .fpu
|
||||
; CORTEX-A7-FPUV4: .fpu vfpv4
|
||||
; CORTEX-A7-FPUV4: .fpu vfpv4
|
||||
|
||||
; Tag_ABI_FP_denormal
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 20, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 20, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 20, 1
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 20, 1
|
||||
;; The A7 has VFPv3 support by default, so flush preserving sign.
|
||||
; CORTEX-A7-CHECK-FAST: .eabi_attribute 20, 2
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 20, 1
|
||||
;; Despite there being no FPU, we chose to flush to zero preserving
|
||||
;; sign. This matches what the hardware would do for this architecture
|
||||
;; revision.
|
||||
; CORTEX-A7-NOFPU-FAST: .eabi_attribute 20, 2
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 20, 1
|
||||
;; The VFPv4 FPU flushes preserving sign.
|
||||
; CORTEX-A7-FPUV4-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; Tag_ABI_FP_exceptions
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 21, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 21, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 21, 1
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 21, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 21, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 21, 1
|
||||
|
||||
; Tag_ABI_FP_number_model
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 23, 3
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 23, 3
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 23, 3
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 23, 3
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 23, 3
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 23, 3
|
||||
|
||||
; Tag_ABI_align_needed
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 24, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 24, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 24, 1
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 24, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 24, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 24, 1
|
||||
|
||||
; Tag_ABI_align_preserved
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 25, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 25, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 25, 1
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 25, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 25, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 25, 1
|
||||
|
||||
; Tag_FP_HP_extension
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 36, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 36, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 36, 1
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 36, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 36, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 36, 1
|
||||
|
||||
; Tag_MPextension_use
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 42, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 42, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 42, 1
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 42, 1
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 42, 1
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 42, 1
|
||||
|
||||
; Tag_DIV_use
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 44, 2
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 44, 2
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 44, 2
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 44, 2
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 44, 2
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 44, 2
|
||||
|
||||
; Tag_Virtualization_use
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 68, 3
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 68, 3
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 68, 3
|
||||
; CORTEX-A7-CHECK: .eabi_attribute 68, 3
|
||||
; CORTEX-A7-NOFPU: .eabi_attribute 68, 3
|
||||
; CORTEX-A7-FPUV4: .eabi_attribute 68, 3
|
||||
|
||||
; CORTEX-A5-DEFAULT: .cpu cortex-a5
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 6, 10
|
||||
@ -250,6 +332,7 @@
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 8, 1
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 9, 2
|
||||
; CORTEX-A5-DEFAULT: .fpu neon-vfpv4
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 20, 1
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 21, 1
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 23, 3
|
||||
@ -258,12 +341,17 @@
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 42, 1
|
||||
; CORTEX-A5-DEFAULT: .eabi_attribute 68, 1
|
||||
|
||||
;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math
|
||||
;; is given.
|
||||
; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A5-NONEON: .cpu cortex-a5
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 6, 10
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 7, 65
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 8, 1
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 9, 2
|
||||
; CORTEX-A5-NONEON: .fpu vfpv4-d16
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 20, 1
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 21, 1
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 23, 3
|
||||
@ -272,12 +360,17 @@
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 42, 1
|
||||
; CORTEX-A5-NONEON: .eabi_attribute 68, 1
|
||||
|
||||
;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math
|
||||
;; is given.
|
||||
; CORTEX-A5-NONEON-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A5-NOFPU: .cpu cortex-a5
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 6, 10
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 7, 65
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 8, 1
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 9, 2
|
||||
; CORTEX-A5-NOFPU-NOT: .fpu
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 20, 1
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 21, 1
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 23, 3
|
||||
@ -286,12 +379,18 @@
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 42, 1
|
||||
; CORTEX-A5-NOFPU: .eabi_attribute 68, 1
|
||||
|
||||
;; Despite there being no FPU, we chose to flush to zero preserving
|
||||
;; sign. This matches what the hardware would do for this architecture
|
||||
;; revision.
|
||||
; CORTEX-A5-NOFPU-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A9-SOFT: .cpu cortex-a9
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 6, 10
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 7, 65
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 8, 1
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 9, 2
|
||||
; CORTEX-A9-SOFT: .fpu neon
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 20, 1
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 21, 1
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 23, 3
|
||||
@ -303,12 +402,17 @@
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 42, 1
|
||||
; CORTEX-A9-SOFT: .eabi_attribute 68, 1
|
||||
|
||||
;; The A9 defaults to a VFPv3 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-A9-SOFT-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A9-HARD: .cpu cortex-a9
|
||||
; CORTEX-A9-HARD: .eabi_attribute 6, 10
|
||||
; CORTEX-A9-HARD: .eabi_attribute 7, 65
|
||||
; CORTEX-A9-HARD: .eabi_attribute 8, 1
|
||||
; CORTEX-A9-HARD: .eabi_attribute 9, 2
|
||||
; CORTEX-A9-HARD: .fpu neon
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A9-HARD: .eabi_attribute 20, 1
|
||||
; CORTEX-A9-HARD: .eabi_attribute 21, 1
|
||||
; CORTEX-A9-HARD: .eabi_attribute 23, 3
|
||||
@ -320,12 +424,17 @@
|
||||
; CORTEX-A9-HARD: .eabi_attribute 42, 1
|
||||
; CORTEX-A9-HARD: .eabi_attribute 68, 1
|
||||
|
||||
;; The A9 defaults to a VFPv3 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-A9-HARD-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A12-DEFAULT: .cpu cortex-a12
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 6, 10
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 7, 65
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 8, 1
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 9, 2
|
||||
; CORTEX-A12-DEFAULT: .fpu neon-vfpv4
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 20, 1
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 21, 1
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 23, 3
|
||||
@ -335,12 +444,17 @@
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 44, 2
|
||||
; CORTEX-A12-DEFAULT: .eabi_attribute 68, 3
|
||||
|
||||
;; The A12 defaults to a VFPv3 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-A12-DEFAULT-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A12-NOFPU: .cpu cortex-a12
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 6, 10
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 7, 65
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 8, 1
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 9, 2
|
||||
; CORTEX-A12-NOFPU-NOT: .fpu
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 20, 1
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 21, 1
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 23, 3
|
||||
@ -350,12 +464,18 @@
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 44, 2
|
||||
; CORTEX-A12-NOFPU: .eabi_attribute 68, 3
|
||||
|
||||
;; Despite there being no FPU, we chose to flush to zero preserving
|
||||
;; sign. This matches what the hardware would do for this architecture
|
||||
;; revision.
|
||||
; CORTEX-A12-NOFPU-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A15: .cpu cortex-a15
|
||||
; CORTEX-A15: .eabi_attribute 6, 10
|
||||
; CORTEX-A15: .eabi_attribute 7, 65
|
||||
; CORTEX-A15: .eabi_attribute 8, 1
|
||||
; CORTEX-A15: .eabi_attribute 9, 2
|
||||
; CORTEX-A15: .fpu neon-vfpv4
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A15: .eabi_attribute 20, 1
|
||||
; CORTEX-A15: .eabi_attribute 21, 1
|
||||
; CORTEX-A15: .eabi_attribute 23, 3
|
||||
@ -368,12 +488,17 @@
|
||||
; CORTEX-A15: .eabi_attribute 44, 2
|
||||
; CORTEX-A15: .eabi_attribute 68, 3
|
||||
|
||||
;; The A15 defaults to a VFPv3 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-A15-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A17-DEFAULT: .cpu cortex-a17
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 6, 10
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 7, 65
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 8, 1
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 9, 2
|
||||
; CORTEX-A17-DEFAULT: .fpu neon-vfpv4
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 20, 1
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 21, 1
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 23, 3
|
||||
@ -383,12 +508,17 @@
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 44, 2
|
||||
; CORTEX-A17-DEFAULT: .eabi_attribute 68, 3
|
||||
|
||||
;; The A17 defaults to a VFPv3 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-A17-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A17-NOFPU: .cpu cortex-a17
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 6, 10
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 7, 65
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 8, 1
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 9, 2
|
||||
; CORTEX-A17-NOFPU-NOT: .fpu
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 20, 1
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 21, 1
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 23, 3
|
||||
@ -398,11 +528,18 @@
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 44, 2
|
||||
; CORTEX-A17-NOFPU: .eabi_attribute 68, 3
|
||||
|
||||
;; Despite there being no FPU, we chose to flush to zero preserving
|
||||
;; sign. This matches what the hardware would do for this architecture
|
||||
;; revision.
|
||||
; CORTEX-A17-NOFPU-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-M0: .cpu cortex-m0
|
||||
; CORTEX-M0: .eabi_attribute 6, 12
|
||||
; CORTEX-M0-NOT: .eabi_attribute 7
|
||||
; CORTEX-M0: .eabi_attribute 8, 0
|
||||
; CORTEX-M0: .eabi_attribute 9, 1
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-M0: .eabi_attribute 20, 1
|
||||
; CORTEX-M0: .eabi_attribute 24, 1
|
||||
; CORTEX-M0: .eabi_attribute 25, 1
|
||||
; CORTEX-M0-NOT: .eabi_attribute 27
|
||||
@ -411,11 +548,19 @@
|
||||
; CORTEX-M0-NOT: .eabi_attribute 42
|
||||
; CORTEX-M0-NOT: .eabi_attribute 68
|
||||
|
||||
;; Despite the M0 CPU having no FPU in this scenario, we chose to
|
||||
;; flush to positive zero here. There's no hardware support doing
|
||||
;; this, but the fast maths software library might and such behaviour
|
||||
;; would match hardware support on this architecture revision if it
|
||||
;; existed.
|
||||
; CORTEX-M0-FAST-NOT: .eabi_attribute 20
|
||||
|
||||
; CORTEX-M3: .cpu cortex-m3
|
||||
; CORTEX-M3: .eabi_attribute 6, 10
|
||||
; CORTEX-M3: .eabi_attribute 7, 77
|
||||
; CORTEX-M3: .eabi_attribute 8, 0
|
||||
; CORTEX-M3: .eabi_attribute 9, 2
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-M3: .eabi_attribute 20, 1
|
||||
; CORTEX-M3: .eabi_attribute 21, 1
|
||||
; CORTEX-M3: .eabi_attribute 23, 3
|
||||
@ -428,12 +573,18 @@
|
||||
; CORTEX-M3-NOT: .eabi_attribute 44
|
||||
; CORTEX-M3-NOT: .eabi_attribute 68
|
||||
|
||||
;; Despite there being no FPU, we chose to flush to zero preserving
|
||||
;; sign. This matches what the hardware would do for this architecture
|
||||
;; revision.
|
||||
; CORTEX-M3-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-M4-SOFT: .cpu cortex-m4
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 6, 13
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 7, 77
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 8, 0
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 9, 2
|
||||
; CORTEX-M4-SOFT: .fpu vfpv4-d16
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 20, 1
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 21, 1
|
||||
; CORTEX-M4-SOFT: .eabi_attribute 23, 3
|
||||
@ -446,12 +597,17 @@
|
||||
; CORTEX-M4-SOFT-NOT: .eabi_attribute 44
|
||||
; CORTEX-M4-SOFT-NOT: .eabi_attribute 68
|
||||
|
||||
;; The M4 defaults to a VFPv4 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-M4-SOFT-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-M4-HARD: .cpu cortex-m4
|
||||
; CORTEX-M4-HARD: .eabi_attribute 6, 13
|
||||
; CORTEX-M4-HARD: .eabi_attribute 7, 77
|
||||
; CORTEX-M4-HARD: .eabi_attribute 8, 0
|
||||
; CORTEX-M4-HARD: .eabi_attribute 9, 2
|
||||
; CORTEX-M4-HARD: .fpu vfpv4-d16
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-M4-HARD: .eabi_attribute 20, 1
|
||||
; CORTEX-M4-HARD: .eabi_attribute 21, 1
|
||||
; CORTEX-M4-HARD: .eabi_attribute 23, 3
|
||||
@ -464,6 +620,10 @@
|
||||
; CORTEX-M4-HARD-NOT: .eabi_attribute 44
|
||||
; CORTEX-M4-HARD-NOT: .eabi_attribute 68
|
||||
|
||||
;; The M4 defaults to a VFPv4 FPU, so it flushes preseving sign when
|
||||
;; -ffast-math is specified.
|
||||
; CORTEX-M4-HARD-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-M7: .cpu cortex-m7
|
||||
; CORTEX-M7: .eabi_attribute 6, 13
|
||||
; CORTEX-M7: .eabi_attribute 7, 77
|
||||
@ -473,6 +633,7 @@
|
||||
; CORTEX-M7-SINGLE: .fpu fpv5-d16
|
||||
; CORTEX-M7-DOUBLE: .fpu fpv5-d16
|
||||
; CORTEX-M7: .eabi_attribute 17, 1
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-M7: .eabi_attribute 20, 1
|
||||
; CORTEX-M7: .eabi_attribute 21, 1
|
||||
; CORTEX-M7: .eabi_attribute 23, 3
|
||||
@ -484,12 +645,21 @@
|
||||
; CORTEX-M7: .eabi_attribute 36, 1
|
||||
; CORTEX-M7: .eabi_attribute 14, 0
|
||||
|
||||
;; The M7 has the ARMv8 FP unit, which always flushes preserving sign.
|
||||
; CORTEX-M7-FAST: .eabi_attribute 20, 2
|
||||
;; Despite there being no FPU, we chose to flush to zero preserving
|
||||
;; sign. This matches what the hardware would do for this architecture
|
||||
;; revision.
|
||||
; CORTEX-M7-NOFPU-FAST: .eabi_attribute 20, 2
|
||||
|
||||
|
||||
; CORTEX-R5: .cpu cortex-r5
|
||||
; CORTEX-R5: .eabi_attribute 6, 10
|
||||
; CORTEX-R5: .eabi_attribute 7, 82
|
||||
; CORTEX-R5: .eabi_attribute 8, 1
|
||||
; CORTEX-R5: .eabi_attribute 9, 2
|
||||
; CORTEX-R5: .fpu vfpv3-d16
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-R5: .eabi_attribute 20, 1
|
||||
; CORTEX-R5: .eabi_attribute 21, 1
|
||||
; CORTEX-R5: .eabi_attribute 23, 3
|
||||
@ -502,6 +672,9 @@
|
||||
; CORTEX-R5: .eabi_attribute 44, 2
|
||||
; CORTEX-R5-NOT: .eabi_attribute 68
|
||||
|
||||
;; The R5 has the VFPv3 FP unit, which always flushes preserving sign.
|
||||
; CORTEX-R5-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A53: .cpu cortex-a53
|
||||
; CORTEX-A53: .eabi_attribute 6, 14
|
||||
; CORTEX-A53: .eabi_attribute 7, 65
|
||||
@ -509,6 +682,8 @@
|
||||
; CORTEX-A53: .eabi_attribute 9, 2
|
||||
; CORTEX-A53: .fpu crypto-neon-fp-armv8
|
||||
; CORTEX-A53: .eabi_attribute 12, 3
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A53: .eabi_attribute 20, 1
|
||||
; CORTEX-A53: .eabi_attribute 24, 1
|
||||
; CORTEX-A53: .eabi_attribute 25, 1
|
||||
; CORTEX-A53-NOT: .eabi_attribute 27
|
||||
@ -518,6 +693,9 @@
|
||||
; CORTEX-A53-NOT: .eabi_attribute 44
|
||||
; CORTEX-A53: .eabi_attribute 68, 3
|
||||
|
||||
;; The A53 has the ARMv8 FP unit, which always flushes preserving sign.
|
||||
; CORTEX-A53-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; CORTEX-A57: .cpu cortex-a57
|
||||
; CORTEX-A57: .eabi_attribute 6, 14
|
||||
; CORTEX-A57: .eabi_attribute 7, 65
|
||||
@ -525,6 +703,8 @@
|
||||
; CORTEX-A57: .eabi_attribute 9, 2
|
||||
; CORTEX-A57: .fpu crypto-neon-fp-armv8
|
||||
; CORTEX-A57: .eabi_attribute 12, 3
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A57: .eabi_attribute 20, 1
|
||||
; CORTEX-A57: .eabi_attribute 24, 1
|
||||
; CORTEX-A57: .eabi_attribute 25, 1
|
||||
; CORTEX-A57-NOT: .eabi_attribute 27
|
||||
@ -534,6 +714,9 @@
|
||||
; CORTEX-A57-NOT: .eabi_attribute 44
|
||||
; CORTEX-A57: .eabi_attribute 68, 3
|
||||
|
||||
;; The A57 has the ARMv8 FP unit, which always flushes preserving sign.
|
||||
; CORTEX-A57-FAST: .eabi_attribute 20, 2
|
||||
|
||||
; RELOC-PIC: .eabi_attribute 15, 1
|
||||
; RELOC-PIC: .eabi_attribute 16, 1
|
||||
; RELOC-PIC: .eabi_attribute 17, 2
|
||||
@ -543,5 +726,5 @@
|
||||
; PCS-R9-RESERVE: .eabi_attribute 14, 3
|
||||
|
||||
define i32 @f(i64 %z) {
|
||||
ret i32 0
|
||||
ret i32 0
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user