1 // Test that different values of -mfpu pick correct ARM FPU target-feature(s). 2 3 // RUN: %clang -target arm-linux-eabi %s -### -o %t.o 2>&1 \ 4 // RUN: | FileCheck --check-prefix=CHECK-DEFAULT %s 5 // CHECK-DEFAULT-NOT: "-target-feature" "+soft-float" 6 // CHECK-DEFAULT-DAG: "-target-feature" "+soft-float-abi" 7 // CHECK-DEFAULT-NOT: "-target-feature" "+vfp2" 8 // CHECK-DEFAULT-NOT: "-target-feature" "+vfp3" 9 // CHECK-DEFAULT-NOT: "-target-feature" "+neon" 10 11 // RUN: %clang -target arm-linux-eabi -mfpu=fpa %s -### -o %t.o 2>&1 \ 12 // RUN: | FileCheck --check-prefix=CHECK-FPA %s 13 // RUN: %clang -target arm-linux-eabi -mfpu=fpe2 %s -### -o %t.o 2>&1 \ 14 // RUN: | FileCheck --check-prefix=CHECK-FPA %s 15 // RUN: %clang -target arm-linux-eabi -mfpu=fpe3 %s -### -o %t.o 2>&1 \ 16 // RUN: | FileCheck --check-prefix=CHECK-FPA %s 17 // RUN: %clang -target arm-linux-eabi -mfpu=maverick %s -### -o %t.o 2>&1 \ 18 // RUN: | FileCheck --check-prefix=CHECK-FPA %s 19 // CHECK-FPA: error: {{.*}} does not support '-mfpu={{fpa|fpe|fpe2|fpe3|maverick}}' 20 21 // RUN: %clang -target arm-linux-eabi -mfpu=vfp %s -### -o %t.o 2>&1 \ 22 // RUN: | FileCheck --check-prefix=CHECK-VFP %s 23 // RUN: %clang -target arm-linux-eabi -mfpu=vfp %s -mfloat-abi=soft -### -o %t.o 2>&1 \ 24 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-2 %s 25 // CHECK-VFP-NOT: "-target-feature" "+soft-float" 26 // CHECK-VFP-DAG: "-target-feature" "+soft-float-abi" 27 // CHECK-VFP-DAG: "-target-feature" "+vfp2" 28 // CHECK-VFP-DAG: "-target-feature" "-vfp3d16sp" 29 // CHECK-VFP-DAG: "-target-feature" "-vfp4d16sp" 30 // CHECK-VFP-DAG: "-target-feature" "-fp-armv8d16sp" 31 // CHECK-VFP-DAG: "-target-feature" "-neon" 32 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "+soft-float-abi" 33 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp3d16sp" 34 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp4d16sp" 35 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-fp-armv8d16sp" 36 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-neon" 37 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-crypto" 38 // CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp2sp" 39 40 // RUN: %clang -target arm-linux-eabi -mfpu=vfp3 %s -### -o %t.o 2>&1 \ 41 // RUN: | FileCheck --check-prefix=CHECK-VFP3 %s 42 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3 %s -### -o %t.o 2>&1 \ 43 // RUN: | FileCheck --check-prefix=CHECK-VFP3 %s 44 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 45 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s 46 // CHECK-VFP3-NOT: "-target-feature" "+soft-float" 47 // CHECK-VFP3-DAG: "-target-feature" "+soft-float-abi" 48 // CHECK-VFP3-DAG: "-target-feature" "+vfp3" 49 // CHECK-VFP3-DAG: "-target-feature" "-vfp4d16sp" 50 // CHECK-VFP3-DAG: "-target-feature" "-fp-armv8d16sp" 51 // CHECK-VFP3-DAG: "-target-feature" "-neon" 52 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "+soft-float-abi" 53 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp2sp" 54 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp4d16sp" 55 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-fp-armv8d16sp" 56 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-neon" 57 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-crypto" 58 // CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp3d16sp" 59 60 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-fp16 %s -### -o %t.o 2>&1 \ 61 // RUN: | FileCheck --check-prefix=CHECK-VFP3-FP16 %s 62 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 63 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s 64 // CHECK-VFP3-FP16-NOT: "-target-feature" "+soft-float" 65 // CHECK-VFP3-FP16-DAG: "-target-feature" "+soft-float-abi" 66 // CHECK-VFP3-FP16-DAG: "-target-feature" "+vfp3" 67 // CHECK-VFP3-FP16-DAG: "-target-feature" "+fp16" 68 // CHECK-VFP3-FP16-DAG: "-target-feature" "-vfp4d16sp" 69 // CHECK-VFP3-FP16-DAG: "-target-feature" "-fp-armv8d16sp" 70 // CHECK-VFP3-FP16-DAG: "-target-feature" "+fp64" 71 // CHECK-VFP3-FP16-DAG: "-target-feature" "+d32" 72 // CHECK-VFP3-FP16-DAG: "-target-feature" "-neon" 73 // CHECK-VFP3-FP16-DAG: "-target-feature" "-crypto" 74 75 // RUN: %clang -target arm-linux-eabi -mfpu=vfp3-d16 %s -### -o %t.o 2>&1 \ 76 // RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s 77 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16 %s -### -o %t.o 2>&1 \ 78 // RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s 79 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 80 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s 81 // CHECK-VFP3-D16-NOT: "-target-feature" "+soft-float" 82 // CHECK-VFP3-D16-DAG: "-target-feature" "+soft-float-abi" 83 // CHECK-VFP3-D16-DAG: "-target-feature" "+vfp3d16" 84 // CHECK-VFP3-D16-DAG: "-target-feature" "-vfp4d16sp" 85 // CHECK-VFP3-D16-DAG: "-target-feature" "-fp-armv8d16sp" 86 // CHECK-VFP3-D16-DAG: "-target-feature" "+fp64" 87 // CHECK-VFP3-D16-DAG: "-target-feature" "-d32" 88 // CHECK-VFP3-D16-DAG: "-target-feature" "-neon" 89 90 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16-fp16 %s -### -o %t.o 2>&1 \ 91 // RUN: | FileCheck --check-prefix=CHECK-VFP3-D16-FP16 %s 92 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 93 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s 94 // CHECK-VFP3-D16-FP16-NOT: "-target-feature" "+soft-float" 95 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+soft-float-abi" 96 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+vfp3d16" 97 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+fp16" 98 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-vfp4d16sp" 99 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-fp-armv8d16sp" 100 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+fp64" 101 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-d32" 102 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-neon" 103 // CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-crypto" 104 105 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd %s -### -o %t.o 2>&1 \ 106 // RUN: | FileCheck --check-prefix=CHECK-VFP3XD %s 107 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 108 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s 109 // CHECK-VFP3XD-NOT: "-target-feature" "+soft-float" 110 // CHECK-VFP3XD-DAG: "-target-feature" "+soft-float-abi" 111 // CHECK-VFP3XD-DAG: "-target-feature" "-fp64" 112 // CHECK-VFP3XD-DAG: "-target-feature" "-d32" 113 // CHECK-VFP3XD-DAG: "-target-feature" "+vfp3d16sp" 114 // CHECK-VFP3XD-DAG: "-target-feature" "-fp16" 115 // CHECK-VFP3XD-DAG: "-target-feature" "-vfp4d16sp" 116 // CHECK-VFP3XD-DAG: "-target-feature" "-fp-armv8d16sp" 117 // CHECK-VFP3XD-DAG: "-target-feature" "-neon" 118 // CHECK-VFP3XD-DAG: "-target-feature" "-crypto" 119 120 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd-fp16 %s -### -o %t.o 2>&1 \ 121 // RUN: | FileCheck --check-prefix=CHECK-VFP3XD-FP16 %s 122 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 123 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s 124 // CHECK-VFP3XD-FP16-NOT: "-target-feature" "+soft-float" 125 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "+soft-float-abi" 126 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "+vfp3d16sp" 127 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "+fp16" 128 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-vfp4d16sp" 129 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-fp-armv8d16sp" 130 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-fp64" 131 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-d32" 132 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-neon" 133 // CHECK-VFP3XD-FP16-DAG: "-target-feature" "-crypto" 134 135 // RUN: %clang -target arm-linux-eabi -mfpu=vfp4 %s -### -o %t.o 2>&1 \ 136 // RUN: | FileCheck --check-prefix=CHECK-VFP4 %s 137 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4 %s -### -o %t.o 2>&1 \ 138 // RUN: | FileCheck --check-prefix=CHECK-VFP4 %s 139 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 140 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s 141 // CHECK-VFP4-NOT: "-target-feature" "+soft-float" 142 // CHECK-VFP4-DAG: "-target-feature" "+soft-float-abi" 143 // CHECK-VFP4-DAG: "-target-feature" "+vfp4" 144 // CHECK-VFP4-DAG: "-target-feature" "-fp-armv8d16sp" 145 // CHECK-VFP4-DAG: "-target-feature" "-neon" 146 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "+soft-float-abi" 147 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp2sp" 148 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp3d16sp" 149 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-fp-armv8d16sp" 150 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-neon" 151 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-crypto" 152 // CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp4d16sp" 153 154 // RUN: %clang -target arm-linux-eabi -mfpu=vfp4-d16 %s -### -o %t.o 2>&1 \ 155 // RUN: | FileCheck --check-prefix=CHECK-VFP4-D16 %s 156 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4-d16 %s -### -o %t.o 2>&1 \ 157 // RUN: | FileCheck --check-prefix=CHECK-VFP4-D16 %s 158 // RUN: %clang -target arm-linux-eabi -mfpu=vfpv4-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 159 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s 160 // CHECK-VFP4-D16-NOT: "-target-feature" "+soft-float" 161 // CHECK-VFP4-D16-DAG: "-target-feature" "+soft-float-abi" 162 // CHECK-VFP4-D16-DAG: "-target-feature" "+vfp4d16" 163 // CHECK-VFP4-D16-DAG: "-target-feature" "-fp-armv8d16sp" 164 // CHECK-VFP4-D16-DAG: "-target-feature" "+fp64" 165 // CHECK-VFP4-D16-DAG: "-target-feature" "-d32" 166 // CHECK-VFP4-D16-DAG: "-target-feature" "-neon" 167 168 // RUN: %clang -target arm-linux-eabi -mfpu=fp4-sp-d16 %s -### -o %t.o 2>&1 \ 169 // RUN: | FileCheck --check-prefix=CHECK-FP4-SP-D16 %s 170 // RUN: %clang -target arm-linux-eabi -mfpu=fpv4-sp-d16 %s -### -o %t.o 2>&1 \ 171 // RUN: | FileCheck --check-prefix=CHECK-FP4-SP-D16 %s 172 // RUN: %clang -target arm-linux-eabi -mfpu=fpv4-sp-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 173 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s 174 // CHECK-FP4-SP-D16-NOT: "-target-feature" "+soft-float" 175 // CHECK-FP4-SP-D16-DAG: "-target-feature" "+soft-float-abi" 176 // CHECK-FP4-SP-D16-DAG: "-target-feature" "+vfp4d16sp" 177 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-fp-armv8d16sp" 178 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-fp64" 179 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-d32" 180 // CHECK-FP4-SP-D16-DAG: "-target-feature" "-neon" 181 182 // RUN: %clang -target arm-linux-eabi -mfpu=fp5-sp-d16 %s -### -o %t.o 2>&1 \ 183 // RUN: | FileCheck --check-prefix=CHECK-FP5-SP-D16 %s 184 // RUN: %clang -target arm-linux-eabi -mfpu=fpv5-sp-d16 %s -### -o %t.o 2>&1 \ 185 // RUN: | FileCheck --check-prefix=CHECK-FP5-SP-D16 %s 186 // RUN: %clang -target arm-linux-eabi -mfpu=fp-armv8-sp-d16 -mfloat-abi=soft %s -### -o %t.o \ 187 // RUN: 2>&1 | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 188 // CHECK-FP5-SP-D16-NOT: "-target-feature" "+soft-float" 189 // CHECK-FP5-SP-D16-DAG: "-target-feature" "+soft-float-abi" 190 // CHECK-FP5-SP-D16-DAG: "-target-feature" "+fp-armv8d16sp" 191 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-neon" 192 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-fp64" 193 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-d32" 194 // CHECK-FP5-SP-D16-DAG: "-target-feature" "-crypto" 195 196 // RUN: %clang -target arm-linux-eabi -mfpu=fp5-dp-d16 %s -### -o %t.o 2>&1 \ 197 // RUN: | FileCheck --check-prefix=CHECK-FP5-DP-D16 %s 198 // RUN: %clang -target arm-linux-eabi -mfpu=fpv5-dp-d16 %s -### -o %t.o 2>&1 \ 199 // RUN: | FileCheck --check-prefix=CHECK-FP5-DP-D16 %s 200 // RUN: %clang -target arm-linux-eabi -mfpu=fpv5-dp-d16 %s -mfloat-abi=soft -### -o %t.o 2>&1 \ 201 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-5 %s 202 // CHECK-FP5-DP-D16-NOT: "-target-feature" "+soft-float" 203 // CHECK-FP5-DP-D16-DAG: "-target-feature" "+soft-float-abi" 204 // CHECK-FP5-DP-D16-DAG: "-target-feature" "+fp-armv8d16" 205 // CHECK-FP5-DP-D16-DAG: "-target-feature" "+fp64" 206 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-d32" 207 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-neon" 208 // CHECK-FP5-DP-D16-DAG: "-target-feature" "-crypto" 209 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "+soft-float" 210 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "+soft-float-abi" 211 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp2sp" 212 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp3d16sp" 213 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp4d16sp" 214 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-neon" 215 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-crypto" 216 // CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-fp-armv8d16sp" 217 218 // RUN: %clang -target arm-linux-eabi -mfpu=neon %s -### -o %t.o 2>&1 \ 219 // RUN: | FileCheck --check-prefix=CHECK-NEON %s 220 // RUN: %clang -target arm-linux-eabi -mfpu=neon -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 221 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s 222 // CHECK-NEON-NOT: "-target-feature" "+soft-float" 223 // CHECK-NEON-DAG: "-target-feature" "+neon" 224 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "+soft-float-abi" 225 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp2sp" 226 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp4d16sp" 227 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-fp-armv8d16sp" 228 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-crypto" 229 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp3d16sp" 230 // CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-neon" 231 232 // RUN: %clang -target arm-linux-eabi -mfpu=neon-fp16 %s -### -o %t.o 2>&1 \ 233 // RUN: | FileCheck --check-prefix=CHECK-NEON-FP16 %s 234 // RUN: %clang -target arm-linux-eabi -mfpu=neon-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 235 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s 236 // CHECK-NEON-FP16-NOT: "-target-feature" "+soft-float" 237 // CHECK-NEON-FP16-DAG: "-target-feature" "+soft-float-abi" 238 // CHECK-NEON-FP16-DAG: "-target-feature" "+vfp3" 239 // CHECK-NEON-FP16-DAG: "-target-feature" "+fp16" 240 // CHECK-NEON-FP16-DAG: "-target-feature" "-vfp4d16sp" 241 // CHECK-NEON-FP16-DAG: "-target-feature" "-fp-armv8d16sp" 242 // CHECK-NEON-FP16-DAG: "-target-feature" "+fp64" 243 // CHECK-NEON-FP16-DAG: "-target-feature" "+d32" 244 // CHECK-NEON-FP16-DAG: "-target-feature" "+neon" 245 // CHECK-NEON-FP16-DAG: "-target-feature" "-crypto" 246 247 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv3 %s -### -o %t.o 2>&1 \ 248 // RUN: | FileCheck --check-prefix=CHECK-NEON-VFPV3 %s 249 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv3 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 250 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s 251 // CHECK-NEON-VFPV3-NOT: "-target-feature" "+soft-float" 252 // CHECK-NEON-VFPV3-DAG: "-target-feature" "+soft-float-abi" 253 // CHECK-NEON-VFPV3-DAG: "-target-feature" "+vfp3" 254 // CHECK-NEON-VFPV3-DAG: "-target-feature" "+neon" 255 256 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv4 %s -### -o %t.o 2>&1 \ 257 // RUN: | FileCheck --check-prefix=CHECK-NEON-VFPV4 %s 258 // RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv4 -mfloat-abi=soft %s -### -o %t.o 2>&1 \ 259 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-7 %s 260 // CHECK-NEON-VFPV4-NOT: "-target-feature" "+soft-float" 261 // CHECK-NEON-VFPV4-DAG: "-target-feature" "+soft-float-abi" 262 // CHECK-NEON-VFPV4-DAG: "-target-feature" "+vfp4" 263 // CHECK-NEON-VFPV4-DAG: "-target-feature" "+neon" 264 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "+soft-float-abi" 265 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp2sp" 266 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp3d16sp" 267 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-fp-armv8d16sp" 268 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-crypto" 269 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp4d16sp" 270 // CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-neon" 271 272 // RUN: %clang -target arm-linux-eabi -msoft-float %s -### -o %t.o 2>&1 \ 273 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 274 // RUN: %clang -target armv8 %s -### 2>&1 \ 275 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 276 // RUN: %clang -target armv8a -mfpu=neon %s -### -c 2>&1 \ 277 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-8 %s 278 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "+soft-float-abi" 279 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp2sp" 280 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp4d16sp" 281 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-fp-armv8d16sp" 282 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-crypto" 283 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp3d16sp" 284 // CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-neon" 285 286 // RUN: %clang -target armv8 -mfpu=fp-armv8 %s -### 2>&1 \ 287 // RUN: | FileCheck --check-prefix=CHECK-ARMV8-SOFT-FLOAT %s 288 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "+soft-float" 289 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "+soft-float-abi" 290 // NOT-CHECK-ARMV8-SOFT-FLOAT: "-target-feature" "+fp-armv8" 291 // CHECK-ARMV9-SOFT-FLOAT-DAG: "-target-feature" "-neon" 292 // CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "-crypto" 293 294 // RUN: %clang -target armv8-linux-gnueabihf -mfpu=fp-armv8 %s -### 2>&1 \ 295 // RUN: | FileCheck --check-prefix=CHECK-FP-ARMV8 %s 296 // CHECK-FP-ARMV8-NOT: "-target-feature" "+soft-float" 297 // CHECK-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi" 298 // CHECK-FP-ARMV8-DAG: "-target-feature" "+fp-armv8" 299 // CHECK-FP-ARMV8-DAG: "-target-feature" "-neon" 300 // CHECK-FP-ARMV8-DAG: "-target-feature" "-crypto" 301 302 // RUN: %clang -target armv8-linux-gnueabihf -mfpu=neon-fp-armv8 %s -### 2>&1 \ 303 // RUN: | FileCheck --check-prefix=CHECK-NEON-FP-ARMV8 %s 304 // CHECK-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float" 305 // CHECK-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi" 306 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "+fp-armv8" 307 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "+neon" 308 // CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "-crypto" 309 310 // RUN: %clang -target armv8-linux-gnueabihf -mfpu=crypto-neon-fp-armv8 %s -### 2>&1 \ 311 // RUN: | FileCheck --check-prefix=CHECK-CRYPTO-NEON-FP-ARMV8 %s 312 // CHECK-CRYPTO-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float" 313 // CHECK-CRYPTO-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi" 314 // CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+fp-armv8" 315 // CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+crypto" 316 317 // RUN: %clang -target armv8-linux-gnueabi -mfpu=none %s -### 2>&1 \ 318 // RUN: | FileCheck --check-prefix=CHECK-NO-FP %s 319 // CHECK-NO-FP-NOT: "-target-feature" "+soft-float" 320 // CHECK-NO-FP-DAG: "-target-feature" "+soft-float-abi" 321 // CHECK-NO-FP-DAG: "-target-feature" "-fpregs" 322 // CHECK-NO-FP-DAG: "-target-feature" "-vfp2sp" 323 // CHECK-NO-FP-DAG: "-target-feature" "-vfp3d16sp" 324 // CHECK-NO-FP-DAG: "-target-feature" "-vfp4d16sp" 325 // CHECK-NO-FP-DAG: "-target-feature" "-fp-armv8d16sp" 326 // CHECK-NO-FP-DAG: "-target-feature" "-fp64" 327 // CHECK-NO-FP-DAG: "-target-feature" "-d32" 328 // CHECK-NO-FP-DAG: "-target-feature" "-neon" 329 // CHECK-NO-FP-DAG: "-target-feature" "-crypto" 330 331 // RUN: %clang -target arm-linux-gnueabihf %s -### 2>&1 \ 332 // RUN: | FileCheck --check-prefix=CHECK-HF %s 333 // RUN: %clang -target arm-linux-musleabihf %s -### 2>&1 \ 334 // RUN: | FileCheck --check-prefix=CHECK-HF %s 335 // CHECK-HF-NOT: "-target-feature" "+soft-float" 336 // CHECK-HF-NOT: "-target-feature" "+soft-float-abi" 337 // CHECK-HF-DAG: "-target-cpu" "arm1176jzf-s" 338 339 // RUN: %clang -target armv7-apple-darwin -x assembler %s -### -c 2>&1 \ 340 // RUN: | FileCheck --check-prefix=ASM %s 341 // ASM-NOT: -target-feature 342 343 // RUN: %clang -target armv8-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \ 344 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 345 // RUN: %clang -target armv7-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \ 346 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 347 // RUN: %clang -target armv6-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \ 348 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 349 // RUN: %clang -target armv5-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \ 350 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 351 // RUN: %clang -target armv4-linux-gnueabi -mfloat-abi=soft -mfpu=none %s -### -c 2>&1 \ 352 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 353 // RUN: %clang -target armv8-linux-gnueabi -msoft-float -mfpu=none %s -### -c 2>&1 \ 354 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 355 // RUN: %clang -target armv8-linux-gnueabi -mfloat-abi=soft %s -### -c 2>&1 \ 356 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 357 // RUN: %clang -target armv8-linux-gnueabi -msoft-float %s -### -c 2>&1 \ 358 // RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s 359 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float" 360 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float-abi" 361 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp2sp" 362 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp3d16sp" 363 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp4d16sp" 364 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fp-armv8d16sp" 365 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-neon" 366 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-crypto" 367 // CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fpregs" 368 369 // RUN: %clang -target arm-linux-androideabi21 %s -### -c 2>&1 \ 370 // RUN: | FileCheck --check-prefix=CHECK-ARM5-ANDROID-FP-DEFAULT %s 371 // CHECK-ARM5-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float" 372 // CHECK-ARM5-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi" 373 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+d32" 374 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp3" 375 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp4" 376 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8" 377 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+neon" 378 // CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+crypto" 379 380 // RUN: %clang -target armv7-linux-androideabi21 %s -### -c 2>&1 \ 381 // RUN: | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-DEFAULT %s 382 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+soft-float" 383 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi" 384 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+vfp3" 385 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "-vfp4" 386 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "-fp-armv8" 387 // CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+neon" 388 // CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+crypto" 389 390 // RUN: %clang -target armv7-linux-androideabi21 %s -mfpu=vfp3-d16 -### -c 2>&1 \ 391 // RUN: | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-D16 %s 392 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+soft-float" 393 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+soft-float-abi" 394 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "-d32" 395 // CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+vfp3d16" 396 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+vfp4" 397 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+fp-armv8" 398 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+neon" 399 // CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+crypto" 400 401 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp+fp.dp -mfloat-abi=soft -### -c 2>&1 \ 402 // RUN: | FileCheck --check-prefix=CHECK-SOFTFLOATABI-INHIBITS-MVE %s 403 // CHECK-SOFTFLOATABI-INHIBITS-MVE-NOT: "-target-feature" "+mve" 404 // CHECK-SOFTFLOATABI-INHIBITS-MVE-DAG: "-target-feature" "-mve" 405 // CHECK-SOFTFLOATABI-INHIBITS-MVE-DAG: "-target-feature" "-mve.fp" 406 407 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp -mfpu=none -### -c 2>&1 \ 408 // RUN: | FileCheck --check-prefix=CHECK-MVEFP-FPUNONE %s 409 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp2sp" 410 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp3d16sp" 411 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-vfp4d16sp" 412 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-fp-armv8d16sp" 413 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-fp64" 414 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-d32" 415 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-neon" 416 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-crypto" 417 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "+mve" 418 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "+dsp" 419 // CHECK-MVEFP-FPUNONE-DAG: "-target-feature" "-mve.fp" 420 // CHECK-MVEFP-FPUNONE-NOT: "-target-feature" "-fpregs" 421 422 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve.fp+nomve -mfpu=none -### -c 2>&1 \ 423 // RUN: | FileCheck --check-prefix=CHECK-MVEFP-NOMVE-FPUNONE %s 424 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp2sp" 425 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp3d16sp" 426 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-vfp4d16sp" 427 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fp-armv8d16sp" 428 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fp64" 429 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-d32" 430 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-neon" 431 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-crypto" 432 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "+dsp" 433 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-mve" 434 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-mve.fp" 435 // CHECK-MVEFP-NOMVE-FPUNONE-DAG: "-target-feature" "-fpregs" 436 437 // RUN: %clang -target arm-none-none-eabi %s -march=armv8.1-m.main+mve -mfpu=none -### -c 2>&1 \ 438 // RUN: | FileCheck --check-prefix=CHECK-MVEI-FPUNONE %s 439 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "-mve.fp" 440 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "+mve" 441 // CHECK-MVEI-FPUNONE-DAG: "-target-feature" "+dsp" 442 // CHECK-MVEI-FPUNONE-NOT: "-target-feature" "-fpregs" 443