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