[AArch64, ARM] Add v8.1a architecture and generic cpu
[oota-llvm.git] / test / CodeGen / ARM / build-attributes.ll
1 ; This tests that MC/asm header conversion is smooth and that the
2 ; build attributes are correct
3
4 ; RUN: llc < %s -mtriple=thumbv5-linux-gnueabi -mcpu=xscale | FileCheck %s --check-prefix=XSCALE
5 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi | FileCheck %s --check-prefix=V6
6 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V6-FAST
7 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
8 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi | FileCheck %s --check-prefix=V6M
9 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V6M-FAST
10 ; RUN: llc < %s -mtriple=thumbv6sm-linux-gnueabi | FileCheck %s --check-prefix=V6M
11 ; RUN: llc < %s -mtriple=thumbv6sm-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V6M-FAST
12 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s | FileCheck %s --check-prefix=ARM1156T2F-S
13 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast  | FileCheck %s --check-prefix=ARM1156T2F-S-FAST
14 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
15 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi | FileCheck %s --check-prefix=V7M
16 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V7M-FAST
17 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
18 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=V7
19 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
20 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V7-FAST
21 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8
22 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V8-FAST
23 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
24 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi | FileCheck %s --check-prefix=Vt8
25 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
26 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-neon,-crypto | FileCheck %s --check-prefix=V8-FPARMv8
27 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-fp-armv8,-crypto | FileCheck %s --check-prefix=V8-NEON
28 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-crypto | FileCheck %s --check-prefix=V8-FPARMv8-NEON
29 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8-FPARMv8-NEON-CRYPTO
30 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 | FileCheck %s --check-prefix=CORTEX-A5-DEFAULT
31 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A5-DEFAULT-FAST
32 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
33 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-neon,+d16 | FileCheck %s --check-prefix=CORTEX-A5-NONEON
34 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A5-NOFPU
35 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A5-NOFPU-FAST
36 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-A9-SOFT
37 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A9-SOFT-FAST
38 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-A9-HARD
39 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A9-HARD-FAST
40 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
41 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 | FileCheck %s --check-prefix=CORTEX-A12-DEFAULT
42 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-A9-SOFT
43 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A12-DEFAULT-FAST
44 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A12-NOFPU
45 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A12-NOFPU-FAST
46 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
47 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 | FileCheck %s --check-prefix=CORTEX-A15
48 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A15-FAST
49 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
50 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 | FileCheck %s --check-prefix=CORTEX-A17-DEFAULT
51 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A17-FAST
52 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A17-NOFPU
53 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A17-NOFPU-FAST
54 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
55 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=CORTEX-M0
56 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M0-FAST
57 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
58 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus | FileCheck %s --check-prefix=CORTEX-M0PLUS
59 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M0PLUS-FAST
60 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
61 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 | FileCheck %s --check-prefix=CORTEX-M1
62 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M1-FAST
63 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
64 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 | FileCheck %s --check-prefix=SC000
65 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=SC000-FAST
66 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
67 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=CORTEX-M3
68 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M3-FAST
69 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
70 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 | FileCheck %s --check-prefix=SC300
71 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=SC300-FAST
72 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
73 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-M4-SOFT
74 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M4-SOFT-FAST
75 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-M4-HARD
76 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M4-HARD-FAST
77 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
78 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SOFT
79 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M7-NOFPU-FAST
80 ; 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
81 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=+fp-only-sp  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M7-FAST
82 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 | FileCheck %s --check-prefix=CORTEX-M7-DOUBLE
83 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
84 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=CORTEX-R5
85 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R5-FAST
86 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
87 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 | FileCheck %s --check-prefix=CORTEX-R7
88 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R7-FAST
89 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
90 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53
91 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A53-FAST
92 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
93 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=CORTEX-A57
94 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A57-FAST
95 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
96 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=CORTEX-A72
97 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A72-FAST
98 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
99 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A
100 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A-FAST
101 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
102 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s  --check-prefix=CORTEX-A7-CHECK
103 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s  --check-prefix=CORTEX-A7-CHECK-FAST
104 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-NOFPU
105 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-NOFPU-FAST
106 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
107 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
108 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-FPUV4-FAST
109 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,,+d16,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
110 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=pic | FileCheck %s --check-prefix=RELOC-PIC
111 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=static | FileCheck %s --check-prefix=RELOC-OTHER
112 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=default | FileCheck %s --check-prefix=RELOC-OTHER
113 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=dynamic-no-pic | FileCheck %s --check-prefix=RELOC-OTHER
114 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=RELOC-OTHER
115 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=PCS-R9-USE
116 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -arm-reserve-r9 | FileCheck %s --check-prefix=PCS-R9-RESERVE
117
118 ; ARMv8.1a (AArch32)
119 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
120 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
121 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN
122 ; ARMv8a (AArch32)
123 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
124 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
125 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
126 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
127 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
128 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
129 ; ARMv7a
130 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
131 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
132 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
133 ; ARMv7r
134 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
135 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
136 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
137 ; ARMv7m
138 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
139 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
140 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
141 ; ARMv6
142 ; RUN: llc < %s -mtriple=armv6-none-netbsd-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
143 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=STRICT-ALIGN
144 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
145 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
146 ; ARMv6k
147 ; RUN: llc < %s -mtriple=armv6k-none-netbsd-gnueabi -mcpu=arm1176j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
148 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s | FileCheck %s --check-prefix=STRICT-ALIGN
149 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
150 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
151 ; ARMv6m
152 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -arm-no-strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
153 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -arm-strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
154 ; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -arm-no-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
155 ; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
156 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
157 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
158 ; ARMv5
159 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
160 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
161 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e | FileCheck %s --check-prefix=STRICT-ALIGN
162
163 ; XSCALE:      .eabi_attribute 6, 5
164 ; XSCALE:      .eabi_attribute 8, 1
165 ; XSCALE:      .eabi_attribute 9, 1
166
167 ; DYN-ROUNDING: .eabi_attribute 19, 1
168
169 ; V6:   .eabi_attribute 6, 6
170 ; V6:   .eabi_attribute 8, 1
171 ;; We assume round-to-nearest by default (matches GCC)
172 ; V6-NOT:   .eabi_attribute 19
173 ;; The default choice made by llc is for a V6 CPU without an FPU.
174 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
175 ;; software floating-point support. The choice is not important for targets without
176 ;; FPU support!
177 ; V6:   .eabi_attribute 20, 1
178 ; V6:   .eabi_attribute 21, 1
179 ; V6-NOT:   .eabi_attribute 22
180 ; V6:   .eabi_attribute 23, 3
181 ; V6:   .eabi_attribute 24, 1
182 ; V6:   .eabi_attribute 25, 1
183 ; V6-NOT:   .eabi_attribute 27
184 ; V6-NOT:   .eabi_attribute 28
185 ; V6-NOT:    .eabi_attribute 36
186 ; V6:    .eabi_attribute 38, 1
187 ; V6-NOT:    .eabi_attribute 42
188 ; V6-NOT:  .eabi_attribute 44
189 ; V6-NOT:    .eabi_attribute 68
190
191 ; V6-FAST-NOT:   .eabi_attribute 19
192 ;; Despite the V6 CPU having no FPU by default, we chose to flush to
193 ;; positive zero here. There's no hardware support doing this, but the
194 ;; fast maths software library might.
195 ; V6-FAST-NOT:   .eabi_attribute 20
196 ; V6-FAST-NOT:   .eabi_attribute 21
197 ; V6-FAST-NOT:   .eabi_attribute 22
198 ; V6-FAST:   .eabi_attribute 23, 1
199
200 ;; We emit 6, 12 for both v6-M and v6S-M, technically this is incorrect for
201 ;; V6-M, however we don't model the OS extension so this is fine.
202 ; V6M:  .eabi_attribute 6, 12
203 ; V6M-NOT:  .eabi_attribute 7
204 ; V6M:  .eabi_attribute 8, 0
205 ; V6M:  .eabi_attribute 9, 1
206 ; V6M-NOT:   .eabi_attribute 19
207 ;; The default choice made by llc is for a V6M CPU without an FPU.
208 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
209 ;; software floating-point support. The choice is not important for targets without
210 ;; FPU support!
211 ; V6M:  .eabi_attribute 20, 1
212 ; V6M:   .eabi_attribute 21, 1
213 ; V6M-NOT:   .eabi_attribute 22
214 ; V6M:   .eabi_attribute 23, 3
215 ; V6M:  .eabi_attribute 24, 1
216 ; V6M:  .eabi_attribute 25, 1
217 ; V6M-NOT:  .eabi_attribute 27
218 ; V6M-NOT:  .eabi_attribute 28
219 ; V6M-NOT:  .eabi_attribute 36
220 ; V6M:  .eabi_attribute 38, 1
221 ; V6M-NOT:  .eabi_attribute 42
222 ; V6M-NOT:  .eabi_attribute 44
223 ; V6M-NOT:  .eabi_attribute 68
224
225 ; V6M-FAST-NOT:   .eabi_attribute 19
226 ;; Despite the V6M CPU having no FPU by default, we chose to flush to
227 ;; positive zero here. There's no hardware support doing this, but the
228 ;; fast maths software library might.
229 ; V6M-FAST-NOT:  .eabi_attribute 20
230 ; V6M-FAST-NOT:   .eabi_attribute 21
231 ; V6M-FAST-NOT:   .eabi_attribute 22
232 ; V6M-FAST:   .eabi_attribute 23, 1
233
234 ; ARM1156T2F-S: .cpu arm1156t2f-s
235 ; ARM1156T2F-S: .eabi_attribute 6, 8
236 ; ARM1156T2F-S: .eabi_attribute 8, 1
237 ; ARM1156T2F-S: .eabi_attribute 9, 2
238 ; ARM1156T2F-S: .fpu vfpv2
239 ; ARM1156T2F-S-NOT:   .eabi_attribute 19
240 ;; We default to IEEE 754 compliance
241 ; ARM1156T2F-S: .eabi_attribute 20, 1
242 ; ARM1156T2F-S: .eabi_attribute 21, 1
243 ; ARM1156T2F-S-NOT: .eabi_attribute 22
244 ; ARM1156T2F-S: .eabi_attribute 23, 3
245 ; ARM1156T2F-S: .eabi_attribute 24, 1
246 ; ARM1156T2F-S: .eabi_attribute 25, 1
247 ; ARM1156T2F-S-NOT: .eabi_attribute 27
248 ; ARM1156T2F-S-NOT: .eabi_attribute 28
249 ; ARM1156T2F-S-NOT: .eabi_attribute 36
250 ; ARM1156T2F-S: .eabi_attribute 38, 1
251 ; ARM1156T2F-S-NOT:    .eabi_attribute 42
252 ; ARM1156T2F-S-NOT:    .eabi_attribute 44
253 ; ARM1156T2F-S-NOT:    .eabi_attribute 68
254
255 ; ARM1156T2F-S-FAST-NOT:   .eabi_attribute 19
256 ;; V6 cores default to flush to positive zero (value 0). Note that value 2 is also equally
257 ;; valid for this core, it's an implementation defined question as to which of 0 and 2 you
258 ;; select. LLVM historically picks 0.
259 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 20
260 ; ARM1156T2F-S-FAST-NOT:   .eabi_attribute 21
261 ; ARM1156T2F-S-FAST-NOT:   .eabi_attribute 22
262 ; ARM1156T2F-S-FAST:   .eabi_attribute 23, 1
263
264 ; V7M:  .eabi_attribute 6, 10
265 ; V7M:  .eabi_attribute 7, 77
266 ; V7M:  .eabi_attribute 8, 0
267 ; V7M:  .eabi_attribute 9, 2
268 ; V7M-NOT:   .eabi_attribute 19
269 ;; The default choice made by llc is for a V7M CPU without an FPU.
270 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
271 ;; software floating-point support. The choice is not important for targets without
272 ;; FPU support!
273 ; V7M:  .eabi_attribute 20, 1
274 ; V7M: .eabi_attribute 21, 1
275 ; V7M-NOT: .eabi_attribute 22
276 ; V7M: .eabi_attribute 23, 3
277 ; V7M:  .eabi_attribute 24, 1
278 ; V7M:  .eabi_attribute 25, 1
279 ; V7M-NOT:  .eabi_attribute 27
280 ; V7M-NOT:  .eabi_attribute 28
281 ; V7M-NOT:  .eabi_attribute 36
282 ; V7M:  .eabi_attribute 38, 1
283 ; V7M-NOT:  .eabi_attribute 42
284 ; V7M-NOT:  .eabi_attribute 44
285 ; V7M-NOT:  .eabi_attribute 68
286
287 ; V7M-FAST-NOT:   .eabi_attribute 19
288 ;; Despite the V7M CPU having no FPU by default, we chose to flush
289 ;; preserving sign. This matches what the hardware would do in the
290 ;; architecture revision were to exist on the current target.
291 ; V7M-FAST:  .eabi_attribute 20, 2
292 ; V7M-FAST-NOT:   .eabi_attribute 21
293 ; V7M-FAST-NOT:   .eabi_attribute 22
294 ; V7M-FAST:   .eabi_attribute 23, 1
295
296 ; V7:      .syntax unified
297 ; V7: .eabi_attribute 6, 10
298 ; V7-NOT:   .eabi_attribute 19
299 ;; In safe-maths mode we default to an IEEE 754 compliant choice.
300 ; V7: .eabi_attribute 20, 1
301 ; V7: .eabi_attribute 21, 1
302 ; V7-NOT: .eabi_attribute 22
303 ; V7: .eabi_attribute 23, 3
304 ; V7: .eabi_attribute 24, 1
305 ; V7: .eabi_attribute 25, 1
306 ; V7-NOT: .eabi_attribute 27
307 ; V7-NOT: .eabi_attribute 28
308 ; V7-NOT: .eabi_attribute 36
309 ; V7: .eabi_attribute 38, 1
310 ; V7-NOT:    .eabi_attribute 42
311 ; V7-NOT:    .eabi_attribute 44
312 ; V7-NOT:    .eabi_attribute 68
313
314 ; V7-FAST-NOT:   .eabi_attribute 19
315 ;; The default CPU does have an FPU and it must be VFPv3 or better, so it flushes
316 ;; denormals to zero preserving the sign.
317 ; V7-FAST: .eabi_attribute 20, 2
318 ; V7-FAST-NOT:   .eabi_attribute 21
319 ; V7-FAST-NOT:   .eabi_attribute 22
320 ; V7-FAST:   .eabi_attribute 23, 1
321
322 ; V8:      .syntax unified
323 ; V8: .eabi_attribute 67, "2.09"
324 ; V8: .eabi_attribute 6, 14
325 ; V8-NOT:   .eabi_attribute 19
326 ; V8: .eabi_attribute 20, 1
327 ; V8: .eabi_attribute 21, 1
328 ; V8-NOT: .eabi_attribute 22
329 ; V8: .eabi_attribute 23, 3
330 ; V8-NOT: .eabi_attribute 44
331
332 ; V8-FAST-NOT:   .eabi_attribute 19
333 ;; The default does have an FPU, and for V8-A, it flushes preserving sign.
334 ; V8-FAST: .eabi_attribute 20, 2
335 ; V8-FAST-NOT: .eabi_attribute 21
336 ; V8-FAST-NOT: .eabi_attribute 22
337 ; V8-FAST: .eabi_attribute 23, 1
338
339 ; Vt8:     .syntax unified
340 ; Vt8: .eabi_attribute 6, 14
341 ; Vt8-NOT:   .eabi_attribute 19
342 ; Vt8: .eabi_attribute 20, 1
343 ; Vt8: .eabi_attribute 21, 1
344 ; Vt8-NOT: .eabi_attribute 22
345 ; Vt8: .eabi_attribute 23, 3
346
347 ; V8-FPARMv8:      .syntax unified
348 ; V8-FPARMv8: .eabi_attribute 6, 14
349 ; V8-FPARMv8: .fpu fp-armv8
350
351 ; V8-NEON:      .syntax unified
352 ; V8-NEON: .eabi_attribute 6, 14
353 ; V8-NEON: .fpu neon
354 ; V8-NEON: .eabi_attribute 12, 3
355
356 ; V8-FPARMv8-NEON:      .syntax unified
357 ; V8-FPARMv8-NEON: .eabi_attribute 6, 14
358 ; V8-FPARMv8-NEON: .fpu neon-fp-armv8
359 ; V8-FPARMv8-NEON: .eabi_attribute 12, 3
360
361 ; V8-FPARMv8-NEON-CRYPTO:      .syntax unified
362 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 6, 14
363 ; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8
364 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3
365
366 ; Tag_CPU_unaligned_access
367 ; NO-STRICT-ALIGN: .eabi_attribute 34, 1
368 ; STRICT-ALIGN: .eabi_attribute 34, 0
369
370 ; Tag_CPU_arch  'ARMv7'
371 ; CORTEX-A7-CHECK: .eabi_attribute      6, 10
372 ; CORTEX-A7-NOFPU: .eabi_attribute      6, 10
373
374 ; CORTEX-A7-FPUV4: .eabi_attribute      6, 10
375
376 ; Tag_CPU_arch_profile 'A'
377 ; CORTEX-A7-CHECK: .eabi_attribute      7, 65
378 ; CORTEX-A7-NOFPU: .eabi_attribute      7, 65
379 ; CORTEX-A7-FPUV4: .eabi_attribute      7, 65
380
381 ; Tag_ARM_ISA_use
382 ; CORTEX-A7-CHECK: .eabi_attribute      8, 1
383 ; CORTEX-A7-NOFPU: .eabi_attribute      8, 1
384 ; CORTEX-A7-FPUV4: .eabi_attribute      8, 1
385
386 ; Tag_THUMB_ISA_use
387 ; CORTEX-A7-CHECK: .eabi_attribute      9, 2
388 ; CORTEX-A7-NOFPU: .eabi_attribute      9, 2
389 ; CORTEX-A7-FPUV4: .eabi_attribute      9, 2
390
391 ; CORTEX-A7-CHECK: .fpu neon-vfpv4
392 ; CORTEX-A7-NOFPU-NOT: .fpu
393 ; CORTEX-A7-FPUV4: .fpu vfpv4
394
395 ; CORTEX-A7-CHECK-NOT:   .eabi_attribute 19
396 ; Tag_ABI_FP_denormal
397 ;; We default to IEEE 754 compliance
398 ; CORTEX-A7-CHECK: .eabi_attribute      20, 1
399 ;; The A7 has VFPv3 support by default, so flush preserving sign.
400 ; CORTEX-A7-CHECK-FAST: .eabi_attribute 20, 2
401 ; CORTEX-A7-NOFPU: .eabi_attribute      20, 1
402 ;; Despite there being no FPU, we chose to flush to zero preserving
403 ;; sign. This matches what the hardware would do for this architecture
404 ;; revision.
405 ; CORTEX-A7-NOFPU-FAST: .eabi_attribute 20, 2
406 ; CORTEX-A7-FPUV4: .eabi_attribute      20, 1
407 ;; The VFPv4 FPU flushes preserving sign.
408 ; CORTEX-A7-FPUV4-FAST: .eabi_attribute 20, 2
409
410 ; Tag_ABI_FP_exceptions
411 ; CORTEX-A7-CHECK: .eabi_attribute      21, 1
412 ; CORTEX-A7-NOFPU: .eabi_attribute      21, 1
413 ; CORTEX-A7-FPUV4: .eabi_attribute      21, 1
414
415 ; Tag_ABI_FP_user_exceptions
416 ; CORTEX-A7-CHECK-NOT: .eabi_attribute      22
417 ; CORTEX-A7-NOFPU-NOT: .eabi_attribute      22
418 ; CORTEX-A7-FPUV4-NOT: .eabi_attribute      22
419
420 ; Tag_ABI_FP_number_model
421 ; CORTEX-A7-CHECK: .eabi_attribute      23, 3
422 ; CORTEX-A7-NOFPU: .eabi_attribute      23, 3
423 ; CORTEX-A7-FPUV4: .eabi_attribute      23, 3
424
425 ; Tag_ABI_align_needed
426 ; CORTEX-A7-CHECK: .eabi_attribute      24, 1
427 ; CORTEX-A7-NOFPU: .eabi_attribute      24, 1
428 ; CORTEX-A7-FPUV4: .eabi_attribute      24, 1
429
430 ; Tag_ABI_align_preserved
431 ; CORTEX-A7-CHECK: .eabi_attribute      25, 1
432 ; CORTEX-A7-NOFPU: .eabi_attribute      25, 1
433 ; CORTEX-A7-FPUV4: .eabi_attribute      25, 1
434
435 ; Tag_FP_HP_extension
436 ; CORTEX-A7-CHECK: .eabi_attribute      36, 1
437 ; CORTEX-A7-NOFPU: .eabi_attribute      36, 1
438 ; CORTEX-A7-FPUV4: .eabi_attribute      36, 1
439
440 ; Tag_FP_16bit_format
441 ; CORTEX-A7-CHECK: .eabi_attribute      38, 1
442 ; CORTEX-A7-NOFPU: .eabi_attribute      38, 1
443 ; CORTEX-A7-FPUV4: .eabi_attribute      38, 1
444
445 ; Tag_MPextension_use
446 ; CORTEX-A7-CHECK: .eabi_attribute      42, 1
447 ; CORTEX-A7-NOFPU: .eabi_attribute      42, 1
448 ; CORTEX-A7-FPUV4: .eabi_attribute      42, 1
449
450 ; Tag_DIV_use
451 ; CORTEX-A7-CHECK: .eabi_attribute      44, 2
452 ; CORTEX-A7-NOFPU: .eabi_attribute      44, 2
453 ; CORTEX-A7-FPUV4: .eabi_attribute      44, 2
454
455 ; Tag_Virtualization_use
456 ; CORTEX-A7-CHECK: .eabi_attribute      68, 3
457 ; CORTEX-A7-NOFPU: .eabi_attribute      68, 3
458 ; CORTEX-A7-FPUV4: .eabi_attribute      68, 3
459
460 ; CORTEX-A5-DEFAULT:        .cpu    cortex-a5
461 ; CORTEX-A5-DEFAULT:        .eabi_attribute 6, 10
462 ; CORTEX-A5-DEFAULT:        .eabi_attribute 7, 65
463 ; CORTEX-A5-DEFAULT:        .eabi_attribute 8, 1
464 ; CORTEX-A5-DEFAULT:        .eabi_attribute 9, 2
465 ; CORTEX-A5-DEFAULT:        .fpu    neon-vfpv4
466 ; CORTEX-A5-NOT:   .eabi_attribute 19
467 ;; We default to IEEE 754 compliance
468 ; CORTEX-A5-DEFAULT:        .eabi_attribute 20, 1
469 ; CORTEX-A5-DEFAULT:        .eabi_attribute 21, 1
470 ; CORTEX-A5-DEFAULT-NOT:        .eabi_attribute 22
471 ; CORTEX-A5-DEFAULT:        .eabi_attribute 23, 3
472 ; CORTEX-A5-DEFAULT:        .eabi_attribute 24, 1
473 ; CORTEX-A5-DEFAULT:        .eabi_attribute 25, 1
474 ; CORTEX-A5-DEFAULT:        .eabi_attribute 42, 1
475 ; CORTEX-A5-DEFAULT-NOT:        .eabi_attribute 44
476 ; CORTEX-A5-DEFAULT:        .eabi_attribute 68, 1
477
478 ; CORTEX-A5-DEFAULT-FAST-NOT:   .eabi_attribute 19
479 ;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math
480 ;; is given.
481 ; CORTEX-A5-DEFAULT-FAST:        .eabi_attribute 20, 2
482 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 21
483 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 22
484 ; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 23, 1
485
486 ; CORTEX-A5-NONEON:        .cpu    cortex-a5
487 ; CORTEX-A5-NONEON:        .eabi_attribute 6, 10
488 ; CORTEX-A5-NONEON:        .eabi_attribute 7, 65
489 ; CORTEX-A5-NONEON:        .eabi_attribute 8, 1
490 ; CORTEX-A5-NONEON:        .eabi_attribute 9, 2
491 ; CORTEX-A5-NONEON:        .fpu    vfpv4-d16
492 ;; We default to IEEE 754 compliance
493 ; CORTEX-A5-NONEON:        .eabi_attribute 20, 1
494 ; CORTEX-A5-NONEON:        .eabi_attribute 21, 1
495 ; CORTEX-A5-NONEON-NOT:    .eabi_attribute 22
496 ; CORTEX-A5-NONEON:        .eabi_attribute 23, 3
497 ; CORTEX-A5-NONEON:        .eabi_attribute 24, 1
498 ; CORTEX-A5-NONEON:        .eabi_attribute 25, 1
499 ; CORTEX-A5-NONEON:        .eabi_attribute 42, 1
500 ; CORTEX-A5-NONEON:        .eabi_attribute 68, 1
501
502 ; CORTEX-A5-NONEON-FAST-NOT:   .eabi_attribute 19
503 ;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math
504 ;; is given.
505 ; CORTEX-A5-NONEON-FAST:        .eabi_attribute 20, 2
506 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 21
507 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 22
508 ; CORTEX-A5-NONEON-FAST: .eabi_attribute 23, 1
509
510 ; CORTEX-A5-NOFPU:        .cpu    cortex-a5
511 ; CORTEX-A5-NOFPU:        .eabi_attribute 6, 10
512 ; CORTEX-A5-NOFPU:        .eabi_attribute 7, 65
513 ; CORTEX-A5-NOFPU:        .eabi_attribute 8, 1
514 ; CORTEX-A5-NOFPU:        .eabi_attribute 9, 2
515 ; CORTEX-A5-NOFPU-NOT:    .fpu
516 ; CORTEX-A5-NOFPU-NOT:   .eabi_attribute 19
517 ;; We default to IEEE 754 compliance
518 ; CORTEX-A5-NOFPU:        .eabi_attribute 20, 1
519 ; CORTEX-A5-NOFPU:        .eabi_attribute 21, 1
520 ; CORTEX-A5-NOFPU-NOT:    .eabi_attribute 22
521 ; CORTEX-A5-NOFPU:        .eabi_attribute 23, 3
522 ; CORTEX-A5-NOFPU:        .eabi_attribute 24, 1
523 ; CORTEX-A5-NOFPU:        .eabi_attribute 25, 1
524 ; CORTEX-A5-NOFPU:        .eabi_attribute 42, 1
525 ; CORTEX-A5-NOFPU:        .eabi_attribute 68, 1
526
527 ; CORTEX-A5-NOFPU-FAST-NOT:   .eabi_attribute 19
528 ;; Despite there being no FPU, we chose to flush to zero preserving
529 ;; sign. This matches what the hardware would do for this architecture
530 ;; revision.
531 ; CORTEX-A5-NOFPU-FAST: .eabi_attribute 20, 2
532 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 21
533 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 22
534 ; CORTEX-A5-NOFPU-FAST: .eabi_attribute 23, 1
535
536 ; CORTEX-A9-SOFT:  .cpu cortex-a9
537 ; CORTEX-A9-SOFT:  .eabi_attribute 6, 10
538 ; CORTEX-A9-SOFT:  .eabi_attribute 7, 65
539 ; CORTEX-A9-SOFT:  .eabi_attribute 8, 1
540 ; CORTEX-A9-SOFT:  .eabi_attribute 9, 2
541 ; CORTEX-A9-SOFT:  .fpu neon
542 ; CORTEX-A9-SOFT-NOT:   .eabi_attribute 19
543 ;; We default to IEEE 754 compliance
544 ; CORTEX-A9-SOFT:  .eabi_attribute 20, 1
545 ; CORTEX-A9-SOFT:  .eabi_attribute 21, 1
546 ; CORTEX-A9-SOFT-NOT:  .eabi_attribute 22
547 ; CORTEX-A9-SOFT:  .eabi_attribute 23, 3
548 ; CORTEX-A9-SOFT:  .eabi_attribute 24, 1
549 ; CORTEX-A9-SOFT:  .eabi_attribute 25, 1
550 ; CORTEX-A9-SOFT-NOT:  .eabi_attribute 27
551 ; CORTEX-A9-SOFT-NOT:  .eabi_attribute 28
552 ; CORTEX-A9-SOFT:  .eabi_attribute 36, 1
553 ; CORTEX-A9-SOFT:  .eabi_attribute 38, 1
554 ; CORTEX-A9-SOFT:  .eabi_attribute 42, 1
555 ; CORTEX-A9-SOFT-NOT:  .eabi_attribute 44
556 ; CORTEX-A9-SOFT:  .eabi_attribute 68, 1
557
558 ; CORTEX-A9-SOFT-FAST-NOT:   .eabi_attribute 19
559 ;; The A9 defaults to a VFPv3 FPU, so it flushes preseving sign when
560 ;; -ffast-math is specified.
561 ; CORTEX-A9-SOFT-FAST:  .eabi_attribute 20, 2
562 ; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 21
563 ; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 22
564 ; CORTEX-A5-SOFT-FAST: .eabi_attribute 23, 1
565
566 ; CORTEX-A9-HARD:  .cpu cortex-a9
567 ; CORTEX-A9-HARD:  .eabi_attribute 6, 10
568 ; CORTEX-A9-HARD:  .eabi_attribute 7, 65
569 ; CORTEX-A9-HARD:  .eabi_attribute 8, 1
570 ; CORTEX-A9-HARD:  .eabi_attribute 9, 2
571 ; CORTEX-A9-HARD:  .fpu neon
572 ; CORTEX-A9-HARD-NOT:   .eabi_attribute 19
573 ;; We default to IEEE 754 compliance
574 ; CORTEX-A9-HARD:  .eabi_attribute 20, 1
575 ; CORTEX-A9-HARD:  .eabi_attribute 21, 1
576 ; CORTEX-A9-HARD-NOT:  .eabi_attribute 22
577 ; CORTEX-A9-HARD:  .eabi_attribute 23, 3
578 ; CORTEX-A9-HARD:  .eabi_attribute 24, 1
579 ; CORTEX-A9-HARD:  .eabi_attribute 25, 1
580 ; CORTEX-A9-HARD-NOT:  .eabi_attribute 27
581 ; CORTEX-A9-HARD:  .eabi_attribute 28, 1
582 ; CORTEX-A9-HARD:  .eabi_attribute 36, 1
583 ; CORTEX-A9-HARD:  .eabi_attribute 38, 1
584 ; CORTEX-A9-HARD:  .eabi_attribute 42, 1
585 ; CORTEX-A9-HARD:  .eabi_attribute 68, 1
586
587 ; CORTEX-A9-HARD-FAST-NOT:   .eabi_attribute 19
588 ;; The A9 defaults to a VFPv3 FPU, so it flushes preseving sign when
589 ;; -ffast-math is specified.
590 ; CORTEX-A9-HARD-FAST:  .eabi_attribute 20, 2
591 ; CORTEX-A9-HARD-FAST-NOT:  .eabi_attribute 21
592 ; CORTEX-A9-HARD-FAST-NOT:  .eabi_attribute 22
593 ; CORTEX-A9-HARD-FAST:  .eabi_attribute 23, 1
594
595 ; CORTEX-A12-DEFAULT:  .cpu cortex-a12
596 ; CORTEX-A12-DEFAULT:  .eabi_attribute 6, 10
597 ; CORTEX-A12-DEFAULT:  .eabi_attribute 7, 65
598 ; CORTEX-A12-DEFAULT:  .eabi_attribute 8, 1
599 ; CORTEX-A12-DEFAULT:  .eabi_attribute 9, 2
600 ; CORTEX-A12-DEFAULT:  .fpu neon-vfpv4
601 ; CORTEX-A12-DEFAULT-NOT:   .eabi_attribute 19
602 ;; We default to IEEE 754 compliance
603 ; CORTEX-A12-DEFAULT:  .eabi_attribute 20, 1
604 ; CORTEX-A12-DEFAULT:  .eabi_attribute 21, 1
605 ; CORTEX-A12-DEFAULT-NOT:  .eabi_attribute 22
606 ; CORTEX-A12-DEFAULT:  .eabi_attribute 23, 3
607 ; CORTEX-A12-DEFAULT:  .eabi_attribute 24, 1
608 ; CORTEX-A12-DEFAULT:  .eabi_attribute 25, 1
609 ; CORTEX-A12-DEFAULT:  .eabi_attribute 42, 1
610 ; CORTEX-A12-DEFAULT:  .eabi_attribute 44, 2
611 ; CORTEX-A12-DEFAULT:  .eabi_attribute 68, 3
612
613 ; CORTEX-A12-DEFAULT-FAST-NOT:   .eabi_attribute 19
614 ;; The A12 defaults to a VFPv3 FPU, so it flushes preseving sign when
615 ;; -ffast-math is specified.
616 ; CORTEX-A12-DEFAULT-FAST:  .eabi_attribute 20, 2
617 ; CORTEX-A12-HARD-FAST-NOT:  .eabi_attribute 21
618 ; CORTEX-A12-HARD-FAST-NOT:  .eabi_attribute 22
619 ; CORTEX-A12-HARD-FAST:  .eabi_attribute 23, 1
620
621 ; CORTEX-A12-NOFPU:  .cpu cortex-a12
622 ; CORTEX-A12-NOFPU:  .eabi_attribute 6, 10
623 ; CORTEX-A12-NOFPU:  .eabi_attribute 7, 65
624 ; CORTEX-A12-NOFPU:  .eabi_attribute 8, 1
625 ; CORTEX-A12-NOFPU:  .eabi_attribute 9, 2
626 ; CORTEX-A12-NOFPU-NOT:  .fpu
627 ; CORTEX-A12-NOFPU-NOT:   .eabi_attribute 19
628 ;; We default to IEEE 754 compliance
629 ; CORTEX-A12-NOFPU:  .eabi_attribute 20, 1
630 ; CORTEX-A12-NOFPU:  .eabi_attribute 21, 1
631 ; CORTEX-A12-NOFPU-NOT:  .eabi_attribute 22
632 ; CORTEX-A12-NOFPU:  .eabi_attribute 23, 3
633 ; CORTEX-A12-NOFPU:  .eabi_attribute 24, 1
634 ; CORTEX-A12-NOFPU:  .eabi_attribute 25, 1
635 ; CORTEX-A12-NOFPU:  .eabi_attribute 42, 1
636 ; CORTEX-A12-NOFPU:  .eabi_attribute 44, 2
637 ; CORTEX-A12-NOFPU:  .eabi_attribute 68, 3
638
639 ; CORTEX-A12-NOFPU-FAST-NOT:   .eabi_attribute 19
640 ;; Despite there being no FPU, we chose to flush to zero preserving
641 ;; sign. This matches what the hardware would do for this architecture
642 ;; revision.
643 ; CORTEX-A12-NOFPU-FAST:  .eabi_attribute 20, 2
644 ; CORTEX-A12-NOFPU-FAST-NOT:  .eabi_attribute 21
645 ; CORTEX-A12-NOFPU-FAST-NOT:  .eabi_attribute 22
646 ; CORTEX-A12-NOFPU-FAST:  .eabi_attribute 23, 1
647
648 ; CORTEX-A15: .cpu cortex-a15
649 ; CORTEX-A15: .eabi_attribute 6, 10
650 ; CORTEX-A15: .eabi_attribute 7, 65
651 ; CORTEX-A15: .eabi_attribute 8, 1
652 ; CORTEX-A15: .eabi_attribute 9, 2
653 ; CORTEX-A15: .fpu neon-vfpv4
654 ; CORTEX-A15-NOT:   .eabi_attribute 19
655 ;; We default to IEEE 754 compliance
656 ; CORTEX-A15: .eabi_attribute 20, 1
657 ; CORTEX-A15: .eabi_attribute 21, 1
658 ; CORTEX-A15-NOT: .eabi_attribute 22
659 ; CORTEX-A15: .eabi_attribute 23, 3
660 ; CORTEX-A15: .eabi_attribute 24, 1
661 ; CORTEX-A15: .eabi_attribute 25, 1
662 ; CORTEX-A15-NOT: .eabi_attribute 27
663 ; CORTEX-A15-NOT: .eabi_attribute 28
664 ; CORTEX-A15: .eabi_attribute 36, 1
665 ; CORTEX-A15: .eabi_attribute 38, 1
666 ; CORTEX-A15: .eabi_attribute 42, 1
667 ; CORTEX-A15: .eabi_attribute 44, 2
668 ; CORTEX-A15: .eabi_attribute 68, 3
669
670 ; CORTEX-A15-FAST-NOT:   .eabi_attribute 19
671 ;; The A15 defaults to a VFPv3 FPU, so it flushes preseving sign when
672 ;; -ffast-math is specified.
673 ; CORTEX-A15-FAST: .eabi_attribute 20, 2
674 ; CORTEX-A15-FAST-NOT:  .eabi_attribute 21
675 ; CORTEX-A15-FAST-NOT:  .eabi_attribute 22
676 ; CORTEX-A15-FAST:  .eabi_attribute 23, 1
677
678 ; CORTEX-A17-DEFAULT:  .cpu cortex-a17
679 ; CORTEX-A17-DEFAULT:  .eabi_attribute 6, 10
680 ; CORTEX-A17-DEFAULT:  .eabi_attribute 7, 65
681 ; CORTEX-A17-DEFAULT:  .eabi_attribute 8, 1
682 ; CORTEX-A17-DEFAULT:  .eabi_attribute 9, 2
683 ; CORTEX-A17-DEFAULT:  .fpu neon-vfpv4
684 ; CORTEX-A17-DEFAULT-NOT:   .eabi_attribute 19
685 ;; We default to IEEE 754 compliance
686 ; CORTEX-A17-DEFAULT:  .eabi_attribute 20, 1
687 ; CORTEX-A17-DEFAULT:  .eabi_attribute 21, 1
688 ; CORTEX-A17-DEFAULT-NOT:  .eabi_attribute 22
689 ; CORTEX-A17-DEFAULT:  .eabi_attribute 23, 3
690 ; CORTEX-A17-DEFAULT:  .eabi_attribute 24, 1
691 ; CORTEX-A17-DEFAULT:  .eabi_attribute 25, 1
692 ; CORTEX-A17-DEFAULT:  .eabi_attribute 42, 1
693 ; CORTEX-A17-DEFAULT:  .eabi_attribute 44, 2
694 ; CORTEX-A17-DEFAULT:  .eabi_attribute 68, 3
695
696 ; CORTEX-A17-FAST-NOT:   .eabi_attribute 19
697 ;; The A17 defaults to a VFPv3 FPU, so it flushes preseving sign when
698 ;; -ffast-math is specified.
699 ; CORTEX-A17-FAST:  .eabi_attribute 20, 2
700 ; CORTEX-A17-FAST-NOT:  .eabi_attribute 21
701 ; CORTEX-A17-FAST-NOT:  .eabi_attribute 22
702 ; CORTEX-A17-FAST:  .eabi_attribute 23, 1
703
704 ; CORTEX-A17-NOFPU:  .cpu cortex-a17
705 ; CORTEX-A17-NOFPU:  .eabi_attribute 6, 10
706 ; CORTEX-A17-NOFPU:  .eabi_attribute 7, 65
707 ; CORTEX-A17-NOFPU:  .eabi_attribute 8, 1
708 ; CORTEX-A17-NOFPU:  .eabi_attribute 9, 2
709 ; CORTEX-A17-NOFPU-NOT:  .fpu
710 ; CORTEX-A17-NOFPU-NOT:   .eabi_attribute 19
711 ;; We default to IEEE 754 compliance
712 ; CORTEX-A17-NOFPU:  .eabi_attribute 20, 1
713 ; CORTEX-A17-NOFPU:  .eabi_attribute 21, 1
714 ; CORTEX-A17-NOFPU-NOT:  .eabi_attribute 22
715 ; CORTEX-A17-NOFPU:  .eabi_attribute 23, 3
716 ; CORTEX-A17-NOFPU:  .eabi_attribute 24, 1
717 ; CORTEX-A17-NOFPU:  .eabi_attribute 25, 1
718 ; CORTEX-A17-NOFPU:  .eabi_attribute 42, 1
719 ; CORTEX-A17-NOFPU:  .eabi_attribute 44, 2
720 ; CORTEX-A17-NOFPU:  .eabi_attribute 68, 3
721
722 ; CORTEX-A17-NOFPU-NOT:   .eabi_attribute 19
723 ;; Despite there being no FPU, we chose to flush to zero preserving
724 ;; sign. This matches what the hardware would do for this architecture
725 ;; revision.
726 ; CORTEX-A17-NOFPU-FAST:  .eabi_attribute 20, 2
727 ; CORTEX-A17-NOFPU-FAST-NOT:  .eabi_attribute 21
728 ; CORTEX-A17-NOFPU-FAST-NOT:  .eabi_attribute 22
729 ; CORTEX-A17-NOFPU-FAST:  .eabi_attribute 23, 1
730
731 ; CORTEX-M0:  .cpu cortex-m0
732 ; CORTEX-M0:  .eabi_attribute 6, 12
733 ; CORTEX-M0-NOT:  .eabi_attribute 7
734 ; CORTEX-M0:  .eabi_attribute 8, 0
735 ; CORTEX-M0:  .eabi_attribute 9, 1
736 ; CORTEX-M0-NOT:   .eabi_attribute 19
737 ;; We default to IEEE 754 compliance
738 ; CORTEX-M0:  .eabi_attribute 20, 1
739 ; CORTEX-M0:  .eabi_attribute 21, 1
740 ; CORTEX-M0-NOT:  .eabi_attribute 22
741 ; CORTEX-M0:  .eabi_attribute 23, 3
742 ; CORTEX-M0:  .eabi_attribute 24, 1
743 ; CORTEX-M0:  .eabi_attribute 25, 1
744 ; CORTEX-M0-NOT:  .eabi_attribute 27
745 ; CORTEX-M0-NOT:  .eabi_attribute 28
746 ; CORTEX-M0-NOT:  .eabi_attribute 36
747 ; CORTEX-M0:  .eabi_attribute 38, 1
748 ; CORTEX-M0-NOT:  .eabi_attribute 42
749 ; CORTEX-M0-NOT:  .eabi_attribute 44
750 ; CORTEX-M0-NOT:  .eabi_attribute 68
751
752 ; CORTEX-M0-FAST-NOT:   .eabi_attribute 19
753 ;; Despite the M0 CPU having no FPU in this scenario, we chose to
754 ;; flush to positive zero here. There's no hardware support doing
755 ;; this, but the fast maths software library might and such behaviour
756 ;; would match hardware support on this architecture revision if it
757 ;; existed.
758 ; CORTEX-M0-FAST-NOT:  .eabi_attribute 20
759 ; CORTEX-M0-FAST-NOT:  .eabi_attribute 21
760 ; CORTEX-M0-FAST-NOT:  .eabi_attribute 22
761 ; CORTEX-M0-FAST:  .eabi_attribute 23, 1
762
763 ; CORTEX-M0PLUS:  .cpu cortex-m0plus
764 ; CORTEX-M0PLUS:  .eabi_attribute 6, 12
765 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 7
766 ; CORTEX-M0PLUS:  .eabi_attribute 8, 0
767 ; CORTEX-M0PLUS:  .eabi_attribute 9, 1
768 ; CORTEX-M0PLUS-NOT:   .eabi_attribute 19
769 ;; We default to IEEE 754 compliance
770 ; CORTEX-M0PLUS:  .eabi_attribute 20, 1
771 ; CORTEX-M0PLUS:  .eabi_attribute 21, 1
772 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 22
773 ; CORTEX-M0PLUS:  .eabi_attribute 23, 3
774 ; CORTEX-M0PLUS:  .eabi_attribute 24, 1
775 ; CORTEX-M0PLUS:  .eabi_attribute 25, 1
776 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 27
777 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 28
778 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 36
779 ; CORTEX-M0PLUS:  .eabi_attribute 38, 1
780 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 42
781 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 44
782 ; CORTEX-M0PLUS-NOT:  .eabi_attribute 68
783
784 ; CORTEX-M0PLUS-FAST-NOT:   .eabi_attribute 19
785 ;; Despite the M0+ CPU having no FPU in this scenario, we chose to
786 ;; flush to positive zero here. There's no hardware support doing
787 ;; this, but the fast maths software library might and such behaviour
788 ;; would match hardware support on this architecture revision if it
789 ;; existed.
790 ; CORTEX-M0PLUS-FAST-NOT:  .eabi_attribute 20
791 ; CORTEX-M0PLUS-FAST-NOT:  .eabi_attribute 21
792 ; CORTEX-M0PLUS-FAST-NOT:  .eabi_attribute 22
793 ; CORTEX-M0PLUS-FAST:  .eabi_attribute 23, 1
794
795 ; CORTEX-M1:  .cpu cortex-m1
796 ; CORTEX-M1:  .eabi_attribute 6, 12
797 ; CORTEX-M1-NOT:  .eabi_attribute 7
798 ; CORTEX-M1:  .eabi_attribute 8, 0
799 ; CORTEX-M1:  .eabi_attribute 9, 1
800 ; CORTEX-M1-NOT:   .eabi_attribute 19
801 ;; We default to IEEE 754 compliance
802 ; CORTEX-M1:  .eabi_attribute 20, 1
803 ; CORTEX-M1:  .eabi_attribute 21, 1
804 ; CORTEX-M1-NOT:  .eabi_attribute 22
805 ; CORTEX-M1:  .eabi_attribute 23, 3
806 ; CORTEX-M1:  .eabi_attribute 24, 1
807 ; CORTEX-M1:  .eabi_attribute 25, 1
808 ; CORTEX-M1-NOT:  .eabi_attribute 27
809 ; CORTEX-M1-NOT:  .eabi_attribute 28
810 ; CORTEX-M1-NOT:  .eabi_attribute 36
811 ; CORTEX-M1:  .eabi_attribute 38, 1
812 ; CORTEX-M1-NOT:  .eabi_attribute 42
813 ; CORTEX-M1-NOT:  .eabi_attribute 44
814 ; CORTEX-M1-NOT:  .eabi_attribute 68
815
816 ; CORTEX-M1-FAST-NOT:   .eabi_attribute 19
817 ;; Despite the M1 CPU having no FPU in this scenario, we chose to
818 ;; flush to positive zero here. There's no hardware support doing
819 ;; this, but the fast maths software library might and such behaviour
820 ;; would match hardware support on this architecture revision if it
821 ;; existed.
822 ; CORTEX-M1-FAST-NOT:  .eabi_attribute 20
823 ; CORTEX-M1-FAST-NOT:  .eabi_attribute 21
824 ; CORTEX-M1-FAST-NOT:  .eabi_attribute 22
825 ; CORTEX-M1-FAST:  .eabi_attribute 23, 1
826
827 ; SC000:  .cpu sc000
828 ; SC000:  .eabi_attribute 6, 12
829 ; SC000-NOT:  .eabi_attribute 7
830 ; SC000:  .eabi_attribute 8, 0
831 ; SC000:  .eabi_attribute 9, 1
832 ; SC000-NOT:   .eabi_attribute 19
833 ;; We default to IEEE 754 compliance
834 ; SC000:  .eabi_attribute 20, 1
835 ; SC000:  .eabi_attribute 21, 1
836 ; SC000-NOT:  .eabi_attribute 22
837 ; SC000:  .eabi_attribute 23, 3
838 ; SC000:  .eabi_attribute 24, 1
839 ; SC000:  .eabi_attribute 25, 1
840 ; SC000-NOT:  .eabi_attribute 27
841 ; SC000-NOT:  .eabi_attribute 28
842 ; SC000-NOT:  .eabi_attribute 36
843 ; SC000:  .eabi_attribute 38, 1
844 ; SC000-NOT:  .eabi_attribute 42
845 ; SC000-NOT:  .eabi_attribute 44
846 ; SC000-NOT:  .eabi_attribute 68
847
848 ; SC000-FAST-NOT:   .eabi_attribute 19
849 ;; Despite the SC000 CPU having no FPU in this scenario, we chose to
850 ;; flush to positive zero here. There's no hardware support doing
851 ;; this, but the fast maths software library might and such behaviour
852 ;; would match hardware support on this architecture revision if it
853 ;; existed.
854 ; SC000-FAST-NOT:  .eabi_attribute 20
855 ; SC000-FAST-NOT:  .eabi_attribute 21
856 ; SC000-FAST-NOT:  .eabi_attribute 22
857 ; SC000-FAST:  .eabi_attribute 23, 1
858
859 ; CORTEX-M3:  .cpu cortex-m3
860 ; CORTEX-M3:  .eabi_attribute 6, 10
861 ; CORTEX-M3:  .eabi_attribute 7, 77
862 ; CORTEX-M3:  .eabi_attribute 8, 0
863 ; CORTEX-M3:  .eabi_attribute 9, 2
864 ; CORTEX-M3-NOT:   .eabi_attribute 19
865 ;; We default to IEEE 754 compliance
866 ; CORTEX-M3:  .eabi_attribute 20, 1
867 ; CORTEX-M3:  .eabi_attribute 21, 1
868 ; CORTEX-M3-NOT:  .eabi_attribute 22
869 ; CORTEX-M3:  .eabi_attribute 23, 3
870 ; CORTEX-M3:  .eabi_attribute 24, 1
871 ; CORTEX-M3:  .eabi_attribute 25, 1
872 ; CORTEX-M3-NOT:  .eabi_attribute 27
873 ; CORTEX-M3-NOT:  .eabi_attribute 28
874 ; CORTEX-M3-NOT:  .eabi_attribute 36
875 ; CORTEX-M3:  .eabi_attribute 38, 1
876 ; CORTEX-M3-NOT:  .eabi_attribute 42
877 ; CORTEX-M3-NOT:  .eabi_attribute 44
878 ; CORTEX-M3-NOT:  .eabi_attribute 68
879
880 ; CORTEX-M3-FAST-NOT:   .eabi_attribute 19
881 ;; Despite there being no FPU, we chose to flush to zero preserving
882 ;; sign. This matches what the hardware would do for this architecture
883 ;; revision.
884 ; CORTEX-M3-FAST:  .eabi_attribute 20, 2
885 ; CORTEX-M3-FAST-NOT:  .eabi_attribute 21
886 ; CORTEX-M3-FAST-NOT:  .eabi_attribute 22
887 ; CORTEX-M3-FAST:  .eabi_attribute 23, 1
888
889 ; SC300:  .cpu sc300
890 ; SC300:  .eabi_attribute 6, 10
891 ; SC300:  .eabi_attribute 7, 77
892 ; SC300:  .eabi_attribute 8, 0
893 ; SC300:  .eabi_attribute 9, 2
894 ; SC300-NOT:   .eabi_attribute 19
895 ;; We default to IEEE 754 compliance
896 ; SC300:  .eabi_attribute 20, 1
897 ; SC300:  .eabi_attribute 21, 1
898 ; SC300-NOT:  .eabi_attribute 22
899 ; SC300:  .eabi_attribute 23, 3
900 ; SC300:  .eabi_attribute 24, 1
901 ; SC300:  .eabi_attribute 25, 1
902 ; SC300-NOT:  .eabi_attribute 27
903 ; SC300-NOT:  .eabi_attribute 28
904 ; SC300-NOT:  .eabi_attribute 36
905 ; SC300:  .eabi_attribute 38, 1
906 ; SC300-NOT:  .eabi_attribute 42
907 ; SC300-NOT:  .eabi_attribute 44
908 ; SC300-NOT:  .eabi_attribute 68
909
910 ; SC300-FAST-NOT:   .eabi_attribute 19
911 ;; Despite there being no FPU, we chose to flush to zero preserving
912 ;; sign. This matches what the hardware would do for this architecture
913 ;; revision.
914 ; SC300-FAST:  .eabi_attribute 20, 2
915 ; SC300-FAST-NOT:  .eabi_attribute 21
916 ; SC300-FAST-NOT:  .eabi_attribute 22
917 ; SC300-FAST:  .eabi_attribute 23, 1
918
919 ; CORTEX-M4-SOFT:  .cpu cortex-m4
920 ; CORTEX-M4-SOFT:  .eabi_attribute 6, 13
921 ; CORTEX-M4-SOFT:  .eabi_attribute 7, 77
922 ; CORTEX-M4-SOFT:  .eabi_attribute 8, 0
923 ; CORTEX-M4-SOFT:  .eabi_attribute 9, 2
924 ; CORTEX-M4-SOFT:  .fpu vfpv4-d16
925 ; CORTEX-M4-SOFT-NOT:   .eabi_attribute 19
926 ;; We default to IEEE 754 compliance
927 ; CORTEX-M4-SOFT:  .eabi_attribute 20, 1
928 ; CORTEX-M4-SOFT:  .eabi_attribute 21, 1
929 ; CORTEX-M4-SOFT-NOT:  .eabi_attribute 22
930 ; CORTEX-M4-SOFT:  .eabi_attribute 23, 3
931 ; CORTEX-M4-SOFT:  .eabi_attribute 24, 1
932 ; CORTEX-M4-SOFT:  .eabi_attribute 25, 1
933 ; CORTEX-M4-SOFT:  .eabi_attribute 27, 1
934 ; CORTEX-M4-SOFT-NOT:  .eabi_attribute 28
935 ; CORTEX-M4-SOFT:  .eabi_attribute 36, 1
936 ; CORTEX-M4-SOFT:  .eabi_attribute 38, 1
937 ; CORTEX-M4-SOFT-NOT:  .eabi_attribute 42
938 ; CORTEX-M4-SOFT-NOT:  .eabi_attribute 44
939 ; CORTEX-M4-SOFT-NOT:  .eabi_attribute 68
940
941 ; CORTEX-M4-SOFT-FAST-NOT:   .eabi_attribute 19
942 ;; The M4 defaults to a VFPv4 FPU, so it flushes preseving sign when
943 ;; -ffast-math is specified.
944 ; CORTEX-M4-SOFT-FAST:  .eabi_attribute 20, 2
945 ; CORTEX-M4-SOFT-FAST-NOT:  .eabi_attribute 21
946 ; CORTEX-M4-SOFT-FAST-NOT:  .eabi_attribute 22
947 ; CORTEX-M4-SOFT-FAST:  .eabi_attribute 23, 1
948
949 ; CORTEX-M4-HARD:  .cpu cortex-m4
950 ; CORTEX-M4-HARD:  .eabi_attribute 6, 13
951 ; CORTEX-M4-HARD:  .eabi_attribute 7, 77
952 ; CORTEX-M4-HARD:  .eabi_attribute 8, 0
953 ; CORTEX-M4-HARD:  .eabi_attribute 9, 2
954 ; CORTEX-M4-HARD:  .fpu vfpv4-d16
955 ; CORTEX-M4-HARD-NOT:   .eabi_attribute 19
956 ;; We default to IEEE 754 compliance
957 ; CORTEX-M4-HARD:  .eabi_attribute 20, 1
958 ; CORTEX-M4-HARD:  .eabi_attribute 21, 1
959 ; CORTEX-M4-HARD-NOT:  .eabi_attribute 22
960 ; CORTEX-M4-HARD:  .eabi_attribute 23, 3
961 ; CORTEX-M4-HARD:  .eabi_attribute 24, 1
962 ; CORTEX-M4-HARD:  .eabi_attribute 25, 1
963 ; CORTEX-M4-HARD:  .eabi_attribute 27, 1
964 ; CORTEX-M4-HARD:  .eabi_attribute 28, 1
965 ; CORTEX-M4-HARD:  .eabi_attribute 36, 1
966 ; CORTEX-M4-HARD:  .eabi_attribute 38, 1
967 ; CORTEX-M4-HARD-NOT:  .eabi_attribute 42
968 ; CORTEX-M4-HARD-NOT:  .eabi_attribute 44
969 ; CORTEX-M4-HARD-NOT:  .eabi_attribute 68
970
971 ; CORTEX-M4-HARD-FAST-NOT:   .eabi_attribute 19
972 ;; The M4 defaults to a VFPv4 FPU, so it flushes preseving sign when
973 ;; -ffast-math is specified.
974 ; CORTEX-M4-HARD-FAST:  .eabi_attribute 20, 2
975 ; CORTEX-M4-HARD-FAST-NOT:  .eabi_attribute 21
976 ; CORTEX-M4-HARD-FAST-NOT:  .eabi_attribute 22
977 ; CORTEX-M4-HARD-FAST:  .eabi_attribute 23, 1
978
979 ; CORTEX-M7:  .cpu    cortex-m7
980 ; CORTEX-M7:  .eabi_attribute 6, 13
981 ; CORTEX-M7:  .eabi_attribute 7, 77
982 ; CORTEX-M7:  .eabi_attribute 8, 0
983 ; CORTEX-M7:  .eabi_attribute 9, 2
984 ; CORTEX-M7-SOFT-NOT: .fpu
985 ; CORTEX-M7-SINGLE:  .fpu fpv5-d16
986 ; CORTEX-M7-DOUBLE:  .fpu fpv5-d16
987 ; CORTEX-M7:  .eabi_attribute 17, 1
988 ; CORTEX-M7-NOT:   .eabi_attribute 19
989 ;; We default to IEEE 754 compliance
990 ; CORTEX-M7:  .eabi_attribute 20, 1
991 ; CORTEX-M7:  .eabi_attribute 21, 1
992 ; CORTEX-M7-NOT:  .eabi_attribute 22
993 ; CORTEX-M7:  .eabi_attribute 23, 3
994 ; CORTEX-M7:  .eabi_attribute 24, 1
995 ; CORTEX-M7:  .eabi_attribute 25, 1
996 ; CORTEX-M7-SOFT-NOT: .eabi_attribute 27
997 ; CORTEX-M7-SINGLE:  .eabi_attribute 27, 1
998 ; CORTEX-M7-DOUBLE-NOT: .eabi_attribute 27
999 ; CORTEX-M7:  .eabi_attribute 36, 1
1000 ; CORTEX-M7:  .eabi_attribute 38, 1
1001 ; CORTEX-M7-NOT:  .eabi_attribute 44
1002 ; CORTEX-M7:  .eabi_attribute 14, 0
1003
1004 ; CORTEX-M7-NOFPU-FAST-NOT:   .eabi_attribute 19
1005 ;; The M7 has the ARMv8 FP unit, which always flushes preserving sign.
1006 ; CORTEX-M7-FAST:  .eabi_attribute 20, 2
1007 ;; Despite there being no FPU, we chose to flush to zero preserving
1008 ;; sign. This matches what the hardware would do for this architecture
1009 ;; revision.
1010 ; CORTEX-M7-NOFPU-FAST: .eabi_attribute 20, 2
1011 ; CORTEX-M7-NOFPU-FAST-NOT:  .eabi_attribute 21
1012 ; CORTEX-M7-NOFPU-FAST-NOT:  .eabi_attribute 22
1013 ; CORTEX-M7-NOFPU-FAST:  .eabi_attribute 23, 1
1014
1015 ; CORTEX-R5:  .cpu cortex-r5
1016 ; CORTEX-R5:  .eabi_attribute 6, 10
1017 ; CORTEX-R5:  .eabi_attribute 7, 82
1018 ; CORTEX-R5:  .eabi_attribute 8, 1
1019 ; CORTEX-R5:  .eabi_attribute 9, 2
1020 ; CORTEX-R5:  .fpu vfpv3-d16
1021 ; CORTEX-R5-NOT:   .eabi_attribute 19
1022 ;; We default to IEEE 754 compliance
1023 ; CORTEX-R5:  .eabi_attribute 20, 1
1024 ; CORTEX-R5:  .eabi_attribute 21, 1
1025 ; CORTEX-R5-NOT:  .eabi_attribute 22
1026 ; CORTEX-R5:  .eabi_attribute 23, 3
1027 ; CORTEX-R5:  .eabi_attribute 24, 1
1028 ; CORTEX-R5:  .eabi_attribute 25, 1
1029 ; CORTEX-R5:  .eabi_attribute 27, 1
1030 ; CORTEX-R5-NOT:  .eabi_attribute 28
1031 ; CORTEX-R5-NOT:  .eabi_attribute 36
1032 ; CORTEX-R5:  .eabi_attribute 38, 1
1033 ; CORTEX-R5-NOT:  .eabi_attribute 42
1034 ; CORTEX-R5:  .eabi_attribute 44, 2
1035 ; CORTEX-R5-NOT:  .eabi_attribute 68
1036
1037 ; CORTEX-R5-FAST-NOT:   .eabi_attribute 19
1038 ;; The R5 has the VFPv3 FP unit, which always flushes preserving sign.
1039 ; CORTEX-R5-FAST:  .eabi_attribute 20, 2
1040 ; CORTEX-R5-FAST-NOT:  .eabi_attribute 21
1041 ; CORTEX-R5-FAST-NOT:  .eabi_attribute 22
1042 ; CORTEX-R5-FAST:  .eabi_attribute 23, 1
1043
1044 ; CORTEX-R7:  .cpu cortex-r7
1045 ; CORTEX-R7:  .eabi_attribute 6, 10
1046 ; CORTEX-R7:  .eabi_attribute 7, 82
1047 ; CORTEX-R7:  .eabi_attribute 8, 1
1048 ; CORTEX-R7:  .eabi_attribute 9, 2
1049 ; CORTEX-R7:  .fpu vfpv3-d16
1050 ; CORTEX-R7-NOT:   .eabi_attribute 19
1051 ;; We default to IEEE 754 compliance
1052 ; CORTEX-R7:  .eabi_attribute 20, 1
1053 ; CORTEX-R7:  .eabi_attribute 21, 1
1054 ; CORTEX-R7-NOT:  .eabi_attribute 22
1055 ; CORTEX-R7:  .eabi_attribute 23, 3
1056 ; CORTEX-R7:  .eabi_attribute 24, 1
1057 ; CORTEX-R7:  .eabi_attribute 25, 1
1058 ; CORTEX-R7:  .eabi_attribute 27, 1
1059 ; CORTEX-R7-NOT:  .eabi_attribute 28
1060 ; CORTEX-R7-NOT:  .eabi_attribute 36
1061 ; CORTEX-R7:  .eabi_attribute 38, 1
1062 ; CORTEX-R7:  .eabi_attribute 42, 1
1063 ; CORTEX-R7:  .eabi_attribute 44, 2
1064 ; CORTEX-R7-NOT:  .eabi_attribute 68
1065
1066 ; CORTEX-R7-FAST-NOT:   .eabi_attribute 19
1067 ;; The R7 has the VFPv3 FP unit, which always flushes preserving sign.
1068 ; CORTEX-R7-FAST:  .eabi_attribute 20, 2
1069 ; CORTEX-R7-FAST-NOT:  .eabi_attribute 21
1070 ; CORTEX-R7-FAST-NOT:  .eabi_attribute 22
1071 ; CORTEX-R7-FAST:  .eabi_attribute 23, 1
1072
1073 ; CORTEX-A53:  .cpu cortex-a53
1074 ; CORTEX-A53:  .eabi_attribute 6, 14
1075 ; CORTEX-A53:  .eabi_attribute 7, 65
1076 ; CORTEX-A53:  .eabi_attribute 8, 1
1077 ; CORTEX-A53:  .eabi_attribute 9, 2
1078 ; CORTEX-A53:  .fpu crypto-neon-fp-armv8
1079 ; CORTEX-A53:  .eabi_attribute 12, 3
1080 ; CORTEX-A53-NOT:   .eabi_attribute 19
1081 ;; We default to IEEE 754 compliance
1082 ; CORTEX-A53:  .eabi_attribute 20, 1
1083 ; CORTEX-A53:  .eabi_attribute 21, 1
1084 ; CORTEX-A53-NOT:  .eabi_attribute 22
1085 ; CORTEX-A53:  .eabi_attribute 23, 3
1086 ; CORTEX-A53:  .eabi_attribute 24, 1
1087 ; CORTEX-A53:  .eabi_attribute 25, 1
1088 ; CORTEX-A53-NOT:  .eabi_attribute 27
1089 ; CORTEX-A53-NOT:  .eabi_attribute 28
1090 ; CORTEX-A53:  .eabi_attribute 36, 1
1091 ; CORTEX-A53:  .eabi_attribute 38, 1
1092 ; CORTEX-A53:  .eabi_attribute 42, 1
1093 ; CORTEX-A53-NOT:  .eabi_attribute 44
1094 ; CORTEX-A53:  .eabi_attribute 68, 3
1095
1096 ; CORTEX-A53-FAST-NOT:   .eabi_attribute 19
1097 ;; The A53 has the ARMv8 FP unit, which always flushes preserving sign.
1098 ; CORTEX-A53-FAST:  .eabi_attribute 20, 2
1099 ; CORTEX-A53-FAST-NOT:  .eabi_attribute 21
1100 ; CORTEX-A53-FAST-NOT:  .eabi_attribute 22
1101 ; CORTEX-A53-FAST:  .eabi_attribute 23, 1
1102
1103 ; CORTEX-A57:  .cpu cortex-a57
1104 ; CORTEX-A57:  .eabi_attribute 6, 14
1105 ; CORTEX-A57:  .eabi_attribute 7, 65
1106 ; CORTEX-A57:  .eabi_attribute 8, 1
1107 ; CORTEX-A57:  .eabi_attribute 9, 2
1108 ; CORTEX-A57:  .fpu crypto-neon-fp-armv8
1109 ; CORTEX-A57:  .eabi_attribute 12, 3
1110 ; CORTEX-A57-NOT:   .eabi_attribute 19
1111 ;; We default to IEEE 754 compliance
1112 ; CORTEX-A57:  .eabi_attribute 20, 1
1113 ; CORTEX-A57:  .eabi_attribute 21, 1
1114 ; CORTEX-A57-NOT:  .eabi_attribute 22
1115 ; CORTEX-A57:  .eabi_attribute 23, 3
1116 ; CORTEX-A57:  .eabi_attribute 24, 1
1117 ; CORTEX-A57:  .eabi_attribute 25, 1
1118 ; CORTEX-A57-NOT:  .eabi_attribute 27
1119 ; CORTEX-A57-NOT:  .eabi_attribute 28
1120 ; CORTEX-A57:  .eabi_attribute 36, 1
1121 ; CORTEX-A57:  .eabi_attribute 38, 1
1122 ; CORTEX-A57:  .eabi_attribute 42, 1
1123 ; CORTEX-A57-NOT:  .eabi_attribute 44
1124 ; CORTEX-A57:  .eabi_attribute 68, 3
1125
1126 ; CORTEX-A57-FAST-NOT:   .eabi_attribute 19
1127 ;; The A57 has the ARMv8 FP unit, which always flushes preserving sign.
1128 ; CORTEX-A57-FAST:  .eabi_attribute 20, 2
1129 ; CORTEX-A57-FAST-NOT:  .eabi_attribute 21
1130 ; CORTEX-A57-FAST-NOT:  .eabi_attribute 22
1131 ; CORTEX-A57-FAST:  .eabi_attribute 23, 1
1132
1133 ; CORTEX-A72:  .cpu cortex-a72
1134 ; CORTEX-A72:  .eabi_attribute 6, 14
1135 ; CORTEX-A72:  .eabi_attribute 7, 65
1136 ; CORTEX-A72:  .eabi_attribute 8, 1
1137 ; CORTEX-A72:  .eabi_attribute 9, 2
1138 ; CORTEX-A72:  .fpu crypto-neon-fp-armv8
1139 ; CORTEX-A72:  .eabi_attribute 12, 3
1140 ; CORTEX-A72-NOT:   .eabi_attribute 19
1141 ;; We default to IEEE 754 compliance
1142 ; CORTEX-A72:  .eabi_attribute 20, 1
1143 ; CORTEX-A72:  .eabi_attribute 21, 1
1144 ; CORTEX-A72-NOT:  .eabi_attribute 22
1145 ; CORTEX-A72:  .eabi_attribute 23, 3
1146 ; CORTEX-A72:  .eabi_attribute 24, 1
1147 ; CORTEX-A72:  .eabi_attribute 25, 1
1148 ; CORTEX-A72-NOT:  .eabi_attribute 27
1149 ; CORTEX-A72-NOT:  .eabi_attribute 28
1150 ; CORTEX-A72:  .eabi_attribute 36, 1
1151 ; CORTEX-A72:  .eabi_attribute 38, 1
1152 ; CORTEX-A72:  .eabi_attribute 42, 1
1153 ; CORTEX-A72-NOT:  .eabi_attribute 44
1154 ; CORTEX-A72:  .eabi_attribute 68, 3
1155
1156 ; CORTEX-A72-FAST-NOT:   .eabi_attribute 19
1157 ;; The A72 has the ARMv8 FP unit, which always flushes preserving sign.
1158 ; CORTEX-A72-FAST:  .eabi_attribute 20, 2
1159 ; CORTEX-A72-FAST-NOT:  .eabi_attribute 21
1160 ; CORTEX-A72-FAST-NOT:  .eabi_attribute 22
1161 ; CORTEX-A72-FAST:  .eabi_attribute 23, 1
1162
1163 ; GENERIC-ARMV8_1-A:  .eabi_attribute 6, 14
1164 ; GENERIC-ARMV8_1-A:  .eabi_attribute 7, 65
1165 ; GENERIC-ARMV8_1-A:  .eabi_attribute 8, 1
1166 ; GENERIC-ARMV8_1-A:  .eabi_attribute 9, 2
1167 ; GENERIC-ARMV8_1-A:  .fpu crypto-neon-fp-armv8
1168 ; GENERIC-ARMV8_1-A:  .eabi_attribute 12, 4
1169 ; GENERIC-ARMV8_1-A-NOT:   .eabi_attribute 19
1170 ;; We default to IEEE 754 compliance
1171 ; GENERIC-ARMV8_1-A:  .eabi_attribute 20, 1
1172 ; GENERIC-ARMV8_1-A:  .eabi_attribute 21, 1
1173 ; GENERIC-ARMV8_1-A-NOT:  .eabi_attribute 22
1174 ; GENERIC-ARMV8_1-A:  .eabi_attribute 23, 3
1175 ; GENERIC-ARMV8_1-A:  .eabi_attribute 24, 1
1176 ; GENERIC-ARMV8_1-A:  .eabi_attribute 25, 1
1177 ; GENERIC-ARMV8_1-A-NOT:  .eabi_attribute 27
1178 ; GENERIC-ARMV8_1-A-NOT:  .eabi_attribute 28
1179 ; GENERIC-ARMV8_1-A:  .eabi_attribute 36, 1
1180 ; GENERIC-ARMV8_1-A:  .eabi_attribute 38, 1
1181 ; GENERIC-ARMV8_1-A:  .eabi_attribute 42, 1
1182 ; GENERIC-ARMV8_1-A-NOT:  .eabi_attribute 44
1183 ; GENERIC-ARMV8_1-A:  .eabi_attribute 68, 3
1184
1185 ; GENERIC-ARMV8_1-A-FAST-NOT:   .eabi_attribute 19
1186 ;; GENERIC-ARMV8_1-A has the ARMv8 FP unit, which always flushes preserving sign.
1187 ; GENERIC-ARMV8_1-A-FAST:  .eabi_attribute 20, 2
1188 ; GENERIC-ARMV8_1-A-FAST-NOT:  .eabi_attribute 21
1189 ; GENERIC-ARMV8_1-A-FAST-NOT:  .eabi_attribute 22
1190 ; GENERIC-ARMV8_1-A-FAST:  .eabi_attribute 23, 1
1191
1192 ; RELOC-PIC:  .eabi_attribute 15, 1
1193 ; RELOC-PIC:  .eabi_attribute 16, 1
1194 ; RELOC-PIC:  .eabi_attribute 17, 2
1195 ; RELOC-OTHER:  .eabi_attribute 17, 1
1196
1197 ; PCS-R9-USE:  .eabi_attribute 14, 0
1198 ; PCS-R9-RESERVE:  .eabi_attribute 14, 3
1199
1200 define i32 @f(i64 %z) {
1201     ret i32 0
1202 }