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