1 ; This tests that MC/asm header conversion is smooth and that the
2 ; build attributes are correct
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
64 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -enable-no-trapping-fp-math | FileCheck %s --check-prefix=NO-TRAPPING-MATH
65 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -denormal-fp-math=ieee | FileCheck %s --check-prefix=DENORMAL-IEEE
66 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -denormal-fp-math=preserve-sign | FileCheck %s --check-prefix=DENORMAL-PRESERVE-SIGN
67 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -denormal-fp-math=positive-zero | FileCheck %s --check-prefix=DENORMAL-POSITIVE-ZERO
69 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3-FP16
70 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+d16,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3-D16-FP16
71 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+fp-only-sp,+d16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3XD
72 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+fp-only-sp,+d16,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3XD-FP16
73 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=+neon,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-NEON-FP16
75 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
76 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -mattr=+strict-align | FileCheck %s --check-prefix=CORTEX-M0
77 ; 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
78 ; 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
79 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus -mattr=+strict-align | FileCheck %s --check-prefix=CORTEX-M0PLUS
80 ; 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
81 ; 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
82 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 -mattr=+strict-align | FileCheck %s --check-prefix=CORTEX-M1
83 ; 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
84 ; 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
85 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 -mattr=+strict-align | FileCheck %s --check-prefix=SC000
86 ; 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
87 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 -mattr=+strict-align -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
88 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=CORTEX-M3
89 ; 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
90 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
91 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 | FileCheck %s --check-prefix=SC300
92 ; 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
93 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
94 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-M4-SOFT
95 ; 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
96 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-M4-HARD
97 ; 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
98 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
99 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SOFT
100 ; 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
101 ; 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
102 ; 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
103 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 | FileCheck %s --check-prefix=CORTEX-M7-DOUBLE
104 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
105 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -mcpu=cortex-m23 | FileCheck %s --check-prefix=CORTEX-M23
106 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -mcpu=cortex-m33 | FileCheck %s --check-prefix=CORTEX-M33
107 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -mcpu=cortex-m33 -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-M33-FAST
108 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -mcpu=cortex-m33 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
109 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r4 | FileCheck %s --check-prefix=CORTEX-R4
110 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r4f | FileCheck %s --check-prefix=CORTEX-R4F
111 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=CORTEX-R5
112 ; 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
113 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
114 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 | FileCheck %s --check-prefix=CORTEX-R7
115 ; 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
116 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
117 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 | FileCheck %s --check-prefix=CORTEX-R8
118 ; 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
119 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
120 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a32 | FileCheck %s --check-prefix=CORTEX-A32
121 ; 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
122 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a32 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
123 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 | FileCheck %s --check-prefix=CORTEX-A35
124 ; 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
125 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
126 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53
127 ; 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
128 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
129 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=CORTEX-A57
130 ; 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
131 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
132 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=CORTEX-A72
133 ; 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
134 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
135 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a73 | FileCheck %s --check-prefix=CORTEX-A73
136 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A
137 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1 | FileCheck %s --check-prefix=EXYNOS-M1
138 ; 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
139 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
140 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2 | FileCheck %s --check-prefix=EXYNOS-M2
141 ; 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
142 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
143 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m3 | FileCheck %s --check-prefix=EXYNOS-M3
144 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-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=EXYNOS-M1-FAST
145 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m3 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
146 ; 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
147 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
148 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=CORTEX-A7-CHECK
149 ; 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
150 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon,-fp16 | FileCheck %s --check-prefix=CORTEX-A7-NOFPU
151 ; 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
152 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
153 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
154 ; 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
155 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,,+d16,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
156 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=pic | FileCheck %s --check-prefix=RELOC-PIC
157 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=static | FileCheck %s --check-prefix=RELOC-OTHER
158 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=dynamic-no-pic | FileCheck %s --check-prefix=RELOC-OTHER
159 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=RELOC-OTHER
160 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=PCS-R9-USE
161 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+reserve-r9,+strict-align | FileCheck %s --check-prefix=PCS-R9-RESERVE
162 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=ropi | FileCheck %s --check-prefix=RELOC-ROPI
163 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=rwpi | FileCheck %s --check-prefix=RELOC-RWPI
164 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=ropi-rwpi | FileCheck %s --check-prefix=RELOC-ROPI-RWPI
167 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN
168 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
169 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN
171 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a32 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
172 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a32 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
173 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a35 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
174 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a35 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
175 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
176 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
177 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
178 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
179 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m1 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
180 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m1 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
181 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m2 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
182 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m2 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
183 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
184 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m3 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
187 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
188 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
190 ; RUN: llc < %s -mtriple=armv7ve-none-linux-gnueabi | FileCheck %s --check-prefix=V7VE
192 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
193 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
195 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
196 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
198 ; RUN: llc < %s -mtriple=armv6-none-netbsd-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
199 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
200 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
202 ; RUN: llc < %s -mtriple=armv6k-none-netbsd-gnueabi -mcpu=arm1176j-s 2> %t | FileCheck %s --check-prefix=NO-STRICT-ALIGN
203 ; RUN: FileCheck %s < %t --allow-empty --check-prefix=CPU-SUPPORTED
204 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
205 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
207 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
208 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mattr=+strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
209 ; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
210 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
212 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e | FileCheck %s --check-prefix=NO-STRICT-ALIGN
213 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
216 ; RUN: llc < %s -mtriple=arm-none-none-eabi -mcpu=cortex-r52 -mattr=-vfp2,-fp16 | FileCheck %s --check-prefix=ARMv8R --check-prefix=ARMv8R-NOFPU
217 ; RUN: llc < %s -mtriple=arm-none-none-eabi -mcpu=cortex-r52 -mattr=-neon,+fp-only-sp,+d16 | FileCheck %s --check-prefix=ARMv8R --check-prefix=ARMv8R-SP
218 ; RUN: llc < %s -mtriple=arm-none-none-eabi -mcpu=cortex-r52 | FileCheck %s --check-prefix=ARMv8R --check-prefix=ARMv8R-NEON
221 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m23 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
222 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m23 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
223 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m33 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
224 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m33 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
226 ; CPU-SUPPORTED-NOT: is not a recognized processor for this target
228 ; XSCALE: .eabi_attribute 6, 5
229 ; XSCALE: .eabi_attribute 8, 1
230 ; XSCALE: .eabi_attribute 9, 1
232 ; DYN-ROUNDING: .eabi_attribute 19, 1
234 ; V6: .eabi_attribute 6, 6
235 ; V6: .eabi_attribute 8, 1
236 ;; We assume round-to-nearest by default (matches GCC)
237 ; V6-NOT: .eabi_attribute 27
238 ; V6-NOT: .eabi_attribute 36
239 ; V6-NOT: .eabi_attribute 42
240 ; V6-NOT: .eabi_attribute 44
241 ; V6-NOT: .eabi_attribute 68
242 ; V6-NOT: .eabi_attribute 19
243 ;; The default choice made by llc is for a V6 CPU without an FPU.
244 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
245 ;; software floating-point support. The choice is not important for targets without
247 ; V6: .eabi_attribute 20, 1
248 ; V6: .eabi_attribute 21, 1
249 ; V6-NOT: .eabi_attribute 22
250 ; V6: .eabi_attribute 23, 3
251 ; V6: .eabi_attribute 24, 1
252 ; V6: .eabi_attribute 25, 1
253 ; V6-NOT: .eabi_attribute 28
254 ; V6: .eabi_attribute 38, 1
256 ; V6-FAST-NOT: .eabi_attribute 19
257 ;; Despite the V6 CPU having no FPU by default, we chose to flush to
258 ;; positive zero here. There's no hardware support doing this, but the
259 ;; fast maths software library might.
260 ; V6-FAST-NOT: .eabi_attribute 20
261 ; V6-FAST-NOT: .eabi_attribute 21
262 ; V6-FAST-NOT: .eabi_attribute 22
263 ; V6-FAST: .eabi_attribute 23, 1
265 ;; We emit 6, 12 for both v6-M and v6S-M, technically this is incorrect for
266 ;; V6-M, however we don't model the OS extension so this is fine.
267 ; V6M: .eabi_attribute 6, 12
268 ; V6M: .eabi_attribute 7, 77
269 ; V6M: .eabi_attribute 8, 0
270 ; V6M: .eabi_attribute 9, 1
271 ; V6M-NOT: .eabi_attribute 27
272 ; V6M-NOT: .eabi_attribute 36
273 ; V6M-NOT: .eabi_attribute 42
274 ; V6M-NOT: .eabi_attribute 44
275 ; V6M-NOT: .eabi_attribute 68
276 ; V6M-NOT: .eabi_attribute 19
277 ;; The default choice made by llc is for a V6M CPU without an FPU.
278 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
279 ;; software floating-point support. The choice is not important for targets without
281 ; V6M: .eabi_attribute 20, 1
282 ; V6M: .eabi_attribute 21, 1
283 ; V6M-NOT: .eabi_attribute 22
284 ; V6M: .eabi_attribute 23, 3
285 ; V6M: .eabi_attribute 24, 1
286 ; V6M: .eabi_attribute 25, 1
287 ; V6M-NOT: .eabi_attribute 28
288 ; V6M: .eabi_attribute 38, 1
290 ; V6M-FAST-NOT: .eabi_attribute 19
291 ;; Despite the V6M CPU having no FPU by default, we chose to flush to
292 ;; positive zero here. There's no hardware support doing this, but the
293 ;; fast maths software library might.
294 ; V6M-FAST-NOT: .eabi_attribute 20
295 ; V6M-FAST-NOT: .eabi_attribute 21
296 ; V6M-FAST-NOT: .eabi_attribute 22
297 ; V6M-FAST: .eabi_attribute 23, 1
299 ; ARM1156T2F-S: .cpu arm1156t2f-s
300 ; ARM1156T2F-S: .eabi_attribute 6, 8
301 ; ARM1156T2F-S: .eabi_attribute 8, 1
302 ; ARM1156T2F-S: .eabi_attribute 9, 2
303 ; ARM1156T2F-S: .fpu vfpv2
304 ; ARM1156T2F-S-NOT: .eabi_attribute 27
305 ; ARM1156T2F-S-NOT: .eabi_attribute 36
306 ; ARM1156T2F-S-NOT: .eabi_attribute 42
307 ; ARM1156T2F-S-NOT: .eabi_attribute 44
308 ; ARM1156T2F-S-NOT: .eabi_attribute 68
309 ; ARM1156T2F-S-NOT: .eabi_attribute 19
310 ;; We default to IEEE 754 compliance
311 ; ARM1156T2F-S: .eabi_attribute 20, 1
312 ; ARM1156T2F-S: .eabi_attribute 21, 1
313 ; ARM1156T2F-S-NOT: .eabi_attribute 22
314 ; ARM1156T2F-S: .eabi_attribute 23, 3
315 ; ARM1156T2F-S: .eabi_attribute 24, 1
316 ; ARM1156T2F-S: .eabi_attribute 25, 1
317 ; ARM1156T2F-S-NOT: .eabi_attribute 28
318 ; ARM1156T2F-S: .eabi_attribute 38, 1
320 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 19
321 ;; V6 cores default to flush to positive zero (value 0). Note that value 2 is also equally
322 ;; valid for this core, it's an implementation defined question as to which of 0 and 2 you
323 ;; select. LLVM historically picks 0.
324 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 20
325 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 21
326 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 22
327 ; ARM1156T2F-S-FAST: .eabi_attribute 23, 1
329 ; V7M: .eabi_attribute 6, 10
330 ; V7M: .eabi_attribute 7, 77
331 ; V7M: .eabi_attribute 8, 0
332 ; V7M: .eabi_attribute 9, 2
333 ; V7M-NOT: .eabi_attribute 27
334 ; V7M-NOT: .eabi_attribute 36
335 ; V7M-NOT: .eabi_attribute 42
336 ; V7M-NOT: .eabi_attribute 44
337 ; V7M-NOT: .eabi_attribute 68
338 ; V7M-NOT: .eabi_attribute 19
339 ;; The default choice made by llc is for a V7M CPU without an FPU.
340 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
341 ;; software floating-point support. The choice is not important for targets without
343 ; V7M: .eabi_attribute 20, 1
344 ; V7M: .eabi_attribute 21, 1
345 ; V7M-NOT: .eabi_attribute 22
346 ; V7M: .eabi_attribute 23, 3
347 ; V7M: .eabi_attribute 24, 1
348 ; V7M: .eabi_attribute 25, 1
349 ; V7M-NOT: .eabi_attribute 28
350 ; V7M: .eabi_attribute 38, 1
352 ; V7M-FAST-NOT: .eabi_attribute 19
353 ;; Despite the V7M CPU having no FPU by default, we chose to flush
354 ;; preserving sign. This matches what the hardware would do in the
355 ;; architecture revision were to exist on the current target.
356 ; V7M-FAST: .eabi_attribute 20, 2
357 ; V7M-FAST-NOT: .eabi_attribute 21
358 ; V7M-FAST-NOT: .eabi_attribute 22
359 ; V7M-FAST: .eabi_attribute 23, 1
361 ; V7: .syntax unified
362 ; V7: .eabi_attribute 6, 10
363 ; V7-NOT: .eabi_attribute 27
364 ; V7-NOT: .eabi_attribute 36
365 ; V7-NOT: .eabi_attribute 42
366 ; V7-NOT: .eabi_attribute 44
367 ; V7-NOT: .eabi_attribute 68
368 ; V7-NOT: .eabi_attribute 19
369 ;; In safe-maths mode we default to an IEEE 754 compliant choice.
370 ; V7: .eabi_attribute 20, 1
371 ; V7: .eabi_attribute 21, 1
372 ; V7-NOT: .eabi_attribute 22
373 ; V7: .eabi_attribute 23, 3
374 ; V7: .eabi_attribute 24, 1
375 ; V7: .eabi_attribute 25, 1
376 ; V7-NOT: .eabi_attribute 28
377 ; V7: .eabi_attribute 38, 1
379 ; V7-FAST-NOT: .eabi_attribute 19
380 ;; The default CPU does have an FPU and it must be VFPv3 or better, so it flushes
381 ;; denormals to zero preserving the sign.
382 ; V7-FAST: .eabi_attribute 20, 2
383 ; V7-FAST-NOT: .eabi_attribute 21
384 ; V7-FAST-NOT: .eabi_attribute 22
385 ; V7-FAST: .eabi_attribute 23, 1
387 ; V7VE: .syntax unified
388 ; V7VE: .eabi_attribute 6, 10 @ Tag_CPU_arch
389 ; V7VE: .eabi_attribute 7, 65 @ Tag_CPU_arch_profile
390 ; V7VE: .eabi_attribute 8, 1 @ Tag_ARM_ISA_use
391 ; V7VE: .eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
392 ; V7VE: .eabi_attribute 42, 1 @ Tag_MPextension_use
393 ; V7VE: .eabi_attribute 44, 2 @ Tag_DIV_use
394 ; V7VE: .eabi_attribute 68, 3 @ Tag_Virtualization_use
395 ; V7VE: .eabi_attribute 17, 1 @ Tag_ABI_PCS_GOT_use
396 ; V7VE: .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
397 ; V7VE: .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
398 ; V7VE: .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
399 ; V7VE: .eabi_attribute 24, 1 @ Tag_ABI_align_needed
400 ; V7VE: .eabi_attribute 25, 1 @ Tag_ABI_align_preserved
401 ; V7VE: .eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
403 ; V8: .syntax unified
404 ; V8: .eabi_attribute 67, "2.09"
405 ; V8: .eabi_attribute 6, 14
406 ; V8-NOT: .eabi_attribute 44
407 ; V8-NOT: .eabi_attribute 19
408 ; V8: .eabi_attribute 20, 1
409 ; V8: .eabi_attribute 21, 1
410 ; V8-NOT: .eabi_attribute 22
411 ; V8: .eabi_attribute 23, 3
413 ; V8-FAST-NOT: .eabi_attribute 19
414 ;; The default does have an FPU, and for V8-A, it flushes preserving sign.
415 ; V8-FAST: .eabi_attribute 20, 2
416 ; V8-FAST-NOT: .eabi_attribute 21
417 ; V8-FAST-NOT: .eabi_attribute 22
418 ; V8-FAST: .eabi_attribute 23, 1
420 ; Vt8: .syntax unified
421 ; Vt8: .eabi_attribute 6, 14
422 ; Vt8-NOT: .eabi_attribute 19
423 ; Vt8: .eabi_attribute 20, 1
424 ; Vt8: .eabi_attribute 21, 1
425 ; Vt8-NOT: .eabi_attribute 22
426 ; Vt8: .eabi_attribute 23, 3
428 ; V8-FPARMv8: .syntax unified
429 ; V8-FPARMv8: .eabi_attribute 6, 14
430 ; V8-FPARMv8: .fpu fp-armv8
432 ; V8-NEON: .syntax unified
433 ; V8-NEON: .eabi_attribute 6, 14
435 ; V8-NEON: .eabi_attribute 12, 3
437 ; V8-FPARMv8-NEON: .syntax unified
438 ; V8-FPARMv8-NEON: .eabi_attribute 6, 14
439 ; V8-FPARMv8-NEON: .fpu neon-fp-armv8
440 ; V8-FPARMv8-NEON: .eabi_attribute 12, 3
442 ; V8-FPARMv8-NEON-CRYPTO: .syntax unified
443 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 6, 14
444 ; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8
445 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3
447 ; V8MBASELINE: .syntax unified
448 ; '6' is Tag_CPU_arch, '16' is ARM v8-M Baseline
449 ; V8MBASELINE: .eabi_attribute 6, 16
450 ; '7' is Tag_CPU_arch_profile, '77' is 'M'
451 ; V8MBASELINE: .eabi_attribute 7, 77
452 ; '8' is Tag_ARM_ISA_use
453 ; V8MBASELINE: .eabi_attribute 8, 0
454 ; '9' is Tag_Thumb_ISA_use
455 ; V8MBASELINE: .eabi_attribute 9, 3
457 ; V8MMAINLINE: .syntax unified
458 ; '6' is Tag_CPU_arch, '17' is ARM v8-M Mainline
459 ; V8MMAINLINE: .eabi_attribute 6, 17
460 ; V8MMAINLINE: .eabi_attribute 7, 77
461 ; V8MMAINLINE: .eabi_attribute 8, 0
462 ; V8MMAINLINE: .eabi_attribute 9, 3
463 ; V8MMAINLINE_DSP-NOT: .eabi_attribute 46
465 ; V8MMAINLINE_DSP: .syntax unified
466 ; V8MBASELINE_DSP: .eabi_attribute 6, 17
467 ; V8MBASELINE_DSP: .eabi_attribute 7, 77
468 ; V8MMAINLINE_DSP: .eabi_attribute 8, 0
469 ; V8MMAINLINE_DSP: .eabi_attribute 9, 3
470 ; V8MMAINLINE_DSP: .eabi_attribute 46, 1
472 ; Tag_CPU_unaligned_access
473 ; NO-STRICT-ALIGN: .eabi_attribute 34, 1
474 ; STRICT-ALIGN: .eabi_attribute 34, 0
476 ; Tag_CPU_arch 'ARMv7'
477 ; CORTEX-A7-CHECK: .eabi_attribute 6, 10
478 ; CORTEX-A7-NOFPU: .eabi_attribute 6, 10
480 ; CORTEX-A7-FPUV4: .eabi_attribute 6, 10
482 ; Tag_CPU_arch_profile 'A'
483 ; CORTEX-A7-CHECK: .eabi_attribute 7, 65
484 ; CORTEX-A7-NOFPU: .eabi_attribute 7, 65
485 ; CORTEX-A7-FPUV4: .eabi_attribute 7, 65
488 ; CORTEX-A7-CHECK: .eabi_attribute 8, 1
489 ; CORTEX-A7-NOFPU: .eabi_attribute 8, 1
490 ; CORTEX-A7-FPUV4: .eabi_attribute 8, 1
493 ; CORTEX-A7-CHECK: .eabi_attribute 9, 2
494 ; CORTEX-A7-NOFPU: .eabi_attribute 9, 2
495 ; CORTEX-A7-FPUV4: .eabi_attribute 9, 2
497 ; CORTEX-A7-CHECK: .fpu neon-vfpv4
498 ; CORTEX-A7-NOFPU-NOT: .fpu
499 ; CORTEX-A7-FPUV4: .fpu vfpv4
501 ; CORTEX-A7-CHECK-NOT: .eabi_attribute 19
503 ; Tag_FP_HP_extension
504 ; CORTEX-A7-CHECK: .eabi_attribute 36, 1
505 ; CORTEX-A7-NOFPU-NOT: .eabi_attribute 36
506 ; CORTEX-A7-FPUV4: .eabi_attribute 36, 1
508 ; Tag_MPextension_use
509 ; CORTEX-A7-CHECK: .eabi_attribute 42, 1
510 ; CORTEX-A7-NOFPU: .eabi_attribute 42, 1
511 ; CORTEX-A7-FPUV4: .eabi_attribute 42, 1
514 ; CORTEX-A7-CHECK: .eabi_attribute 44, 2
515 ; CORTEX-A7-NOFPU: .eabi_attribute 44, 2
516 ; CORTEX-A7-FPUV4: .eabi_attribute 44, 2
519 ; CORTEX-A7-CHECK-NOT: .eabi_attribute 46
521 ; Tag_Virtualization_use
522 ; CORTEX-A7-CHECK: .eabi_attribute 68, 3
523 ; CORTEX-A7-NOFPU: .eabi_attribute 68, 3
524 ; CORTEX-A7-FPUV4: .eabi_attribute 68, 3
526 ; Tag_ABI_FP_denormal
527 ;; We default to IEEE 754 compliance
528 ; CORTEX-A7-CHECK: .eabi_attribute 20, 1
529 ;; The A7 has VFPv3 support by default, so flush preserving sign.
530 ; CORTEX-A7-CHECK-FAST: .eabi_attribute 20, 2
531 ; CORTEX-A7-NOFPU: .eabi_attribute 20, 1
532 ;; Despite there being no FPU, we chose to flush to zero preserving
533 ;; sign. This matches what the hardware would do for this architecture
535 ; CORTEX-A7-NOFPU-FAST: .eabi_attribute 20, 2
536 ; CORTEX-A7-FPUV4: .eabi_attribute 20, 1
537 ;; The VFPv4 FPU flushes preserving sign.
538 ; CORTEX-A7-FPUV4-FAST: .eabi_attribute 20, 2
540 ; Tag_ABI_FP_exceptions
541 ; CORTEX-A7-CHECK: .eabi_attribute 21, 1
542 ; CORTEX-A7-NOFPU: .eabi_attribute 21, 1
543 ; CORTEX-A7-FPUV4: .eabi_attribute 21, 1
545 ; Tag_ABI_FP_user_exceptions
546 ; CORTEX-A7-CHECK-NOT: .eabi_attribute 22
547 ; CORTEX-A7-NOFPU-NOT: .eabi_attribute 22
548 ; CORTEX-A7-FPUV4-NOT: .eabi_attribute 22
550 ; Tag_ABI_FP_number_model
551 ; CORTEX-A7-CHECK: .eabi_attribute 23, 3
552 ; CORTEX-A7-NOFPU: .eabi_attribute 23, 3
553 ; CORTEX-A7-FPUV4: .eabi_attribute 23, 3
555 ; Tag_ABI_align_needed
556 ; CORTEX-A7-CHECK: .eabi_attribute 24, 1
557 ; CORTEX-A7-NOFPU: .eabi_attribute 24, 1
558 ; CORTEX-A7-FPUV4: .eabi_attribute 24, 1
560 ; Tag_ABI_align_preserved
561 ; CORTEX-A7-CHECK: .eabi_attribute 25, 1
562 ; CORTEX-A7-NOFPU: .eabi_attribute 25, 1
563 ; CORTEX-A7-FPUV4: .eabi_attribute 25, 1
565 ; Tag_FP_16bit_format
566 ; CORTEX-A7-CHECK: .eabi_attribute 38, 1
567 ; CORTEX-A7-NOFPU: .eabi_attribute 38, 1
568 ; CORTEX-A7-FPUV4: .eabi_attribute 38, 1
570 ; CORTEX-A5-DEFAULT: .cpu cortex-a5
571 ; CORTEX-A5-DEFAULT: .eabi_attribute 6, 10
572 ; CORTEX-A5-DEFAULT: .eabi_attribute 7, 65
573 ; CORTEX-A5-DEFAULT: .eabi_attribute 8, 1
574 ; CORTEX-A5-DEFAULT: .eabi_attribute 9, 2
575 ; CORTEX-A5-DEFAULT: .fpu neon-vfpv4
576 ; CORTEX-A5-DEFAULT: .eabi_attribute 42, 1
577 ; CORTEX-A5-DEFAULT-NOT: .eabi_attribute 44
578 ; CORTEX-A5-DEFAULT: .eabi_attribute 68, 1
579 ; CORTEX-A5-NOT: .eabi_attribute 19
580 ;; We default to IEEE 754 compliance
581 ; CORTEX-A5-DEFAULT: .eabi_attribute 20, 1
582 ; CORTEX-A5-DEFAULT: .eabi_attribute 21, 1
583 ; CORTEX-A5-DEFAULT-NOT: .eabi_attribute 22
584 ; CORTEX-A5-DEFAULT: .eabi_attribute 23, 3
585 ; CORTEX-A5-DEFAULT: .eabi_attribute 24, 1
586 ; CORTEX-A5-DEFAULT: .eabi_attribute 25, 1
588 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 19
589 ;; The A5 defaults to a VFPv4 FPU, so it flushed preserving the sign when -ffast-math
591 ; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 20, 2
592 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 21
593 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 22
594 ; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 23, 1
596 ; CORTEX-A5-NONEON: .cpu cortex-a5
597 ; CORTEX-A5-NONEON: .eabi_attribute 6, 10
598 ; CORTEX-A5-NONEON: .eabi_attribute 7, 65
599 ; CORTEX-A5-NONEON: .eabi_attribute 8, 1
600 ; CORTEX-A5-NONEON: .eabi_attribute 9, 2
601 ; CORTEX-A5-NONEON: .fpu vfpv4-d16
602 ; CORTEX-A5-NONEON: .eabi_attribute 42, 1
603 ; CORTEX-A5-NONEON: .eabi_attribute 68, 1
604 ;; We default to IEEE 754 compliance
605 ; CORTEX-A5-NONEON: .eabi_attribute 20, 1
606 ; CORTEX-A5-NONEON: .eabi_attribute 21, 1
607 ; CORTEX-A5-NONEON-NOT: .eabi_attribute 22
608 ; CORTEX-A5-NONEON: .eabi_attribute 23, 3
609 ; CORTEX-A5-NONEON: .eabi_attribute 24, 1
610 ; CORTEX-A5-NONEON: .eabi_attribute 25, 1
612 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 19
613 ;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math
615 ; CORTEX-A5-NONEON-FAST: .eabi_attribute 20, 2
616 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 21
617 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 22
618 ; CORTEX-A5-NONEON-FAST: .eabi_attribute 23, 1
620 ; CORTEX-A5-NOFPU: .cpu cortex-a5
621 ; CORTEX-A5-NOFPU: .eabi_attribute 6, 10
622 ; CORTEX-A5-NOFPU: .eabi_attribute 7, 65
623 ; CORTEX-A5-NOFPU: .eabi_attribute 8, 1
624 ; CORTEX-A5-NOFPU: .eabi_attribute 9, 2
625 ; CORTEX-A5-NOFPU-NOT: .fpu
626 ; CORTEX-A5-NOFPU: .eabi_attribute 42, 1
627 ; CORTEX-A5-NOFPU: .eabi_attribute 68, 1
628 ; CORTEX-A5-NOFPU-NOT: .eabi_attribute 19
629 ;; We default to IEEE 754 compliance
630 ; CORTEX-A5-NOFPU: .eabi_attribute 20, 1
631 ; CORTEX-A5-NOFPU: .eabi_attribute 21, 1
632 ; CORTEX-A5-NOFPU-NOT: .eabi_attribute 22
633 ; CORTEX-A5-NOFPU: .eabi_attribute 23, 3
634 ; CORTEX-A5-NOFPU: .eabi_attribute 24, 1
635 ; CORTEX-A5-NOFPU: .eabi_attribute 25, 1
637 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 19
638 ;; Despite there being no FPU, we chose to flush to zero preserving
639 ;; sign. This matches what the hardware would do for this architecture
641 ; CORTEX-A5-NOFPU-FAST: .eabi_attribute 20, 2
642 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 21
643 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 22
644 ; CORTEX-A5-NOFPU-FAST: .eabi_attribute 23, 1
646 ; CORTEX-A8-SOFT: .cpu cortex-a8
647 ; CORTEX-A8-SOFT: .eabi_attribute 6, 10
648 ; CORTEX-A8-SOFT: .eabi_attribute 7, 65
649 ; CORTEX-A8-SOFT: .eabi_attribute 8, 1
650 ; CORTEX-A8-SOFT: .eabi_attribute 9, 2
651 ; CORTEX-A8-SOFT: .fpu neon
652 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 27
653 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 36, 1
654 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 42, 1
655 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 44
656 ; CORTEX-A8-SOFT: .eabi_attribute 68, 1
657 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 19
658 ;; We default to IEEE 754 compliance
659 ; CORTEX-A8-SOFT: .eabi_attribute 20, 1
660 ; CORTEX-A8-SOFT: .eabi_attribute 21, 1
661 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 22
662 ; CORTEX-A8-SOFT: .eabi_attribute 23, 3
663 ; CORTEX-A8-SOFT: .eabi_attribute 24, 1
664 ; CORTEX-A8-SOFT: .eabi_attribute 25, 1
665 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 28
666 ; CORTEX-A8-SOFT: .eabi_attribute 38, 1
668 ; CORTEX-A9-SOFT: .cpu cortex-a9
669 ; CORTEX-A9-SOFT: .eabi_attribute 6, 10
670 ; CORTEX-A9-SOFT: .eabi_attribute 7, 65
671 ; CORTEX-A9-SOFT: .eabi_attribute 8, 1
672 ; CORTEX-A9-SOFT: .eabi_attribute 9, 2
673 ; CORTEX-A9-SOFT: .fpu neon
674 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 27
675 ; CORTEX-A9-SOFT: .eabi_attribute 36, 1
676 ; CORTEX-A9-SOFT: .eabi_attribute 42, 1
677 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 44
678 ; CORTEX-A9-SOFT: .eabi_attribute 68, 1
679 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 19
680 ;; We default to IEEE 754 compliance
681 ; CORTEX-A9-SOFT: .eabi_attribute 20, 1
682 ; CORTEX-A9-SOFT: .eabi_attribute 21, 1
683 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 22
684 ; CORTEX-A9-SOFT: .eabi_attribute 23, 3
685 ; CORTEX-A9-SOFT: .eabi_attribute 24, 1
686 ; CORTEX-A9-SOFT: .eabi_attribute 25, 1
687 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 28
688 ; CORTEX-A9-SOFT: .eabi_attribute 38, 1
690 ; CORTEX-A8-SOFT-FAST-NOT: .eabi_attribute 19
691 ; CORTEX-A9-SOFT-FAST-NOT: .eabi_attribute 19
692 ;; The A9 defaults to a VFPv3 FPU, so it flushes preserving the sign when
693 ;; -ffast-math is specified.
694 ; CORTEX-A8-SOFT-FAST: .eabi_attribute 20, 2
695 ; CORTEX-A9-SOFT-FAST: .eabi_attribute 20, 2
696 ; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 21
697 ; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 22
698 ; CORTEX-A5-SOFT-FAST: .eabi_attribute 23, 1
700 ; CORTEX-A8-HARD: .cpu cortex-a8
701 ; CORTEX-A8-HARD: .eabi_attribute 6, 10
702 ; CORTEX-A8-HARD: .eabi_attribute 7, 65
703 ; CORTEX-A8-HARD: .eabi_attribute 8, 1
704 ; CORTEX-A8-HARD: .eabi_attribute 9, 2
705 ; CORTEX-A8-HARD: .fpu neon
706 ; CORTEX-A8-HARD-NOT: .eabi_attribute 27
707 ; CORTEX-A8-HARD-NOT: .eabi_attribute 36, 1
708 ; CORTEX-A8-HARD-NOT: .eabi_attribute 42, 1
709 ; CORTEX-A8-HARD: .eabi_attribute 68, 1
710 ; CORTEX-A8-HARD-NOT: .eabi_attribute 19
711 ;; We default to IEEE 754 compliance
712 ; CORTEX-A8-HARD: .eabi_attribute 20, 1
713 ; CORTEX-A8-HARD: .eabi_attribute 21, 1
714 ; CORTEX-A8-HARD-NOT: .eabi_attribute 22
715 ; CORTEX-A8-HARD: .eabi_attribute 23, 3
716 ; CORTEX-A8-HARD: .eabi_attribute 24, 1
717 ; CORTEX-A8-HARD: .eabi_attribute 25, 1
718 ; CORTEX-A8-HARD: .eabi_attribute 28, 1
719 ; CORTEX-A8-HARD: .eabi_attribute 38, 1
723 ; CORTEX-A9-HARD: .cpu cortex-a9
724 ; CORTEX-A9-HARD: .eabi_attribute 6, 10
725 ; CORTEX-A9-HARD: .eabi_attribute 7, 65
726 ; CORTEX-A9-HARD: .eabi_attribute 8, 1
727 ; CORTEX-A9-HARD: .eabi_attribute 9, 2
728 ; CORTEX-A9-HARD: .fpu neon
729 ; CORTEX-A9-HARD-NOT: .eabi_attribute 27
730 ; CORTEX-A9-HARD: .eabi_attribute 36, 1
731 ; CORTEX-A9-HARD: .eabi_attribute 42, 1
732 ; CORTEX-A9-HARD: .eabi_attribute 68, 1
733 ; CORTEX-A9-HARD-NOT: .eabi_attribute 19
734 ;; We default to IEEE 754 compliance
735 ; CORTEX-A9-HARD: .eabi_attribute 20, 1
736 ; CORTEX-A9-HARD: .eabi_attribute 21, 1
737 ; CORTEX-A9-HARD-NOT: .eabi_attribute 22
738 ; CORTEX-A9-HARD: .eabi_attribute 23, 3
739 ; CORTEX-A9-HARD: .eabi_attribute 24, 1
740 ; CORTEX-A9-HARD: .eabi_attribute 25, 1
741 ; CORTEX-A9-HARD: .eabi_attribute 28, 1
742 ; CORTEX-A9-HARD: .eabi_attribute 38, 1
744 ; CORTEX-A8-HARD-FAST-NOT: .eabi_attribute 19
745 ;; The A8 defaults to a VFPv3 FPU, so it flushes preserving the sign when
746 ;; -ffast-math is specified.
747 ; CORTEX-A8-HARD-FAST: .eabi_attribute 20, 2
748 ; CORTEX-A8-HARD-FAST-NOT: .eabi_attribute 21
749 ; CORTEX-A8-HARD-FAST-NOT: .eabi_attribute 22
750 ; CORTEX-A8-HARD-FAST: .eabi_attribute 23, 1
752 ; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 19
753 ;; The A9 defaults to a VFPv3 FPU, so it flushes preserving the sign when
754 ;; -ffast-math is specified.
755 ; CORTEX-A9-HARD-FAST: .eabi_attribute 20, 2
756 ; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 21
757 ; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 22
758 ; CORTEX-A9-HARD-FAST: .eabi_attribute 23, 1
760 ; CORTEX-A12-DEFAULT: .cpu cortex-a12
761 ; CORTEX-A12-DEFAULT: .eabi_attribute 6, 10
762 ; CORTEX-A12-DEFAULT: .eabi_attribute 7, 65
763 ; CORTEX-A12-DEFAULT: .eabi_attribute 8, 1
764 ; CORTEX-A12-DEFAULT: .eabi_attribute 9, 2
765 ; CORTEX-A12-DEFAULT: .fpu neon-vfpv4
766 ; CORTEX-A12-DEFAULT: .eabi_attribute 42, 1
767 ; CORTEX-A12-DEFAULT: .eabi_attribute 44, 2
768 ; CORTEX-A12-DEFAULT: .eabi_attribute 68, 3
769 ; CORTEX-A12-DEFAULT-NOT: .eabi_attribute 19
770 ;; We default to IEEE 754 compliance
771 ; CORTEX-A12-DEFAULT: .eabi_attribute 20, 1
772 ; CORTEX-A12-DEFAULT: .eabi_attribute 21, 1
773 ; CORTEX-A12-DEFAULT-NOT: .eabi_attribute 22
774 ; CORTEX-A12-DEFAULT: .eabi_attribute 23, 3
775 ; CORTEX-A12-DEFAULT: .eabi_attribute 24, 1
776 ; CORTEX-A12-DEFAULT: .eabi_attribute 25, 1
778 ; CORTEX-A12-DEFAULT-FAST-NOT: .eabi_attribute 19
779 ;; The A12 defaults to a VFPv3 FPU, so it flushes preserving the sign when
780 ;; -ffast-math is specified.
781 ; CORTEX-A12-DEFAULT-FAST: .eabi_attribute 20, 2
782 ; CORTEX-A12-HARD-FAST-NOT: .eabi_attribute 21
783 ; CORTEX-A12-HARD-FAST-NOT: .eabi_attribute 22
784 ; CORTEX-A12-HARD-FAST: .eabi_attribute 23, 1
786 ; CORTEX-A12-NOFPU: .cpu cortex-a12
787 ; CORTEX-A12-NOFPU: .eabi_attribute 6, 10
788 ; CORTEX-A12-NOFPU: .eabi_attribute 7, 65
789 ; CORTEX-A12-NOFPU: .eabi_attribute 8, 1
790 ; CORTEX-A12-NOFPU: .eabi_attribute 9, 2
791 ; CORTEX-A12-NOFPU-NOT: .fpu
792 ; CORTEX-A12-NOFPU: .eabi_attribute 42, 1
793 ; CORTEX-A12-NOFPU: .eabi_attribute 44, 2
794 ; CORTEX-A12-NOFPU: .eabi_attribute 68, 3
795 ; CORTEX-A12-NOFPU-NOT: .eabi_attribute 19
796 ;; We default to IEEE 754 compliance
797 ; CORTEX-A12-NOFPU: .eabi_attribute 20, 1
798 ; CORTEX-A12-NOFPU: .eabi_attribute 21, 1
799 ; CORTEX-A12-NOFPU-NOT: .eabi_attribute 22
800 ; CORTEX-A12-NOFPU: .eabi_attribute 23, 3
801 ; CORTEX-A12-NOFPU: .eabi_attribute 24, 1
802 ; CORTEX-A12-NOFPU: .eabi_attribute 25, 1
804 ; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 19
805 ;; Despite there being no FPU, we chose to flush to zero preserving
806 ;; sign. This matches what the hardware would do for this architecture
808 ; CORTEX-A12-NOFPU-FAST: .eabi_attribute 20, 2
809 ; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 21
810 ; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 22
811 ; CORTEX-A12-NOFPU-FAST: .eabi_attribute 23, 1
813 ; CORTEX-A15: .cpu cortex-a15
814 ; CORTEX-A15: .eabi_attribute 6, 10
815 ; CORTEX-A15: .eabi_attribute 7, 65
816 ; CORTEX-A15: .eabi_attribute 8, 1
817 ; CORTEX-A15: .eabi_attribute 9, 2
818 ; CORTEX-A15: .fpu neon-vfpv4
819 ; CORTEX-A15-NOT: .eabi_attribute 27
820 ; CORTEX-A15: .eabi_attribute 36, 1
821 ; CORTEX-A15: .eabi_attribute 42, 1
822 ; CORTEX-A15: .eabi_attribute 44, 2
823 ; CORTEX-A15: .eabi_attribute 68, 3
824 ; CORTEX-A15-NOT: .eabi_attribute 19
825 ;; We default to IEEE 754 compliance
826 ; CORTEX-A15: .eabi_attribute 20, 1
827 ; CORTEX-A15: .eabi_attribute 21, 1
828 ; CORTEX-A15-NOT: .eabi_attribute 22
829 ; CORTEX-A15: .eabi_attribute 23, 3
830 ; CORTEX-A15: .eabi_attribute 24, 1
831 ; CORTEX-A15: .eabi_attribute 25, 1
832 ; CORTEX-A15-NOT: .eabi_attribute 28
833 ; CORTEX-A15: .eabi_attribute 38, 1
835 ; CORTEX-A15-FAST-NOT: .eabi_attribute 19
836 ;; The A15 defaults to a VFPv3 FPU, so it flushes preserving the sign when
837 ;; -ffast-math is specified.
838 ; CORTEX-A15-FAST: .eabi_attribute 20, 2
839 ; CORTEX-A15-FAST-NOT: .eabi_attribute 21
840 ; CORTEX-A15-FAST-NOT: .eabi_attribute 22
841 ; CORTEX-A15-FAST: .eabi_attribute 23, 1
843 ; CORTEX-A17-DEFAULT: .cpu cortex-a17
844 ; CORTEX-A17-DEFAULT: .eabi_attribute 6, 10
845 ; CORTEX-A17-DEFAULT: .eabi_attribute 7, 65
846 ; CORTEX-A17-DEFAULT: .eabi_attribute 8, 1
847 ; CORTEX-A17-DEFAULT: .eabi_attribute 9, 2
848 ; CORTEX-A17-DEFAULT: .fpu neon-vfpv4
849 ; CORTEX-A17-DEFAULT: .eabi_attribute 42, 1
850 ; CORTEX-A17-DEFAULT: .eabi_attribute 44, 2
851 ; CORTEX-A17-DEFAULT: .eabi_attribute 68, 3
852 ; CORTEX-A17-DEFAULT-NOT: .eabi_attribute 19
853 ;; We default to IEEE 754 compliance
854 ; CORTEX-A17-DEFAULT: .eabi_attribute 20, 1
855 ; CORTEX-A17-DEFAULT: .eabi_attribute 21, 1
856 ; CORTEX-A17-DEFAULT-NOT: .eabi_attribute 22
857 ; CORTEX-A17-DEFAULT: .eabi_attribute 23, 3
858 ; CORTEX-A17-DEFAULT: .eabi_attribute 24, 1
859 ; CORTEX-A17-DEFAULT: .eabi_attribute 25, 1
861 ; CORTEX-A17-FAST-NOT: .eabi_attribute 19
862 ;; The A17 defaults to a VFPv3 FPU, so it flushes preserving the sign when
863 ;; -ffast-math is specified.
864 ; CORTEX-A17-FAST: .eabi_attribute 20, 2
865 ; CORTEX-A17-FAST-NOT: .eabi_attribute 21
866 ; CORTEX-A17-FAST-NOT: .eabi_attribute 22
867 ; CORTEX-A17-FAST: .eabi_attribute 23, 1
869 ; CORTEX-A17-NOFPU: .cpu cortex-a17
870 ; CORTEX-A17-NOFPU: .eabi_attribute 6, 10
871 ; CORTEX-A17-NOFPU: .eabi_attribute 7, 65
872 ; CORTEX-A17-NOFPU: .eabi_attribute 8, 1
873 ; CORTEX-A17-NOFPU: .eabi_attribute 9, 2
874 ; CORTEX-A17-NOFPU-NOT: .fpu
875 ; CORTEX-A17-NOFPU: .eabi_attribute 42, 1
876 ; CORTEX-A17-NOFPU: .eabi_attribute 44, 2
877 ; CORTEX-A17-NOFPU: .eabi_attribute 68, 3
878 ; CORTEX-A17-NOFPU-NOT: .eabi_attribute 19
879 ;; We default to IEEE 754 compliance
880 ; CORTEX-A17-NOFPU: .eabi_attribute 20, 1
881 ; CORTEX-A17-NOFPU: .eabi_attribute 21, 1
882 ; CORTEX-A17-NOFPU-NOT: .eabi_attribute 22
883 ; CORTEX-A17-NOFPU: .eabi_attribute 23, 3
884 ; CORTEX-A17-NOFPU: .eabi_attribute 24, 1
885 ; CORTEX-A17-NOFPU: .eabi_attribute 25, 1
887 ; CORTEX-A17-NOFPU-NOT: .eabi_attribute 19
888 ;; Despite there being no FPU, we chose to flush to zero preserving
889 ;; sign. This matches what the hardware would do for this architecture
891 ; CORTEX-A17-NOFPU-FAST: .eabi_attribute 20, 2
892 ; CORTEX-A17-NOFPU-FAST-NOT: .eabi_attribute 21
893 ; CORTEX-A17-NOFPU-FAST-NOT: .eabi_attribute 22
894 ; CORTEX-A17-NOFPU-FAST: .eabi_attribute 23, 1
896 ; Test flags -enable-no-trapping-fp-math and -denormal-fp-math:
897 ; NO-TRAPPING-MATH: .eabi_attribute 21, 0
898 ; DENORMAL-IEEE: .eabi_attribute 20, 1
899 ; DENORMAL-PRESERVE-SIGN: .eabi_attribute 20, 2
900 ; DENORMAL-POSITIVE-ZERO: .eabi_attribute 20, 0
902 ; CORTEX-M0: .cpu cortex-m0
903 ; CORTEX-M0: .eabi_attribute 6, 12
904 ; CORTEX-M0: .eabi_attribute 7, 77
905 ; CORTEX-M0: .eabi_attribute 8, 0
906 ; CORTEX-M0: .eabi_attribute 9, 1
907 ; CORTEX-M0-NOT: .eabi_attribute 27
908 ; CORTEX-M0-NOT: .eabi_attribute 36
909 ; CORTEX-M0: .eabi_attribute 34, 0
910 ; CORTEX-M0-NOT: .eabi_attribute 42
911 ; CORTEX-M0-NOT: .eabi_attribute 44
912 ; CORTEX-M0-NOT: .eabi_attribute 68
913 ; CORTEX-M0-NOT: .eabi_attribute 19
914 ;; We default to IEEE 754 compliance
915 ; CORTEX-M0: .eabi_attribute 20, 1
916 ; CORTEX-M0: .eabi_attribute 21, 1
917 ; CORTEX-M0-NOT: .eabi_attribute 22
918 ; CORTEX-M0: .eabi_attribute 23, 3
919 ; CORTEX-M0: .eabi_attribute 24, 1
920 ; CORTEX-M0: .eabi_attribute 25, 1
921 ; CORTEX-M0-NOT: .eabi_attribute 28
922 ; CORTEX-M0: .eabi_attribute 38, 1
924 ; CORTEX-M0-FAST-NOT: .eabi_attribute 19
925 ;; Despite the M0 CPU having no FPU in this scenario, we chose to
926 ;; flush to positive zero here. There's no hardware support doing
927 ;; this, but the fast maths software library might and such behaviour
928 ;; would match hardware support on this architecture revision if it
930 ; CORTEX-M0-FAST-NOT: .eabi_attribute 20
931 ; CORTEX-M0-FAST-NOT: .eabi_attribute 21
932 ; CORTEX-M0-FAST-NOT: .eabi_attribute 22
933 ; CORTEX-M0-FAST: .eabi_attribute 23, 1
935 ; CORTEX-M0PLUS: .cpu cortex-m0plus
936 ; CORTEX-M0PLUS: .eabi_attribute 6, 12
937 ; CORTEX-M0PLUS: .eabi_attribute 7, 77
938 ; CORTEX-M0PLUS: .eabi_attribute 8, 0
939 ; CORTEX-M0PLUS: .eabi_attribute 9, 1
940 ; CORTEX-M0PLUS-NOT: .eabi_attribute 27
941 ; CORTEX-M0PLUS-NOT: .eabi_attribute 36
942 ; CORTEX-M0PLUS-NOT: .eabi_attribute 42
943 ; CORTEX-M0PLUS-NOT: .eabi_attribute 44
944 ; CORTEX-M0PLUS-NOT: .eabi_attribute 68
945 ; CORTEX-M0PLUS-NOT: .eabi_attribute 19
946 ;; We default to IEEE 754 compliance
947 ; CORTEX-M0PLUS: .eabi_attribute 20, 1
948 ; CORTEX-M0PLUS: .eabi_attribute 21, 1
949 ; CORTEX-M0PLUS-NOT: .eabi_attribute 22
950 ; CORTEX-M0PLUS: .eabi_attribute 23, 3
951 ; CORTEX-M0PLUS: .eabi_attribute 24, 1
952 ; CORTEX-M0PLUS: .eabi_attribute 25, 1
953 ; CORTEX-M0PLUS-NOT: .eabi_attribute 28
954 ; CORTEX-M0PLUS: .eabi_attribute 38, 1
956 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 19
957 ;; Despite the M0+ CPU having no FPU in this scenario, we chose to
958 ;; flush to positive zero here. There's no hardware support doing
959 ;; this, but the fast maths software library might and such behaviour
960 ;; would match hardware support on this architecture revision if it
962 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 20
963 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 21
964 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 22
965 ; CORTEX-M0PLUS-FAST: .eabi_attribute 23, 1
967 ; CORTEX-M1: .cpu cortex-m1
968 ; CORTEX-M1: .eabi_attribute 6, 12
969 ; CORTEX-M1: .eabi_attribute 7, 77
970 ; CORTEX-M1: .eabi_attribute 8, 0
971 ; CORTEX-M1: .eabi_attribute 9, 1
972 ; CORTEX-M1-NOT: .eabi_attribute 27
973 ; CORTEX-M1-NOT: .eabi_attribute 36
974 ; CORTEX-M1-NOT: .eabi_attribute 42
975 ; CORTEX-M1-NOT: .eabi_attribute 44
976 ; CORTEX-M1-NOT: .eabi_attribute 68
977 ; CORTEX-M1-NOT: .eabi_attribute 19
978 ;; We default to IEEE 754 compliance
979 ; CORTEX-M1: .eabi_attribute 20, 1
980 ; CORTEX-M1: .eabi_attribute 21, 1
981 ; CORTEX-M1-NOT: .eabi_attribute 22
982 ; CORTEX-M1: .eabi_attribute 23, 3
983 ; CORTEX-M1: .eabi_attribute 24, 1
984 ; CORTEX-M1: .eabi_attribute 25, 1
985 ; CORTEX-M1-NOT: .eabi_attribute 28
986 ; CORTEX-M1: .eabi_attribute 38, 1
988 ; CORTEX-M1-FAST-NOT: .eabi_attribute 19
989 ;; Despite the M1 CPU having no FPU in this scenario, we chose to
990 ;; flush to positive zero here. There's no hardware support doing
991 ;; this, but the fast maths software library might and such behaviour
992 ;; would match hardware support on this architecture revision if it
994 ; CORTEX-M1-FAST-NOT: .eabi_attribute 20
995 ; CORTEX-M1-FAST-NOT: .eabi_attribute 21
996 ; CORTEX-M1-FAST-NOT: .eabi_attribute 22
997 ; CORTEX-M1-FAST: .eabi_attribute 23, 1
1000 ; SC000: .eabi_attribute 6, 12
1001 ; SC000: .eabi_attribute 7, 77
1002 ; SC000: .eabi_attribute 8, 0
1003 ; SC000: .eabi_attribute 9, 1
1004 ; SC000-NOT: .eabi_attribute 27
1005 ; SC000-NOT: .eabi_attribute 42
1006 ; SC000-NOT: .eabi_attribute 44
1007 ; SC000-NOT: .eabi_attribute 68
1008 ; SC000-NOT: .eabi_attribute 19
1009 ;; We default to IEEE 754 compliance
1010 ; SC000: .eabi_attribute 20, 1
1011 ; SC000: .eabi_attribute 21, 1
1012 ; SC000-NOT: .eabi_attribute 22
1013 ; SC000: .eabi_attribute 23, 3
1014 ; SC000: .eabi_attribute 24, 1
1015 ; SC000: .eabi_attribute 25, 1
1016 ; SC000-NOT: .eabi_attribute 28
1017 ; SC000: .eabi_attribute 38, 1
1019 ; SC000-FAST-NOT: .eabi_attribute 19
1020 ;; Despite the SC000 CPU having no FPU in this scenario, we chose to
1021 ;; flush to positive zero here. There's no hardware support doing
1022 ;; this, but the fast maths software library might and such behaviour
1023 ;; would match hardware support on this architecture revision if it
1025 ; SC000-FAST-NOT: .eabi_attribute 20
1026 ; SC000-FAST-NOT: .eabi_attribute 21
1027 ; SC000-FAST-NOT: .eabi_attribute 22
1028 ; SC000-FAST: .eabi_attribute 23, 1
1030 ; CORTEX-M3: .cpu cortex-m3
1031 ; CORTEX-M3: .eabi_attribute 6, 10
1032 ; CORTEX-M3: .eabi_attribute 7, 77
1033 ; CORTEX-M3: .eabi_attribute 8, 0
1034 ; CORTEX-M3: .eabi_attribute 9, 2
1035 ; CORTEX-M3-NOT: .eabi_attribute 27
1036 ; CORTEX-M3-NOT: .eabi_attribute 36
1037 ; CORTEX-M3-NOT: .eabi_attribute 42
1038 ; CORTEX-M3-NOT: .eabi_attribute 44
1039 ; CORTEX-M3-NOT: .eabi_attribute 68
1040 ; CORTEX-M3-NOT: .eabi_attribute 19
1041 ;; We default to IEEE 754 compliance
1042 ; CORTEX-M3: .eabi_attribute 20, 1
1043 ; CORTEX-M3: .eabi_attribute 21, 1
1044 ; CORTEX-M3-NOT: .eabi_attribute 22
1045 ; CORTEX-M3: .eabi_attribute 23, 3
1046 ; CORTEX-M3: .eabi_attribute 24, 1
1047 ; CORTEX-M3: .eabi_attribute 25, 1
1048 ; CORTEX-M3-NOT: .eabi_attribute 28
1049 ; CORTEX-M3: .eabi_attribute 38, 1
1051 ; CORTEX-M3-FAST-NOT: .eabi_attribute 19
1052 ;; Despite there being no FPU, we chose to flush to zero preserving
1053 ;; sign. This matches what the hardware would do for this architecture
1055 ; CORTEX-M3-FAST: .eabi_attribute 20, 2
1056 ; CORTEX-M3-FAST-NOT: .eabi_attribute 21
1057 ; CORTEX-M3-FAST-NOT: .eabi_attribute 22
1058 ; CORTEX-M3-FAST: .eabi_attribute 23, 1
1061 ; SC300: .eabi_attribute 6, 10
1062 ; SC300: .eabi_attribute 7, 77
1063 ; SC300: .eabi_attribute 8, 0
1064 ; SC300: .eabi_attribute 9, 2
1065 ; SC300-NOT: .eabi_attribute 27
1066 ; SC300-NOT: .eabi_attribute 36
1067 ; SC300-NOT: .eabi_attribute 42
1068 ; SC300-NOT: .eabi_attribute 44
1069 ; SC300-NOT: .eabi_attribute 68
1070 ; SC300-NOT: .eabi_attribute 19
1071 ;; We default to IEEE 754 compliance
1072 ; SC300: .eabi_attribute 20, 1
1073 ; SC300: .eabi_attribute 21, 1
1074 ; SC300-NOT: .eabi_attribute 22
1075 ; SC300: .eabi_attribute 23, 3
1076 ; SC300: .eabi_attribute 24, 1
1077 ; SC300: .eabi_attribute 25, 1
1078 ; SC300-NOT: .eabi_attribute 28
1079 ; SC300: .eabi_attribute 38, 1
1081 ; SC300-FAST-NOT: .eabi_attribute 19
1082 ;; Despite there being no FPU, we chose to flush to zero preserving
1083 ;; sign. This matches what the hardware would do for this architecture
1085 ; SC300-FAST: .eabi_attribute 20, 2
1086 ; SC300-FAST-NOT: .eabi_attribute 21
1087 ; SC300-FAST-NOT: .eabi_attribute 22
1088 ; SC300-FAST: .eabi_attribute 23, 1
1090 ; CORTEX-M4-SOFT: .cpu cortex-m4
1091 ; CORTEX-M4-SOFT: .eabi_attribute 6, 13
1092 ; CORTEX-M4-SOFT: .eabi_attribute 7, 77
1093 ; CORTEX-M4-SOFT: .eabi_attribute 8, 0
1094 ; CORTEX-M4-SOFT: .eabi_attribute 9, 2
1095 ; CORTEX-M4-SOFT: .fpu fpv4-sp-d16
1096 ; CORTEX-M4-SOFT: .eabi_attribute 27, 1
1097 ; CORTEX-M4-SOFT: .eabi_attribute 36, 1
1098 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 42
1099 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 44
1100 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 68
1101 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 19
1102 ;; We default to IEEE 754 compliance
1103 ; CORTEX-M4-SOFT: .eabi_attribute 20, 1
1104 ; CORTEX-M4-SOFT: .eabi_attribute 21, 1
1105 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 22
1106 ; CORTEX-M4-SOFT: .eabi_attribute 23, 3
1107 ; CORTEX-M4-SOFT: .eabi_attribute 24, 1
1108 ; CORTEX-M4-SOFT: .eabi_attribute 25, 1
1109 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 28
1110 ; CORTEX-M4-SOFT: .eabi_attribute 38, 1
1112 ; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 19
1113 ;; The M4 defaults to a VFPv4 FPU, so it flushes preserving the sign when
1114 ;; -ffast-math is specified.
1115 ; CORTEX-M4-SOFT-FAST: .eabi_attribute 20, 2
1116 ; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 21
1117 ; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 22
1118 ; CORTEX-M4-SOFT-FAST: .eabi_attribute 23, 1
1120 ; CORTEX-M4-HARD: .cpu cortex-m4
1121 ; CORTEX-M4-HARD: .eabi_attribute 6, 13
1122 ; CORTEX-M4-HARD: .eabi_attribute 7, 77
1123 ; CORTEX-M4-HARD: .eabi_attribute 8, 0
1124 ; CORTEX-M4-HARD: .eabi_attribute 9, 2
1125 ; CORTEX-M4-HARD: .fpu fpv4-sp-d16
1126 ; CORTEX-M4-HARD: .eabi_attribute 27, 1
1127 ; CORTEX-M4-HARD: .eabi_attribute 36, 1
1128 ; CORTEX-M4-HARD-NOT: .eabi_attribute 42
1129 ; CORTEX-M4-HARD-NOT: .eabi_attribute 44
1130 ; CORTEX-M4-HARD-NOT: .eabi_attribute 68
1131 ; CORTEX-M4-HARD-NOT: .eabi_attribute 19
1132 ;; We default to IEEE 754 compliance
1133 ; CORTEX-M4-HARD: .eabi_attribute 20, 1
1134 ; CORTEX-M4-HARD: .eabi_attribute 21, 1
1135 ; CORTEX-M4-HARD-NOT: .eabi_attribute 22
1136 ; CORTEX-M4-HARD: .eabi_attribute 23, 3
1137 ; CORTEX-M4-HARD: .eabi_attribute 24, 1
1138 ; CORTEX-M4-HARD: .eabi_attribute 25, 1
1139 ; CORTEX-M4-HARD: .eabi_attribute 28, 1
1140 ; CORTEX-M4-HARD: .eabi_attribute 38, 1
1142 ; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 19
1143 ;; The M4 defaults to a VFPv4 FPU, so it flushes preserving the sign when
1144 ;; -ffast-math is specified.
1145 ; CORTEX-M4-HARD-FAST: .eabi_attribute 20, 2
1146 ; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 21
1147 ; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 22
1148 ; CORTEX-M4-HARD-FAST: .eabi_attribute 23, 1
1150 ; CORTEX-M7: .cpu cortex-m7
1151 ; CORTEX-M7: .eabi_attribute 6, 13
1152 ; CORTEX-M7: .eabi_attribute 7, 77
1153 ; CORTEX-M7: .eabi_attribute 8, 0
1154 ; CORTEX-M7: .eabi_attribute 9, 2
1155 ; CORTEX-M7-SOFT-NOT: .fpu
1156 ; CORTEX-M7-SINGLE: .fpu fpv5-sp-d16
1157 ; CORTEX-M7-DOUBLE: .fpu fpv5-d16
1158 ; CORTEX-M7-SOFT-NOT: .eabi_attribute 27
1159 ; CORTEX-M7-SINGLE: .eabi_attribute 27, 1
1160 ; CORTEX-M7-DOUBLE-NOT: .eabi_attribute 27
1161 ; CORTEX-M7: .eabi_attribute 36, 1
1162 ; CORTEX-M7-NOT: .eabi_attribute 44
1163 ; CORTEX-M7: .eabi_attribute 17, 1
1164 ; CORTEX-M7-NOT: .eabi_attribute 19
1165 ;; We default to IEEE 754 compliance
1166 ; CORTEX-M7: .eabi_attribute 20, 1
1167 ; CORTEX-M7: .eabi_attribute 21, 1
1168 ; CORTEX-M7-NOT: .eabi_attribute 22
1169 ; CORTEX-M7: .eabi_attribute 23, 3
1170 ; CORTEX-M7: .eabi_attribute 24, 1
1171 ; CORTEX-M7: .eabi_attribute 25, 1
1172 ; CORTEX-M7: .eabi_attribute 38, 1
1173 ; CORTEX-M7: .eabi_attribute 14, 0
1175 ; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 19
1176 ;; The M7 has the ARMv8 FP unit, which always flushes preserving sign.
1177 ; CORTEX-M7-FAST: .eabi_attribute 20, 2
1178 ;; Despite there being no FPU, we chose to flush to zero preserving
1179 ;; sign. This matches what the hardware would do for this architecture
1181 ; CORTEX-M7-NOFPU-FAST: .eabi_attribute 20, 2
1182 ; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 21
1183 ; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 22
1184 ; CORTEX-M7-NOFPU-FAST: .eabi_attribute 23, 1
1186 ; CORTEX-R4: .cpu cortex-r4
1187 ; CORTEX-R4: .eabi_attribute 6, 10
1188 ; CORTEX-R4: .eabi_attribute 7, 82
1189 ; CORTEX-R4: .eabi_attribute 8, 1
1190 ; CORTEX-R4: .eabi_attribute 9, 2
1191 ; CORTEX-R4-NOT: .fpu vfpv3-d16
1192 ; CORTEX-R4-NOT: .eabi_attribute 36
1193 ; CORTEX-R4-NOT: .eabi_attribute 42
1194 ; CORTEX-R4-NOT: .eabi_attribute 44
1195 ; CORTEX-R4-NOT: .eabi_attribute 68
1196 ; CORTEX-R4-NOT: .eabi_attribute 19
1197 ;; We default to IEEE 754 compliance
1198 ; CORTEX-R4: .eabi_attribute 20, 1
1199 ; CORTEX-R4: .eabi_attribute 21, 1
1200 ; CORTEX-R4-NOT: .eabi_attribute 22
1201 ; CORTEX-R4: .eabi_attribute 23, 3
1202 ; CORTEX-R4: .eabi_attribute 24, 1
1203 ; CORTEX-R4: .eabi_attribute 25, 1
1204 ; CORTEX-R4-NOT: .eabi_attribute 28
1205 ; CORTEX-R4: .eabi_attribute 38, 1
1207 ; CORTEX-R4F: .cpu cortex-r4f
1208 ; CORTEX-R4F: .eabi_attribute 6, 10
1209 ; CORTEX-R4F: .eabi_attribute 7, 82
1210 ; CORTEX-R4F: .eabi_attribute 8, 1
1211 ; CORTEX-R4F: .eabi_attribute 9, 2
1212 ; CORTEX-R4F: .fpu vfpv3-d16
1213 ; CORTEX-R4F-NOT: .eabi_attribute 27, 1
1214 ; CORTEX-R4F-NOT: .eabi_attribute 36
1215 ; CORTEX-R4F-NOT: .eabi_attribute 42
1216 ; CORTEX-R4F-NOT: .eabi_attribute 44
1217 ; CORTEX-R4F-NOT: .eabi_attribute 68
1218 ; CORTEX-R4F-NOT: .eabi_attribute 19
1219 ;; We default to IEEE 754 compliance
1220 ; CORTEX-R4F: .eabi_attribute 20, 1
1221 ; CORTEX-R4F: .eabi_attribute 21, 1
1222 ; CORTEX-R4F-NOT: .eabi_attribute 22
1223 ; CORTEX-R4F: .eabi_attribute 23, 3
1224 ; CORTEX-R4F: .eabi_attribute 24, 1
1225 ; CORTEX-R4F: .eabi_attribute 25, 1
1226 ; CORTEX-R4F-NOT: .eabi_attribute 28
1227 ; CORTEX-R4F: .eabi_attribute 38, 1
1229 ; CORTEX-R5: .cpu cortex-r5
1230 ; CORTEX-R5: .eabi_attribute 6, 10
1231 ; CORTEX-R5: .eabi_attribute 7, 82
1232 ; CORTEX-R5: .eabi_attribute 8, 1
1233 ; CORTEX-R5: .eabi_attribute 9, 2
1234 ; CORTEX-R5: .fpu vfpv3-d16
1235 ; CORTEX-R5-NOT: .eabi_attribute 27, 1
1236 ; CORTEX-R5-NOT: .eabi_attribute 36
1237 ; CORTEX-R5: .eabi_attribute 44, 2
1238 ; CORTEX-R5-NOT: .eabi_attribute 42
1239 ; CORTEX-R5-NOT: .eabi_attribute 68
1240 ; CORTEX-R5-NOT: .eabi_attribute 19
1241 ;; We default to IEEE 754 compliance
1242 ; CORTEX-R5: .eabi_attribute 20, 1
1243 ; CORTEX-R5: .eabi_attribute 21, 1
1244 ; CORTEX-R5-NOT: .eabi_attribute 22
1245 ; CORTEX-R5: .eabi_attribute 23, 3
1246 ; CORTEX-R5: .eabi_attribute 24, 1
1247 ; CORTEX-R5: .eabi_attribute 25, 1
1248 ; CORTEX-R5-NOT: .eabi_attribute 28
1249 ; CORTEX-R5: .eabi_attribute 38, 1
1251 ; CORTEX-R5-FAST-NOT: .eabi_attribute 19
1252 ;; The R5 has the VFPv3 FP unit, which always flushes preserving sign.
1253 ; CORTEX-R5-FAST: .eabi_attribute 20, 2
1254 ; CORTEX-R5-FAST-NOT: .eabi_attribute 21
1255 ; CORTEX-R5-FAST-NOT: .eabi_attribute 22
1256 ; CORTEX-R5-FAST: .eabi_attribute 23, 1
1258 ; CORTEX-R7: .cpu cortex-r7
1259 ; CORTEX-R7: .eabi_attribute 6, 10
1260 ; CORTEX-R7: .eabi_attribute 7, 82
1261 ; CORTEX-R7: .eabi_attribute 8, 1
1262 ; CORTEX-R7: .eabi_attribute 9, 2
1263 ; CORTEX-R7: .fpu vfpv3-d16-fp16
1264 ; CORTEX-R7: .eabi_attribute 36, 1
1265 ; CORTEX-R7: .eabi_attribute 42, 1
1266 ; CORTEX-R7: .eabi_attribute 44, 2
1267 ; CORTEX-R7-NOT: .eabi_attribute 68
1268 ; CORTEX-R7-NOT: .eabi_attribute 19
1269 ;; We default to IEEE 754 compliance
1270 ; CORTEX-R7: .eabi_attribute 20, 1
1271 ; CORTEX-R7: .eabi_attribute 21, 1
1272 ; CORTEX-R7-NOT: .eabi_attribute 22
1273 ; CORTEX-R7: .eabi_attribute 23, 3
1274 ; CORTEX-R7: .eabi_attribute 24, 1
1275 ; CORTEX-R7: .eabi_attribute 25, 1
1276 ; CORTEX-R7-NOT: .eabi_attribute 28
1277 ; CORTEX-R7: .eabi_attribute 38, 1
1279 ; CORTEX-R7-FAST-NOT: .eabi_attribute 19
1280 ;; The R7 has the VFPv3 FP unit, which always flushes preserving sign.
1281 ; CORTEX-R7-FAST: .eabi_attribute 20, 2
1282 ; CORTEX-R7-FAST-NOT: .eabi_attribute 21
1283 ; CORTEX-R7-FAST-NOT: .eabi_attribute 22
1284 ; CORTEX-R7-FAST: .eabi_attribute 23, 1
1286 ; CORTEX-R8: .cpu cortex-r8
1287 ; CORTEX-R8: .eabi_attribute 6, 10
1288 ; CORTEX-R8: .eabi_attribute 7, 82
1289 ; CORTEX-R8: .eabi_attribute 8, 1
1290 ; CORTEX-R8: .eabi_attribute 9, 2
1291 ; CORTEX-R8: .fpu vfpv3-d16-fp16
1292 ; CORTEX-R8: .eabi_attribute 36, 1
1293 ; CORTEX-R8: .eabi_attribute 42, 1
1294 ; CORTEX-R8: .eabi_attribute 44, 2
1295 ; CORTEX-R8-NOT: .eabi_attribute 68
1296 ; CORTEX-R8-NOT: .eabi_attribute 19
1297 ;; We default to IEEE 754 compliance
1298 ; CORTEX-R8: .eabi_attribute 20, 1
1299 ; CORTEX-R8: .eabi_attribute 21, 1
1300 ; CORTEX-R8-NOT: .eabi_attribute 22
1301 ; CORTEX-R8: .eabi_attribute 23, 3
1302 ; CORTEX-R8: .eabi_attribute 24, 1
1303 ; CORTEX-R8: .eabi_attribute 25, 1
1304 ; CORTEX-R8-NOT: .eabi_attribute 28
1305 ; CORTEX-R8: .eabi_attribute 38, 1
1307 ; CORTEX-R8-FAST-NOT: .eabi_attribute 19
1308 ;; The R8 has the VFPv3 FP unit, which always flushes preserving sign.
1309 ; CORTEX-R8-FAST: .eabi_attribute 20, 2
1310 ; CORTEX-R8-FAST-NOT: .eabi_attribute 21
1311 ; CORTEX-R8-FAST-NOT: .eabi_attribute 22
1312 ; CORTEX-R8-FAST: .eabi_attribute 23, 1
1314 ; CORTEX-A32: .cpu cortex-a32
1315 ; CORTEX-A32: .eabi_attribute 6, 14
1316 ; CORTEX-A32: .eabi_attribute 7, 65
1317 ; CORTEX-A32: .eabi_attribute 8, 1
1318 ; CORTEX-A32: .eabi_attribute 9, 2
1319 ; CORTEX-A32: .fpu crypto-neon-fp-armv8
1320 ; CORTEX-A32: .eabi_attribute 12, 3
1321 ; CORTEX-A32-NOT: .eabi_attribute 27
1322 ; CORTEX-A32: .eabi_attribute 36, 1
1323 ; CORTEX-A32: .eabi_attribute 42, 1
1324 ; CORTEX-A32-NOT: .eabi_attribute 44
1325 ; CORTEX-A32: .eabi_attribute 68, 3
1326 ; CORTEX-A32-NOT: .eabi_attribute 19
1327 ;; We default to IEEE 754 compliance
1328 ; CORTEX-A32: .eabi_attribute 20, 1
1329 ; CORTEX-A32: .eabi_attribute 21, 1
1330 ; CORTEX-A32-NOT: .eabi_attribute 22
1331 ; CORTEX-A32: .eabi_attribute 23, 3
1332 ; CORTEX-A32: .eabi_attribute 24, 1
1333 ; CORTEX-A32: .eabi_attribute 25, 1
1334 ; CORTEX-A32-NOT: .eabi_attribute 28
1335 ; CORTEX-A32: .eabi_attribute 38, 1
1337 ; CORTEX-A32-FAST-NOT: .eabi_attribute 19
1338 ;; The A32 has the ARMv8 FP unit, which always flushes preserving sign.
1339 ; CORTEX-A32-FAST: .eabi_attribute 20, 2
1340 ; CORTEX-A32-FAST-NOT: .eabi_attribute 21
1341 ; CORTEX-A32-FAST-NOT: .eabi_attribute 22
1342 ; CORTEX-A32-FAST: .eabi_attribute 23, 1
1344 ; CORTEX-M23: .cpu cortex-m23
1345 ; CORTEX-M23: .eabi_attribute 6, 16
1346 ; CORTEX-M23: .eabi_attribute 7, 77
1347 ; CORTEX-M23: .eabi_attribute 8, 0
1348 ; CORTEX-M23: .eabi_attribute 9, 3
1349 ; CORTEX-M23-NOT: .eabi_attribute 27
1350 ; CORTEX-M23: .eabi_attribute 34, 1
1351 ; CORTEX-M23-NOT: .eabi_attribute 44
1352 ; CORTEX-M23: .eabi_attribute 17, 1
1353 ;; We default to IEEE 754 compliance
1354 ; CORTEX-M23-NOT: .eabi_attribute 19
1355 ; CORTEX-M23: .eabi_attribute 20, 1
1356 ; CORTEX-M23: .eabi_attribute 21, 1
1357 ; CORTEX-M23: .eabi_attribute 23, 3
1358 ; CORTEX-M23: .eabi_attribute 24, 1
1359 ; CORTEX-M23-NOT: .eabi_attribute 28
1360 ; CORTEX-M23: .eabi_attribute 25, 1
1361 ; CORTEX-M23: .eabi_attribute 38, 1
1362 ; CORTEX-M23: .eabi_attribute 14, 0
1364 ; CORTEX-M33: .cpu cortex-m33
1365 ; CORTEX-M33: .eabi_attribute 6, 17
1366 ; CORTEX-M33: .eabi_attribute 7, 77
1367 ; CORTEX-M33: .eabi_attribute 8, 0
1368 ; CORTEX-M33: .eabi_attribute 9, 3
1369 ; CORTEX-M33: .fpu fpv5-sp-d16
1370 ; CORTEX-M33: .eabi_attribute 27, 1
1371 ; CORTEX-M33: .eabi_attribute 36, 1
1372 ; CORTEX-M33-NOT: .eabi_attribute 44
1373 ; CORTEX-M33: .eabi_attribute 46, 1
1374 ; CORTEX-M33: .eabi_attribute 34, 1
1375 ; CORTEX-M33: .eabi_attribute 17, 1
1376 ;; We default to IEEE 754 compliance
1377 ; CORTEX-M23-NOT: .eabi_attribute 19
1378 ; CORTEX-M33: .eabi_attribute 20, 1
1379 ; CORTEX-M33: .eabi_attribute 21, 1
1380 ; CORTEX-M33: .eabi_attribute 23, 3
1381 ; CORTEX-M33: .eabi_attribute 24, 1
1382 ; CORTEX-M33: .eabi_attribute 25, 1
1383 ; CORTEX-M33-NOT: .eabi_attribute 28
1384 ; CORTEX-M33: .eabi_attribute 38, 1
1385 ; CORTEX-M33: .eabi_attribute 14, 0
1387 ; CORTEX-M33-FAST-NOT: .eabi_attribute 19
1388 ; CORTEX-M33-FAST: .eabi_attribute 20, 2
1389 ; CORTEX-M33-FAST-NOT: .eabi_attribute 21
1390 ; CORTEX-M33-FAST-NOT: .eabi_attribute 22
1391 ; CORTEX-M33-FAST: .eabi_attribute 23, 1
1393 ; CORTEX-A35: .cpu cortex-a35
1394 ; CORTEX-A35: .eabi_attribute 6, 14
1395 ; CORTEX-A35: .eabi_attribute 7, 65
1396 ; CORTEX-A35: .eabi_attribute 8, 1
1397 ; CORTEX-A35: .eabi_attribute 9, 2
1398 ; CORTEX-A35: .fpu crypto-neon-fp-armv8
1399 ; CORTEX-A35: .eabi_attribute 12, 3
1400 ; CORTEX-A35-NOT: .eabi_attribute 27
1401 ; CORTEX-A35: .eabi_attribute 36, 1
1402 ; CORTEX-A35: .eabi_attribute 42, 1
1403 ; CORTEX-A35-NOT: .eabi_attribute 44
1404 ; CORTEX-A35: .eabi_attribute 68, 3
1405 ; CORTEX-A35-NOT: .eabi_attribute 19
1406 ;; We default to IEEE 754 compliance
1407 ; CORTEX-A35: .eabi_attribute 20, 1
1408 ; CORTEX-A35: .eabi_attribute 21, 1
1409 ; CORTEX-A35-NOT: .eabi_attribute 22
1410 ; CORTEX-A35: .eabi_attribute 23, 3
1411 ; CORTEX-A35: .eabi_attribute 24, 1
1412 ; CORTEX-A35: .eabi_attribute 25, 1
1413 ; CORTEX-A35-NOT: .eabi_attribute 28
1414 ; CORTEX-A35: .eabi_attribute 38, 1
1416 ; CORTEX-A35-FAST-NOT: .eabi_attribute 19
1417 ;; The A35 has the ARMv8 FP unit, which always flushes preserving sign.
1418 ; CORTEX-A35-FAST: .eabi_attribute 20, 2
1419 ; CORTEX-A35-FAST-NOT: .eabi_attribute 21
1420 ; CORTEX-A35-FAST-NOT: .eabi_attribute 22
1421 ; CORTEX-A35-FAST: .eabi_attribute 23, 1
1423 ; CORTEX-A53: .cpu cortex-a53
1424 ; CORTEX-A53: .eabi_attribute 6, 14
1425 ; CORTEX-A53: .eabi_attribute 7, 65
1426 ; CORTEX-A53: .eabi_attribute 8, 1
1427 ; CORTEX-A53: .eabi_attribute 9, 2
1428 ; CORTEX-A53: .fpu crypto-neon-fp-armv8
1429 ; CORTEX-A53: .eabi_attribute 12, 3
1430 ; CORTEX-A53-NOT: .eabi_attribute 27
1431 ; CORTEX-A53: .eabi_attribute 36, 1
1432 ; CORTEX-A53: .eabi_attribute 42, 1
1433 ; CORTEX-A53-NOT: .eabi_attribute 44
1434 ; CORTEX-A53: .eabi_attribute 68, 3
1435 ; CORTEX-A53-NOT: .eabi_attribute 19
1436 ;; We default to IEEE 754 compliance
1437 ; CORTEX-A53: .eabi_attribute 20, 1
1438 ; CORTEX-A53: .eabi_attribute 21, 1
1439 ; CORTEX-A53-NOT: .eabi_attribute 22
1440 ; CORTEX-A53: .eabi_attribute 23, 3
1441 ; CORTEX-A53: .eabi_attribute 24, 1
1442 ; CORTEX-A53: .eabi_attribute 25, 1
1443 ; CORTEX-A53-NOT: .eabi_attribute 28
1444 ; CORTEX-A53: .eabi_attribute 38, 1
1446 ; CORTEX-A53-FAST-NOT: .eabi_attribute 19
1447 ;; The A53 has the ARMv8 FP unit, which always flushes preserving sign.
1448 ; CORTEX-A53-FAST: .eabi_attribute 20, 2
1449 ; CORTEX-A53-FAST-NOT: .eabi_attribute 21
1450 ; CORTEX-A53-FAST-NOT: .eabi_attribute 22
1451 ; CORTEX-A53-FAST: .eabi_attribute 23, 1
1453 ; CORTEX-A57: .cpu cortex-a57
1454 ; CORTEX-A57: .eabi_attribute 6, 14
1455 ; CORTEX-A57: .eabi_attribute 7, 65
1456 ; CORTEX-A57: .eabi_attribute 8, 1
1457 ; CORTEX-A57: .eabi_attribute 9, 2
1458 ; CORTEX-A57: .fpu crypto-neon-fp-armv8
1459 ; CORTEX-A57: .eabi_attribute 12, 3
1460 ; CORTEX-A57-NOT: .eabi_attribute 27
1461 ; CORTEX-A57: .eabi_attribute 36, 1
1462 ; CORTEX-A57: .eabi_attribute 42, 1
1463 ; CORTEX-A57-NOT: .eabi_attribute 44
1464 ; CORTEX-A57: .eabi_attribute 68, 3
1465 ; CORTEX-A57-NOT: .eabi_attribute 19
1466 ;; We default to IEEE 754 compliance
1467 ; CORTEX-A57: .eabi_attribute 20, 1
1468 ; CORTEX-A57: .eabi_attribute 21, 1
1469 ; CORTEX-A57-NOT: .eabi_attribute 22
1470 ; CORTEX-A57: .eabi_attribute 23, 3
1471 ; CORTEX-A57: .eabi_attribute 24, 1
1472 ; CORTEX-A57: .eabi_attribute 25, 1
1473 ; CORTEX-A57-NOT: .eabi_attribute 28
1474 ; CORTEX-A57: .eabi_attribute 38, 1
1476 ; CORTEX-A57-FAST-NOT: .eabi_attribute 19
1477 ;; The A57 has the ARMv8 FP unit, which always flushes preserving sign.
1478 ; CORTEX-A57-FAST: .eabi_attribute 20, 2
1479 ; CORTEX-A57-FAST-NOT: .eabi_attribute 21
1480 ; CORTEX-A57-FAST-NOT: .eabi_attribute 22
1481 ; CORTEX-A57-FAST: .eabi_attribute 23, 1
1483 ; CORTEX-A72: .cpu cortex-a72
1484 ; CORTEX-A72: .eabi_attribute 6, 14
1485 ; CORTEX-A72: .eabi_attribute 7, 65
1486 ; CORTEX-A72: .eabi_attribute 8, 1
1487 ; CORTEX-A72: .eabi_attribute 9, 2
1488 ; CORTEX-A72: .fpu crypto-neon-fp-armv8
1489 ; CORTEX-A72: .eabi_attribute 12, 3
1490 ; CORTEX-A72-NOT: .eabi_attribute 27
1491 ; CORTEX-A72: .eabi_attribute 36, 1
1492 ; CORTEX-A72: .eabi_attribute 42, 1
1493 ; CORTEX-A72-NOT: .eabi_attribute 44
1494 ; CORTEX-A72: .eabi_attribute 68, 3
1495 ; CORTEX-A72-NOT: .eabi_attribute 19
1496 ;; We default to IEEE 754 compliance
1497 ; CORTEX-A72: .eabi_attribute 20, 1
1498 ; CORTEX-A72: .eabi_attribute 21, 1
1499 ; CORTEX-A72-NOT: .eabi_attribute 22
1500 ; CORTEX-A72: .eabi_attribute 23, 3
1501 ; CORTEX-A72: .eabi_attribute 24, 1
1502 ; CORTEX-A72: .eabi_attribute 25, 1
1503 ; CORTEX-A72-NOT: .eabi_attribute 28
1504 ; CORTEX-A72: .eabi_attribute 38, 1
1506 ; CORTEX-A72-FAST-NOT: .eabi_attribute 19
1507 ;; The A72 has the ARMv8 FP unit, which always flushes preserving sign.
1508 ; CORTEX-A72-FAST: .eabi_attribute 20, 2
1509 ; CORTEX-A72-FAST-NOT: .eabi_attribute 21
1510 ; CORTEX-A72-FAST-NOT: .eabi_attribute 22
1511 ; CORTEX-A72-FAST: .eabi_attribute 23, 1
1513 ; CORTEX-A73: .cpu cortex-a73
1514 ; CORTEX-A73: .eabi_attribute 6, 14
1515 ; CORTEX-A73: .eabi_attribute 7, 65
1516 ; CORTEX-A73: .eabi_attribute 8, 1
1517 ; CORTEX-A73: .eabi_attribute 9, 2
1518 ; CORTEX-A73: .fpu crypto-neon-fp-armv8
1519 ; CORTEX-A73: .eabi_attribute 12, 3
1520 ; CORTEX-A73-NOT: .eabi_attribute 27
1521 ; CORTEX-A73: .eabi_attribute 36, 1
1522 ; CORTEX-A73: .eabi_attribute 42, 1
1523 ; CORTEX-A73-NOT: .eabi_attribute 44
1524 ; CORTEX-A73: .eabi_attribute 68, 3
1525 ; CORTEX-A73-NOT: .eabi_attribute 19
1526 ;; We default to IEEE 754 compliance
1527 ; CORTEX-A73: .eabi_attribute 20, 1
1528 ; CORTEX-A73: .eabi_attribute 21, 1
1529 ; CORTEX-A73-NOT: .eabi_attribute 22
1530 ; CORTEX-A73: .eabi_attribute 23, 3
1531 ; CORTEX-A73: .eabi_attribute 24, 1
1532 ; CORTEX-A73: .eabi_attribute 25, 1
1533 ; CORTEX-A73-NOT: .eabi_attribute 28
1534 ; CORTEX-A73: .eabi_attribute 38, 1
1535 ; CORTEX-A73: .eabi_attribute 14, 0
1537 ; EXYNOS-M1: .cpu exynos-m1
1538 ; EXYNOS-M1: .eabi_attribute 6, 14
1539 ; EXYNOS-M1: .eabi_attribute 7, 65
1540 ; EXYNOS-M1: .eabi_attribute 8, 1
1541 ; EXYNOS-M1: .eabi_attribute 9, 2
1542 ; EXYNOS-M1: .fpu crypto-neon-fp-armv8
1543 ; EXYNOS-M1: .eabi_attribute 12, 3
1544 ; EXYNOS-M1-NOT: .eabi_attribute 27
1545 ; EXYNOS-M1: .eabi_attribute 36, 1
1546 ; EXYNOS-M1: .eabi_attribute 42, 1
1547 ; EXYNOS-M1-NOT: .eabi_attribute 44
1548 ; EXYNOS-M1: .eabi_attribute 68, 3
1549 ; EXYNOS-M1-NOT: .eabi_attribute 19
1550 ;; We default to IEEE 754 compliance
1551 ; EXYNOS-M1: .eabi_attribute 20, 1
1552 ; EXYNOS-M1: .eabi_attribute 21, 1
1553 ; EXYNOS-M1-NOT: .eabi_attribute 22
1554 ; EXYNOS-M1: .eabi_attribute 23, 3
1555 ; EXYNOS-M1: .eabi_attribute 24, 1
1556 ; EXYNOS-M1: .eabi_attribute 25, 1
1557 ; EXYNOS-M1-NOT: .eabi_attribute 28
1558 ; EXYNOS-M1: .eabi_attribute 38, 1
1560 ; EXYNOS-M1-FAST-NOT: .eabi_attribute 19
1561 ;; The exynos-m1 has the ARMv8 FP unit, which always flushes preserving sign.
1562 ; EXYNOS-M1-FAST: .eabi_attribute 20, 2
1563 ; EXYNOS-M1-FAST-NOT: .eabi_attribute 21
1564 ; EXYNOS-M1-FAST-NOT: .eabi_attribute 22
1565 ; EXYNOS-M1-FAST: .eabi_attribute 23, 1
1567 ; EXYNOS-M2: .cpu exynos-m2
1568 ; EXYNOS-M2: .eabi_attribute 6, 14
1569 ; EXYNOS-M2: .eabi_attribute 7, 65
1570 ; EXYNOS-M2: .eabi_attribute 8, 1
1571 ; EXYNOS-M2: .eabi_attribute 9, 2
1572 ; EXYNOS-M2: .fpu crypto-neon-fp-armv8
1573 ; EXYNOS-M2: .eabi_attribute 12, 3
1574 ; EXYNOS-M2-NOT: .eabi_attribute 27
1575 ; EXYNOS-M2: .eabi_attribute 36, 1
1576 ; EXYNOS-M2: .eabi_attribute 42, 1
1577 ; EXYNOS-M2-NOT: .eabi_attribute 44
1578 ; EXYNOS-M2: .eabi_attribute 68, 3
1579 ; EXYNOS-M2-NOT: .eabi_attribute 19
1580 ;; We default to IEEE 754 compliance
1581 ; EXYNOS-M2: .eabi_attribute 20, 1
1582 ; EXYNOS-M2: .eabi_attribute 21, 1
1583 ; EXYNOS-M2-NOT: .eabi_attribute 22
1584 ; EXYNOS-M2: .eabi_attribute 23, 3
1585 ; EXYNOS-M2: .eabi_attribute 24, 1
1586 ; EXYNOS-M2: .eabi_attribute 25, 1
1587 ; EXYNOS-M2-NOT: .eabi_attribute 28
1588 ; EXYNOS-M2: .eabi_attribute 38, 1
1590 ; EXYNOS-M3: .cpu exynos-m3
1591 ; EXYNOS-M3: .eabi_attribute 6, 14
1592 ; EXYNOS-M3: .eabi_attribute 7, 65
1593 ; EXYNOS-M3: .eabi_attribute 8, 1
1594 ; EXYNOS-M3: .eabi_attribute 9, 2
1595 ; EXYNOS-M3: .fpu crypto-neon-fp-armv8
1596 ; EXYNOS-M3: .eabi_attribute 12, 3
1597 ; EXYNOS-M3-NOT: .eabi_attribute 27
1598 ; EXYNOS-M3: .eabi_attribute 36, 1
1599 ; EXYNOS-M3: .eabi_attribute 42, 1
1600 ; EXYNOS-M3-NOT: .eabi_attribute 44
1601 ; EXYNOS-M3: .eabi_attribute 68, 3
1602 ; EXYNOS-M3-NOT: .eabi_attribute 19
1603 ;; We default to IEEE 754 compliance
1604 ; EXYNOS-M3: .eabi_attribute 20, 1
1605 ; EXYNOS-M3: .eabi_attribute 21, 1
1606 ; EXYNOS-M3-NOT: .eabi_attribute 22
1607 ; EXYNOS-M3: .eabi_attribute 23, 3
1608 ; EXYNOS-M3: .eabi_attribute 24, 1
1609 ; EXYNOS-M3: .eabi_attribute 25, 1
1610 ; EXYNOS-M3-NOT: .eabi_attribute 28
1611 ; EXYNOS-M3: .eabi_attribute 38, 1
1613 ; GENERIC-FPU-VFPV3-FP16: .fpu vfpv3-fp16
1614 ; GENERIC-FPU-VFPV3-D16-FP16: .fpu vfpv3-d16-fp16
1615 ; GENERIC-FPU-VFPV3XD: .fpu vfpv3xd
1616 ; GENERIC-FPU-VFPV3XD-FP16: .fpu vfpv3xd-fp16
1617 ; GENERIC-FPU-NEON-FP16: .fpu neon-fp16
1619 ; GENERIC-ARMV8_1-A: .eabi_attribute 6, 14
1620 ; GENERIC-ARMV8_1-A: .eabi_attribute 7, 65
1621 ; GENERIC-ARMV8_1-A: .eabi_attribute 8, 1
1622 ; GENERIC-ARMV8_1-A: .eabi_attribute 9, 2
1623 ; GENERIC-ARMV8_1-A: .fpu crypto-neon-fp-armv8
1624 ; GENERIC-ARMV8_1-A: .eabi_attribute 12, 4
1625 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 27
1626 ; GENERIC-ARMV8_1-A: .eabi_attribute 36, 1
1627 ; GENERIC-ARMV8_1-A: .eabi_attribute 42, 1
1628 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 44
1629 ; GENERIC-ARMV8_1-A: .eabi_attribute 68, 3
1630 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 19
1631 ;; We default to IEEE 754 compliance
1632 ; GENERIC-ARMV8_1-A: .eabi_attribute 20, 1
1633 ; GENERIC-ARMV8_1-A: .eabi_attribute 21, 1
1634 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 22
1635 ; GENERIC-ARMV8_1-A: .eabi_attribute 23, 3
1636 ; GENERIC-ARMV8_1-A: .eabi_attribute 24, 1
1637 ; GENERIC-ARMV8_1-A: .eabi_attribute 25, 1
1638 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 28
1639 ; GENERIC-ARMV8_1-A: .eabi_attribute 38, 1
1641 ; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 19
1642 ;; GENERIC-ARMV8_1-A has the ARMv8 FP unit, which always flushes preserving sign.
1643 ; GENERIC-ARMV8_1-A-FAST: .eabi_attribute 20, 2
1644 ; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 21
1645 ; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 22
1646 ; GENERIC-ARMV8_1-A-FAST: .eabi_attribute 23, 1
1648 ; RELOC-PIC: .eabi_attribute 15, 1
1649 ; RELOC-PIC: .eabi_attribute 16, 1
1650 ; RELOC-PIC: .eabi_attribute 17, 2
1651 ; RELOC-OTHER: .eabi_attribute 17, 1
1652 ; RELOC-ROPI-NOT: .eabi_attribute 15,
1653 ; RELOC-ROPI: .eabi_attribute 16, 1
1654 ; RELOC-ROPI: .eabi_attribute 17, 1
1655 ; RELOC-RWPI: .eabi_attribute 15, 2
1656 ; RELOC-RWPI-NOT: .eabi_attribute 16,
1657 ; RELOC-RWPI: .eabi_attribute 17, 1
1658 ; RELOC-ROPI-RWPI: .eabi_attribute 15, 2
1659 ; RELOC-ROPI-RWPI: .eabi_attribute 16, 1
1660 ; RELOC-ROPI-RWPI: .eabi_attribute 17, 1
1662 ; PCS-R9-USE: .eabi_attribute 14, 0
1663 ; PCS-R9-RESERVE: .eabi_attribute 14, 3
1665 ; ARMv8R: .eabi_attribute 67, "2.09" @ Tag_conformance
1666 ; ARMv8R: .eabi_attribute 6, 15 @ Tag_CPU_arch
1667 ; ARMv8R: .eabi_attribute 7, 82 @ Tag_CPU_arch_profile
1668 ; ARMv8R: .eabi_attribute 8, 1 @ Tag_ARM_ISA_use
1669 ; ARMv8R: .eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
1670 ; ARMv8R-NOFPU-NOT: .fpu
1671 ; ARMv8R-NOFPU-NOT: .eabi_attribute 12
1672 ; ARMv8R-SP: .fpu fpv5-sp-d16
1673 ; ARMv8R-SP-NOT: .eabi_attribute 12
1674 ; ARMv8R-NEON: .fpu neon-fp-armv8
1675 ; ARMv8R-NEON: .eabi_attribute 12, 3 @ Tag_Advanced_SIMD_arch
1676 ; ARMv8R-NOFPU-NOT: .eabi_attribute 27
1677 ; ARMv8R-SP: .eabi_attribute 27, 1 @ Tag_ABI_HardFP_use
1678 ; ARMv8R-NEON-NOT: .eabi_attribute 27
1679 ; ARMv8R-NOFPU-NOT: .eabi_attribute 36
1680 ; ARMv8R-SP: .eabi_attribute 36, 1 @ Tag_FP_HP_extension
1681 ; ARMv8R-NEON: .eabi_attribute 36, 1 @ Tag_FP_HP_extension
1682 ; ARMv8R: .eabi_attribute 42, 1 @ Tag_MPextension_use
1683 ; ARMv8R: .eabi_attribute 68, 2 @ Tag_Virtualization_use
1684 ; ARMv8R: .eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
1685 ; ARMv8R: .eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use
1687 define i32 @f(i64 %z) {