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