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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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,-d32 | FileCheck %s --check-prefix=CORTEX-A5-NONEON
37 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2d16sp | FileCheck %s --check-prefix=CORTEX-A5-NOFPU
38 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2d16sp -enable-unsafe-fp-math -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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=-vfp2d16sp | FileCheck %s --check-prefix=CORTEX-A12-NOFPU
54 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2d16sp -enable-unsafe-fp-math -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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=-vfp2d16sp | FileCheck %s --check-prefix=CORTEX-A17-NOFPU
62 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2d16sp -enable-unsafe-fp-math -frame-pointer=all -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,-d32,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3-D16-FP16
71 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,-fp64,-d32 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3XD
72 ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,-fp64,-d32,+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 | FileCheck %s --check-prefix=CORTEX-M0
77 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -enable-unsafe-fp-math -frame-pointer=all -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 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
79 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus | FileCheck %s --check-prefix=CORTEX-M0PLUS
80 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus -enable-unsafe-fp-math -frame-pointer=all -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 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
82 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 | FileCheck %s --check-prefix=CORTEX-M1
83 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 -mattr=+strict-align -enable-unsafe-fp-math -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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 -frame-pointer=all -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=-vfp2d16sp | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SOFT
100 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2d16sp -enable-unsafe-fp-math -frame-pointer=all -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=-fp64 | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SINGLE
102 ; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-fp64 -enable-unsafe-fp-math -frame-pointer=all -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 -frame-pointer=all -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
110 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -mcpu=cortex-m35p | FileCheck %s --check-prefix=CORTEX-M35P
111 ; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -mcpu=cortex-m35p -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
113 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r4 | FileCheck %s --check-prefix=CORTEX-R4
114 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r4f | FileCheck %s --check-prefix=CORTEX-R4F
115 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=CORTEX-R5
116 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R5-FAST
117 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
118 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 | FileCheck %s --check-prefix=CORTEX-R7
119 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R7-FAST
120 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
121 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 | FileCheck %s --check-prefix=CORTEX-R8
122 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R8-FAST
123 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
124 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a32 | FileCheck %s --check-prefix=CORTEX-A32
125 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a32 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A32-FAST
126 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a32 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
127 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 | FileCheck %s --check-prefix=CORTEX-A35
128 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A35-FAST
129 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
130 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53
131 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A53-FAST
132 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
133 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=CORTEX-A57
134 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A57-FAST
135 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
136 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=CORTEX-A72
137 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A72-FAST
138 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
139 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a73 | FileCheck %s --check-prefix=CORTEX-A73
140 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A
141 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1 | FileCheck %s --check-prefix=EXYNOS-M1
142 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=EXYNOS-M1-FAST
143 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m1 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
144 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2 | FileCheck %s --check-prefix=EXYNOS-M2
145 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=EXYNOS-M1-FAST
146 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m2 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
147 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m3 | FileCheck %s --check-prefix=EXYNOS-M3
148 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m3 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=EXYNOS-M1-FAST
149 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m3 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
150 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m4 | FileCheck %s --check-prefix=EXYNOS-M4
151 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m4 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=EXYNOS-M1-FAST
152 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m4 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
153 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m5 | FileCheck %s --check-prefix=EXYNOS-M5
154 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m5 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=EXYNOS-M1-FAST
155 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=exynos-m5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
156 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A-FAST
157 ; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
158 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=CORTEX-A7-CHECK
159 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-CHECK-FAST
160 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2d16sp,-vfp3,-vfp4,-neon,-fp16 | FileCheck %s --check-prefix=CORTEX-A7-NOFPU
161 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2d16sp,-vfp3,-vfp4,-neon,-fp16 -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-NOFPU-FAST
162 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
163 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
164 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon -enable-unsafe-fp-math -frame-pointer=all -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-FPUV4-FAST
165 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,,-d32,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4
166 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=pic | FileCheck %s --check-prefix=RELOC-PIC
167 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=static | FileCheck %s --check-prefix=RELOC-OTHER
168 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=dynamic-no-pic | FileCheck %s --check-prefix=RELOC-OTHER
169 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=RELOC-OTHER
170 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=PCS-R9-USE
171 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+reserve-r9,+strict-align | FileCheck %s --check-prefix=PCS-R9-RESERVE
172 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=ropi | FileCheck %s --check-prefix=RELOC-ROPI
173 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=rwpi | FileCheck %s --check-prefix=RELOC-RWPI
174 ; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -mattr=+strict-align -relocation-model=ropi-rwpi | FileCheck %s --check-prefix=RELOC-ROPI-RWPI
177 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN
178 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
179 ; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN
181 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a32 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
182 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a32 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
183 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a35 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
184 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a35 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
185 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
186 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
187 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
188 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
189 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m1 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
190 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m1 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
191 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m2 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
192 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m2 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
193 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
194 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m3 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
195 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m4 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
196 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m4 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
197 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m5 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
198 ; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=exynos-m5 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
201 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
202 ; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
204 ; RUN: llc < %s -mtriple=armv7ve-none-linux-gnueabi | FileCheck %s --check-prefix=V7VE
206 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
207 ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
209 ; RUN: llc < %s -mtriple=thumbv7em-none-linux-gnueabi -mcpu=cortex-m4 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
210 ; RUN: llc < %s -mtriple=thumbv7em-none-linux-gnueabi -mcpu=cortex-m4 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
212 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
213 ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
215 ; RUN: llc < %s -mtriple=armv6-none-netbsd-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
216 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
217 ; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
219 ; RUN: llc < %s -mtriple=armv6k-none-netbsd-gnueabi -mcpu=arm1176j-s 2> %t | FileCheck %s --check-prefix=NO-STRICT-ALIGN
220 ; RUN: FileCheck %s < %t --allow-empty --check-prefix=CPU-SUPPORTED
221 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
222 ; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
224 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
225 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mattr=+strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
226 ; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
227 ; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
229 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e | FileCheck %s --check-prefix=NO-STRICT-ALIGN
230 ; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
233 ; RUN: llc < %s -mtriple=arm-none-none-eabi -mcpu=cortex-r52 -mattr=-vfp2d16sp,-fp16 | FileCheck %s --check-prefix=ARMv8R --check-prefix=ARMv8R-NOFPU
234 ; RUN: llc < %s -mtriple=arm-none-none-eabi -mcpu=cortex-r52 -mattr=-neon,-fp64,-d32 | FileCheck %s --check-prefix=ARMv8R --check-prefix=ARMv8R-SP
235 ; RUN: llc < %s -mtriple=arm-none-none-eabi -mcpu=cortex-r52 | FileCheck %s --check-prefix=ARMv8R --check-prefix=ARMv8R-NEON
238 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m23 | FileCheck %s --check-prefix=STRICT-ALIGN
239 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m33 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
240 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m33 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
241 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m35p | FileCheck %s --check-prefix=NO-STRICT-ALIGN
242 ; RUN: llc < %s -mtriple=thumbv8-none-none-eabi -mcpu=cortex-m35p -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
243 ; RUN: llc < %s -mtriple=thumbv8.1m.main-none-none-eabi | FileCheck %s --check-prefix=ARMv81M-MAIN
244 ; RUN: llc < %s -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve | FileCheck %s --check-prefix=ARMv81M-MAIN-MVEINT
245 ; RUN: llc < %s -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp | FileCheck %s --check-prefix=ARMv81M-MAIN-MVEFP
247 ; CPU-SUPPORTED-NOT: is not a recognized processor for this target
249 ; XSCALE: .eabi_attribute 6, 5
250 ; XSCALE: .eabi_attribute 8, 1
251 ; XSCALE: .eabi_attribute 9, 1
253 ; DYN-ROUNDING: .eabi_attribute 19, 1
255 ; V6: .eabi_attribute 6, 6
256 ; V6: .eabi_attribute 8, 1
257 ;; We assume round-to-nearest by default (matches GCC)
258 ; V6-NOT: .eabi_attribute 27
259 ; V6-NOT: .eabi_attribute 36
260 ; V6-NOT: .eabi_attribute 42
261 ; V6-NOT: .eabi_attribute 44
262 ; V6-NOT: .eabi_attribute 68
263 ; V6-NOT: .eabi_attribute 19
264 ;; The default choice made by llc is for a V6 CPU without an FPU.
265 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
266 ;; software floating-point support. The choice is not important for targets without
268 ; V6: .eabi_attribute 20, 1
269 ; V6: .eabi_attribute 21, 1
270 ; V6-NOT: .eabi_attribute 22
271 ; V6: .eabi_attribute 23, 3
272 ; V6: .eabi_attribute 24, 1
273 ; V6: .eabi_attribute 25, 1
274 ; V6-NOT: .eabi_attribute 28
275 ; V6: .eabi_attribute 38, 1
277 ; V6-FAST-NOT: .eabi_attribute 19
278 ;; Despite the V6 CPU having no FPU by default, we chose to flush to
279 ;; positive zero here. There's no hardware support doing this, but the
280 ;; fast maths software library might.
281 ; V6-FAST-NOT: .eabi_attribute 20
282 ; V6-FAST-NOT: .eabi_attribute 21
283 ; V6-FAST-NOT: .eabi_attribute 22
284 ; V6-FAST: .eabi_attribute 23, 1
286 ;; We emit 6, 12 for both v6-M and v6S-M, technically this is incorrect for
287 ;; V6-M, however we don't model the OS extension so this is fine.
288 ; V6M: .eabi_attribute 6, 12
289 ; V6M: .eabi_attribute 7, 77
290 ; V6M: .eabi_attribute 8, 0
291 ; V6M: .eabi_attribute 9, 1
292 ; V6M-NOT: .eabi_attribute 27
293 ; V6M-NOT: .eabi_attribute 36
294 ; V6M-NOT: .eabi_attribute 42
295 ; V6M-NOT: .eabi_attribute 44
296 ; V6M-NOT: .eabi_attribute 68
297 ; V6M-NOT: .eabi_attribute 19
298 ;; The default choice made by llc is for a V6M CPU without an FPU.
299 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
300 ;; software floating-point support. The choice is not important for targets without
302 ; V6M: .eabi_attribute 20, 1
303 ; V6M: .eabi_attribute 21, 1
304 ; V6M-NOT: .eabi_attribute 22
305 ; V6M: .eabi_attribute 23, 3
306 ; V6M: .eabi_attribute 24, 1
307 ; V6M: .eabi_attribute 25, 1
308 ; V6M-NOT: .eabi_attribute 28
309 ; V6M: .eabi_attribute 38, 1
311 ; V6M-FAST-NOT: .eabi_attribute 19
312 ;; Despite the V6M CPU having no FPU by default, we chose to flush to
313 ;; positive zero here. There's no hardware support doing this, but the
314 ;; fast maths software library might.
315 ; V6M-FAST-NOT: .eabi_attribute 20
316 ; V6M-FAST-NOT: .eabi_attribute 21
317 ; V6M-FAST-NOT: .eabi_attribute 22
318 ; V6M-FAST: .eabi_attribute 23, 1
320 ; ARM1156T2F-S: .cpu arm1156t2f-s
321 ; ARM1156T2F-S: .eabi_attribute 6, 8
322 ; ARM1156T2F-S: .eabi_attribute 8, 1
323 ; ARM1156T2F-S: .eabi_attribute 9, 2
324 ; ARM1156T2F-S: .fpu vfpv2
325 ; ARM1156T2F-S-NOT: .eabi_attribute 27
326 ; ARM1156T2F-S-NOT: .eabi_attribute 36
327 ; ARM1156T2F-S-NOT: .eabi_attribute 42
328 ; ARM1156T2F-S-NOT: .eabi_attribute 44
329 ; ARM1156T2F-S-NOT: .eabi_attribute 68
330 ; ARM1156T2F-S-NOT: .eabi_attribute 19
331 ;; We default to IEEE 754 compliance
332 ; ARM1156T2F-S: .eabi_attribute 20, 1
333 ; ARM1156T2F-S: .eabi_attribute 21, 1
334 ; ARM1156T2F-S-NOT: .eabi_attribute 22
335 ; ARM1156T2F-S: .eabi_attribute 23, 3
336 ; ARM1156T2F-S: .eabi_attribute 24, 1
337 ; ARM1156T2F-S: .eabi_attribute 25, 1
338 ; ARM1156T2F-S-NOT: .eabi_attribute 28
339 ; ARM1156T2F-S: .eabi_attribute 38, 1
341 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 19
342 ;; V6 cores default to flush to positive zero (value 0). Note that value 2 is also equally
343 ;; valid for this core, it's an implementation defined question as to which of 0 and 2 you
344 ;; select. LLVM historically picks 0.
345 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 20
346 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 21
347 ; ARM1156T2F-S-FAST-NOT: .eabi_attribute 22
348 ; ARM1156T2F-S-FAST: .eabi_attribute 23, 1
350 ; V7M: .eabi_attribute 6, 10
351 ; V7M: .eabi_attribute 7, 77
352 ; V7M: .eabi_attribute 8, 0
353 ; V7M: .eabi_attribute 9, 2
354 ; V7M-NOT: .eabi_attribute 27
355 ; V7M-NOT: .eabi_attribute 36
356 ; V7M-NOT: .eabi_attribute 42
357 ; V7M-NOT: .eabi_attribute 44
358 ; V7M-NOT: .eabi_attribute 68
359 ; V7M-NOT: .eabi_attribute 19
360 ;; The default choice made by llc is for a V7M CPU without an FPU.
361 ;; This is not an interesting detail, but for such CPUs, the default intention is to use
362 ;; software floating-point support. The choice is not important for targets without
364 ; V7M: .eabi_attribute 20, 1
365 ; V7M: .eabi_attribute 21, 1
366 ; V7M-NOT: .eabi_attribute 22
367 ; V7M: .eabi_attribute 23, 3
368 ; V7M: .eabi_attribute 24, 1
369 ; V7M: .eabi_attribute 25, 1
370 ; V7M-NOT: .eabi_attribute 28
371 ; V7M: .eabi_attribute 38, 1
373 ; V7M-FAST-NOT: .eabi_attribute 19
374 ;; Despite the V7M CPU having no FPU by default, we chose to flush
375 ;; preserving sign. This matches what the hardware would do in the
376 ;; architecture revision were to exist on the current target.
377 ; V7M-FAST: .eabi_attribute 20, 2
378 ; V7M-FAST-NOT: .eabi_attribute 21
379 ; V7M-FAST-NOT: .eabi_attribute 22
380 ; V7M-FAST: .eabi_attribute 23, 1
382 ; V7: .syntax unified
383 ; V7: .eabi_attribute 6, 10
384 ; V7-NOT: .eabi_attribute 27
385 ; V7-NOT: .eabi_attribute 36
386 ; V7-NOT: .eabi_attribute 42
387 ; V7-NOT: .eabi_attribute 44
388 ; V7-NOT: .eabi_attribute 68
389 ; V7-NOT: .eabi_attribute 19
390 ;; In safe-maths mode we default to an IEEE 754 compliant choice.
391 ; V7: .eabi_attribute 20, 1
392 ; V7: .eabi_attribute 21, 1
393 ; V7-NOT: .eabi_attribute 22
394 ; V7: .eabi_attribute 23, 3
395 ; V7: .eabi_attribute 24, 1
396 ; V7: .eabi_attribute 25, 1
397 ; V7-NOT: .eabi_attribute 28
398 ; V7: .eabi_attribute 38, 1
400 ; V7-FAST-NOT: .eabi_attribute 19
401 ;; The default CPU does have an FPU and it must be VFPv3 or better, so it flushes
402 ;; denormals to zero preserving the sign.
403 ; V7-FAST: .eabi_attribute 20, 2
404 ; V7-FAST-NOT: .eabi_attribute 21
405 ; V7-FAST-NOT: .eabi_attribute 22
406 ; V7-FAST: .eabi_attribute 23, 1
408 ; V7VE: .syntax unified
409 ; V7VE: .eabi_attribute 6, 10 @ Tag_CPU_arch
410 ; V7VE: .eabi_attribute 7, 65 @ Tag_CPU_arch_profile
411 ; V7VE: .eabi_attribute 8, 1 @ Tag_ARM_ISA_use
412 ; V7VE: .eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
413 ; V7VE: .eabi_attribute 42, 1 @ Tag_MPextension_use
414 ; V7VE: .eabi_attribute 44, 2 @ Tag_DIV_use
415 ; V7VE: .eabi_attribute 68, 3 @ Tag_Virtualization_use
416 ; V7VE: .eabi_attribute 17, 1 @ Tag_ABI_PCS_GOT_use
417 ; V7VE: .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
418 ; V7VE: .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
419 ; V7VE: .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
420 ; V7VE: .eabi_attribute 24, 1 @ Tag_ABI_align_needed
421 ; V7VE: .eabi_attribute 25, 1 @ Tag_ABI_align_preserved
422 ; V7VE: .eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
424 ; V8: .syntax unified
425 ; V8: .eabi_attribute 67, "2.09"
426 ; V8: .eabi_attribute 6, 14
427 ; V8-NOT: .eabi_attribute 44
428 ; V8-NOT: .eabi_attribute 19
429 ; V8: .eabi_attribute 20, 1
430 ; V8: .eabi_attribute 21, 1
431 ; V8-NOT: .eabi_attribute 22
432 ; V8: .eabi_attribute 23, 3
434 ; V8-FAST-NOT: .eabi_attribute 19
435 ;; The default does have an FPU, and for V8-A, it flushes preserving sign.
436 ; V8-FAST: .eabi_attribute 20, 2
437 ; V8-FAST-NOT: .eabi_attribute 21
438 ; V8-FAST-NOT: .eabi_attribute 22
439 ; V8-FAST: .eabi_attribute 23, 1
441 ; Vt8: .syntax unified
442 ; Vt8: .eabi_attribute 6, 14
443 ; Vt8-NOT: .eabi_attribute 19
444 ; Vt8: .eabi_attribute 20, 1
445 ; Vt8: .eabi_attribute 21, 1
446 ; Vt8-NOT: .eabi_attribute 22
447 ; Vt8: .eabi_attribute 23, 3
449 ; V8-FPARMv8: .syntax unified
450 ; V8-FPARMv8: .eabi_attribute 6, 14
451 ; V8-FPARMv8: .fpu fp-armv8
453 ; V8-NEON: .syntax unified
454 ; V8-NEON: .eabi_attribute 6, 14
456 ; V8-NEON: .eabi_attribute 12, 3
458 ; V8-FPARMv8-NEON: .syntax unified
459 ; V8-FPARMv8-NEON: .eabi_attribute 6, 14
460 ; V8-FPARMv8-NEON: .fpu neon-fp-armv8
461 ; V8-FPARMv8-NEON: .eabi_attribute 12, 3
463 ; V8-FPARMv8-NEON-CRYPTO: .syntax unified
464 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 6, 14
465 ; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8
466 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3
468 ; V8MBASELINE: .syntax unified
469 ; '6' is Tag_CPU_arch, '16' is ARM v8-M Baseline
470 ; V8MBASELINE: .eabi_attribute 6, 16
471 ; '7' is Tag_CPU_arch_profile, '77' is 'M'
472 ; V8MBASELINE: .eabi_attribute 7, 77
473 ; '8' is Tag_ARM_ISA_use
474 ; V8MBASELINE: .eabi_attribute 8, 0
475 ; '9' is Tag_Thumb_ISA_use
476 ; V8MBASELINE: .eabi_attribute 9, 3
478 ; V8MMAINLINE: .syntax unified
479 ; '6' is Tag_CPU_arch, '17' is ARM v8-M Mainline
480 ; V8MMAINLINE: .eabi_attribute 6, 17
481 ; V8MMAINLINE: .eabi_attribute 7, 77
482 ; V8MMAINLINE: .eabi_attribute 8, 0
483 ; V8MMAINLINE: .eabi_attribute 9, 3
484 ; V8MMAINLINE_DSP-NOT: .eabi_attribute 46
486 ; V8MMAINLINE_DSP: .syntax unified
487 ; V8MBASELINE_DSP: .eabi_attribute 6, 17
488 ; V8MBASELINE_DSP: .eabi_attribute 7, 77
489 ; V8MMAINLINE_DSP: .eabi_attribute 8, 0
490 ; V8MMAINLINE_DSP: .eabi_attribute 9, 3
491 ; V8MMAINLINE_DSP: .eabi_attribute 46, 1
493 ; Tag_CPU_unaligned_access
494 ; NO-STRICT-ALIGN: .eabi_attribute 34, 1
495 ; STRICT-ALIGN: .eabi_attribute 34, 0
497 ; Tag_CPU_arch 'ARMv7'
498 ; CORTEX-A7-CHECK: .eabi_attribute 6, 10
499 ; CORTEX-A7-NOFPU: .eabi_attribute 6, 10
501 ; CORTEX-A7-FPUV4: .eabi_attribute 6, 10
503 ; Tag_CPU_arch_profile 'A'
504 ; CORTEX-A7-CHECK: .eabi_attribute 7, 65
505 ; CORTEX-A7-NOFPU: .eabi_attribute 7, 65
506 ; CORTEX-A7-FPUV4: .eabi_attribute 7, 65
509 ; CORTEX-A7-CHECK: .eabi_attribute 8, 1
510 ; CORTEX-A7-NOFPU: .eabi_attribute 8, 1
511 ; CORTEX-A7-FPUV4: .eabi_attribute 8, 1
514 ; CORTEX-A7-CHECK: .eabi_attribute 9, 2
515 ; CORTEX-A7-NOFPU: .eabi_attribute 9, 2
516 ; CORTEX-A7-FPUV4: .eabi_attribute 9, 2
518 ; CORTEX-A7-CHECK: .fpu neon-vfpv4
519 ; CORTEX-A7-NOFPU-NOT: .fpu
520 ; CORTEX-A7-FPUV4: .fpu vfpv4
522 ; CORTEX-A7-CHECK-NOT: .eabi_attribute 19
524 ; Tag_FP_HP_extension
525 ; CORTEX-A7-CHECK: .eabi_attribute 36, 1
526 ; CORTEX-A7-NOFPU-NOT: .eabi_attribute 36
527 ; CORTEX-A7-FPUV4: .eabi_attribute 36, 1
529 ; Tag_MPextension_use
530 ; CORTEX-A7-CHECK: .eabi_attribute 42, 1
531 ; CORTEX-A7-NOFPU: .eabi_attribute 42, 1
532 ; CORTEX-A7-FPUV4: .eabi_attribute 42, 1
535 ; CORTEX-A7-CHECK: .eabi_attribute 44, 2
536 ; CORTEX-A7-NOFPU: .eabi_attribute 44, 2
537 ; CORTEX-A7-FPUV4: .eabi_attribute 44, 2
540 ; CORTEX-A7-CHECK-NOT: .eabi_attribute 46
542 ; Tag_Virtualization_use
543 ; CORTEX-A7-CHECK: .eabi_attribute 68, 3
544 ; CORTEX-A7-NOFPU: .eabi_attribute 68, 3
545 ; CORTEX-A7-FPUV4: .eabi_attribute 68, 3
547 ; Tag_ABI_FP_denormal
548 ;; We default to IEEE 754 compliance
549 ; CORTEX-A7-CHECK: .eabi_attribute 20, 1
550 ;; The A7 has VFPv3 support by default, so flush preserving sign.
551 ; CORTEX-A7-CHECK-FAST: .eabi_attribute 20, 2
552 ; CORTEX-A7-NOFPU: .eabi_attribute 20, 1
553 ;; Despite there being no FPU, we chose to flush to zero preserving
554 ;; sign. This matches what the hardware would do for this architecture
556 ; CORTEX-A7-NOFPU-FAST: .eabi_attribute 20, 2
557 ; CORTEX-A7-FPUV4: .eabi_attribute 20, 1
558 ;; The VFPv4 FPU flushes preserving sign.
559 ; CORTEX-A7-FPUV4-FAST: .eabi_attribute 20, 2
561 ; Tag_ABI_FP_exceptions
562 ; CORTEX-A7-CHECK: .eabi_attribute 21, 1
563 ; CORTEX-A7-NOFPU: .eabi_attribute 21, 1
564 ; CORTEX-A7-FPUV4: .eabi_attribute 21, 1
566 ; Tag_ABI_FP_user_exceptions
567 ; CORTEX-A7-CHECK-NOT: .eabi_attribute 22
568 ; CORTEX-A7-NOFPU-NOT: .eabi_attribute 22
569 ; CORTEX-A7-FPUV4-NOT: .eabi_attribute 22
571 ; Tag_ABI_FP_number_model
572 ; CORTEX-A7-CHECK: .eabi_attribute 23, 3
573 ; CORTEX-A7-NOFPU: .eabi_attribute 23, 3
574 ; CORTEX-A7-FPUV4: .eabi_attribute 23, 3
576 ; Tag_ABI_align_needed
577 ; CORTEX-A7-CHECK: .eabi_attribute 24, 1
578 ; CORTEX-A7-NOFPU: .eabi_attribute 24, 1
579 ; CORTEX-A7-FPUV4: .eabi_attribute 24, 1
581 ; Tag_ABI_align_preserved
582 ; CORTEX-A7-CHECK: .eabi_attribute 25, 1
583 ; CORTEX-A7-NOFPU: .eabi_attribute 25, 1
584 ; CORTEX-A7-FPUV4: .eabi_attribute 25, 1
586 ; Tag_FP_16bit_format
587 ; CORTEX-A7-CHECK: .eabi_attribute 38, 1
588 ; CORTEX-A7-NOFPU: .eabi_attribute 38, 1
589 ; CORTEX-A7-FPUV4: .eabi_attribute 38, 1
591 ; CORTEX-A5-DEFAULT: .cpu cortex-a5
592 ; CORTEX-A5-DEFAULT: .eabi_attribute 6, 10
593 ; CORTEX-A5-DEFAULT: .eabi_attribute 7, 65
594 ; CORTEX-A5-DEFAULT: .eabi_attribute 8, 1
595 ; CORTEX-A5-DEFAULT: .eabi_attribute 9, 2
596 ; CORTEX-A5-DEFAULT: .fpu neon-vfpv4
597 ; CORTEX-A5-DEFAULT: .eabi_attribute 42, 1
598 ; CORTEX-A5-DEFAULT-NOT: .eabi_attribute 44
599 ; CORTEX-A5-DEFAULT: .eabi_attribute 68, 1
600 ; CORTEX-A5-NOT: .eabi_attribute 19
601 ;; We default to IEEE 754 compliance
602 ; CORTEX-A5-DEFAULT: .eabi_attribute 20, 1
603 ; CORTEX-A5-DEFAULT: .eabi_attribute 21, 1
604 ; CORTEX-A5-DEFAULT-NOT: .eabi_attribute 22
605 ; CORTEX-A5-DEFAULT: .eabi_attribute 23, 3
606 ; CORTEX-A5-DEFAULT: .eabi_attribute 24, 1
607 ; CORTEX-A5-DEFAULT: .eabi_attribute 25, 1
609 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 19
610 ;; The A5 defaults to a VFPv4 FPU, so it flushed preserving the sign when -ffast-math
612 ; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 20, 2
613 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 21
614 ; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 22
615 ; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 23, 1
617 ; CORTEX-A5-NONEON: .cpu cortex-a5
618 ; CORTEX-A5-NONEON: .eabi_attribute 6, 10
619 ; CORTEX-A5-NONEON: .eabi_attribute 7, 65
620 ; CORTEX-A5-NONEON: .eabi_attribute 8, 1
621 ; CORTEX-A5-NONEON: .eabi_attribute 9, 2
622 ; CORTEX-A5-NONEON: .fpu vfpv4-d16
623 ; CORTEX-A5-NONEON: .eabi_attribute 42, 1
624 ; CORTEX-A5-NONEON: .eabi_attribute 68, 1
625 ;; We default to IEEE 754 compliance
626 ; CORTEX-A5-NONEON: .eabi_attribute 20, 1
627 ; CORTEX-A5-NONEON: .eabi_attribute 21, 1
628 ; CORTEX-A5-NONEON-NOT: .eabi_attribute 22
629 ; CORTEX-A5-NONEON: .eabi_attribute 23, 3
630 ; CORTEX-A5-NONEON: .eabi_attribute 24, 1
631 ; CORTEX-A5-NONEON: .eabi_attribute 25, 1
633 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 19
634 ;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math
636 ; CORTEX-A5-NONEON-FAST: .eabi_attribute 20, 2
637 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 21
638 ; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 22
639 ; CORTEX-A5-NONEON-FAST: .eabi_attribute 23, 1
641 ; CORTEX-A5-NOFPU: .cpu cortex-a5
642 ; CORTEX-A5-NOFPU: .eabi_attribute 6, 10
643 ; CORTEX-A5-NOFPU: .eabi_attribute 7, 65
644 ; CORTEX-A5-NOFPU: .eabi_attribute 8, 1
645 ; CORTEX-A5-NOFPU: .eabi_attribute 9, 2
646 ; CORTEX-A5-NOFPU-NOT: .fpu
647 ; CORTEX-A5-NOFPU: .eabi_attribute 42, 1
648 ; CORTEX-A5-NOFPU: .eabi_attribute 68, 1
649 ; CORTEX-A5-NOFPU-NOT: .eabi_attribute 19
650 ;; We default to IEEE 754 compliance
651 ; CORTEX-A5-NOFPU: .eabi_attribute 20, 1
652 ; CORTEX-A5-NOFPU: .eabi_attribute 21, 1
653 ; CORTEX-A5-NOFPU-NOT: .eabi_attribute 22
654 ; CORTEX-A5-NOFPU: .eabi_attribute 23, 3
655 ; CORTEX-A5-NOFPU: .eabi_attribute 24, 1
656 ; CORTEX-A5-NOFPU: .eabi_attribute 25, 1
658 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 19
659 ;; Despite there being no FPU, we chose to flush to zero preserving
660 ;; sign. This matches what the hardware would do for this architecture
662 ; CORTEX-A5-NOFPU-FAST: .eabi_attribute 20, 2
663 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 21
664 ; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 22
665 ; CORTEX-A5-NOFPU-FAST: .eabi_attribute 23, 1
667 ; CORTEX-A8-SOFT: .cpu cortex-a8
668 ; CORTEX-A8-SOFT: .eabi_attribute 6, 10
669 ; CORTEX-A8-SOFT: .eabi_attribute 7, 65
670 ; CORTEX-A8-SOFT: .eabi_attribute 8, 1
671 ; CORTEX-A8-SOFT: .eabi_attribute 9, 2
672 ; CORTEX-A8-SOFT: .fpu neon
673 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 27
674 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 36, 1
675 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 42, 1
676 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 44
677 ; CORTEX-A8-SOFT: .eabi_attribute 68, 1
678 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 19
679 ;; We default to IEEE 754 compliance
680 ; CORTEX-A8-SOFT: .eabi_attribute 20, 1
681 ; CORTEX-A8-SOFT: .eabi_attribute 21, 1
682 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 22
683 ; CORTEX-A8-SOFT: .eabi_attribute 23, 3
684 ; CORTEX-A8-SOFT: .eabi_attribute 24, 1
685 ; CORTEX-A8-SOFT: .eabi_attribute 25, 1
686 ; CORTEX-A8-SOFT-NOT: .eabi_attribute 28
687 ; CORTEX-A8-SOFT: .eabi_attribute 38, 1
689 ; CORTEX-A9-SOFT: .cpu cortex-a9
690 ; CORTEX-A9-SOFT: .eabi_attribute 6, 10
691 ; CORTEX-A9-SOFT: .eabi_attribute 7, 65
692 ; CORTEX-A9-SOFT: .eabi_attribute 8, 1
693 ; CORTEX-A9-SOFT: .eabi_attribute 9, 2
694 ; CORTEX-A9-SOFT: .fpu neon
695 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 27
696 ; CORTEX-A9-SOFT: .eabi_attribute 36, 1
697 ; CORTEX-A9-SOFT: .eabi_attribute 42, 1
698 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 44
699 ; CORTEX-A9-SOFT: .eabi_attribute 68, 1
700 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 19
701 ;; We default to IEEE 754 compliance
702 ; CORTEX-A9-SOFT: .eabi_attribute 20, 1
703 ; CORTEX-A9-SOFT: .eabi_attribute 21, 1
704 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 22
705 ; CORTEX-A9-SOFT: .eabi_attribute 23, 3
706 ; CORTEX-A9-SOFT: .eabi_attribute 24, 1
707 ; CORTEX-A9-SOFT: .eabi_attribute 25, 1
708 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 28
709 ; CORTEX-A9-SOFT: .eabi_attribute 38, 1
711 ; CORTEX-A8-SOFT-FAST-NOT: .eabi_attribute 19
712 ; CORTEX-A9-SOFT-FAST-NOT: .eabi_attribute 19
713 ;; The A9 defaults to a VFPv3 FPU, so it flushes preserving the sign when
714 ;; -ffast-math is specified.
715 ; CORTEX-A8-SOFT-FAST: .eabi_attribute 20, 2
716 ; CORTEX-A9-SOFT-FAST: .eabi_attribute 20, 2
717 ; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 21
718 ; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 22
719 ; CORTEX-A5-SOFT-FAST: .eabi_attribute 23, 1
721 ; CORTEX-A8-HARD: .cpu cortex-a8
722 ; CORTEX-A8-HARD: .eabi_attribute 6, 10
723 ; CORTEX-A8-HARD: .eabi_attribute 7, 65
724 ; CORTEX-A8-HARD: .eabi_attribute 8, 1
725 ; CORTEX-A8-HARD: .eabi_attribute 9, 2
726 ; CORTEX-A8-HARD: .fpu neon
727 ; CORTEX-A8-HARD-NOT: .eabi_attribute 27
728 ; CORTEX-A8-HARD-NOT: .eabi_attribute 36, 1
729 ; CORTEX-A8-HARD-NOT: .eabi_attribute 42, 1
730 ; CORTEX-A8-HARD: .eabi_attribute 68, 1
731 ; CORTEX-A8-HARD-NOT: .eabi_attribute 19
732 ;; We default to IEEE 754 compliance
733 ; CORTEX-A8-HARD: .eabi_attribute 20, 1
734 ; CORTEX-A8-HARD: .eabi_attribute 21, 1
735 ; CORTEX-A8-HARD-NOT: .eabi_attribute 22
736 ; CORTEX-A8-HARD: .eabi_attribute 23, 3
737 ; CORTEX-A8-HARD: .eabi_attribute 24, 1
738 ; CORTEX-A8-HARD: .eabi_attribute 25, 1
739 ; CORTEX-A8-HARD: .eabi_attribute 28, 1
740 ; CORTEX-A8-HARD: .eabi_attribute 38, 1
744 ; CORTEX-A9-HARD: .cpu cortex-a9
745 ; CORTEX-A9-HARD: .eabi_attribute 6, 10
746 ; CORTEX-A9-HARD: .eabi_attribute 7, 65
747 ; CORTEX-A9-HARD: .eabi_attribute 8, 1
748 ; CORTEX-A9-HARD: .eabi_attribute 9, 2
749 ; CORTEX-A9-HARD: .fpu neon
750 ; CORTEX-A9-HARD-NOT: .eabi_attribute 27
751 ; CORTEX-A9-HARD: .eabi_attribute 36, 1
752 ; CORTEX-A9-HARD: .eabi_attribute 42, 1
753 ; CORTEX-A9-HARD: .eabi_attribute 68, 1
754 ; CORTEX-A9-HARD-NOT: .eabi_attribute 19
755 ;; We default to IEEE 754 compliance
756 ; CORTEX-A9-HARD: .eabi_attribute 20, 1
757 ; CORTEX-A9-HARD: .eabi_attribute 21, 1
758 ; CORTEX-A9-HARD-NOT: .eabi_attribute 22
759 ; CORTEX-A9-HARD: .eabi_attribute 23, 3
760 ; CORTEX-A9-HARD: .eabi_attribute 24, 1
761 ; CORTEX-A9-HARD: .eabi_attribute 25, 1
762 ; CORTEX-A9-HARD: .eabi_attribute 28, 1
763 ; CORTEX-A9-HARD: .eabi_attribute 38, 1
765 ; CORTEX-A8-HARD-FAST-NOT: .eabi_attribute 19
766 ;; The A8 defaults to a VFPv3 FPU, so it flushes preserving the sign when
767 ;; -ffast-math is specified.
768 ; CORTEX-A8-HARD-FAST: .eabi_attribute 20, 2
769 ; CORTEX-A8-HARD-FAST-NOT: .eabi_attribute 21
770 ; CORTEX-A8-HARD-FAST-NOT: .eabi_attribute 22
771 ; CORTEX-A8-HARD-FAST: .eabi_attribute 23, 1
773 ; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 19
774 ;; The A9 defaults to a VFPv3 FPU, so it flushes preserving the sign when
775 ;; -ffast-math is specified.
776 ; CORTEX-A9-HARD-FAST: .eabi_attribute 20, 2
777 ; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 21
778 ; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 22
779 ; CORTEX-A9-HARD-FAST: .eabi_attribute 23, 1
781 ; CORTEX-A12-DEFAULT: .cpu cortex-a12
782 ; CORTEX-A12-DEFAULT: .eabi_attribute 6, 10
783 ; CORTEX-A12-DEFAULT: .eabi_attribute 7, 65
784 ; CORTEX-A12-DEFAULT: .eabi_attribute 8, 1
785 ; CORTEX-A12-DEFAULT: .eabi_attribute 9, 2
786 ; CORTEX-A12-DEFAULT: .fpu neon-vfpv4
787 ; CORTEX-A12-DEFAULT: .eabi_attribute 42, 1
788 ; CORTEX-A12-DEFAULT: .eabi_attribute 44, 2
789 ; CORTEX-A12-DEFAULT: .eabi_attribute 68, 3
790 ; CORTEX-A12-DEFAULT-NOT: .eabi_attribute 19
791 ;; We default to IEEE 754 compliance
792 ; CORTEX-A12-DEFAULT: .eabi_attribute 20, 1
793 ; CORTEX-A12-DEFAULT: .eabi_attribute 21, 1
794 ; CORTEX-A12-DEFAULT-NOT: .eabi_attribute 22
795 ; CORTEX-A12-DEFAULT: .eabi_attribute 23, 3
796 ; CORTEX-A12-DEFAULT: .eabi_attribute 24, 1
797 ; CORTEX-A12-DEFAULT: .eabi_attribute 25, 1
799 ; CORTEX-A12-DEFAULT-FAST-NOT: .eabi_attribute 19
800 ;; The A12 defaults to a VFPv3 FPU, so it flushes preserving the sign when
801 ;; -ffast-math is specified.
802 ; CORTEX-A12-DEFAULT-FAST: .eabi_attribute 20, 2
803 ; CORTEX-A12-HARD-FAST-NOT: .eabi_attribute 21
804 ; CORTEX-A12-HARD-FAST-NOT: .eabi_attribute 22
805 ; CORTEX-A12-HARD-FAST: .eabi_attribute 23, 1
807 ; CORTEX-A12-NOFPU: .cpu cortex-a12
808 ; CORTEX-A12-NOFPU: .eabi_attribute 6, 10
809 ; CORTEX-A12-NOFPU: .eabi_attribute 7, 65
810 ; CORTEX-A12-NOFPU: .eabi_attribute 8, 1
811 ; CORTEX-A12-NOFPU: .eabi_attribute 9, 2
812 ; CORTEX-A12-NOFPU-NOT: .fpu
813 ; CORTEX-A12-NOFPU: .eabi_attribute 42, 1
814 ; CORTEX-A12-NOFPU: .eabi_attribute 44, 2
815 ; CORTEX-A12-NOFPU: .eabi_attribute 68, 3
816 ; CORTEX-A12-NOFPU-NOT: .eabi_attribute 19
817 ;; We default to IEEE 754 compliance
818 ; CORTEX-A12-NOFPU: .eabi_attribute 20, 1
819 ; CORTEX-A12-NOFPU: .eabi_attribute 21, 1
820 ; CORTEX-A12-NOFPU-NOT: .eabi_attribute 22
821 ; CORTEX-A12-NOFPU: .eabi_attribute 23, 3
822 ; CORTEX-A12-NOFPU: .eabi_attribute 24, 1
823 ; CORTEX-A12-NOFPU: .eabi_attribute 25, 1
825 ; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 19
826 ;; Despite there being no FPU, we chose to flush to zero preserving
827 ;; sign. This matches what the hardware would do for this architecture
829 ; CORTEX-A12-NOFPU-FAST: .eabi_attribute 20, 2
830 ; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 21
831 ; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 22
832 ; CORTEX-A12-NOFPU-FAST: .eabi_attribute 23, 1
834 ; CORTEX-A15: .cpu cortex-a15
835 ; CORTEX-A15: .eabi_attribute 6, 10
836 ; CORTEX-A15: .eabi_attribute 7, 65
837 ; CORTEX-A15: .eabi_attribute 8, 1
838 ; CORTEX-A15: .eabi_attribute 9, 2
839 ; CORTEX-A15: .fpu neon-vfpv4
840 ; CORTEX-A15-NOT: .eabi_attribute 27
841 ; CORTEX-A15: .eabi_attribute 36, 1
842 ; CORTEX-A15: .eabi_attribute 42, 1
843 ; CORTEX-A15: .eabi_attribute 44, 2
844 ; CORTEX-A15: .eabi_attribute 68, 3
845 ; CORTEX-A15-NOT: .eabi_attribute 19
846 ;; We default to IEEE 754 compliance
847 ; CORTEX-A15: .eabi_attribute 20, 1
848 ; CORTEX-A15: .eabi_attribute 21, 1
849 ; CORTEX-A15-NOT: .eabi_attribute 22
850 ; CORTEX-A15: .eabi_attribute 23, 3
851 ; CORTEX-A15: .eabi_attribute 24, 1
852 ; CORTEX-A15: .eabi_attribute 25, 1
853 ; CORTEX-A15-NOT: .eabi_attribute 28
854 ; CORTEX-A15: .eabi_attribute 38, 1
856 ; CORTEX-A15-FAST-NOT: .eabi_attribute 19
857 ;; The A15 defaults to a VFPv3 FPU, so it flushes preserving the sign when
858 ;; -ffast-math is specified.
859 ; CORTEX-A15-FAST: .eabi_attribute 20, 2
860 ; CORTEX-A15-FAST-NOT: .eabi_attribute 21
861 ; CORTEX-A15-FAST-NOT: .eabi_attribute 22
862 ; CORTEX-A15-FAST: .eabi_attribute 23, 1
864 ; CORTEX-A17-DEFAULT: .cpu cortex-a17
865 ; CORTEX-A17-DEFAULT: .eabi_attribute 6, 10
866 ; CORTEX-A17-DEFAULT: .eabi_attribute 7, 65
867 ; CORTEX-A17-DEFAULT: .eabi_attribute 8, 1
868 ; CORTEX-A17-DEFAULT: .eabi_attribute 9, 2
869 ; CORTEX-A17-DEFAULT: .fpu neon-vfpv4
870 ; CORTEX-A17-DEFAULT: .eabi_attribute 42, 1
871 ; CORTEX-A17-DEFAULT: .eabi_attribute 44, 2
872 ; CORTEX-A17-DEFAULT: .eabi_attribute 68, 3
873 ; CORTEX-A17-DEFAULT-NOT: .eabi_attribute 19
874 ;; We default to IEEE 754 compliance
875 ; CORTEX-A17-DEFAULT: .eabi_attribute 20, 1
876 ; CORTEX-A17-DEFAULT: .eabi_attribute 21, 1
877 ; CORTEX-A17-DEFAULT-NOT: .eabi_attribute 22
878 ; CORTEX-A17-DEFAULT: .eabi_attribute 23, 3
879 ; CORTEX-A17-DEFAULT: .eabi_attribute 24, 1
880 ; CORTEX-A17-DEFAULT: .eabi_attribute 25, 1
882 ; CORTEX-A17-FAST-NOT: .eabi_attribute 19
883 ;; The A17 defaults to a VFPv3 FPU, so it flushes preserving the sign when
884 ;; -ffast-math is specified.
885 ; CORTEX-A17-FAST: .eabi_attribute 20, 2
886 ; CORTEX-A17-FAST-NOT: .eabi_attribute 21
887 ; CORTEX-A17-FAST-NOT: .eabi_attribute 22
888 ; CORTEX-A17-FAST: .eabi_attribute 23, 1
890 ; CORTEX-A17-NOFPU: .cpu cortex-a17
891 ; CORTEX-A17-NOFPU: .eabi_attribute 6, 10
892 ; CORTEX-A17-NOFPU: .eabi_attribute 7, 65
893 ; CORTEX-A17-NOFPU: .eabi_attribute 8, 1
894 ; CORTEX-A17-NOFPU: .eabi_attribute 9, 2
895 ; CORTEX-A17-NOFPU-NOT: .fpu
896 ; CORTEX-A17-NOFPU: .eabi_attribute 42, 1
897 ; CORTEX-A17-NOFPU: .eabi_attribute 44, 2
898 ; CORTEX-A17-NOFPU: .eabi_attribute 68, 3
899 ; CORTEX-A17-NOFPU-NOT: .eabi_attribute 19
900 ;; We default to IEEE 754 compliance
901 ; CORTEX-A17-NOFPU: .eabi_attribute 20, 1
902 ; CORTEX-A17-NOFPU: .eabi_attribute 21, 1
903 ; CORTEX-A17-NOFPU-NOT: .eabi_attribute 22
904 ; CORTEX-A17-NOFPU: .eabi_attribute 23, 3
905 ; CORTEX-A17-NOFPU: .eabi_attribute 24, 1
906 ; CORTEX-A17-NOFPU: .eabi_attribute 25, 1
908 ; CORTEX-A17-NOFPU-NOT: .eabi_attribute 19
909 ;; Despite there being no FPU, we chose to flush to zero preserving
910 ;; sign. This matches what the hardware would do for this architecture
912 ; CORTEX-A17-NOFPU-FAST: .eabi_attribute 20, 2
913 ; CORTEX-A17-NOFPU-FAST-NOT: .eabi_attribute 21
914 ; CORTEX-A17-NOFPU-FAST-NOT: .eabi_attribute 22
915 ; CORTEX-A17-NOFPU-FAST: .eabi_attribute 23, 1
917 ; Test flags -enable-no-trapping-fp-math and -denormal-fp-math:
918 ; NO-TRAPPING-MATH: .eabi_attribute 21, 0
919 ; DENORMAL-IEEE: .eabi_attribute 20, 1
920 ; DENORMAL-PRESERVE-SIGN: .eabi_attribute 20, 2
921 ; DENORMAL-POSITIVE-ZERO: .eabi_attribute 20, 0
923 ; CORTEX-M0: .cpu cortex-m0
924 ; CORTEX-M0: .eabi_attribute 6, 12
925 ; CORTEX-M0: .eabi_attribute 7, 77
926 ; CORTEX-M0: .eabi_attribute 8, 0
927 ; CORTEX-M0: .eabi_attribute 9, 1
928 ; CORTEX-M0-NOT: .eabi_attribute 27
929 ; CORTEX-M0-NOT: .eabi_attribute 36
930 ; CORTEX-M0: .eabi_attribute 34, 0
931 ; CORTEX-M0-NOT: .eabi_attribute 42
932 ; CORTEX-M0-NOT: .eabi_attribute 44
933 ; CORTEX-M0-NOT: .eabi_attribute 68
934 ; CORTEX-M0-NOT: .eabi_attribute 19
935 ;; We default to IEEE 754 compliance
936 ; CORTEX-M0: .eabi_attribute 20, 1
937 ; CORTEX-M0: .eabi_attribute 21, 1
938 ; CORTEX-M0-NOT: .eabi_attribute 22
939 ; CORTEX-M0: .eabi_attribute 23, 3
940 ; CORTEX-M0: .eabi_attribute 24, 1
941 ; CORTEX-M0: .eabi_attribute 25, 1
942 ; CORTEX-M0-NOT: .eabi_attribute 28
943 ; CORTEX-M0: .eabi_attribute 38, 1
945 ; CORTEX-M0-FAST-NOT: .eabi_attribute 19
946 ;; Despite the M0 CPU having no FPU in this scenario, we chose to
947 ;; flush to positive zero here. There's no hardware support doing
948 ;; this, but the fast maths software library might and such behaviour
949 ;; would match hardware support on this architecture revision if it
951 ; CORTEX-M0-FAST-NOT: .eabi_attribute 20
952 ; CORTEX-M0-FAST-NOT: .eabi_attribute 21
953 ; CORTEX-M0-FAST-NOT: .eabi_attribute 22
954 ; CORTEX-M0-FAST: .eabi_attribute 23, 1
956 ; CORTEX-M0PLUS: .cpu cortex-m0plus
957 ; CORTEX-M0PLUS: .eabi_attribute 6, 12
958 ; CORTEX-M0PLUS: .eabi_attribute 7, 77
959 ; CORTEX-M0PLUS: .eabi_attribute 8, 0
960 ; CORTEX-M0PLUS: .eabi_attribute 9, 1
961 ; CORTEX-M0PLUS-NOT: .eabi_attribute 27
962 ; CORTEX-M0PLUS-NOT: .eabi_attribute 36
963 ; CORTEX-M0PLUS-NOT: .eabi_attribute 42
964 ; CORTEX-M0PLUS-NOT: .eabi_attribute 44
965 ; CORTEX-M0PLUS-NOT: .eabi_attribute 68
966 ; CORTEX-M0PLUS-NOT: .eabi_attribute 19
967 ;; We default to IEEE 754 compliance
968 ; CORTEX-M0PLUS: .eabi_attribute 20, 1
969 ; CORTEX-M0PLUS: .eabi_attribute 21, 1
970 ; CORTEX-M0PLUS-NOT: .eabi_attribute 22
971 ; CORTEX-M0PLUS: .eabi_attribute 23, 3
972 ; CORTEX-M0PLUS: .eabi_attribute 24, 1
973 ; CORTEX-M0PLUS: .eabi_attribute 25, 1
974 ; CORTEX-M0PLUS-NOT: .eabi_attribute 28
975 ; CORTEX-M0PLUS: .eabi_attribute 38, 1
977 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 19
978 ;; Despite the M0+ CPU having no FPU in this scenario, we chose to
979 ;; flush to positive zero here. There's no hardware support doing
980 ;; this, but the fast maths software library might and such behaviour
981 ;; would match hardware support on this architecture revision if it
983 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 20
984 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 21
985 ; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 22
986 ; CORTEX-M0PLUS-FAST: .eabi_attribute 23, 1
988 ; CORTEX-M1: .cpu cortex-m1
989 ; CORTEX-M1: .eabi_attribute 6, 12
990 ; CORTEX-M1: .eabi_attribute 7, 77
991 ; CORTEX-M1: .eabi_attribute 8, 0
992 ; CORTEX-M1: .eabi_attribute 9, 1
993 ; CORTEX-M1-NOT: .eabi_attribute 27
994 ; CORTEX-M1-NOT: .eabi_attribute 36
995 ; CORTEX-M1-NOT: .eabi_attribute 42
996 ; CORTEX-M1-NOT: .eabi_attribute 44
997 ; CORTEX-M1-NOT: .eabi_attribute 68
998 ; CORTEX-M1-NOT: .eabi_attribute 19
999 ;; We default to IEEE 754 compliance
1000 ; CORTEX-M1: .eabi_attribute 20, 1
1001 ; CORTEX-M1: .eabi_attribute 21, 1
1002 ; CORTEX-M1-NOT: .eabi_attribute 22
1003 ; CORTEX-M1: .eabi_attribute 23, 3
1004 ; CORTEX-M1: .eabi_attribute 24, 1
1005 ; CORTEX-M1: .eabi_attribute 25, 1
1006 ; CORTEX-M1-NOT: .eabi_attribute 28
1007 ; CORTEX-M1: .eabi_attribute 38, 1
1009 ; CORTEX-M1-FAST-NOT: .eabi_attribute 19
1010 ;; Despite the M1 CPU having no FPU in this scenario, we chose to
1011 ;; flush to positive zero here. There's no hardware support doing
1012 ;; this, but the fast maths software library might and such behaviour
1013 ;; would match hardware support on this architecture revision if it
1015 ; CORTEX-M1-FAST-NOT: .eabi_attribute 20
1016 ; CORTEX-M1-FAST-NOT: .eabi_attribute 21
1017 ; CORTEX-M1-FAST-NOT: .eabi_attribute 22
1018 ; CORTEX-M1-FAST: .eabi_attribute 23, 1
1021 ; SC000: .eabi_attribute 6, 12
1022 ; SC000: .eabi_attribute 7, 77
1023 ; SC000: .eabi_attribute 8, 0
1024 ; SC000: .eabi_attribute 9, 1
1025 ; SC000-NOT: .eabi_attribute 27
1026 ; SC000-NOT: .eabi_attribute 42
1027 ; SC000-NOT: .eabi_attribute 44
1028 ; SC000-NOT: .eabi_attribute 68
1029 ; SC000-NOT: .eabi_attribute 19
1030 ;; We default to IEEE 754 compliance
1031 ; SC000: .eabi_attribute 20, 1
1032 ; SC000: .eabi_attribute 21, 1
1033 ; SC000-NOT: .eabi_attribute 22
1034 ; SC000: .eabi_attribute 23, 3
1035 ; SC000: .eabi_attribute 24, 1
1036 ; SC000: .eabi_attribute 25, 1
1037 ; SC000-NOT: .eabi_attribute 28
1038 ; SC000: .eabi_attribute 38, 1
1040 ; SC000-FAST-NOT: .eabi_attribute 19
1041 ;; Despite the SC000 CPU having no FPU in this scenario, we chose to
1042 ;; flush to positive zero here. There's no hardware support doing
1043 ;; this, but the fast maths software library might and such behaviour
1044 ;; would match hardware support on this architecture revision if it
1046 ; SC000-FAST-NOT: .eabi_attribute 20
1047 ; SC000-FAST-NOT: .eabi_attribute 21
1048 ; SC000-FAST-NOT: .eabi_attribute 22
1049 ; SC000-FAST: .eabi_attribute 23, 1
1051 ; CORTEX-M3: .cpu cortex-m3
1052 ; CORTEX-M3: .eabi_attribute 6, 10
1053 ; CORTEX-M3: .eabi_attribute 7, 77
1054 ; CORTEX-M3: .eabi_attribute 8, 0
1055 ; CORTEX-M3: .eabi_attribute 9, 2
1056 ; CORTEX-M3-NOT: .eabi_attribute 27
1057 ; CORTEX-M3-NOT: .eabi_attribute 36
1058 ; CORTEX-M3-NOT: .eabi_attribute 42
1059 ; CORTEX-M3-NOT: .eabi_attribute 44
1060 ; CORTEX-M3-NOT: .eabi_attribute 68
1061 ; CORTEX-M3-NOT: .eabi_attribute 19
1062 ;; We default to IEEE 754 compliance
1063 ; CORTEX-M3: .eabi_attribute 20, 1
1064 ; CORTEX-M3: .eabi_attribute 21, 1
1065 ; CORTEX-M3-NOT: .eabi_attribute 22
1066 ; CORTEX-M3: .eabi_attribute 23, 3
1067 ; CORTEX-M3: .eabi_attribute 24, 1
1068 ; CORTEX-M3: .eabi_attribute 25, 1
1069 ; CORTEX-M3-NOT: .eabi_attribute 28
1070 ; CORTEX-M3: .eabi_attribute 38, 1
1072 ; CORTEX-M3-FAST-NOT: .eabi_attribute 19
1073 ;; Despite there being no FPU, we chose to flush to zero preserving
1074 ;; sign. This matches what the hardware would do for this architecture
1076 ; CORTEX-M3-FAST: .eabi_attribute 20, 2
1077 ; CORTEX-M3-FAST-NOT: .eabi_attribute 21
1078 ; CORTEX-M3-FAST-NOT: .eabi_attribute 22
1079 ; CORTEX-M3-FAST: .eabi_attribute 23, 1
1082 ; SC300: .eabi_attribute 6, 10
1083 ; SC300: .eabi_attribute 7, 77
1084 ; SC300: .eabi_attribute 8, 0
1085 ; SC300: .eabi_attribute 9, 2
1086 ; SC300-NOT: .eabi_attribute 27
1087 ; SC300-NOT: .eabi_attribute 36
1088 ; SC300-NOT: .eabi_attribute 42
1089 ; SC300-NOT: .eabi_attribute 44
1090 ; SC300-NOT: .eabi_attribute 68
1091 ; SC300-NOT: .eabi_attribute 19
1092 ;; We default to IEEE 754 compliance
1093 ; SC300: .eabi_attribute 20, 1
1094 ; SC300: .eabi_attribute 21, 1
1095 ; SC300-NOT: .eabi_attribute 22
1096 ; SC300: .eabi_attribute 23, 3
1097 ; SC300: .eabi_attribute 24, 1
1098 ; SC300: .eabi_attribute 25, 1
1099 ; SC300-NOT: .eabi_attribute 28
1100 ; SC300: .eabi_attribute 38, 1
1102 ; SC300-FAST-NOT: .eabi_attribute 19
1103 ;; Despite there being no FPU, we chose to flush to zero preserving
1104 ;; sign. This matches what the hardware would do for this architecture
1106 ; SC300-FAST: .eabi_attribute 20, 2
1107 ; SC300-FAST-NOT: .eabi_attribute 21
1108 ; SC300-FAST-NOT: .eabi_attribute 22
1109 ; SC300-FAST: .eabi_attribute 23, 1
1111 ; CORTEX-M4-SOFT: .cpu cortex-m4
1112 ; CORTEX-M4-SOFT: .eabi_attribute 6, 13
1113 ; CORTEX-M4-SOFT: .eabi_attribute 7, 77
1114 ; CORTEX-M4-SOFT: .eabi_attribute 8, 0
1115 ; CORTEX-M4-SOFT: .eabi_attribute 9, 2
1116 ; CORTEX-M4-SOFT: .fpu fpv4-sp-d16
1117 ; CORTEX-M4-SOFT: .eabi_attribute 27, 1
1118 ; CORTEX-M4-SOFT: .eabi_attribute 36, 1
1119 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 42
1120 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 44
1121 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 68
1122 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 19
1123 ;; We default to IEEE 754 compliance
1124 ; CORTEX-M4-SOFT: .eabi_attribute 20, 1
1125 ; CORTEX-M4-SOFT: .eabi_attribute 21, 1
1126 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 22
1127 ; CORTEX-M4-SOFT: .eabi_attribute 23, 3
1128 ; CORTEX-M4-SOFT: .eabi_attribute 24, 1
1129 ; CORTEX-M4-SOFT: .eabi_attribute 25, 1
1130 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 28
1131 ; CORTEX-M4-SOFT: .eabi_attribute 38, 1
1133 ; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 19
1134 ;; The M4 defaults to a VFPv4 FPU, so it flushes preserving the sign when
1135 ;; -ffast-math is specified.
1136 ; CORTEX-M4-SOFT-FAST: .eabi_attribute 20, 2
1137 ; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 21
1138 ; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 22
1139 ; CORTEX-M4-SOFT-FAST: .eabi_attribute 23, 1
1141 ; CORTEX-M4-HARD: .cpu cortex-m4
1142 ; CORTEX-M4-HARD: .eabi_attribute 6, 13
1143 ; CORTEX-M4-HARD: .eabi_attribute 7, 77
1144 ; CORTEX-M4-HARD: .eabi_attribute 8, 0
1145 ; CORTEX-M4-HARD: .eabi_attribute 9, 2
1146 ; CORTEX-M4-HARD: .fpu fpv4-sp-d16
1147 ; CORTEX-M4-HARD: .eabi_attribute 27, 1
1148 ; CORTEX-M4-HARD: .eabi_attribute 36, 1
1149 ; CORTEX-M4-HARD-NOT: .eabi_attribute 42
1150 ; CORTEX-M4-HARD-NOT: .eabi_attribute 44
1151 ; CORTEX-M4-HARD-NOT: .eabi_attribute 68
1152 ; CORTEX-M4-HARD-NOT: .eabi_attribute 19
1153 ;; We default to IEEE 754 compliance
1154 ; CORTEX-M4-HARD: .eabi_attribute 20, 1
1155 ; CORTEX-M4-HARD: .eabi_attribute 21, 1
1156 ; CORTEX-M4-HARD-NOT: .eabi_attribute 22
1157 ; CORTEX-M4-HARD: .eabi_attribute 23, 3
1158 ; CORTEX-M4-HARD: .eabi_attribute 24, 1
1159 ; CORTEX-M4-HARD: .eabi_attribute 25, 1
1160 ; CORTEX-M4-HARD: .eabi_attribute 28, 1
1161 ; CORTEX-M4-HARD: .eabi_attribute 38, 1
1163 ; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 19
1164 ;; The M4 defaults to a VFPv4 FPU, so it flushes preserving the sign when
1165 ;; -ffast-math is specified.
1166 ; CORTEX-M4-HARD-FAST: .eabi_attribute 20, 2
1167 ; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 21
1168 ; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 22
1169 ; CORTEX-M4-HARD-FAST: .eabi_attribute 23, 1
1171 ; CORTEX-M7: .cpu cortex-m7
1172 ; CORTEX-M7: .eabi_attribute 6, 13
1173 ; CORTEX-M7: .eabi_attribute 7, 77
1174 ; CORTEX-M7: .eabi_attribute 8, 0
1175 ; CORTEX-M7: .eabi_attribute 9, 2
1176 ; CORTEX-M7-SOFT-NOT: .fpu
1177 ; CORTEX-M7-SINGLE: .fpu fpv5-sp-d16
1178 ; CORTEX-M7-DOUBLE: .fpu fpv5-d16
1179 ; CORTEX-M7-SOFT-NOT: .eabi_attribute 27
1180 ; CORTEX-M7-SINGLE: .eabi_attribute 27, 1
1181 ; CORTEX-M7-DOUBLE-NOT: .eabi_attribute 27
1182 ; CORTEX-M7: .eabi_attribute 36, 1
1183 ; CORTEX-M7-NOT: .eabi_attribute 44
1184 ; CORTEX-M7: .eabi_attribute 17, 1
1185 ; CORTEX-M7-NOT: .eabi_attribute 19
1186 ;; We default to IEEE 754 compliance
1187 ; CORTEX-M7: .eabi_attribute 20, 1
1188 ; CORTEX-M7: .eabi_attribute 21, 1
1189 ; CORTEX-M7-NOT: .eabi_attribute 22
1190 ; CORTEX-M7: .eabi_attribute 23, 3
1191 ; CORTEX-M7: .eabi_attribute 24, 1
1192 ; CORTEX-M7: .eabi_attribute 25, 1
1193 ; CORTEX-M7: .eabi_attribute 38, 1
1194 ; CORTEX-M7: .eabi_attribute 14, 0
1196 ; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 19
1197 ;; The M7 has the ARMv8 FP unit, which always flushes preserving sign.
1198 ; CORTEX-M7-FAST: .eabi_attribute 20, 2
1199 ;; Despite there being no FPU, we chose to flush to zero preserving
1200 ;; sign. This matches what the hardware would do for this architecture
1202 ; CORTEX-M7-NOFPU-FAST: .eabi_attribute 20, 2
1203 ; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 21
1204 ; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 22
1205 ; CORTEX-M7-NOFPU-FAST: .eabi_attribute 23, 1
1207 ; CORTEX-R4: .cpu cortex-r4
1208 ; CORTEX-R4: .eabi_attribute 6, 10
1209 ; CORTEX-R4: .eabi_attribute 7, 82
1210 ; CORTEX-R4: .eabi_attribute 8, 1
1211 ; CORTEX-R4: .eabi_attribute 9, 2
1212 ; CORTEX-R4-NOT: .fpu vfpv3-d16
1213 ; CORTEX-R4-NOT: .eabi_attribute 36
1214 ; CORTEX-R4-NOT: .eabi_attribute 42
1215 ; CORTEX-R4-NOT: .eabi_attribute 44
1216 ; CORTEX-R4-NOT: .eabi_attribute 68
1217 ; CORTEX-R4-NOT: .eabi_attribute 19
1218 ;; We default to IEEE 754 compliance
1219 ; CORTEX-R4: .eabi_attribute 20, 1
1220 ; CORTEX-R4: .eabi_attribute 21, 1
1221 ; CORTEX-R4-NOT: .eabi_attribute 22
1222 ; CORTEX-R4: .eabi_attribute 23, 3
1223 ; CORTEX-R4: .eabi_attribute 24, 1
1224 ; CORTEX-R4: .eabi_attribute 25, 1
1225 ; CORTEX-R4-NOT: .eabi_attribute 28
1226 ; CORTEX-R4: .eabi_attribute 38, 1
1228 ; CORTEX-R4F: .cpu cortex-r4f
1229 ; CORTEX-R4F: .eabi_attribute 6, 10
1230 ; CORTEX-R4F: .eabi_attribute 7, 82
1231 ; CORTEX-R4F: .eabi_attribute 8, 1
1232 ; CORTEX-R4F: .eabi_attribute 9, 2
1233 ; CORTEX-R4F: .fpu vfpv3-d16
1234 ; CORTEX-R4F-NOT: .eabi_attribute 27, 1
1235 ; CORTEX-R4F-NOT: .eabi_attribute 36
1236 ; CORTEX-R4F-NOT: .eabi_attribute 42
1237 ; CORTEX-R4F-NOT: .eabi_attribute 44
1238 ; CORTEX-R4F-NOT: .eabi_attribute 68
1239 ; CORTEX-R4F-NOT: .eabi_attribute 19
1240 ;; We default to IEEE 754 compliance
1241 ; CORTEX-R4F: .eabi_attribute 20, 1
1242 ; CORTEX-R4F: .eabi_attribute 21, 1
1243 ; CORTEX-R4F-NOT: .eabi_attribute 22
1244 ; CORTEX-R4F: .eabi_attribute 23, 3
1245 ; CORTEX-R4F: .eabi_attribute 24, 1
1246 ; CORTEX-R4F: .eabi_attribute 25, 1
1247 ; CORTEX-R4F-NOT: .eabi_attribute 28
1248 ; CORTEX-R4F: .eabi_attribute 38, 1
1250 ; CORTEX-R5: .cpu cortex-r5
1251 ; CORTEX-R5: .eabi_attribute 6, 10
1252 ; CORTEX-R5: .eabi_attribute 7, 82
1253 ; CORTEX-R5: .eabi_attribute 8, 1
1254 ; CORTEX-R5: .eabi_attribute 9, 2
1255 ; CORTEX-R5: .fpu vfpv3-d16
1256 ; CORTEX-R5-NOT: .eabi_attribute 27, 1
1257 ; CORTEX-R5-NOT: .eabi_attribute 36
1258 ; CORTEX-R5: .eabi_attribute 44, 2
1259 ; CORTEX-R5-NOT: .eabi_attribute 42
1260 ; CORTEX-R5-NOT: .eabi_attribute 68
1261 ; CORTEX-R5-NOT: .eabi_attribute 19
1262 ;; We default to IEEE 754 compliance
1263 ; CORTEX-R5: .eabi_attribute 20, 1
1264 ; CORTEX-R5: .eabi_attribute 21, 1
1265 ; CORTEX-R5-NOT: .eabi_attribute 22
1266 ; CORTEX-R5: .eabi_attribute 23, 3
1267 ; CORTEX-R5: .eabi_attribute 24, 1
1268 ; CORTEX-R5: .eabi_attribute 25, 1
1269 ; CORTEX-R5-NOT: .eabi_attribute 28
1270 ; CORTEX-R5: .eabi_attribute 38, 1
1272 ; CORTEX-R5-FAST-NOT: .eabi_attribute 19
1273 ;; The R5 has the VFPv3 FP unit, which always flushes preserving sign.
1274 ; CORTEX-R5-FAST: .eabi_attribute 20, 2
1275 ; CORTEX-R5-FAST-NOT: .eabi_attribute 21
1276 ; CORTEX-R5-FAST-NOT: .eabi_attribute 22
1277 ; CORTEX-R5-FAST: .eabi_attribute 23, 1
1279 ; CORTEX-R7: .cpu cortex-r7
1280 ; CORTEX-R7: .eabi_attribute 6, 10
1281 ; CORTEX-R7: .eabi_attribute 7, 82
1282 ; CORTEX-R7: .eabi_attribute 8, 1
1283 ; CORTEX-R7: .eabi_attribute 9, 2
1284 ; CORTEX-R7: .fpu vfpv3-d16-fp16
1285 ; CORTEX-R7: .eabi_attribute 36, 1
1286 ; CORTEX-R7: .eabi_attribute 42, 1
1287 ; CORTEX-R7: .eabi_attribute 44, 2
1288 ; CORTEX-R7-NOT: .eabi_attribute 68
1289 ; CORTEX-R7-NOT: .eabi_attribute 19
1290 ;; We default to IEEE 754 compliance
1291 ; CORTEX-R7: .eabi_attribute 20, 1
1292 ; CORTEX-R7: .eabi_attribute 21, 1
1293 ; CORTEX-R7-NOT: .eabi_attribute 22
1294 ; CORTEX-R7: .eabi_attribute 23, 3
1295 ; CORTEX-R7: .eabi_attribute 24, 1
1296 ; CORTEX-R7: .eabi_attribute 25, 1
1297 ; CORTEX-R7-NOT: .eabi_attribute 28
1298 ; CORTEX-R7: .eabi_attribute 38, 1
1300 ; CORTEX-R7-FAST-NOT: .eabi_attribute 19
1301 ;; The R7 has the VFPv3 FP unit, which always flushes preserving sign.
1302 ; CORTEX-R7-FAST: .eabi_attribute 20, 2
1303 ; CORTEX-R7-FAST-NOT: .eabi_attribute 21
1304 ; CORTEX-R7-FAST-NOT: .eabi_attribute 22
1305 ; CORTEX-R7-FAST: .eabi_attribute 23, 1
1307 ; CORTEX-R8: .cpu cortex-r8
1308 ; CORTEX-R8: .eabi_attribute 6, 10
1309 ; CORTEX-R8: .eabi_attribute 7, 82
1310 ; CORTEX-R8: .eabi_attribute 8, 1
1311 ; CORTEX-R8: .eabi_attribute 9, 2
1312 ; CORTEX-R8: .fpu vfpv3-d16-fp16
1313 ; CORTEX-R8: .eabi_attribute 36, 1
1314 ; CORTEX-R8: .eabi_attribute 42, 1
1315 ; CORTEX-R8: .eabi_attribute 44, 2
1316 ; CORTEX-R8-NOT: .eabi_attribute 68
1317 ; CORTEX-R8-NOT: .eabi_attribute 19
1318 ;; We default to IEEE 754 compliance
1319 ; CORTEX-R8: .eabi_attribute 20, 1
1320 ; CORTEX-R8: .eabi_attribute 21, 1
1321 ; CORTEX-R8-NOT: .eabi_attribute 22
1322 ; CORTEX-R8: .eabi_attribute 23, 3
1323 ; CORTEX-R8: .eabi_attribute 24, 1
1324 ; CORTEX-R8: .eabi_attribute 25, 1
1325 ; CORTEX-R8-NOT: .eabi_attribute 28
1326 ; CORTEX-R8: .eabi_attribute 38, 1
1328 ; CORTEX-R8-FAST-NOT: .eabi_attribute 19
1329 ;; The R8 has the VFPv3 FP unit, which always flushes preserving sign.
1330 ; CORTEX-R8-FAST: .eabi_attribute 20, 2
1331 ; CORTEX-R8-FAST-NOT: .eabi_attribute 21
1332 ; CORTEX-R8-FAST-NOT: .eabi_attribute 22
1333 ; CORTEX-R8-FAST: .eabi_attribute 23, 1
1335 ; CORTEX-A32: .cpu cortex-a32
1336 ; CORTEX-A32: .eabi_attribute 6, 14
1337 ; CORTEX-A32: .eabi_attribute 7, 65
1338 ; CORTEX-A32: .eabi_attribute 8, 1
1339 ; CORTEX-A32: .eabi_attribute 9, 2
1340 ; CORTEX-A32: .fpu crypto-neon-fp-armv8
1341 ; CORTEX-A32: .eabi_attribute 12, 3
1342 ; CORTEX-A32-NOT: .eabi_attribute 27
1343 ; CORTEX-A32: .eabi_attribute 36, 1
1344 ; CORTEX-A32: .eabi_attribute 42, 1
1345 ; CORTEX-A32-NOT: .eabi_attribute 44
1346 ; CORTEX-A32: .eabi_attribute 68, 3
1347 ; CORTEX-A32-NOT: .eabi_attribute 19
1348 ;; We default to IEEE 754 compliance
1349 ; CORTEX-A32: .eabi_attribute 20, 1
1350 ; CORTEX-A32: .eabi_attribute 21, 1
1351 ; CORTEX-A32-NOT: .eabi_attribute 22
1352 ; CORTEX-A32: .eabi_attribute 23, 3
1353 ; CORTEX-A32: .eabi_attribute 24, 1
1354 ; CORTEX-A32: .eabi_attribute 25, 1
1355 ; CORTEX-A32-NOT: .eabi_attribute 28
1356 ; CORTEX-A32: .eabi_attribute 38, 1
1358 ; CORTEX-A32-FAST-NOT: .eabi_attribute 19
1359 ;; The A32 has the ARMv8 FP unit, which always flushes preserving sign.
1360 ; CORTEX-A32-FAST: .eabi_attribute 20, 2
1361 ; CORTEX-A32-FAST-NOT: .eabi_attribute 21
1362 ; CORTEX-A32-FAST-NOT: .eabi_attribute 22
1363 ; CORTEX-A32-FAST: .eabi_attribute 23, 1
1365 ; CORTEX-M23: .cpu cortex-m23
1366 ; CORTEX-M23: .eabi_attribute 6, 16
1367 ; CORTEX-M23: .eabi_attribute 7, 77
1368 ; CORTEX-M23: .eabi_attribute 8, 0
1369 ; CORTEX-M23: .eabi_attribute 9, 3
1370 ; CORTEX-M23-NOT: .eabi_attribute 27
1371 ; CORTEX-M23: .eabi_attribute 34, 0
1372 ; CORTEX-M23-NOT: .eabi_attribute 44
1373 ; CORTEX-M23: .eabi_attribute 17, 1
1374 ;; We default to IEEE 754 compliance
1375 ; CORTEX-M23-NOT: .eabi_attribute 19
1376 ; CORTEX-M23: .eabi_attribute 20, 1
1377 ; CORTEX-M23: .eabi_attribute 21, 1
1378 ; CORTEX-M23: .eabi_attribute 23, 3
1379 ; CORTEX-M23: .eabi_attribute 24, 1
1380 ; CORTEX-M23-NOT: .eabi_attribute 28
1381 ; CORTEX-M23: .eabi_attribute 25, 1
1382 ; CORTEX-M23: .eabi_attribute 38, 1
1383 ; CORTEX-M23: .eabi_attribute 14, 0
1385 ; CORTEX-M33: .cpu cortex-m33
1386 ; CORTEX-M33: .eabi_attribute 6, 17
1387 ; CORTEX-M33: .eabi_attribute 7, 77
1388 ; CORTEX-M33: .eabi_attribute 8, 0
1389 ; CORTEX-M33: .eabi_attribute 9, 3
1390 ; CORTEX-M33: .fpu fpv5-sp-d16
1391 ; CORTEX-M33: .eabi_attribute 27, 1
1392 ; CORTEX-M33: .eabi_attribute 36, 1
1393 ; CORTEX-M33-NOT: .eabi_attribute 44
1394 ; CORTEX-M33: .eabi_attribute 46, 1
1395 ; CORTEX-M33: .eabi_attribute 34, 1
1396 ; CORTEX-M33: .eabi_attribute 17, 1
1397 ;; We default to IEEE 754 compliance
1398 ; CORTEX-M23-NOT: .eabi_attribute 19
1399 ; CORTEX-M33: .eabi_attribute 20, 1
1400 ; CORTEX-M33: .eabi_attribute 21, 1
1401 ; CORTEX-M33: .eabi_attribute 23, 3
1402 ; CORTEX-M33: .eabi_attribute 24, 1
1403 ; CORTEX-M33: .eabi_attribute 25, 1
1404 ; CORTEX-M33-NOT: .eabi_attribute 28
1405 ; CORTEX-M33: .eabi_attribute 38, 1
1406 ; CORTEX-M33: .eabi_attribute 14, 0
1408 ; CORTEX-M35P: .cpu cortex-m35p
1409 ; CORTEX-M35P: .eabi_attribute 6, 17
1410 ; CORTEX-M35P: .eabi_attribute 7, 77
1411 ; CORTEX-M35P: .eabi_attribute 8, 0
1412 ; CORTEX-M35P: .eabi_attribute 9, 3
1413 ; CORTEX-M35P: .fpu fpv5-sp-d16
1414 ; CORTEX-M35P: .eabi_attribute 27, 1
1415 ; CORTEX-M35P: .eabi_attribute 36, 1
1416 ; CORTEX-M35P-NOT: .eabi_attribute 44
1417 ; CORTEX-M35P: .eabi_attribute 46, 1
1418 ; CORTEX-M35P: .eabi_attribute 34, 1
1419 ; CORTEX-M35P: .eabi_attribute 17, 1
1420 ; CORTEX-M35P: .eabi_attribute 20, 1
1421 ; CORTEX-M35P: .eabi_attribute 21, 1
1422 ; CORTEX-M35P: .eabi_attribute 23, 3
1423 ; CORTEX-M35P: .eabi_attribute 24, 1
1424 ; CORTEX-M35P: .eabi_attribute 25, 1
1425 ; CORTEX-M35P-NOT: .eabi_attribute 28
1426 ; CORTEX-M35P: .eabi_attribute 38, 1
1427 ; CORTEX-M35P: .eabi_attribute 14, 0
1429 ; CORTEX-M33-FAST-NOT: .eabi_attribute 19
1430 ; CORTEX-M33-FAST: .eabi_attribute 20, 2
1431 ; CORTEX-M33-FAST-NOT: .eabi_attribute 21
1432 ; CORTEX-M33-FAST-NOT: .eabi_attribute 22
1433 ; CORTEX-M33-FAST: .eabi_attribute 23, 1
1435 ; CORTEX-A35: .cpu cortex-a35
1436 ; CORTEX-A35: .eabi_attribute 6, 14
1437 ; CORTEX-A35: .eabi_attribute 7, 65
1438 ; CORTEX-A35: .eabi_attribute 8, 1
1439 ; CORTEX-A35: .eabi_attribute 9, 2
1440 ; CORTEX-A35: .fpu crypto-neon-fp-armv8
1441 ; CORTEX-A35: .eabi_attribute 12, 3
1442 ; CORTEX-A35-NOT: .eabi_attribute 27
1443 ; CORTEX-A35: .eabi_attribute 36, 1
1444 ; CORTEX-A35: .eabi_attribute 42, 1
1445 ; CORTEX-A35-NOT: .eabi_attribute 44
1446 ; CORTEX-A35: .eabi_attribute 68, 3
1447 ; CORTEX-A35-NOT: .eabi_attribute 19
1448 ;; We default to IEEE 754 compliance
1449 ; CORTEX-A35: .eabi_attribute 20, 1
1450 ; CORTEX-A35: .eabi_attribute 21, 1
1451 ; CORTEX-A35-NOT: .eabi_attribute 22
1452 ; CORTEX-A35: .eabi_attribute 23, 3
1453 ; CORTEX-A35: .eabi_attribute 24, 1
1454 ; CORTEX-A35: .eabi_attribute 25, 1
1455 ; CORTEX-A35-NOT: .eabi_attribute 28
1456 ; CORTEX-A35: .eabi_attribute 38, 1
1458 ; CORTEX-A35-FAST-NOT: .eabi_attribute 19
1459 ;; The A35 has the ARMv8 FP unit, which always flushes preserving sign.
1460 ; CORTEX-A35-FAST: .eabi_attribute 20, 2
1461 ; CORTEX-A35-FAST-NOT: .eabi_attribute 21
1462 ; CORTEX-A35-FAST-NOT: .eabi_attribute 22
1463 ; CORTEX-A35-FAST: .eabi_attribute 23, 1
1465 ; CORTEX-A53: .cpu cortex-a53
1466 ; CORTEX-A53: .eabi_attribute 6, 14
1467 ; CORTEX-A53: .eabi_attribute 7, 65
1468 ; CORTEX-A53: .eabi_attribute 8, 1
1469 ; CORTEX-A53: .eabi_attribute 9, 2
1470 ; CORTEX-A53: .fpu crypto-neon-fp-armv8
1471 ; CORTEX-A53: .eabi_attribute 12, 3
1472 ; CORTEX-A53-NOT: .eabi_attribute 27
1473 ; CORTEX-A53: .eabi_attribute 36, 1
1474 ; CORTEX-A53: .eabi_attribute 42, 1
1475 ; CORTEX-A53-NOT: .eabi_attribute 44
1476 ; CORTEX-A53: .eabi_attribute 68, 3
1477 ; CORTEX-A53-NOT: .eabi_attribute 19
1478 ;; We default to IEEE 754 compliance
1479 ; CORTEX-A53: .eabi_attribute 20, 1
1480 ; CORTEX-A53: .eabi_attribute 21, 1
1481 ; CORTEX-A53-NOT: .eabi_attribute 22
1482 ; CORTEX-A53: .eabi_attribute 23, 3
1483 ; CORTEX-A53: .eabi_attribute 24, 1
1484 ; CORTEX-A53: .eabi_attribute 25, 1
1485 ; CORTEX-A53-NOT: .eabi_attribute 28
1486 ; CORTEX-A53: .eabi_attribute 38, 1
1488 ; CORTEX-A53-FAST-NOT: .eabi_attribute 19
1489 ;; The A53 has the ARMv8 FP unit, which always flushes preserving sign.
1490 ; CORTEX-A53-FAST: .eabi_attribute 20, 2
1491 ; CORTEX-A53-FAST-NOT: .eabi_attribute 21
1492 ; CORTEX-A53-FAST-NOT: .eabi_attribute 22
1493 ; CORTEX-A53-FAST: .eabi_attribute 23, 1
1495 ; CORTEX-A57: .cpu cortex-a57
1496 ; CORTEX-A57: .eabi_attribute 6, 14
1497 ; CORTEX-A57: .eabi_attribute 7, 65
1498 ; CORTEX-A57: .eabi_attribute 8, 1
1499 ; CORTEX-A57: .eabi_attribute 9, 2
1500 ; CORTEX-A57: .fpu crypto-neon-fp-armv8
1501 ; CORTEX-A57: .eabi_attribute 12, 3
1502 ; CORTEX-A57-NOT: .eabi_attribute 27
1503 ; CORTEX-A57: .eabi_attribute 36, 1
1504 ; CORTEX-A57: .eabi_attribute 42, 1
1505 ; CORTEX-A57-NOT: .eabi_attribute 44
1506 ; CORTEX-A57: .eabi_attribute 68, 3
1507 ; CORTEX-A57-NOT: .eabi_attribute 19
1508 ;; We default to IEEE 754 compliance
1509 ; CORTEX-A57: .eabi_attribute 20, 1
1510 ; CORTEX-A57: .eabi_attribute 21, 1
1511 ; CORTEX-A57-NOT: .eabi_attribute 22
1512 ; CORTEX-A57: .eabi_attribute 23, 3
1513 ; CORTEX-A57: .eabi_attribute 24, 1
1514 ; CORTEX-A57: .eabi_attribute 25, 1
1515 ; CORTEX-A57-NOT: .eabi_attribute 28
1516 ; CORTEX-A57: .eabi_attribute 38, 1
1518 ; CORTEX-A57-FAST-NOT: .eabi_attribute 19
1519 ;; The A57 has the ARMv8 FP unit, which always flushes preserving sign.
1520 ; CORTEX-A57-FAST: .eabi_attribute 20, 2
1521 ; CORTEX-A57-FAST-NOT: .eabi_attribute 21
1522 ; CORTEX-A57-FAST-NOT: .eabi_attribute 22
1523 ; CORTEX-A57-FAST: .eabi_attribute 23, 1
1525 ; CORTEX-A72: .cpu cortex-a72
1526 ; CORTEX-A72: .eabi_attribute 6, 14
1527 ; CORTEX-A72: .eabi_attribute 7, 65
1528 ; CORTEX-A72: .eabi_attribute 8, 1
1529 ; CORTEX-A72: .eabi_attribute 9, 2
1530 ; CORTEX-A72: .fpu crypto-neon-fp-armv8
1531 ; CORTEX-A72: .eabi_attribute 12, 3
1532 ; CORTEX-A72-NOT: .eabi_attribute 27
1533 ; CORTEX-A72: .eabi_attribute 36, 1
1534 ; CORTEX-A72: .eabi_attribute 42, 1
1535 ; CORTEX-A72-NOT: .eabi_attribute 44
1536 ; CORTEX-A72: .eabi_attribute 68, 3
1537 ; CORTEX-A72-NOT: .eabi_attribute 19
1538 ;; We default to IEEE 754 compliance
1539 ; CORTEX-A72: .eabi_attribute 20, 1
1540 ; CORTEX-A72: .eabi_attribute 21, 1
1541 ; CORTEX-A72-NOT: .eabi_attribute 22
1542 ; CORTEX-A72: .eabi_attribute 23, 3
1543 ; CORTEX-A72: .eabi_attribute 24, 1
1544 ; CORTEX-A72: .eabi_attribute 25, 1
1545 ; CORTEX-A72-NOT: .eabi_attribute 28
1546 ; CORTEX-A72: .eabi_attribute 38, 1
1548 ; CORTEX-A72-FAST-NOT: .eabi_attribute 19
1549 ;; The A72 has the ARMv8 FP unit, which always flushes preserving sign.
1550 ; CORTEX-A72-FAST: .eabi_attribute 20, 2
1551 ; CORTEX-A72-FAST-NOT: .eabi_attribute 21
1552 ; CORTEX-A72-FAST-NOT: .eabi_attribute 22
1553 ; CORTEX-A72-FAST: .eabi_attribute 23, 1
1555 ; CORTEX-A73: .cpu cortex-a73
1556 ; CORTEX-A73: .eabi_attribute 6, 14
1557 ; CORTEX-A73: .eabi_attribute 7, 65
1558 ; CORTEX-A73: .eabi_attribute 8, 1
1559 ; CORTEX-A73: .eabi_attribute 9, 2
1560 ; CORTEX-A73: .fpu crypto-neon-fp-armv8
1561 ; CORTEX-A73: .eabi_attribute 12, 3
1562 ; CORTEX-A73-NOT: .eabi_attribute 27
1563 ; CORTEX-A73: .eabi_attribute 36, 1
1564 ; CORTEX-A73: .eabi_attribute 42, 1
1565 ; CORTEX-A73-NOT: .eabi_attribute 44
1566 ; CORTEX-A73: .eabi_attribute 68, 3
1567 ; CORTEX-A73-NOT: .eabi_attribute 19
1568 ;; We default to IEEE 754 compliance
1569 ; CORTEX-A73: .eabi_attribute 20, 1
1570 ; CORTEX-A73: .eabi_attribute 21, 1
1571 ; CORTEX-A73-NOT: .eabi_attribute 22
1572 ; CORTEX-A73: .eabi_attribute 23, 3
1573 ; CORTEX-A73: .eabi_attribute 24, 1
1574 ; CORTEX-A73: .eabi_attribute 25, 1
1575 ; CORTEX-A73-NOT: .eabi_attribute 28
1576 ; CORTEX-A73: .eabi_attribute 38, 1
1577 ; CORTEX-A73: .eabi_attribute 14, 0
1579 ; EXYNOS-M1: .cpu exynos-m1
1580 ; EXYNOS-M1: .eabi_attribute 6, 14
1581 ; EXYNOS-M1: .eabi_attribute 7, 65
1582 ; EXYNOS-M1: .eabi_attribute 8, 1
1583 ; EXYNOS-M1: .eabi_attribute 9, 2
1584 ; EXYNOS-M1: .fpu crypto-neon-fp-armv8
1585 ; EXYNOS-M1: .eabi_attribute 12, 3
1586 ; EXYNOS-M1-NOT: .eabi_attribute 27
1587 ; EXYNOS-M1: .eabi_attribute 36, 1
1588 ; EXYNOS-M1: .eabi_attribute 42, 1
1589 ; EXYNOS-M1-NOT: .eabi_attribute 44
1590 ; EXYNOS-M1: .eabi_attribute 68, 3
1591 ; EXYNOS-M1-NOT: .eabi_attribute 19
1592 ;; We default to IEEE 754 compliance
1593 ; EXYNOS-M1: .eabi_attribute 20, 1
1594 ; EXYNOS-M1: .eabi_attribute 21, 1
1595 ; EXYNOS-M1-NOT: .eabi_attribute 22
1596 ; EXYNOS-M1: .eabi_attribute 23, 3
1597 ; EXYNOS-M1: .eabi_attribute 24, 1
1598 ; EXYNOS-M1: .eabi_attribute 25, 1
1599 ; EXYNOS-M1-NOT: .eabi_attribute 28
1600 ; EXYNOS-M1: .eabi_attribute 38, 1
1602 ; EXYNOS-M1-FAST-NOT: .eabi_attribute 19
1603 ;; The exynos-m1 has the ARMv8 FP unit, which always flushes preserving sign.
1604 ; EXYNOS-M1-FAST: .eabi_attribute 20, 2
1605 ; EXYNOS-M1-FAST-NOT: .eabi_attribute 21
1606 ; EXYNOS-M1-FAST-NOT: .eabi_attribute 22
1607 ; EXYNOS-M1-FAST: .eabi_attribute 23, 1
1609 ; EXYNOS-M2: .cpu exynos-m2
1610 ; EXYNOS-M2: .eabi_attribute 6, 14
1611 ; EXYNOS-M2: .eabi_attribute 7, 65
1612 ; EXYNOS-M2: .eabi_attribute 8, 1
1613 ; EXYNOS-M2: .eabi_attribute 9, 2
1614 ; EXYNOS-M2: .fpu crypto-neon-fp-armv8
1615 ; EXYNOS-M2: .eabi_attribute 12, 3
1616 ; EXYNOS-M2-NOT: .eabi_attribute 27
1617 ; EXYNOS-M2: .eabi_attribute 36, 1
1618 ; EXYNOS-M2: .eabi_attribute 42, 1
1619 ; EXYNOS-M2-NOT: .eabi_attribute 44
1620 ; EXYNOS-M2: .eabi_attribute 68, 3
1621 ; EXYNOS-M2-NOT: .eabi_attribute 19
1622 ;; We default to IEEE 754 compliance
1623 ; EXYNOS-M2: .eabi_attribute 20, 1
1624 ; EXYNOS-M2: .eabi_attribute 21, 1
1625 ; EXYNOS-M2-NOT: .eabi_attribute 22
1626 ; EXYNOS-M2: .eabi_attribute 23, 3
1627 ; EXYNOS-M2: .eabi_attribute 24, 1
1628 ; EXYNOS-M2: .eabi_attribute 25, 1
1629 ; EXYNOS-M2-NOT: .eabi_attribute 28
1630 ; EXYNOS-M2: .eabi_attribute 38, 1
1632 ; EXYNOS-M3: .cpu exynos-m3
1633 ; EXYNOS-M3: .eabi_attribute 6, 14
1634 ; EXYNOS-M3: .eabi_attribute 7, 65
1635 ; EXYNOS-M3: .eabi_attribute 8, 1
1636 ; EXYNOS-M3: .eabi_attribute 9, 2
1637 ; EXYNOS-M3: .fpu crypto-neon-fp-armv8
1638 ; EXYNOS-M3: .eabi_attribute 12, 3
1639 ; EXYNOS-M3-NOT: .eabi_attribute 27
1640 ; EXYNOS-M3: .eabi_attribute 36, 1
1641 ; EXYNOS-M3: .eabi_attribute 42, 1
1642 ; EXYNOS-M3-NOT: .eabi_attribute 44
1643 ; EXYNOS-M3: .eabi_attribute 68, 3
1644 ; EXYNOS-M3-NOT: .eabi_attribute 19
1645 ;; We default to IEEE 754 compliance
1646 ; EXYNOS-M3: .eabi_attribute 20, 1
1647 ; EXYNOS-M3: .eabi_attribute 21, 1
1648 ; EXYNOS-M3-NOT: .eabi_attribute 22
1649 ; EXYNOS-M3: .eabi_attribute 23, 3
1650 ; EXYNOS-M3: .eabi_attribute 24, 1
1651 ; EXYNOS-M3: .eabi_attribute 25, 1
1652 ; EXYNOS-M3-NOT: .eabi_attribute 28
1653 ; EXYNOS-M3: .eabi_attribute 38, 1
1655 ; EXYNOS-M4: .cpu exynos-m4
1656 ; EXYNOS-M4: .eabi_attribute 6, 14
1657 ; EXYNOS-M4: .eabi_attribute 7, 65
1658 ; EXYNOS-M4: .eabi_attribute 8, 1
1659 ; EXYNOS-M4: .eabi_attribute 9, 2
1660 ; EXYNOS-M4: .fpu crypto-neon-fp-armv8
1661 ; EXYNOS-M4: .eabi_attribute 12, 4
1662 ; EXYNOS-M4-NOT: .eabi_attribute 27
1663 ; EXYNOS-M4: .eabi_attribute 36, 1
1664 ; EXYNOS-M4: .eabi_attribute 42, 1
1665 ; EXYNOS-M4-NOT: .eabi_attribute 44
1666 ; EXYNOS-M4: .eabi_attribute 68, 3
1667 ; EXYNOS-M4-NOT: .eabi_attribute 19
1668 ;; We default to IEEE 754 compliance
1669 ; EXYNOS-M4: .eabi_attribute 20, 1
1670 ; EXYNOS-M4: .eabi_attribute 21, 1
1671 ; EXYNOS-M4-NOT: .eabi_attribute 22
1672 ; EXYNOS-M4: .eabi_attribute 23, 3
1673 ; EXYNOS-M4: .eabi_attribute 24, 1
1674 ; EXYNOS-M4: .eabi_attribute 25, 1
1675 ; EXYNOS-M4-NOT: .eabi_attribute 28
1676 ; EXYNOS-M4: .eabi_attribute 38, 1
1678 ; EXYNOS-M5: .cpu exynos-m5
1679 ; EXYNOS-M5: .eabi_attribute 6, 14
1680 ; EXYNOS-M5: .eabi_attribute 7, 65
1681 ; EXYNOS-M5: .eabi_attribute 8, 1
1682 ; EXYNOS-M5: .eabi_attribute 9, 2
1683 ; EXYNOS-M5: .fpu crypto-neon-fp-armv8
1684 ; EXYNOS-M5: .eabi_attribute 12, 4
1685 ; EXYNOS-M5-NOT: .eabi_attribute 27
1686 ; EXYNOS-M5: .eabi_attribute 36, 1
1687 ; EXYNOS-M5: .eabi_attribute 42, 1
1688 ; EXYNOS-M5-NOT: .eabi_attribute 44
1689 ; EXYNOS-M5: .eabi_attribute 68, 3
1690 ; EXYNOS-M5-NOT: .eabi_attribute 19
1691 ;; We default to IEEE 754 compliance
1692 ; EXYNOS-M5: .eabi_attribute 20, 1
1693 ; EXYNOS-M5: .eabi_attribute 21, 1
1694 ; EXYNOS-M5-NOT: .eabi_attribute 22
1695 ; EXYNOS-M5: .eabi_attribute 23, 3
1696 ; EXYNOS-M5: .eabi_attribute 24, 1
1697 ; EXYNOS-M5: .eabi_attribute 25, 1
1698 ; EXYNOS-M5-NOT: .eabi_attribute 28
1699 ; EXYNOS-M5: .eabi_attribute 38, 1
1701 ; GENERIC-FPU-VFPV3-FP16: .fpu vfpv3-fp16
1702 ; GENERIC-FPU-VFPV3-D16-FP16: .fpu vfpv3-d16-fp16
1703 ; GENERIC-FPU-VFPV3XD: .fpu vfpv3xd
1704 ; GENERIC-FPU-VFPV3XD-FP16: .fpu vfpv3xd-fp16
1705 ; GENERIC-FPU-NEON-FP16: .fpu neon-fp16
1707 ; GENERIC-ARMV8_1-A: .eabi_attribute 6, 14
1708 ; GENERIC-ARMV8_1-A: .eabi_attribute 7, 65
1709 ; GENERIC-ARMV8_1-A: .eabi_attribute 8, 1
1710 ; GENERIC-ARMV8_1-A: .eabi_attribute 9, 2
1711 ; GENERIC-ARMV8_1-A: .fpu crypto-neon-fp-armv8
1712 ; GENERIC-ARMV8_1-A: .eabi_attribute 12, 4
1713 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 27
1714 ; GENERIC-ARMV8_1-A: .eabi_attribute 36, 1
1715 ; GENERIC-ARMV8_1-A: .eabi_attribute 42, 1
1716 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 44
1717 ; GENERIC-ARMV8_1-A: .eabi_attribute 68, 3
1718 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 19
1719 ;; We default to IEEE 754 compliance
1720 ; GENERIC-ARMV8_1-A: .eabi_attribute 20, 1
1721 ; GENERIC-ARMV8_1-A: .eabi_attribute 21, 1
1722 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 22
1723 ; GENERIC-ARMV8_1-A: .eabi_attribute 23, 3
1724 ; GENERIC-ARMV8_1-A: .eabi_attribute 24, 1
1725 ; GENERIC-ARMV8_1-A: .eabi_attribute 25, 1
1726 ; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 28
1727 ; GENERIC-ARMV8_1-A: .eabi_attribute 38, 1
1729 ; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 19
1730 ;; GENERIC-ARMV8_1-A has the ARMv8 FP unit, which always flushes preserving sign.
1731 ; GENERIC-ARMV8_1-A-FAST: .eabi_attribute 20, 2
1732 ; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 21
1733 ; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 22
1734 ; GENERIC-ARMV8_1-A-FAST: .eabi_attribute 23, 1
1736 ; RELOC-PIC: .eabi_attribute 15, 1
1737 ; RELOC-PIC: .eabi_attribute 16, 1
1738 ; RELOC-PIC: .eabi_attribute 17, 2
1739 ; RELOC-OTHER: .eabi_attribute 17, 1
1740 ; RELOC-ROPI-NOT: .eabi_attribute 15,
1741 ; RELOC-ROPI: .eabi_attribute 16, 1
1742 ; RELOC-ROPI: .eabi_attribute 17, 1
1743 ; RELOC-RWPI: .eabi_attribute 15, 2
1744 ; RELOC-RWPI-NOT: .eabi_attribute 16,
1745 ; RELOC-RWPI: .eabi_attribute 17, 1
1746 ; RELOC-ROPI-RWPI: .eabi_attribute 15, 2
1747 ; RELOC-ROPI-RWPI: .eabi_attribute 16, 1
1748 ; RELOC-ROPI-RWPI: .eabi_attribute 17, 1
1750 ; PCS-R9-USE: .eabi_attribute 14, 0
1751 ; PCS-R9-RESERVE: .eabi_attribute 14, 3
1753 ; ARMv8R: .eabi_attribute 67, "2.09" @ Tag_conformance
1754 ; ARMv8R: .eabi_attribute 6, 15 @ Tag_CPU_arch
1755 ; ARMv8R: .eabi_attribute 7, 82 @ Tag_CPU_arch_profile
1756 ; ARMv8R: .eabi_attribute 8, 1 @ Tag_ARM_ISA_use
1757 ; ARMv8R: .eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
1758 ; ARMv8R-NOFPU-NOT: .fpu
1759 ; ARMv8R-NOFPU-NOT: .eabi_attribute 12
1760 ; ARMv8R-SP: .fpu fpv5-sp-d16
1761 ; ARMv8R-SP-NOT: .eabi_attribute 12
1762 ; ARMv8R-NEON: .fpu neon-fp-armv8
1763 ; ARMv8R-NEON: .eabi_attribute 12, 3 @ Tag_Advanced_SIMD_arch
1764 ; ARMv8R-NOFPU-NOT: .eabi_attribute 27
1765 ; ARMv8R-SP: .eabi_attribute 27, 1 @ Tag_ABI_HardFP_use
1766 ; ARMv8R-NEON-NOT: .eabi_attribute 27
1767 ; ARMv8R-NOFPU-NOT: .eabi_attribute 36
1768 ; ARMv8R-SP: .eabi_attribute 36, 1 @ Tag_FP_HP_extension
1769 ; ARMv8R-NEON: .eabi_attribute 36, 1 @ Tag_FP_HP_extension
1770 ; ARMv8R: .eabi_attribute 42, 1 @ Tag_MPextension_use
1771 ; ARMv8R: .eabi_attribute 68, 2 @ Tag_Virtualization_use
1772 ; ARMv8R: .eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
1773 ; ARMv8R: .eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use
1775 ; ARMv81M-MAIN: .eabi_attribute 6, 21 @ Tag_CPU_arch
1776 ; ARMv81M-MAIN-NOT: .eabi_attribute 48
1777 ; ARMv81M-MAIN-MVEINT: .eabi_attribute 6, 21 @ Tag_CPU_arch
1778 ; ARMv81M-MAIN-MVEINT: .eabi_attribute 48, 1 @ Tag_MVE_arch
1779 ; ARMv81M-MAIN-MVEFP: .eabi_attribute 6, 21 @ Tag_CPU_arch
1780 ; ARMv81M-MAIN-MVEFP: .eabi_attribute 48, 2 @ Tag_MVE_arch
1781 define i32 @f(i64 %z) {