1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=i686 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC 3 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM 4 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM 5 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 6 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 7 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL 8 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL 9 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE 10 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX 11 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2 12 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1 13 14 define void @test_f2xm1() optsize { 15 ; GENERIC-LABEL: test_f2xm1: 16 ; GENERIC: # %bb.0: 17 ; GENERIC-NEXT: #APP 18 ; GENERIC-NEXT: f2xm1 19 ; GENERIC-NEXT: #NO_APP 20 ; GENERIC-NEXT: retl 21 ; 22 ; ATOM-LABEL: test_f2xm1: 23 ; ATOM: # %bb.0: 24 ; ATOM-NEXT: #APP 25 ; ATOM-NEXT: f2xm1 # sched: [99:49.50] 26 ; ATOM-NEXT: #NO_APP 27 ; ATOM-NEXT: retl # sched: [79:39.50] 28 ; 29 ; SLM-LABEL: test_f2xm1: 30 ; SLM: # %bb.0: 31 ; SLM-NEXT: #APP 32 ; SLM-NEXT: f2xm1 # sched: [100:1.00] 33 ; SLM-NEXT: #NO_APP 34 ; SLM-NEXT: retl # sched: [4:1.00] 35 ; 36 ; SANDY-LABEL: test_f2xm1: 37 ; SANDY: # %bb.0: 38 ; SANDY-NEXT: #APP 39 ; SANDY-NEXT: f2xm1 # sched: [100:0.33] 40 ; SANDY-NEXT: #NO_APP 41 ; SANDY-NEXT: retl # sched: [6:1.00] 42 ; 43 ; HASWELL-LABEL: test_f2xm1: 44 ; HASWELL: # %bb.0: 45 ; HASWELL-NEXT: #APP 46 ; HASWELL-NEXT: f2xm1 # sched: [100:0.25] 47 ; HASWELL-NEXT: #NO_APP 48 ; HASWELL-NEXT: retl # sched: [7:1.00] 49 ; 50 ; BROADWELL-LABEL: test_f2xm1: 51 ; BROADWELL: # %bb.0: 52 ; BROADWELL-NEXT: #APP 53 ; BROADWELL-NEXT: f2xm1 # sched: [100:0.25] 54 ; BROADWELL-NEXT: #NO_APP 55 ; BROADWELL-NEXT: retl # sched: [6:0.50] 56 ; 57 ; SKYLAKE-LABEL: test_f2xm1: 58 ; SKYLAKE: # %bb.0: 59 ; SKYLAKE-NEXT: #APP 60 ; SKYLAKE-NEXT: f2xm1 # sched: [100:0.25] 61 ; SKYLAKE-NEXT: #NO_APP 62 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 63 ; 64 ; SKX-LABEL: test_f2xm1: 65 ; SKX: # %bb.0: 66 ; SKX-NEXT: #APP 67 ; SKX-NEXT: f2xm1 # sched: [100:0.25] 68 ; SKX-NEXT: #NO_APP 69 ; SKX-NEXT: retl # sched: [6:0.50] 70 ; 71 ; BTVER2-LABEL: test_f2xm1: 72 ; BTVER2: # %bb.0: 73 ; BTVER2-NEXT: #APP 74 ; BTVER2-NEXT: f2xm1 # sched: [100:0.50] 75 ; BTVER2-NEXT: #NO_APP 76 ; BTVER2-NEXT: retl # sched: [4:1.00] 77 ; 78 ; ZNVER1-LABEL: test_f2xm1: 79 ; ZNVER1: # %bb.0: 80 ; ZNVER1-NEXT: #APP 81 ; ZNVER1-NEXT: f2xm1 # sched: [100:0.25] 82 ; ZNVER1-NEXT: #NO_APP 83 ; ZNVER1-NEXT: retl # sched: [1:0.50] 84 tail call void asm sideeffect "f2xm1", ""() nounwind 85 ret void 86 } 87 88 define void @test_fabs() optsize { 89 ; GENERIC-LABEL: test_fabs: 90 ; GENERIC: # %bb.0: 91 ; GENERIC-NEXT: #APP 92 ; GENERIC-NEXT: fabs 93 ; GENERIC-NEXT: #NO_APP 94 ; GENERIC-NEXT: retl 95 ; 96 ; ATOM-LABEL: test_fabs: 97 ; ATOM: # %bb.0: 98 ; ATOM-NEXT: #APP 99 ; ATOM-NEXT: fabs # sched: [1:1.00] 100 ; ATOM-NEXT: #NO_APP 101 ; ATOM-NEXT: retl # sched: [79:39.50] 102 ; 103 ; SLM-LABEL: test_fabs: 104 ; SLM: # %bb.0: 105 ; SLM-NEXT: #APP 106 ; SLM-NEXT: fabs # sched: [1:0.50] 107 ; SLM-NEXT: #NO_APP 108 ; SLM-NEXT: retl # sched: [4:1.00] 109 ; 110 ; SANDY-LABEL: test_fabs: 111 ; SANDY: # %bb.0: 112 ; SANDY-NEXT: #APP 113 ; SANDY-NEXT: fabs # sched: [1:1.00] 114 ; SANDY-NEXT: #NO_APP 115 ; SANDY-NEXT: retl # sched: [6:1.00] 116 ; 117 ; HASWELL-LABEL: test_fabs: 118 ; HASWELL: # %bb.0: 119 ; HASWELL-NEXT: #APP 120 ; HASWELL-NEXT: fabs # sched: [1:1.00] 121 ; HASWELL-NEXT: #NO_APP 122 ; HASWELL-NEXT: retl # sched: [7:1.00] 123 ; 124 ; BROADWELL-LABEL: test_fabs: 125 ; BROADWELL: # %bb.0: 126 ; BROADWELL-NEXT: #APP 127 ; BROADWELL-NEXT: fabs # sched: [1:1.00] 128 ; BROADWELL-NEXT: #NO_APP 129 ; BROADWELL-NEXT: retl # sched: [6:0.50] 130 ; 131 ; SKYLAKE-LABEL: test_fabs: 132 ; SKYLAKE: # %bb.0: 133 ; SKYLAKE-NEXT: #APP 134 ; SKYLAKE-NEXT: fabs # sched: [1:1.00] 135 ; SKYLAKE-NEXT: #NO_APP 136 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 137 ; 138 ; SKX-LABEL: test_fabs: 139 ; SKX: # %bb.0: 140 ; SKX-NEXT: #APP 141 ; SKX-NEXT: fabs # sched: [1:1.00] 142 ; SKX-NEXT: #NO_APP 143 ; SKX-NEXT: retl # sched: [6:0.50] 144 ; 145 ; BTVER2-LABEL: test_fabs: 146 ; BTVER2: # %bb.0: 147 ; BTVER2-NEXT: #APP 148 ; BTVER2-NEXT: fabs # sched: [2:1.00] 149 ; BTVER2-NEXT: #NO_APP 150 ; BTVER2-NEXT: retl # sched: [4:1.00] 151 ; 152 ; ZNVER1-LABEL: test_fabs: 153 ; ZNVER1: # %bb.0: 154 ; ZNVER1-NEXT: #APP 155 ; ZNVER1-NEXT: fabs # sched: [2:1.00] 156 ; ZNVER1-NEXT: #NO_APP 157 ; ZNVER1-NEXT: retl # sched: [1:0.50] 158 tail call void asm sideeffect "fabs", ""() nounwind 159 ret void 160 } 161 162 define void @test_fadd(float *%a0, double *%a1) optsize { 163 ; GENERIC-LABEL: test_fadd: 164 ; GENERIC: # %bb.0: 165 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 166 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 167 ; GENERIC-NEXT: #APP 168 ; GENERIC-NEXT: fadd %st(0), %st(1) 169 ; GENERIC-NEXT: fadd %st(2) 170 ; GENERIC-NEXT: fadds (%ecx) 171 ; GENERIC-NEXT: faddl (%eax) 172 ; GENERIC-NEXT: #NO_APP 173 ; GENERIC-NEXT: retl 174 ; 175 ; ATOM-LABEL: test_fadd: 176 ; ATOM: # %bb.0: 177 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 178 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 179 ; ATOM-NEXT: #APP 180 ; ATOM-NEXT: fadd %st(0), %st(1) # sched: [5:5.00] 181 ; ATOM-NEXT: fadd %st(2) # sched: [5:5.00] 182 ; ATOM-NEXT: fadds (%ecx) # sched: [5:5.00] 183 ; ATOM-NEXT: faddl (%eax) # sched: [5:5.00] 184 ; ATOM-NEXT: #NO_APP 185 ; ATOM-NEXT: retl # sched: [79:39.50] 186 ; 187 ; SLM-LABEL: test_fadd: 188 ; SLM: # %bb.0: 189 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 190 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 191 ; SLM-NEXT: #APP 192 ; SLM-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 193 ; SLM-NEXT: fadd %st(2) # sched: [3:1.00] 194 ; SLM-NEXT: fadds (%ecx) # sched: [6:1.00] 195 ; SLM-NEXT: faddl (%eax) # sched: [6:1.00] 196 ; SLM-NEXT: #NO_APP 197 ; SLM-NEXT: retl # sched: [4:1.00] 198 ; 199 ; SANDY-LABEL: test_fadd: 200 ; SANDY: # %bb.0: 201 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 202 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 203 ; SANDY-NEXT: #APP 204 ; SANDY-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 205 ; SANDY-NEXT: fadd %st(2) # sched: [3:1.00] 206 ; SANDY-NEXT: fadds (%ecx) # sched: [10:1.00] 207 ; SANDY-NEXT: faddl (%eax) # sched: [10:1.00] 208 ; SANDY-NEXT: #NO_APP 209 ; SANDY-NEXT: retl # sched: [6:1.00] 210 ; 211 ; HASWELL-LABEL: test_fadd: 212 ; HASWELL: # %bb.0: 213 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 214 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 215 ; HASWELL-NEXT: #APP 216 ; HASWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 217 ; HASWELL-NEXT: fadd %st(2) # sched: [3:1.00] 218 ; HASWELL-NEXT: fadds (%ecx) # sched: [10:1.00] 219 ; HASWELL-NEXT: faddl (%eax) # sched: [10:1.00] 220 ; HASWELL-NEXT: #NO_APP 221 ; HASWELL-NEXT: retl # sched: [7:1.00] 222 ; 223 ; BROADWELL-LABEL: test_fadd: 224 ; BROADWELL: # %bb.0: 225 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 226 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 227 ; BROADWELL-NEXT: #APP 228 ; BROADWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 229 ; BROADWELL-NEXT: fadd %st(2) # sched: [3:1.00] 230 ; BROADWELL-NEXT: fadds (%ecx) # sched: [9:1.00] 231 ; BROADWELL-NEXT: faddl (%eax) # sched: [9:1.00] 232 ; BROADWELL-NEXT: #NO_APP 233 ; BROADWELL-NEXT: retl # sched: [6:0.50] 234 ; 235 ; SKYLAKE-LABEL: test_fadd: 236 ; SKYLAKE: # %bb.0: 237 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 238 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 239 ; SKYLAKE-NEXT: #APP 240 ; SKYLAKE-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 241 ; SKYLAKE-NEXT: fadd %st(2) # sched: [3:1.00] 242 ; SKYLAKE-NEXT: fadds (%ecx) # sched: [10:1.00] 243 ; SKYLAKE-NEXT: faddl (%eax) # sched: [10:1.00] 244 ; SKYLAKE-NEXT: #NO_APP 245 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 246 ; 247 ; SKX-LABEL: test_fadd: 248 ; SKX: # %bb.0: 249 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 250 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 251 ; SKX-NEXT: #APP 252 ; SKX-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 253 ; SKX-NEXT: fadd %st(2) # sched: [3:1.00] 254 ; SKX-NEXT: fadds (%ecx) # sched: [10:1.00] 255 ; SKX-NEXT: faddl (%eax) # sched: [10:1.00] 256 ; SKX-NEXT: #NO_APP 257 ; SKX-NEXT: retl # sched: [6:0.50] 258 ; 259 ; BTVER2-LABEL: test_fadd: 260 ; BTVER2: # %bb.0: 261 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 262 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 263 ; BTVER2-NEXT: #APP 264 ; BTVER2-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 265 ; BTVER2-NEXT: fadd %st(2) # sched: [3:1.00] 266 ; BTVER2-NEXT: fadds (%ecx) # sched: [8:1.00] 267 ; BTVER2-NEXT: faddl (%eax) # sched: [8:1.00] 268 ; BTVER2-NEXT: #NO_APP 269 ; BTVER2-NEXT: retl # sched: [4:1.00] 270 ; 271 ; ZNVER1-LABEL: test_fadd: 272 ; ZNVER1: # %bb.0: 273 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 274 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 275 ; ZNVER1-NEXT: #APP 276 ; ZNVER1-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 277 ; ZNVER1-NEXT: fadd %st(2) # sched: [3:1.00] 278 ; ZNVER1-NEXT: fadds (%ecx) # sched: [10:1.00] 279 ; ZNVER1-NEXT: faddl (%eax) # sched: [10:1.00] 280 ; ZNVER1-NEXT: #NO_APP 281 ; ZNVER1-NEXT: retl # sched: [1:0.50] 282 tail call void asm sideeffect "fadd %st(0), %st(1) \0A\09 fadd %st(2), %st(0) \0A\09 fadds $0 \0A\09 faddl $1", "*m,*m"(float *%a0, double *%a1) nounwind 283 ret void 284 } 285 286 define void @test_faddp_fiadd(i16 *%a0, i32 *%a1) optsize { 287 ; GENERIC-LABEL: test_faddp_fiadd: 288 ; GENERIC: # %bb.0: 289 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 290 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 291 ; GENERIC-NEXT: #APP 292 ; GENERIC-NEXT: faddp %st(1) 293 ; GENERIC-NEXT: faddp %st(2) 294 ; GENERIC-NEXT: fiadds (%ecx) 295 ; GENERIC-NEXT: fiaddl (%eax) 296 ; GENERIC-NEXT: #NO_APP 297 ; GENERIC-NEXT: retl 298 ; 299 ; ATOM-LABEL: test_faddp_fiadd: 300 ; ATOM: # %bb.0: 301 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 302 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 303 ; ATOM-NEXT: #APP 304 ; ATOM-NEXT: faddp %st(1) # sched: [5:5.00] 305 ; ATOM-NEXT: faddp %st(2) # sched: [5:5.00] 306 ; ATOM-NEXT: fiadds (%ecx) # sched: [5:5.00] 307 ; ATOM-NEXT: fiaddl (%eax) # sched: [5:5.00] 308 ; ATOM-NEXT: #NO_APP 309 ; ATOM-NEXT: retl # sched: [79:39.50] 310 ; 311 ; SLM-LABEL: test_faddp_fiadd: 312 ; SLM: # %bb.0: 313 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 314 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 315 ; SLM-NEXT: #APP 316 ; SLM-NEXT: faddp %st(1) # sched: [3:1.00] 317 ; SLM-NEXT: faddp %st(2) # sched: [3:1.00] 318 ; SLM-NEXT: fiadds (%ecx) # sched: [6:1.00] 319 ; SLM-NEXT: fiaddl (%eax) # sched: [6:1.00] 320 ; SLM-NEXT: #NO_APP 321 ; SLM-NEXT: retl # sched: [4:1.00] 322 ; 323 ; SANDY-LABEL: test_faddp_fiadd: 324 ; SANDY: # %bb.0: 325 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 326 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 327 ; SANDY-NEXT: #APP 328 ; SANDY-NEXT: faddp %st(1) # sched: [3:1.00] 329 ; SANDY-NEXT: faddp %st(2) # sched: [3:1.00] 330 ; SANDY-NEXT: fiadds (%ecx) # sched: [13:2.00] 331 ; SANDY-NEXT: fiaddl (%eax) # sched: [13:2.00] 332 ; SANDY-NEXT: #NO_APP 333 ; SANDY-NEXT: retl # sched: [6:1.00] 334 ; 335 ; HASWELL-LABEL: test_faddp_fiadd: 336 ; HASWELL: # %bb.0: 337 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 338 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 339 ; HASWELL-NEXT: #APP 340 ; HASWELL-NEXT: faddp %st(1) # sched: [3:1.00] 341 ; HASWELL-NEXT: faddp %st(2) # sched: [3:1.00] 342 ; HASWELL-NEXT: fiadds (%ecx) # sched: [13:2.00] 343 ; HASWELL-NEXT: fiaddl (%eax) # sched: [13:2.00] 344 ; HASWELL-NEXT: #NO_APP 345 ; HASWELL-NEXT: retl # sched: [7:1.00] 346 ; 347 ; BROADWELL-LABEL: test_faddp_fiadd: 348 ; BROADWELL: # %bb.0: 349 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 350 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 351 ; BROADWELL-NEXT: #APP 352 ; BROADWELL-NEXT: faddp %st(1) # sched: [3:1.00] 353 ; BROADWELL-NEXT: faddp %st(2) # sched: [3:1.00] 354 ; BROADWELL-NEXT: fiadds (%ecx) # sched: [12:2.00] 355 ; BROADWELL-NEXT: fiaddl (%eax) # sched: [12:2.00] 356 ; BROADWELL-NEXT: #NO_APP 357 ; BROADWELL-NEXT: retl # sched: [6:0.50] 358 ; 359 ; SKYLAKE-LABEL: test_faddp_fiadd: 360 ; SKYLAKE: # %bb.0: 361 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 362 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 363 ; SKYLAKE-NEXT: #APP 364 ; SKYLAKE-NEXT: faddp %st(1) # sched: [3:1.00] 365 ; SKYLAKE-NEXT: faddp %st(2) # sched: [3:1.00] 366 ; SKYLAKE-NEXT: fiadds (%ecx) # sched: [13:2.00] 367 ; SKYLAKE-NEXT: fiaddl (%eax) # sched: [13:2.00] 368 ; SKYLAKE-NEXT: #NO_APP 369 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 370 ; 371 ; SKX-LABEL: test_faddp_fiadd: 372 ; SKX: # %bb.0: 373 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 374 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 375 ; SKX-NEXT: #APP 376 ; SKX-NEXT: faddp %st(1) # sched: [3:1.00] 377 ; SKX-NEXT: faddp %st(2) # sched: [3:1.00] 378 ; SKX-NEXT: fiadds (%ecx) # sched: [13:2.00] 379 ; SKX-NEXT: fiaddl (%eax) # sched: [13:2.00] 380 ; SKX-NEXT: #NO_APP 381 ; SKX-NEXT: retl # sched: [6:0.50] 382 ; 383 ; BTVER2-LABEL: test_faddp_fiadd: 384 ; BTVER2: # %bb.0: 385 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 386 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 387 ; BTVER2-NEXT: #APP 388 ; BTVER2-NEXT: faddp %st(1) # sched: [3:1.00] 389 ; BTVER2-NEXT: faddp %st(2) # sched: [3:1.00] 390 ; BTVER2-NEXT: fiadds (%ecx) # sched: [8:1.00] 391 ; BTVER2-NEXT: fiaddl (%eax) # sched: [8:1.00] 392 ; BTVER2-NEXT: #NO_APP 393 ; BTVER2-NEXT: retl # sched: [4:1.00] 394 ; 395 ; ZNVER1-LABEL: test_faddp_fiadd: 396 ; ZNVER1: # %bb.0: 397 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 398 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 399 ; ZNVER1-NEXT: #APP 400 ; ZNVER1-NEXT: faddp %st(1) # sched: [3:1.00] 401 ; ZNVER1-NEXT: faddp %st(2) # sched: [3:1.00] 402 ; ZNVER1-NEXT: fiadds (%ecx) # sched: [10:1.00] 403 ; ZNVER1-NEXT: fiaddl (%eax) # sched: [10:1.00] 404 ; ZNVER1-NEXT: #NO_APP 405 ; ZNVER1-NEXT: retl # sched: [1:0.50] 406 tail call void asm sideeffect "faddp \0A\09 faddp %st(2), %st(0) \0A\09 fiadds $0 \0A\09 fiaddl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 407 ret void 408 } 409 410 define void @test_fbld_fbstp(i8* %a0) optsize { 411 ; GENERIC-LABEL: test_fbld_fbstp: 412 ; GENERIC: # %bb.0: 413 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 414 ; GENERIC-NEXT: #APP 415 ; GENERIC-NEXT: fbld (%eax) 416 ; GENERIC-NEXT: fbstp (%eax) 417 ; GENERIC-NEXT: #NO_APP 418 ; GENERIC-NEXT: retl 419 ; 420 ; ATOM-LABEL: test_fbld_fbstp: 421 ; ATOM: # %bb.0: 422 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 423 ; ATOM-NEXT: #APP 424 ; ATOM-NEXT: fbld (%eax) # sched: [100:0.50] 425 ; ATOM-NEXT: fbstp (%eax) # sched: [100:0.50] 426 ; ATOM-NEXT: #NO_APP 427 ; ATOM-NEXT: retl # sched: [79:39.50] 428 ; 429 ; SLM-LABEL: test_fbld_fbstp: 430 ; SLM: # %bb.0: 431 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 432 ; SLM-NEXT: #APP 433 ; SLM-NEXT: fbld (%eax) # sched: [100:1.00] 434 ; SLM-NEXT: fbstp (%eax) # sched: [100:1.00] 435 ; SLM-NEXT: #NO_APP 436 ; SLM-NEXT: retl # sched: [4:1.00] 437 ; 438 ; SANDY-LABEL: test_fbld_fbstp: 439 ; SANDY: # %bb.0: 440 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 441 ; SANDY-NEXT: #APP 442 ; SANDY-NEXT: fbld (%eax) # sched: [100:0.33] 443 ; SANDY-NEXT: fbstp (%eax) # sched: [100:0.33] 444 ; SANDY-NEXT: #NO_APP 445 ; SANDY-NEXT: retl # sched: [6:1.00] 446 ; 447 ; HASWELL-LABEL: test_fbld_fbstp: 448 ; HASWELL: # %bb.0: 449 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 450 ; HASWELL-NEXT: #APP 451 ; HASWELL-NEXT: fbld (%eax) # sched: [47:10.75] 452 ; HASWELL-NEXT: fbstp (%eax) # sched: [1:1.00] 453 ; HASWELL-NEXT: #NO_APP 454 ; HASWELL-NEXT: retl # sched: [7:1.00] 455 ; 456 ; BROADWELL-LABEL: test_fbld_fbstp: 457 ; BROADWELL: # %bb.0: 458 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 459 ; BROADWELL-NEXT: #APP 460 ; BROADWELL-NEXT: fbld (%eax) # sched: [100:0.25] 461 ; BROADWELL-NEXT: fbstp (%eax) # sched: [1:1.00] 462 ; BROADWELL-NEXT: #NO_APP 463 ; BROADWELL-NEXT: retl # sched: [6:0.50] 464 ; 465 ; SKYLAKE-LABEL: test_fbld_fbstp: 466 ; SKYLAKE: # %bb.0: 467 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 468 ; SKYLAKE-NEXT: #APP 469 ; SKYLAKE-NEXT: fbld (%eax) # sched: [100:0.25] 470 ; SKYLAKE-NEXT: fbstp (%eax) # sched: [1:1.00] 471 ; SKYLAKE-NEXT: #NO_APP 472 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 473 ; 474 ; SKX-LABEL: test_fbld_fbstp: 475 ; SKX: # %bb.0: 476 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 477 ; SKX-NEXT: #APP 478 ; SKX-NEXT: fbld (%eax) # sched: [100:0.25] 479 ; SKX-NEXT: fbstp (%eax) # sched: [1:1.00] 480 ; SKX-NEXT: #NO_APP 481 ; SKX-NEXT: retl # sched: [6:0.50] 482 ; 483 ; BTVER2-LABEL: test_fbld_fbstp: 484 ; BTVER2: # %bb.0: 485 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 486 ; BTVER2-NEXT: #APP 487 ; BTVER2-NEXT: fbld (%eax) # sched: [100:0.50] 488 ; BTVER2-NEXT: fbstp (%eax) # sched: [100:0.50] 489 ; BTVER2-NEXT: #NO_APP 490 ; BTVER2-NEXT: retl # sched: [4:1.00] 491 ; 492 ; ZNVER1-LABEL: test_fbld_fbstp: 493 ; ZNVER1: # %bb.0: 494 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 495 ; ZNVER1-NEXT: #APP 496 ; ZNVER1-NEXT: fbld (%eax) # sched: [100:0.25] 497 ; ZNVER1-NEXT: fbstp (%eax) # sched: [100:0.25] 498 ; ZNVER1-NEXT: #NO_APP 499 ; ZNVER1-NEXT: retl # sched: [1:0.50] 500 tail call void asm sideeffect "fbld $0 \0A\09 fbstp $0", "*m"(i8 *%a0) nounwind 501 ret void 502 } 503 504 define void @test_fchs() optsize { 505 ; GENERIC-LABEL: test_fchs: 506 ; GENERIC: # %bb.0: 507 ; GENERIC-NEXT: #APP 508 ; GENERIC-NEXT: fchs 509 ; GENERIC-NEXT: #NO_APP 510 ; GENERIC-NEXT: retl 511 ; 512 ; ATOM-LABEL: test_fchs: 513 ; ATOM: # %bb.0: 514 ; ATOM-NEXT: #APP 515 ; ATOM-NEXT: fchs # sched: [1:1.00] 516 ; ATOM-NEXT: #NO_APP 517 ; ATOM-NEXT: retl # sched: [79:39.50] 518 ; 519 ; SLM-LABEL: test_fchs: 520 ; SLM: # %bb.0: 521 ; SLM-NEXT: #APP 522 ; SLM-NEXT: fchs # sched: [1:0.50] 523 ; SLM-NEXT: #NO_APP 524 ; SLM-NEXT: retl # sched: [4:1.00] 525 ; 526 ; SANDY-LABEL: test_fchs: 527 ; SANDY: # %bb.0: 528 ; SANDY-NEXT: #APP 529 ; SANDY-NEXT: fchs # sched: [1:1.00] 530 ; SANDY-NEXT: #NO_APP 531 ; SANDY-NEXT: retl # sched: [6:1.00] 532 ; 533 ; HASWELL-LABEL: test_fchs: 534 ; HASWELL: # %bb.0: 535 ; HASWELL-NEXT: #APP 536 ; HASWELL-NEXT: fchs # sched: [1:1.00] 537 ; HASWELL-NEXT: #NO_APP 538 ; HASWELL-NEXT: retl # sched: [7:1.00] 539 ; 540 ; BROADWELL-LABEL: test_fchs: 541 ; BROADWELL: # %bb.0: 542 ; BROADWELL-NEXT: #APP 543 ; BROADWELL-NEXT: fchs # sched: [1:1.00] 544 ; BROADWELL-NEXT: #NO_APP 545 ; BROADWELL-NEXT: retl # sched: [6:0.50] 546 ; 547 ; SKYLAKE-LABEL: test_fchs: 548 ; SKYLAKE: # %bb.0: 549 ; SKYLAKE-NEXT: #APP 550 ; SKYLAKE-NEXT: fchs # sched: [1:1.00] 551 ; SKYLAKE-NEXT: #NO_APP 552 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 553 ; 554 ; SKX-LABEL: test_fchs: 555 ; SKX: # %bb.0: 556 ; SKX-NEXT: #APP 557 ; SKX-NEXT: fchs # sched: [1:1.00] 558 ; SKX-NEXT: #NO_APP 559 ; SKX-NEXT: retl # sched: [6:0.50] 560 ; 561 ; BTVER2-LABEL: test_fchs: 562 ; BTVER2: # %bb.0: 563 ; BTVER2-NEXT: #APP 564 ; BTVER2-NEXT: fchs # sched: [2:1.00] 565 ; BTVER2-NEXT: #NO_APP 566 ; BTVER2-NEXT: retl # sched: [4:1.00] 567 ; 568 ; ZNVER1-LABEL: test_fchs: 569 ; ZNVER1: # %bb.0: 570 ; ZNVER1-NEXT: #APP 571 ; ZNVER1-NEXT: fchs # sched: [1:1.00] 572 ; ZNVER1-NEXT: #NO_APP 573 ; ZNVER1-NEXT: retl # sched: [1:0.50] 574 tail call void asm sideeffect "fchs", ""() nounwind 575 ret void 576 } 577 578 define void @test_fclex() optsize { 579 ; GENERIC-LABEL: test_fclex: 580 ; GENERIC: # %bb.0: 581 ; GENERIC-NEXT: #APP 582 ; GENERIC-NEXT: wait 583 ; GENERIC-NEXT: fnclex 584 ; GENERIC-NEXT: #NO_APP 585 ; GENERIC-NEXT: retl 586 ; 587 ; ATOM-LABEL: test_fclex: 588 ; ATOM: # %bb.0: 589 ; ATOM-NEXT: #APP 590 ; ATOM-NEXT: wait # sched: [1:0.50] 591 ; ATOM-NEXT: fnclex # sched: [25:12.50] 592 ; ATOM-NEXT: #NO_APP 593 ; ATOM-NEXT: retl # sched: [79:39.50] 594 ; 595 ; SLM-LABEL: test_fclex: 596 ; SLM: # %bb.0: 597 ; SLM-NEXT: #APP 598 ; SLM-NEXT: wait # sched: [100:1.00] 599 ; SLM-NEXT: fnclex # sched: [100:1.00] 600 ; SLM-NEXT: #NO_APP 601 ; SLM-NEXT: retl # sched: [4:1.00] 602 ; 603 ; SANDY-LABEL: test_fclex: 604 ; SANDY: # %bb.0: 605 ; SANDY-NEXT: #APP 606 ; SANDY-NEXT: wait # sched: [100:0.33] 607 ; SANDY-NEXT: fnclex # sched: [100:0.33] 608 ; SANDY-NEXT: #NO_APP 609 ; SANDY-NEXT: retl # sched: [6:1.00] 610 ; 611 ; HASWELL-LABEL: test_fclex: 612 ; HASWELL: # %bb.0: 613 ; HASWELL-NEXT: #APP 614 ; HASWELL-NEXT: wait # sched: [2:0.50] 615 ; HASWELL-NEXT: fnclex # sched: [4:1.00] 616 ; HASWELL-NEXT: #NO_APP 617 ; HASWELL-NEXT: retl # sched: [7:1.00] 618 ; 619 ; BROADWELL-LABEL: test_fclex: 620 ; BROADWELL: # %bb.0: 621 ; BROADWELL-NEXT: #APP 622 ; BROADWELL-NEXT: wait # sched: [2:0.50] 623 ; BROADWELL-NEXT: fnclex # sched: [4:1.00] 624 ; BROADWELL-NEXT: #NO_APP 625 ; BROADWELL-NEXT: retl # sched: [6:0.50] 626 ; 627 ; SKYLAKE-LABEL: test_fclex: 628 ; SKYLAKE: # %bb.0: 629 ; SKYLAKE-NEXT: #APP 630 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 631 ; SKYLAKE-NEXT: fnclex # sched: [4:1.00] 632 ; SKYLAKE-NEXT: #NO_APP 633 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 634 ; 635 ; SKX-LABEL: test_fclex: 636 ; SKX: # %bb.0: 637 ; SKX-NEXT: #APP 638 ; SKX-NEXT: wait # sched: [2:0.50] 639 ; SKX-NEXT: fnclex # sched: [4:1.00] 640 ; SKX-NEXT: #NO_APP 641 ; SKX-NEXT: retl # sched: [6:0.50] 642 ; 643 ; BTVER2-LABEL: test_fclex: 644 ; BTVER2: # %bb.0: 645 ; BTVER2-NEXT: #APP 646 ; BTVER2-NEXT: wait # sched: [100:0.50] 647 ; BTVER2-NEXT: fnclex # sched: [100:0.50] 648 ; BTVER2-NEXT: #NO_APP 649 ; BTVER2-NEXT: retl # sched: [4:1.00] 650 ; 651 ; ZNVER1-LABEL: test_fclex: 652 ; ZNVER1: # %bb.0: 653 ; ZNVER1-NEXT: #APP 654 ; ZNVER1-NEXT: wait # sched: [1:1.00] 655 ; ZNVER1-NEXT: fnclex # sched: [100:0.25] 656 ; ZNVER1-NEXT: #NO_APP 657 ; ZNVER1-NEXT: retl # sched: [1:0.50] 658 tail call void asm sideeffect "fclex", ""() nounwind 659 ret void 660 } 661 662 define void @test_fnclex() optsize { 663 ; GENERIC-LABEL: test_fnclex: 664 ; GENERIC: # %bb.0: 665 ; GENERIC-NEXT: #APP 666 ; GENERIC-NEXT: fnclex 667 ; GENERIC-NEXT: #NO_APP 668 ; GENERIC-NEXT: retl 669 ; 670 ; ATOM-LABEL: test_fnclex: 671 ; ATOM: # %bb.0: 672 ; ATOM-NEXT: #APP 673 ; ATOM-NEXT: fnclex # sched: [25:12.50] 674 ; ATOM-NEXT: #NO_APP 675 ; ATOM-NEXT: retl # sched: [79:39.50] 676 ; 677 ; SLM-LABEL: test_fnclex: 678 ; SLM: # %bb.0: 679 ; SLM-NEXT: #APP 680 ; SLM-NEXT: fnclex # sched: [100:1.00] 681 ; SLM-NEXT: #NO_APP 682 ; SLM-NEXT: retl # sched: [4:1.00] 683 ; 684 ; SANDY-LABEL: test_fnclex: 685 ; SANDY: # %bb.0: 686 ; SANDY-NEXT: #APP 687 ; SANDY-NEXT: fnclex # sched: [100:0.33] 688 ; SANDY-NEXT: #NO_APP 689 ; SANDY-NEXT: retl # sched: [6:1.00] 690 ; 691 ; HASWELL-LABEL: test_fnclex: 692 ; HASWELL: # %bb.0: 693 ; HASWELL-NEXT: #APP 694 ; HASWELL-NEXT: fnclex # sched: [4:1.00] 695 ; HASWELL-NEXT: #NO_APP 696 ; HASWELL-NEXT: retl # sched: [7:1.00] 697 ; 698 ; BROADWELL-LABEL: test_fnclex: 699 ; BROADWELL: # %bb.0: 700 ; BROADWELL-NEXT: #APP 701 ; BROADWELL-NEXT: fnclex # sched: [4:1.00] 702 ; BROADWELL-NEXT: #NO_APP 703 ; BROADWELL-NEXT: retl # sched: [6:0.50] 704 ; 705 ; SKYLAKE-LABEL: test_fnclex: 706 ; SKYLAKE: # %bb.0: 707 ; SKYLAKE-NEXT: #APP 708 ; SKYLAKE-NEXT: fnclex # sched: [4:1.00] 709 ; SKYLAKE-NEXT: #NO_APP 710 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 711 ; 712 ; SKX-LABEL: test_fnclex: 713 ; SKX: # %bb.0: 714 ; SKX-NEXT: #APP 715 ; SKX-NEXT: fnclex # sched: [4:1.00] 716 ; SKX-NEXT: #NO_APP 717 ; SKX-NEXT: retl # sched: [6:0.50] 718 ; 719 ; BTVER2-LABEL: test_fnclex: 720 ; BTVER2: # %bb.0: 721 ; BTVER2-NEXT: #APP 722 ; BTVER2-NEXT: fnclex # sched: [100:0.50] 723 ; BTVER2-NEXT: #NO_APP 724 ; BTVER2-NEXT: retl # sched: [4:1.00] 725 ; 726 ; ZNVER1-LABEL: test_fnclex: 727 ; ZNVER1: # %bb.0: 728 ; ZNVER1-NEXT: #APP 729 ; ZNVER1-NEXT: fnclex # sched: [100:0.25] 730 ; ZNVER1-NEXT: #NO_APP 731 ; ZNVER1-NEXT: retl # sched: [1:0.50] 732 tail call void asm sideeffect "fnclex", ""() nounwind 733 ret void 734 } 735 736 define void @test_fcmov() optsize { 737 ; GENERIC-LABEL: test_fcmov: 738 ; GENERIC: # %bb.0: 739 ; GENERIC-NEXT: #APP 740 ; GENERIC-NEXT: fcmovb %st(1), %st(0) 741 ; GENERIC-NEXT: fcmovbe %st(1), %st(0) 742 ; GENERIC-NEXT: fcmove %st(1), %st(0) 743 ; GENERIC-NEXT: fcmovnb %st(1), %st(0) 744 ; GENERIC-NEXT: fcmovnbe %st(1), %st(0) 745 ; GENERIC-NEXT: fcmovne %st(1), %st(0) 746 ; GENERIC-NEXT: fcmovnu %st(1), %st(0) 747 ; GENERIC-NEXT: fcmovu %st(1), %st(0) 748 ; GENERIC-NEXT: #NO_APP 749 ; GENERIC-NEXT: retl 750 ; 751 ; ATOM-LABEL: test_fcmov: 752 ; ATOM: # %bb.0: 753 ; ATOM-NEXT: #APP 754 ; ATOM-NEXT: fcmovb %st(1), %st(0) # sched: [9:4.50] 755 ; ATOM-NEXT: fcmovbe %st(1), %st(0) # sched: [9:4.50] 756 ; ATOM-NEXT: fcmove %st(1), %st(0) # sched: [9:4.50] 757 ; ATOM-NEXT: fcmovnb %st(1), %st(0) # sched: [9:4.50] 758 ; ATOM-NEXT: fcmovnbe %st(1), %st(0) # sched: [9:4.50] 759 ; ATOM-NEXT: fcmovne %st(1), %st(0) # sched: [9:4.50] 760 ; ATOM-NEXT: fcmovnu %st(1), %st(0) # sched: [9:4.50] 761 ; ATOM-NEXT: fcmovu %st(1), %st(0) # sched: [9:4.50] 762 ; ATOM-NEXT: #NO_APP 763 ; ATOM-NEXT: retl # sched: [79:39.50] 764 ; 765 ; SLM-LABEL: test_fcmov: 766 ; SLM: # %bb.0: 767 ; SLM-NEXT: #APP 768 ; SLM-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 769 ; SLM-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 770 ; SLM-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 771 ; SLM-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 772 ; SLM-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 773 ; SLM-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 774 ; SLM-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 775 ; SLM-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 776 ; SLM-NEXT: #NO_APP 777 ; SLM-NEXT: retl # sched: [4:1.00] 778 ; 779 ; SANDY-LABEL: test_fcmov: 780 ; SANDY: # %bb.0: 781 ; SANDY-NEXT: #APP 782 ; SANDY-NEXT: fcmovb %st(1), %st(0) # sched: [3:2.00] 783 ; SANDY-NEXT: fcmovbe %st(1), %st(0) # sched: [3:2.00] 784 ; SANDY-NEXT: fcmove %st(1), %st(0) # sched: [3:2.00] 785 ; SANDY-NEXT: fcmovnb %st(1), %st(0) # sched: [3:2.00] 786 ; SANDY-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:2.00] 787 ; SANDY-NEXT: fcmovne %st(1), %st(0) # sched: [3:2.00] 788 ; SANDY-NEXT: fcmovnu %st(1), %st(0) # sched: [3:2.00] 789 ; SANDY-NEXT: fcmovu %st(1), %st(0) # sched: [3:2.00] 790 ; SANDY-NEXT: #NO_APP 791 ; SANDY-NEXT: retl # sched: [6:1.00] 792 ; 793 ; HASWELL-LABEL: test_fcmov: 794 ; HASWELL: # %bb.0: 795 ; HASWELL-NEXT: #APP 796 ; HASWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 797 ; HASWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 798 ; HASWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 799 ; HASWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 800 ; HASWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 801 ; HASWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 802 ; HASWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 803 ; HASWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 804 ; HASWELL-NEXT: #NO_APP 805 ; HASWELL-NEXT: retl # sched: [7:1.00] 806 ; 807 ; BROADWELL-LABEL: test_fcmov: 808 ; BROADWELL: # %bb.0: 809 ; BROADWELL-NEXT: #APP 810 ; BROADWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 811 ; BROADWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 812 ; BROADWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 813 ; BROADWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 814 ; BROADWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 815 ; BROADWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 816 ; BROADWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 817 ; BROADWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 818 ; BROADWELL-NEXT: #NO_APP 819 ; BROADWELL-NEXT: retl # sched: [6:0.50] 820 ; 821 ; SKYLAKE-LABEL: test_fcmov: 822 ; SKYLAKE: # %bb.0: 823 ; SKYLAKE-NEXT: #APP 824 ; SKYLAKE-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 825 ; SKYLAKE-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 826 ; SKYLAKE-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 827 ; SKYLAKE-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 828 ; SKYLAKE-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 829 ; SKYLAKE-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 830 ; SKYLAKE-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 831 ; SKYLAKE-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 832 ; SKYLAKE-NEXT: #NO_APP 833 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 834 ; 835 ; SKX-LABEL: test_fcmov: 836 ; SKX: # %bb.0: 837 ; SKX-NEXT: #APP 838 ; SKX-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 839 ; SKX-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 840 ; SKX-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 841 ; SKX-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 842 ; SKX-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 843 ; SKX-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 844 ; SKX-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 845 ; SKX-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 846 ; SKX-NEXT: #NO_APP 847 ; SKX-NEXT: retl # sched: [6:0.50] 848 ; 849 ; BTVER2-LABEL: test_fcmov: 850 ; BTVER2: # %bb.0: 851 ; BTVER2-NEXT: #APP 852 ; BTVER2-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 853 ; BTVER2-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 854 ; BTVER2-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 855 ; BTVER2-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 856 ; BTVER2-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 857 ; BTVER2-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 858 ; BTVER2-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 859 ; BTVER2-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 860 ; BTVER2-NEXT: #NO_APP 861 ; BTVER2-NEXT: retl # sched: [4:1.00] 862 ; 863 ; ZNVER1-LABEL: test_fcmov: 864 ; ZNVER1: # %bb.0: 865 ; ZNVER1-NEXT: #APP 866 ; ZNVER1-NEXT: fcmovb %st(1), %st(0) # sched: [100:0.25] 867 ; ZNVER1-NEXT: fcmovbe %st(1), %st(0) # sched: [100:0.25] 868 ; ZNVER1-NEXT: fcmove %st(1), %st(0) # sched: [100:0.25] 869 ; ZNVER1-NEXT: fcmovnb %st(1), %st(0) # sched: [100:0.25] 870 ; ZNVER1-NEXT: fcmovnbe %st(1), %st(0) # sched: [100:0.25] 871 ; ZNVER1-NEXT: fcmovne %st(1), %st(0) # sched: [100:0.25] 872 ; ZNVER1-NEXT: fcmovnu %st(1), %st(0) # sched: [100:0.25] 873 ; ZNVER1-NEXT: fcmovu %st(1), %st(0) # sched: [100:0.25] 874 ; ZNVER1-NEXT: #NO_APP 875 ; ZNVER1-NEXT: retl # sched: [1:0.50] 876 tail call void asm sideeffect "fcmovb %st(1), %st(0) \0A\09 fcmovbe %st(1), %st(0) \0A\09 fcmove %st(1), %st(0) \0A\09 fcmovnb %st(1), %st(0) \0A\09 fcmovnbe %st(1), %st(0) \0A\09 fcmovne %st(1), %st(0) \0A\09 fcmovnu %st(1), %st(0) \0A\09 fcmovu %st(1), %st(0)", ""() nounwind 877 ret void 878 } 879 880 define void @test_fcom(float *%a0, double *%a1) optsize { 881 ; GENERIC-LABEL: test_fcom: 882 ; GENERIC: # %bb.0: 883 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 884 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 885 ; GENERIC-NEXT: #APP 886 ; GENERIC-NEXT: fcom %st(1) 887 ; GENERIC-NEXT: fcom %st(3) 888 ; GENERIC-NEXT: fcoms (%ecx) 889 ; GENERIC-NEXT: fcoml (%eax) 890 ; GENERIC-NEXT: #NO_APP 891 ; GENERIC-NEXT: retl 892 ; 893 ; ATOM-LABEL: test_fcom: 894 ; ATOM: # %bb.0: 895 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 896 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 897 ; ATOM-NEXT: #APP 898 ; ATOM-NEXT: fcom %st(1) # sched: [5:5.00] 899 ; ATOM-NEXT: fcom %st(3) # sched: [5:5.00] 900 ; ATOM-NEXT: fcoms (%ecx) # sched: [5:5.00] 901 ; ATOM-NEXT: fcoml (%eax) # sched: [5:5.00] 902 ; ATOM-NEXT: #NO_APP 903 ; ATOM-NEXT: retl # sched: [79:39.50] 904 ; 905 ; SLM-LABEL: test_fcom: 906 ; SLM: # %bb.0: 907 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 908 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 909 ; SLM-NEXT: #APP 910 ; SLM-NEXT: fcom %st(1) # sched: [3:1.00] 911 ; SLM-NEXT: fcom %st(3) # sched: [3:1.00] 912 ; SLM-NEXT: fcoms (%ecx) # sched: [6:1.00] 913 ; SLM-NEXT: fcoml (%eax) # sched: [6:1.00] 914 ; SLM-NEXT: #NO_APP 915 ; SLM-NEXT: retl # sched: [4:1.00] 916 ; 917 ; SANDY-LABEL: test_fcom: 918 ; SANDY: # %bb.0: 919 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 920 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 921 ; SANDY-NEXT: #APP 922 ; SANDY-NEXT: fcom %st(1) # sched: [1:1.00] 923 ; SANDY-NEXT: fcom %st(3) # sched: [1:1.00] 924 ; SANDY-NEXT: fcoms (%ecx) # sched: [8:1.00] 925 ; SANDY-NEXT: fcoml (%eax) # sched: [8:1.00] 926 ; SANDY-NEXT: #NO_APP 927 ; SANDY-NEXT: retl # sched: [6:1.00] 928 ; 929 ; HASWELL-LABEL: test_fcom: 930 ; HASWELL: # %bb.0: 931 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 932 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 933 ; HASWELL-NEXT: #APP 934 ; HASWELL-NEXT: fcom %st(1) # sched: [1:1.00] 935 ; HASWELL-NEXT: fcom %st(3) # sched: [1:1.00] 936 ; HASWELL-NEXT: fcoms (%ecx) # sched: [8:1.00] 937 ; HASWELL-NEXT: fcoml (%eax) # sched: [8:1.00] 938 ; HASWELL-NEXT: #NO_APP 939 ; HASWELL-NEXT: retl # sched: [7:1.00] 940 ; 941 ; BROADWELL-LABEL: test_fcom: 942 ; BROADWELL: # %bb.0: 943 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 944 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 945 ; BROADWELL-NEXT: #APP 946 ; BROADWELL-NEXT: fcom %st(1) # sched: [1:1.00] 947 ; BROADWELL-NEXT: fcom %st(3) # sched: [1:1.00] 948 ; BROADWELL-NEXT: fcoms (%ecx) # sched: [7:1.00] 949 ; BROADWELL-NEXT: fcoml (%eax) # sched: [7:1.00] 950 ; BROADWELL-NEXT: #NO_APP 951 ; BROADWELL-NEXT: retl # sched: [6:0.50] 952 ; 953 ; SKYLAKE-LABEL: test_fcom: 954 ; SKYLAKE: # %bb.0: 955 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 956 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 957 ; SKYLAKE-NEXT: #APP 958 ; SKYLAKE-NEXT: fcom %st(1) # sched: [1:1.00] 959 ; SKYLAKE-NEXT: fcom %st(3) # sched: [1:1.00] 960 ; SKYLAKE-NEXT: fcoms (%ecx) # sched: [8:1.00] 961 ; SKYLAKE-NEXT: fcoml (%eax) # sched: [8:1.00] 962 ; SKYLAKE-NEXT: #NO_APP 963 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 964 ; 965 ; SKX-LABEL: test_fcom: 966 ; SKX: # %bb.0: 967 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 968 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 969 ; SKX-NEXT: #APP 970 ; SKX-NEXT: fcom %st(1) # sched: [1:1.00] 971 ; SKX-NEXT: fcom %st(3) # sched: [1:1.00] 972 ; SKX-NEXT: fcoms (%ecx) # sched: [8:1.00] 973 ; SKX-NEXT: fcoml (%eax) # sched: [8:1.00] 974 ; SKX-NEXT: #NO_APP 975 ; SKX-NEXT: retl # sched: [6:0.50] 976 ; 977 ; BTVER2-LABEL: test_fcom: 978 ; BTVER2: # %bb.0: 979 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 980 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 981 ; BTVER2-NEXT: #APP 982 ; BTVER2-NEXT: fcom %st(1) # sched: [3:1.00] 983 ; BTVER2-NEXT: fcom %st(3) # sched: [3:1.00] 984 ; BTVER2-NEXT: fcoms (%ecx) # sched: [8:1.00] 985 ; BTVER2-NEXT: fcoml (%eax) # sched: [8:1.00] 986 ; BTVER2-NEXT: #NO_APP 987 ; BTVER2-NEXT: retl # sched: [4:1.00] 988 ; 989 ; ZNVER1-LABEL: test_fcom: 990 ; ZNVER1: # %bb.0: 991 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 992 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 993 ; ZNVER1-NEXT: #APP 994 ; ZNVER1-NEXT: fcom %st(1) # sched: [1:1.00] 995 ; ZNVER1-NEXT: fcom %st(3) # sched: [1:1.00] 996 ; ZNVER1-NEXT: fcoms (%ecx) # sched: [8:1.00] 997 ; ZNVER1-NEXT: fcoml (%eax) # sched: [8:1.00] 998 ; ZNVER1-NEXT: #NO_APP 999 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1000 tail call void asm sideeffect "fcom \0A\09 fcom %st(3) \0A\09 fcoms $0 \0A\09 fcoml $1", "*m,*m"(float *%a0, double *%a1) nounwind 1001 ret void 1002 } 1003 1004 define void @test_fcomp_fcompp(float *%a0, double *%a1) optsize { 1005 ; GENERIC-LABEL: test_fcomp_fcompp: 1006 ; GENERIC: # %bb.0: 1007 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1008 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1009 ; GENERIC-NEXT: #APP 1010 ; GENERIC-NEXT: fcomp %st(1) 1011 ; GENERIC-NEXT: fcomp %st(3) 1012 ; GENERIC-NEXT: fcomps (%ecx) 1013 ; GENERIC-NEXT: fcompl (%eax) 1014 ; GENERIC-NEXT: fcompp 1015 ; GENERIC-NEXT: #NO_APP 1016 ; GENERIC-NEXT: retl 1017 ; 1018 ; ATOM-LABEL: test_fcomp_fcompp: 1019 ; ATOM: # %bb.0: 1020 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1021 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1022 ; ATOM-NEXT: #APP 1023 ; ATOM-NEXT: fcomp %st(1) # sched: [5:5.00] 1024 ; ATOM-NEXT: fcomp %st(3) # sched: [5:5.00] 1025 ; ATOM-NEXT: fcomps (%ecx) # sched: [5:5.00] 1026 ; ATOM-NEXT: fcompl (%eax) # sched: [5:5.00] 1027 ; ATOM-NEXT: fcompp # sched: [1:1.00] 1028 ; ATOM-NEXT: #NO_APP 1029 ; ATOM-NEXT: retl # sched: [79:39.50] 1030 ; 1031 ; SLM-LABEL: test_fcomp_fcompp: 1032 ; SLM: # %bb.0: 1033 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1034 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1035 ; SLM-NEXT: #APP 1036 ; SLM-NEXT: fcomp %st(1) # sched: [3:1.00] 1037 ; SLM-NEXT: fcomp %st(3) # sched: [3:1.00] 1038 ; SLM-NEXT: fcomps (%ecx) # sched: [6:1.00] 1039 ; SLM-NEXT: fcompl (%eax) # sched: [6:1.00] 1040 ; SLM-NEXT: fcompp # sched: [100:1.00] 1041 ; SLM-NEXT: #NO_APP 1042 ; SLM-NEXT: retl # sched: [4:1.00] 1043 ; 1044 ; SANDY-LABEL: test_fcomp_fcompp: 1045 ; SANDY: # %bb.0: 1046 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1047 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1048 ; SANDY-NEXT: #APP 1049 ; SANDY-NEXT: fcomp %st(1) # sched: [1:1.00] 1050 ; SANDY-NEXT: fcomp %st(3) # sched: [1:1.00] 1051 ; SANDY-NEXT: fcomps (%ecx) # sched: [8:1.00] 1052 ; SANDY-NEXT: fcompl (%eax) # sched: [8:1.00] 1053 ; SANDY-NEXT: fcompp # sched: [100:0.33] 1054 ; SANDY-NEXT: #NO_APP 1055 ; SANDY-NEXT: retl # sched: [6:1.00] 1056 ; 1057 ; HASWELL-LABEL: test_fcomp_fcompp: 1058 ; HASWELL: # %bb.0: 1059 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1060 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1061 ; HASWELL-NEXT: #APP 1062 ; HASWELL-NEXT: fcomp %st(1) # sched: [1:1.00] 1063 ; HASWELL-NEXT: fcomp %st(3) # sched: [1:1.00] 1064 ; HASWELL-NEXT: fcomps (%ecx) # sched: [8:1.00] 1065 ; HASWELL-NEXT: fcompl (%eax) # sched: [8:1.00] 1066 ; HASWELL-NEXT: fcompp # sched: [1:0.50] 1067 ; HASWELL-NEXT: #NO_APP 1068 ; HASWELL-NEXT: retl # sched: [7:1.00] 1069 ; 1070 ; BROADWELL-LABEL: test_fcomp_fcompp: 1071 ; BROADWELL: # %bb.0: 1072 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1073 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1074 ; BROADWELL-NEXT: #APP 1075 ; BROADWELL-NEXT: fcomp %st(1) # sched: [1:1.00] 1076 ; BROADWELL-NEXT: fcomp %st(3) # sched: [1:1.00] 1077 ; BROADWELL-NEXT: fcomps (%ecx) # sched: [7:1.00] 1078 ; BROADWELL-NEXT: fcompl (%eax) # sched: [7:1.00] 1079 ; BROADWELL-NEXT: fcompp # sched: [100:0.25] 1080 ; BROADWELL-NEXT: #NO_APP 1081 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1082 ; 1083 ; SKYLAKE-LABEL: test_fcomp_fcompp: 1084 ; SKYLAKE: # %bb.0: 1085 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1086 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1087 ; SKYLAKE-NEXT: #APP 1088 ; SKYLAKE-NEXT: fcomp %st(1) # sched: [1:1.00] 1089 ; SKYLAKE-NEXT: fcomp %st(3) # sched: [1:1.00] 1090 ; SKYLAKE-NEXT: fcomps (%ecx) # sched: [8:1.00] 1091 ; SKYLAKE-NEXT: fcompl (%eax) # sched: [8:1.00] 1092 ; SKYLAKE-NEXT: fcompp # sched: [100:0.25] 1093 ; SKYLAKE-NEXT: #NO_APP 1094 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1095 ; 1096 ; SKX-LABEL: test_fcomp_fcompp: 1097 ; SKX: # %bb.0: 1098 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1099 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1100 ; SKX-NEXT: #APP 1101 ; SKX-NEXT: fcomp %st(1) # sched: [1:1.00] 1102 ; SKX-NEXT: fcomp %st(3) # sched: [1:1.00] 1103 ; SKX-NEXT: fcomps (%ecx) # sched: [8:1.00] 1104 ; SKX-NEXT: fcompl (%eax) # sched: [8:1.00] 1105 ; SKX-NEXT: fcompp # sched: [100:0.25] 1106 ; SKX-NEXT: #NO_APP 1107 ; SKX-NEXT: retl # sched: [6:0.50] 1108 ; 1109 ; BTVER2-LABEL: test_fcomp_fcompp: 1110 ; BTVER2: # %bb.0: 1111 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1112 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1113 ; BTVER2-NEXT: #APP 1114 ; BTVER2-NEXT: fcomp %st(1) # sched: [3:1.00] 1115 ; BTVER2-NEXT: fcomp %st(3) # sched: [3:1.00] 1116 ; BTVER2-NEXT: fcomps (%ecx) # sched: [8:1.00] 1117 ; BTVER2-NEXT: fcompl (%eax) # sched: [8:1.00] 1118 ; BTVER2-NEXT: fcompp # sched: [100:0.50] 1119 ; BTVER2-NEXT: #NO_APP 1120 ; BTVER2-NEXT: retl # sched: [4:1.00] 1121 ; 1122 ; ZNVER1-LABEL: test_fcomp_fcompp: 1123 ; ZNVER1: # %bb.0: 1124 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1125 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1126 ; ZNVER1-NEXT: #APP 1127 ; ZNVER1-NEXT: fcomp %st(1) # sched: [1:1.00] 1128 ; ZNVER1-NEXT: fcomp %st(3) # sched: [1:1.00] 1129 ; ZNVER1-NEXT: fcomps (%ecx) # sched: [8:1.00] 1130 ; ZNVER1-NEXT: fcompl (%eax) # sched: [8:1.00] 1131 ; ZNVER1-NEXT: fcompp # sched: [1:1.00] 1132 ; ZNVER1-NEXT: #NO_APP 1133 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1134 tail call void asm sideeffect "fcomp \0A\09 fcomp %st(3) \0A\09 fcomps $0 \0A\09 fcompl $1 \0A\09 fcompp", "*m,*m"(float *%a0, double *%a1) nounwind 1135 ret void 1136 } 1137 1138 define void @test_fcomi_fcomip() optsize { 1139 ; GENERIC-LABEL: test_fcomi_fcomip: 1140 ; GENERIC: # %bb.0: 1141 ; GENERIC-NEXT: #APP 1142 ; GENERIC-NEXT: fcomi %st(3) 1143 ; GENERIC-NEXT: fcompi %st(3) 1144 ; GENERIC-NEXT: #NO_APP 1145 ; GENERIC-NEXT: retl 1146 ; 1147 ; ATOM-LABEL: test_fcomi_fcomip: 1148 ; ATOM: # %bb.0: 1149 ; ATOM-NEXT: #APP 1150 ; ATOM-NEXT: fcomi %st(3) # sched: [9:4.50] 1151 ; ATOM-NEXT: fcompi %st(3) # sched: [9:4.50] 1152 ; ATOM-NEXT: #NO_APP 1153 ; ATOM-NEXT: retl # sched: [79:39.50] 1154 ; 1155 ; SLM-LABEL: test_fcomi_fcomip: 1156 ; SLM: # %bb.0: 1157 ; SLM-NEXT: #APP 1158 ; SLM-NEXT: fcomi %st(3) # sched: [3:1.00] 1159 ; SLM-NEXT: fcompi %st(3) # sched: [3:1.00] 1160 ; SLM-NEXT: #NO_APP 1161 ; SLM-NEXT: retl # sched: [4:1.00] 1162 ; 1163 ; SANDY-LABEL: test_fcomi_fcomip: 1164 ; SANDY: # %bb.0: 1165 ; SANDY-NEXT: #APP 1166 ; SANDY-NEXT: fcomi %st(3) # sched: [3:1.00] 1167 ; SANDY-NEXT: fcompi %st(3) # sched: [3:1.00] 1168 ; SANDY-NEXT: #NO_APP 1169 ; SANDY-NEXT: retl # sched: [6:1.00] 1170 ; 1171 ; HASWELL-LABEL: test_fcomi_fcomip: 1172 ; HASWELL: # %bb.0: 1173 ; HASWELL-NEXT: #APP 1174 ; HASWELL-NEXT: fcomi %st(3) # sched: [1:0.50] 1175 ; HASWELL-NEXT: fcompi %st(3) # sched: [1:0.50] 1176 ; HASWELL-NEXT: #NO_APP 1177 ; HASWELL-NEXT: retl # sched: [7:1.00] 1178 ; 1179 ; BROADWELL-LABEL: test_fcomi_fcomip: 1180 ; BROADWELL: # %bb.0: 1181 ; BROADWELL-NEXT: #APP 1182 ; BROADWELL-NEXT: fcomi %st(3) # sched: [3:1.00] 1183 ; BROADWELL-NEXT: fcompi %st(3) # sched: [3:1.00] 1184 ; BROADWELL-NEXT: #NO_APP 1185 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1186 ; 1187 ; SKYLAKE-LABEL: test_fcomi_fcomip: 1188 ; SKYLAKE: # %bb.0: 1189 ; SKYLAKE-NEXT: #APP 1190 ; SKYLAKE-NEXT: fcomi %st(3) # sched: [2:1.00] 1191 ; SKYLAKE-NEXT: fcompi %st(3) # sched: [2:1.00] 1192 ; SKYLAKE-NEXT: #NO_APP 1193 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1194 ; 1195 ; SKX-LABEL: test_fcomi_fcomip: 1196 ; SKX: # %bb.0: 1197 ; SKX-NEXT: #APP 1198 ; SKX-NEXT: fcomi %st(3) # sched: [2:1.00] 1199 ; SKX-NEXT: fcompi %st(3) # sched: [2:1.00] 1200 ; SKX-NEXT: #NO_APP 1201 ; SKX-NEXT: retl # sched: [6:0.50] 1202 ; 1203 ; BTVER2-LABEL: test_fcomi_fcomip: 1204 ; BTVER2: # %bb.0: 1205 ; BTVER2-NEXT: #APP 1206 ; BTVER2-NEXT: fcomi %st(3) # sched: [3:1.00] 1207 ; BTVER2-NEXT: fcompi %st(3) # sched: [3:1.00] 1208 ; BTVER2-NEXT: #NO_APP 1209 ; BTVER2-NEXT: retl # sched: [4:1.00] 1210 ; 1211 ; ZNVER1-LABEL: test_fcomi_fcomip: 1212 ; ZNVER1: # %bb.0: 1213 ; ZNVER1-NEXT: #APP 1214 ; ZNVER1-NEXT: fcomi %st(3) # sched: [9:0.50] 1215 ; ZNVER1-NEXT: fcompi %st(3) # sched: [9:0.50] 1216 ; ZNVER1-NEXT: #NO_APP 1217 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1218 tail call void asm sideeffect "fcomi %st(3) \0A\09 fcomip %st(3)", ""() nounwind 1219 ret void 1220 } 1221 1222 define void @test_fcos() optsize { 1223 ; GENERIC-LABEL: test_fcos: 1224 ; GENERIC: # %bb.0: 1225 ; GENERIC-NEXT: #APP 1226 ; GENERIC-NEXT: fcos 1227 ; GENERIC-NEXT: #NO_APP 1228 ; GENERIC-NEXT: retl 1229 ; 1230 ; ATOM-LABEL: test_fcos: 1231 ; ATOM: # %bb.0: 1232 ; ATOM-NEXT: #APP 1233 ; ATOM-NEXT: fcos # sched: [174:87.00] 1234 ; ATOM-NEXT: #NO_APP 1235 ; ATOM-NEXT: retl # sched: [79:39.50] 1236 ; 1237 ; SLM-LABEL: test_fcos: 1238 ; SLM: # %bb.0: 1239 ; SLM-NEXT: #APP 1240 ; SLM-NEXT: fcos # sched: [100:1.00] 1241 ; SLM-NEXT: #NO_APP 1242 ; SLM-NEXT: retl # sched: [4:1.00] 1243 ; 1244 ; SANDY-LABEL: test_fcos: 1245 ; SANDY: # %bb.0: 1246 ; SANDY-NEXT: #APP 1247 ; SANDY-NEXT: fcos # sched: [100:0.33] 1248 ; SANDY-NEXT: #NO_APP 1249 ; SANDY-NEXT: retl # sched: [6:1.00] 1250 ; 1251 ; HASWELL-LABEL: test_fcos: 1252 ; HASWELL: # %bb.0: 1253 ; HASWELL-NEXT: #APP 1254 ; HASWELL-NEXT: fcos # sched: [100:0.25] 1255 ; HASWELL-NEXT: #NO_APP 1256 ; HASWELL-NEXT: retl # sched: [7:1.00] 1257 ; 1258 ; BROADWELL-LABEL: test_fcos: 1259 ; BROADWELL: # %bb.0: 1260 ; BROADWELL-NEXT: #APP 1261 ; BROADWELL-NEXT: fcos # sched: [100:0.25] 1262 ; BROADWELL-NEXT: #NO_APP 1263 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1264 ; 1265 ; SKYLAKE-LABEL: test_fcos: 1266 ; SKYLAKE: # %bb.0: 1267 ; SKYLAKE-NEXT: #APP 1268 ; SKYLAKE-NEXT: fcos # sched: [100:0.25] 1269 ; SKYLAKE-NEXT: #NO_APP 1270 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1271 ; 1272 ; SKX-LABEL: test_fcos: 1273 ; SKX: # %bb.0: 1274 ; SKX-NEXT: #APP 1275 ; SKX-NEXT: fcos # sched: [100:0.25] 1276 ; SKX-NEXT: #NO_APP 1277 ; SKX-NEXT: retl # sched: [6:0.50] 1278 ; 1279 ; BTVER2-LABEL: test_fcos: 1280 ; BTVER2: # %bb.0: 1281 ; BTVER2-NEXT: #APP 1282 ; BTVER2-NEXT: fcos # sched: [100:0.50] 1283 ; BTVER2-NEXT: #NO_APP 1284 ; BTVER2-NEXT: retl # sched: [4:1.00] 1285 ; 1286 ; ZNVER1-LABEL: test_fcos: 1287 ; ZNVER1: # %bb.0: 1288 ; ZNVER1-NEXT: #APP 1289 ; ZNVER1-NEXT: fcos # sched: [100:0.25] 1290 ; ZNVER1-NEXT: #NO_APP 1291 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1292 tail call void asm sideeffect "fcos", ""() nounwind 1293 ret void 1294 } 1295 1296 define void @test_fdecstp() optsize { 1297 ; GENERIC-LABEL: test_fdecstp: 1298 ; GENERIC: # %bb.0: 1299 ; GENERIC-NEXT: #APP 1300 ; GENERIC-NEXT: fdecstp 1301 ; GENERIC-NEXT: #NO_APP 1302 ; GENERIC-NEXT: retl 1303 ; 1304 ; ATOM-LABEL: test_fdecstp: 1305 ; ATOM: # %bb.0: 1306 ; ATOM-NEXT: #APP 1307 ; ATOM-NEXT: fdecstp # sched: [1:0.50] 1308 ; ATOM-NEXT: #NO_APP 1309 ; ATOM-NEXT: retl # sched: [79:39.50] 1310 ; 1311 ; SLM-LABEL: test_fdecstp: 1312 ; SLM: # %bb.0: 1313 ; SLM-NEXT: #APP 1314 ; SLM-NEXT: fdecstp # sched: [100:1.00] 1315 ; SLM-NEXT: #NO_APP 1316 ; SLM-NEXT: retl # sched: [4:1.00] 1317 ; 1318 ; SANDY-LABEL: test_fdecstp: 1319 ; SANDY: # %bb.0: 1320 ; SANDY-NEXT: #APP 1321 ; SANDY-NEXT: fdecstp # sched: [1:1.00] 1322 ; SANDY-NEXT: #NO_APP 1323 ; SANDY-NEXT: retl # sched: [6:1.00] 1324 ; 1325 ; HASWELL-LABEL: test_fdecstp: 1326 ; HASWELL: # %bb.0: 1327 ; HASWELL-NEXT: #APP 1328 ; HASWELL-NEXT: fdecstp # sched: [2:1.00] 1329 ; HASWELL-NEXT: #NO_APP 1330 ; HASWELL-NEXT: retl # sched: [7:1.00] 1331 ; 1332 ; BROADWELL-LABEL: test_fdecstp: 1333 ; BROADWELL: # %bb.0: 1334 ; BROADWELL-NEXT: #APP 1335 ; BROADWELL-NEXT: fdecstp # sched: [2:1.00] 1336 ; BROADWELL-NEXT: #NO_APP 1337 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1338 ; 1339 ; SKYLAKE-LABEL: test_fdecstp: 1340 ; SKYLAKE: # %bb.0: 1341 ; SKYLAKE-NEXT: #APP 1342 ; SKYLAKE-NEXT: fdecstp # sched: [2:1.00] 1343 ; SKYLAKE-NEXT: #NO_APP 1344 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1345 ; 1346 ; SKX-LABEL: test_fdecstp: 1347 ; SKX: # %bb.0: 1348 ; SKX-NEXT: #APP 1349 ; SKX-NEXT: fdecstp # sched: [2:1.00] 1350 ; SKX-NEXT: #NO_APP 1351 ; SKX-NEXT: retl # sched: [6:0.50] 1352 ; 1353 ; BTVER2-LABEL: test_fdecstp: 1354 ; BTVER2: # %bb.0: 1355 ; BTVER2-NEXT: #APP 1356 ; BTVER2-NEXT: fdecstp # sched: [100:0.50] 1357 ; BTVER2-NEXT: #NO_APP 1358 ; BTVER2-NEXT: retl # sched: [4:1.00] 1359 ; 1360 ; ZNVER1-LABEL: test_fdecstp: 1361 ; ZNVER1: # %bb.0: 1362 ; ZNVER1-NEXT: #APP 1363 ; ZNVER1-NEXT: fdecstp # sched: [11:1.00] 1364 ; ZNVER1-NEXT: #NO_APP 1365 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1366 tail call void asm sideeffect "fdecstp", ""() nounwind 1367 ret void 1368 } 1369 1370 define void @test_fdiv(float *%a0, double *%a1) optsize { 1371 ; GENERIC-LABEL: test_fdiv: 1372 ; GENERIC: # %bb.0: 1373 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1374 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1375 ; GENERIC-NEXT: #APP 1376 ; GENERIC-NEXT: fdiv %st(0), %st(1) 1377 ; GENERIC-NEXT: fdiv %st(2) 1378 ; GENERIC-NEXT: fdivs (%ecx) 1379 ; GENERIC-NEXT: fdivl (%eax) 1380 ; GENERIC-NEXT: #NO_APP 1381 ; GENERIC-NEXT: retl 1382 ; 1383 ; ATOM-LABEL: test_fdiv: 1384 ; ATOM: # %bb.0: 1385 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1386 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1387 ; ATOM-NEXT: #APP 1388 ; ATOM-NEXT: fdiv %st(0), %st(1) # sched: [34:17.00] 1389 ; ATOM-NEXT: fdiv %st(2) # sched: [34:17.00] 1390 ; ATOM-NEXT: fdivs (%ecx) # sched: [34:17.00] 1391 ; ATOM-NEXT: fdivl (%eax) # sched: [34:17.00] 1392 ; ATOM-NEXT: #NO_APP 1393 ; ATOM-NEXT: retl # sched: [79:39.50] 1394 ; 1395 ; SLM-LABEL: test_fdiv: 1396 ; SLM: # %bb.0: 1397 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1398 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1399 ; SLM-NEXT: #APP 1400 ; SLM-NEXT: fdiv %st(0), %st(1) # sched: [19:17.00] 1401 ; SLM-NEXT: fdiv %st(2) # sched: [19:17.00] 1402 ; SLM-NEXT: fdivs (%ecx) # sched: [22:17.00] 1403 ; SLM-NEXT: fdivl (%eax) # sched: [22:17.00] 1404 ; SLM-NEXT: #NO_APP 1405 ; SLM-NEXT: retl # sched: [4:1.00] 1406 ; 1407 ; SANDY-LABEL: test_fdiv: 1408 ; SANDY: # %bb.0: 1409 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1410 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1411 ; SANDY-NEXT: #APP 1412 ; SANDY-NEXT: fdiv %st(0), %st(1) # sched: [14:14.00] 1413 ; SANDY-NEXT: fdiv %st(2) # sched: [14:14.00] 1414 ; SANDY-NEXT: fdivs (%ecx) # sched: [31:1.00] 1415 ; SANDY-NEXT: fdivl (%eax) # sched: [31:1.00] 1416 ; SANDY-NEXT: #NO_APP 1417 ; SANDY-NEXT: retl # sched: [6:1.00] 1418 ; 1419 ; HASWELL-LABEL: test_fdiv: 1420 ; HASWELL: # %bb.0: 1421 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1422 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1423 ; HASWELL-NEXT: #APP 1424 ; HASWELL-NEXT: fdiv %st(0), %st(1) # sched: [24:1.00] 1425 ; HASWELL-NEXT: fdiv %st(2) # sched: [20:1.00] 1426 ; HASWELL-NEXT: fdivs (%ecx) # sched: [31:1.00] 1427 ; HASWELL-NEXT: fdivl (%eax) # sched: [31:1.00] 1428 ; HASWELL-NEXT: #NO_APP 1429 ; HASWELL-NEXT: retl # sched: [7:1.00] 1430 ; 1431 ; BROADWELL-LABEL: test_fdiv: 1432 ; BROADWELL: # %bb.0: 1433 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1434 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1435 ; BROADWELL-NEXT: #APP 1436 ; BROADWELL-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1437 ; BROADWELL-NEXT: fdiv %st(2) # sched: [20:1.00] 1438 ; BROADWELL-NEXT: fdivs (%ecx) # sched: [21:1.00] 1439 ; BROADWELL-NEXT: fdivl (%eax) # sched: [21:1.00] 1440 ; BROADWELL-NEXT: #NO_APP 1441 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1442 ; 1443 ; SKYLAKE-LABEL: test_fdiv: 1444 ; SKYLAKE: # %bb.0: 1445 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1446 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1447 ; SKYLAKE-NEXT: #APP 1448 ; SKYLAKE-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1449 ; SKYLAKE-NEXT: fdiv %st(2) # sched: [20:1.00] 1450 ; SKYLAKE-NEXT: fdivs (%ecx) # sched: [22:1.00] 1451 ; SKYLAKE-NEXT: fdivl (%eax) # sched: [22:1.00] 1452 ; SKYLAKE-NEXT: #NO_APP 1453 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1454 ; 1455 ; SKX-LABEL: test_fdiv: 1456 ; SKX: # %bb.0: 1457 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1458 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1459 ; SKX-NEXT: #APP 1460 ; SKX-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1461 ; SKX-NEXT: fdiv %st(2) # sched: [20:1.00] 1462 ; SKX-NEXT: fdivs (%ecx) # sched: [22:1.00] 1463 ; SKX-NEXT: fdivl (%eax) # sched: [22:1.00] 1464 ; SKX-NEXT: #NO_APP 1465 ; SKX-NEXT: retl # sched: [6:0.50] 1466 ; 1467 ; BTVER2-LABEL: test_fdiv: 1468 ; BTVER2: # %bb.0: 1469 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1470 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1471 ; BTVER2-NEXT: #APP 1472 ; BTVER2-NEXT: fdiv %st(0), %st(1) # sched: [19:19.00] 1473 ; BTVER2-NEXT: fdiv %st(2) # sched: [19:19.00] 1474 ; BTVER2-NEXT: fdivs (%ecx) # sched: [24:19.00] 1475 ; BTVER2-NEXT: fdivl (%eax) # sched: [24:19.00] 1476 ; BTVER2-NEXT: #NO_APP 1477 ; BTVER2-NEXT: retl # sched: [4:1.00] 1478 ; 1479 ; ZNVER1-LABEL: test_fdiv: 1480 ; ZNVER1: # %bb.0: 1481 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1482 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1483 ; ZNVER1-NEXT: #APP 1484 ; ZNVER1-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1485 ; ZNVER1-NEXT: fdiv %st(2) # sched: [15:1.00] 1486 ; ZNVER1-NEXT: fdivs (%ecx) # sched: [22:1.00] 1487 ; ZNVER1-NEXT: fdivl (%eax) # sched: [22:1.00] 1488 ; ZNVER1-NEXT: #NO_APP 1489 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1490 tail call void asm sideeffect "fdiv %st(0), %st(1) \0A\09 fdiv %st(2), %st(0) \0A\09 fdivs $0 \0A\09 fdivl $1", "*m,*m"(float *%a0, double *%a1) nounwind 1491 ret void 1492 } 1493 1494 define void @test_fdivp_fidiv(i16 *%a0, i32 *%a1) optsize { 1495 ; GENERIC-LABEL: test_fdivp_fidiv: 1496 ; GENERIC: # %bb.0: 1497 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1498 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1499 ; GENERIC-NEXT: #APP 1500 ; GENERIC-NEXT: fdivp %st(1) 1501 ; GENERIC-NEXT: fdivp %st(2) 1502 ; GENERIC-NEXT: fidivs (%ecx) 1503 ; GENERIC-NEXT: fidivl (%eax) 1504 ; GENERIC-NEXT: #NO_APP 1505 ; GENERIC-NEXT: retl 1506 ; 1507 ; ATOM-LABEL: test_fdivp_fidiv: 1508 ; ATOM: # %bb.0: 1509 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1510 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1511 ; ATOM-NEXT: #APP 1512 ; ATOM-NEXT: fdivp %st(1) # sched: [34:17.00] 1513 ; ATOM-NEXT: fdivp %st(2) # sched: [34:17.00] 1514 ; ATOM-NEXT: fidivs (%ecx) # sched: [34:17.00] 1515 ; ATOM-NEXT: fidivl (%eax) # sched: [34:17.00] 1516 ; ATOM-NEXT: #NO_APP 1517 ; ATOM-NEXT: retl # sched: [79:39.50] 1518 ; 1519 ; SLM-LABEL: test_fdivp_fidiv: 1520 ; SLM: # %bb.0: 1521 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1522 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1523 ; SLM-NEXT: #APP 1524 ; SLM-NEXT: fdivp %st(1) # sched: [19:17.00] 1525 ; SLM-NEXT: fdivp %st(2) # sched: [19:17.00] 1526 ; SLM-NEXT: fidivs (%ecx) # sched: [22:17.00] 1527 ; SLM-NEXT: fidivl (%eax) # sched: [22:17.00] 1528 ; SLM-NEXT: #NO_APP 1529 ; SLM-NEXT: retl # sched: [4:1.00] 1530 ; 1531 ; SANDY-LABEL: test_fdivp_fidiv: 1532 ; SANDY: # %bb.0: 1533 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1534 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1535 ; SANDY-NEXT: #APP 1536 ; SANDY-NEXT: fdivp %st(1) # sched: [14:14.00] 1537 ; SANDY-NEXT: fdivp %st(2) # sched: [14:14.00] 1538 ; SANDY-NEXT: fidivs (%ecx) # sched: [34:1.00] 1539 ; SANDY-NEXT: fidivl (%eax) # sched: [34:1.00] 1540 ; SANDY-NEXT: #NO_APP 1541 ; SANDY-NEXT: retl # sched: [6:1.00] 1542 ; 1543 ; HASWELL-LABEL: test_fdivp_fidiv: 1544 ; HASWELL: # %bb.0: 1545 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1546 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1547 ; HASWELL-NEXT: #APP 1548 ; HASWELL-NEXT: fdivp %st(1) # sched: [24:1.00] 1549 ; HASWELL-NEXT: fdivp %st(2) # sched: [24:1.00] 1550 ; HASWELL-NEXT: fidivs (%ecx) # sched: [34:1.00] 1551 ; HASWELL-NEXT: fidivl (%eax) # sched: [34:1.00] 1552 ; HASWELL-NEXT: #NO_APP 1553 ; HASWELL-NEXT: retl # sched: [7:1.00] 1554 ; 1555 ; BROADWELL-LABEL: test_fdivp_fidiv: 1556 ; BROADWELL: # %bb.0: 1557 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1558 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1559 ; BROADWELL-NEXT: #APP 1560 ; BROADWELL-NEXT: fdivp %st(1) # sched: [15:1.00] 1561 ; BROADWELL-NEXT: fdivp %st(2) # sched: [15:1.00] 1562 ; BROADWELL-NEXT: fidivs (%ecx) # sched: [24:1.00] 1563 ; BROADWELL-NEXT: fidivl (%eax) # sched: [24:1.00] 1564 ; BROADWELL-NEXT: #NO_APP 1565 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1566 ; 1567 ; SKYLAKE-LABEL: test_fdivp_fidiv: 1568 ; SKYLAKE: # %bb.0: 1569 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1570 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1571 ; SKYLAKE-NEXT: #APP 1572 ; SKYLAKE-NEXT: fdivp %st(1) # sched: [15:1.00] 1573 ; SKYLAKE-NEXT: fdivp %st(2) # sched: [15:1.00] 1574 ; SKYLAKE-NEXT: fidivs (%ecx) # sched: [25:1.00] 1575 ; SKYLAKE-NEXT: fidivl (%eax) # sched: [25:1.00] 1576 ; SKYLAKE-NEXT: #NO_APP 1577 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1578 ; 1579 ; SKX-LABEL: test_fdivp_fidiv: 1580 ; SKX: # %bb.0: 1581 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1582 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1583 ; SKX-NEXT: #APP 1584 ; SKX-NEXT: fdivp %st(1) # sched: [15:1.00] 1585 ; SKX-NEXT: fdivp %st(2) # sched: [15:1.00] 1586 ; SKX-NEXT: fidivs (%ecx) # sched: [25:1.00] 1587 ; SKX-NEXT: fidivl (%eax) # sched: [25:1.00] 1588 ; SKX-NEXT: #NO_APP 1589 ; SKX-NEXT: retl # sched: [6:0.50] 1590 ; 1591 ; BTVER2-LABEL: test_fdivp_fidiv: 1592 ; BTVER2: # %bb.0: 1593 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1594 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1595 ; BTVER2-NEXT: #APP 1596 ; BTVER2-NEXT: fdivp %st(1) # sched: [19:19.00] 1597 ; BTVER2-NEXT: fdivp %st(2) # sched: [19:19.00] 1598 ; BTVER2-NEXT: fidivs (%ecx) # sched: [24:19.00] 1599 ; BTVER2-NEXT: fidivl (%eax) # sched: [24:19.00] 1600 ; BTVER2-NEXT: #NO_APP 1601 ; BTVER2-NEXT: retl # sched: [4:1.00] 1602 ; 1603 ; ZNVER1-LABEL: test_fdivp_fidiv: 1604 ; ZNVER1: # %bb.0: 1605 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1606 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1607 ; ZNVER1-NEXT: #APP 1608 ; ZNVER1-NEXT: fdivp %st(1) # sched: [15:1.00] 1609 ; ZNVER1-NEXT: fdivp %st(2) # sched: [15:1.00] 1610 ; ZNVER1-NEXT: fidivs (%ecx) # sched: [22:1.00] 1611 ; ZNVER1-NEXT: fidivl (%eax) # sched: [22:1.00] 1612 ; ZNVER1-NEXT: #NO_APP 1613 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1614 tail call void asm sideeffect "fdivp \0A\09 fdivp %st(2), %st(0) \0A\09 fidivs $0 \0A\09 fidivl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 1615 ret void 1616 } 1617 1618 define void @test_fdivr(float *%a0, double *%a1) optsize { 1619 ; GENERIC-LABEL: test_fdivr: 1620 ; GENERIC: # %bb.0: 1621 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1622 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1623 ; GENERIC-NEXT: #APP 1624 ; GENERIC-NEXT: fdivr %st(0), %st(1) 1625 ; GENERIC-NEXT: fdivr %st(2) 1626 ; GENERIC-NEXT: fdivrs (%ecx) 1627 ; GENERIC-NEXT: fdivrl (%eax) 1628 ; GENERIC-NEXT: #NO_APP 1629 ; GENERIC-NEXT: retl 1630 ; 1631 ; ATOM-LABEL: test_fdivr: 1632 ; ATOM: # %bb.0: 1633 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1634 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1635 ; ATOM-NEXT: #APP 1636 ; ATOM-NEXT: fdivr %st(0), %st(1) # sched: [34:17.00] 1637 ; ATOM-NEXT: fdivr %st(2) # sched: [34:17.00] 1638 ; ATOM-NEXT: fdivrs (%ecx) # sched: [34:17.00] 1639 ; ATOM-NEXT: fdivrl (%eax) # sched: [34:17.00] 1640 ; ATOM-NEXT: #NO_APP 1641 ; ATOM-NEXT: retl # sched: [79:39.50] 1642 ; 1643 ; SLM-LABEL: test_fdivr: 1644 ; SLM: # %bb.0: 1645 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1646 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1647 ; SLM-NEXT: #APP 1648 ; SLM-NEXT: fdivr %st(0), %st(1) # sched: [19:17.00] 1649 ; SLM-NEXT: fdivr %st(2) # sched: [19:17.00] 1650 ; SLM-NEXT: fdivrs (%ecx) # sched: [22:17.00] 1651 ; SLM-NEXT: fdivrl (%eax) # sched: [22:17.00] 1652 ; SLM-NEXT: #NO_APP 1653 ; SLM-NEXT: retl # sched: [4:1.00] 1654 ; 1655 ; SANDY-LABEL: test_fdivr: 1656 ; SANDY: # %bb.0: 1657 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1658 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1659 ; SANDY-NEXT: #APP 1660 ; SANDY-NEXT: fdivr %st(0), %st(1) # sched: [14:14.00] 1661 ; SANDY-NEXT: fdivr %st(2) # sched: [14:14.00] 1662 ; SANDY-NEXT: fdivrs (%ecx) # sched: [31:1.00] 1663 ; SANDY-NEXT: fdivrl (%eax) # sched: [31:1.00] 1664 ; SANDY-NEXT: #NO_APP 1665 ; SANDY-NEXT: retl # sched: [6:1.00] 1666 ; 1667 ; HASWELL-LABEL: test_fdivr: 1668 ; HASWELL: # %bb.0: 1669 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1670 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1671 ; HASWELL-NEXT: #APP 1672 ; HASWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1673 ; HASWELL-NEXT: fdivr %st(2) # sched: [24:1.00] 1674 ; HASWELL-NEXT: fdivrs (%ecx) # sched: [27:1.00] 1675 ; HASWELL-NEXT: fdivrl (%eax) # sched: [27:1.00] 1676 ; HASWELL-NEXT: #NO_APP 1677 ; HASWELL-NEXT: retl # sched: [7:1.00] 1678 ; 1679 ; BROADWELL-LABEL: test_fdivr: 1680 ; BROADWELL: # %bb.0: 1681 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1682 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1683 ; BROADWELL-NEXT: #APP 1684 ; BROADWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1685 ; BROADWELL-NEXT: fdivr %st(2) # sched: [15:1.00] 1686 ; BROADWELL-NEXT: fdivrs (%ecx) # sched: [26:1.00] 1687 ; BROADWELL-NEXT: fdivrl (%eax) # sched: [26:1.00] 1688 ; BROADWELL-NEXT: #NO_APP 1689 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1690 ; 1691 ; SKYLAKE-LABEL: test_fdivr: 1692 ; SKYLAKE: # %bb.0: 1693 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1694 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1695 ; SKYLAKE-NEXT: #APP 1696 ; SKYLAKE-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1697 ; SKYLAKE-NEXT: fdivr %st(2) # sched: [15:1.00] 1698 ; SKYLAKE-NEXT: fdivrs (%ecx) # sched: [27:1.00] 1699 ; SKYLAKE-NEXT: fdivrl (%eax) # sched: [27:1.00] 1700 ; SKYLAKE-NEXT: #NO_APP 1701 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1702 ; 1703 ; SKX-LABEL: test_fdivr: 1704 ; SKX: # %bb.0: 1705 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1706 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1707 ; SKX-NEXT: #APP 1708 ; SKX-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1709 ; SKX-NEXT: fdivr %st(2) # sched: [15:1.00] 1710 ; SKX-NEXT: fdivrs (%ecx) # sched: [27:1.00] 1711 ; SKX-NEXT: fdivrl (%eax) # sched: [27:1.00] 1712 ; SKX-NEXT: #NO_APP 1713 ; SKX-NEXT: retl # sched: [6:0.50] 1714 ; 1715 ; BTVER2-LABEL: test_fdivr: 1716 ; BTVER2: # %bb.0: 1717 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1718 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1719 ; BTVER2-NEXT: #APP 1720 ; BTVER2-NEXT: fdivr %st(0), %st(1) # sched: [19:19.00] 1721 ; BTVER2-NEXT: fdivr %st(2) # sched: [19:19.00] 1722 ; BTVER2-NEXT: fdivrs (%ecx) # sched: [24:19.00] 1723 ; BTVER2-NEXT: fdivrl (%eax) # sched: [24:19.00] 1724 ; BTVER2-NEXT: #NO_APP 1725 ; BTVER2-NEXT: retl # sched: [4:1.00] 1726 ; 1727 ; ZNVER1-LABEL: test_fdivr: 1728 ; ZNVER1: # %bb.0: 1729 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1730 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1731 ; ZNVER1-NEXT: #APP 1732 ; ZNVER1-NEXT: fdivr %st(0), %st(1) # sched: [15:1.00] 1733 ; ZNVER1-NEXT: fdivr %st(2) # sched: [15:1.00] 1734 ; ZNVER1-NEXT: fdivrs (%ecx) # sched: [22:1.00] 1735 ; ZNVER1-NEXT: fdivrl (%eax) # sched: [22:1.00] 1736 ; ZNVER1-NEXT: #NO_APP 1737 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1738 tail call void asm sideeffect "fdivr %st(0), %st(1) \0A\09 fdivr %st(2), %st(0) \0A\09 fdivrs $0 \0A\09 fdivrl $1", "*m,*m"(float *%a0, double *%a1) nounwind 1739 ret void 1740 } 1741 1742 define void @test_fdivrp_fidivr(i16 *%a0, i32 *%a1) optsize { 1743 ; GENERIC-LABEL: test_fdivrp_fidivr: 1744 ; GENERIC: # %bb.0: 1745 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1746 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1747 ; GENERIC-NEXT: #APP 1748 ; GENERIC-NEXT: fdivrp %st(1) 1749 ; GENERIC-NEXT: fdivrp %st(2) 1750 ; GENERIC-NEXT: fidivrs (%ecx) 1751 ; GENERIC-NEXT: fidivrl (%eax) 1752 ; GENERIC-NEXT: #NO_APP 1753 ; GENERIC-NEXT: retl 1754 ; 1755 ; ATOM-LABEL: test_fdivrp_fidivr: 1756 ; ATOM: # %bb.0: 1757 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1758 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1759 ; ATOM-NEXT: #APP 1760 ; ATOM-NEXT: fdivrp %st(1) # sched: [34:17.00] 1761 ; ATOM-NEXT: fdivrp %st(2) # sched: [34:17.00] 1762 ; ATOM-NEXT: fidivrs (%ecx) # sched: [34:17.00] 1763 ; ATOM-NEXT: fidivrl (%eax) # sched: [34:17.00] 1764 ; ATOM-NEXT: #NO_APP 1765 ; ATOM-NEXT: retl # sched: [79:39.50] 1766 ; 1767 ; SLM-LABEL: test_fdivrp_fidivr: 1768 ; SLM: # %bb.0: 1769 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1770 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1771 ; SLM-NEXT: #APP 1772 ; SLM-NEXT: fdivrp %st(1) # sched: [19:17.00] 1773 ; SLM-NEXT: fdivrp %st(2) # sched: [19:17.00] 1774 ; SLM-NEXT: fidivrs (%ecx) # sched: [22:17.00] 1775 ; SLM-NEXT: fidivrl (%eax) # sched: [22:17.00] 1776 ; SLM-NEXT: #NO_APP 1777 ; SLM-NEXT: retl # sched: [4:1.00] 1778 ; 1779 ; SANDY-LABEL: test_fdivrp_fidivr: 1780 ; SANDY: # %bb.0: 1781 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1782 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1783 ; SANDY-NEXT: #APP 1784 ; SANDY-NEXT: fdivrp %st(1) # sched: [14:14.00] 1785 ; SANDY-NEXT: fdivrp %st(2) # sched: [14:14.00] 1786 ; SANDY-NEXT: fidivrs (%ecx) # sched: [34:1.00] 1787 ; SANDY-NEXT: fidivrl (%eax) # sched: [34:1.00] 1788 ; SANDY-NEXT: #NO_APP 1789 ; SANDY-NEXT: retl # sched: [6:1.00] 1790 ; 1791 ; HASWELL-LABEL: test_fdivrp_fidivr: 1792 ; HASWELL: # %bb.0: 1793 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1794 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1795 ; HASWELL-NEXT: #APP 1796 ; HASWELL-NEXT: fdivrp %st(1) # sched: [20:1.00] 1797 ; HASWELL-NEXT: fdivrp %st(2) # sched: [20:1.00] 1798 ; HASWELL-NEXT: fidivrs (%ecx) # sched: [30:1.00] 1799 ; HASWELL-NEXT: fidivrl (%eax) # sched: [30:1.00] 1800 ; HASWELL-NEXT: #NO_APP 1801 ; HASWELL-NEXT: retl # sched: [7:1.00] 1802 ; 1803 ; BROADWELL-LABEL: test_fdivrp_fidivr: 1804 ; BROADWELL: # %bb.0: 1805 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1806 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1807 ; BROADWELL-NEXT: #APP 1808 ; BROADWELL-NEXT: fdivrp %st(1) # sched: [20:1.00] 1809 ; BROADWELL-NEXT: fdivrp %st(2) # sched: [20:1.00] 1810 ; BROADWELL-NEXT: fidivrs (%ecx) # sched: [29:1.00] 1811 ; BROADWELL-NEXT: fidivrl (%eax) # sched: [29:1.00] 1812 ; BROADWELL-NEXT: #NO_APP 1813 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1814 ; 1815 ; SKYLAKE-LABEL: test_fdivrp_fidivr: 1816 ; SKYLAKE: # %bb.0: 1817 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1818 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1819 ; SKYLAKE-NEXT: #APP 1820 ; SKYLAKE-NEXT: fdivrp %st(1) # sched: [20:1.00] 1821 ; SKYLAKE-NEXT: fdivrp %st(2) # sched: [20:1.00] 1822 ; SKYLAKE-NEXT: fidivrs (%ecx) # sched: [30:1.00] 1823 ; SKYLAKE-NEXT: fidivrl (%eax) # sched: [30:1.00] 1824 ; SKYLAKE-NEXT: #NO_APP 1825 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1826 ; 1827 ; SKX-LABEL: test_fdivrp_fidivr: 1828 ; SKX: # %bb.0: 1829 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1830 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1831 ; SKX-NEXT: #APP 1832 ; SKX-NEXT: fdivrp %st(1) # sched: [20:1.00] 1833 ; SKX-NEXT: fdivrp %st(2) # sched: [20:1.00] 1834 ; SKX-NEXT: fidivrs (%ecx) # sched: [30:1.00] 1835 ; SKX-NEXT: fidivrl (%eax) # sched: [30:1.00] 1836 ; SKX-NEXT: #NO_APP 1837 ; SKX-NEXT: retl # sched: [6:0.50] 1838 ; 1839 ; BTVER2-LABEL: test_fdivrp_fidivr: 1840 ; BTVER2: # %bb.0: 1841 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1842 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1843 ; BTVER2-NEXT: #APP 1844 ; BTVER2-NEXT: fdivrp %st(1) # sched: [19:19.00] 1845 ; BTVER2-NEXT: fdivrp %st(2) # sched: [19:19.00] 1846 ; BTVER2-NEXT: fidivrs (%ecx) # sched: [24:19.00] 1847 ; BTVER2-NEXT: fidivrl (%eax) # sched: [24:19.00] 1848 ; BTVER2-NEXT: #NO_APP 1849 ; BTVER2-NEXT: retl # sched: [4:1.00] 1850 ; 1851 ; ZNVER1-LABEL: test_fdivrp_fidivr: 1852 ; ZNVER1: # %bb.0: 1853 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1854 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1855 ; ZNVER1-NEXT: #APP 1856 ; ZNVER1-NEXT: fdivrp %st(1) # sched: [15:1.00] 1857 ; ZNVER1-NEXT: fdivrp %st(2) # sched: [15:1.00] 1858 ; ZNVER1-NEXT: fidivrs (%ecx) # sched: [22:1.00] 1859 ; ZNVER1-NEXT: fidivrl (%eax) # sched: [22:1.00] 1860 ; ZNVER1-NEXT: #NO_APP 1861 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1862 tail call void asm sideeffect "fdivrp \0A\09 fdivrp %st(2), %st(0) \0A\09 fidivrs $0 \0A\09 fidivrl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 1863 ret void 1864 } 1865 1866 define void @test_ffree() optsize { 1867 ; GENERIC-LABEL: test_ffree: 1868 ; GENERIC: # %bb.0: 1869 ; GENERIC-NEXT: #APP 1870 ; GENERIC-NEXT: ffree %st(0) 1871 ; GENERIC-NEXT: #NO_APP 1872 ; GENERIC-NEXT: retl 1873 ; 1874 ; ATOM-LABEL: test_ffree: 1875 ; ATOM: # %bb.0: 1876 ; ATOM-NEXT: #APP 1877 ; ATOM-NEXT: ffree %st(0) # sched: [1:0.50] 1878 ; ATOM-NEXT: #NO_APP 1879 ; ATOM-NEXT: retl # sched: [79:39.50] 1880 ; 1881 ; SLM-LABEL: test_ffree: 1882 ; SLM: # %bb.0: 1883 ; SLM-NEXT: #APP 1884 ; SLM-NEXT: ffree %st(0) # sched: [100:1.00] 1885 ; SLM-NEXT: #NO_APP 1886 ; SLM-NEXT: retl # sched: [4:1.00] 1887 ; 1888 ; SANDY-LABEL: test_ffree: 1889 ; SANDY: # %bb.0: 1890 ; SANDY-NEXT: #APP 1891 ; SANDY-NEXT: ffree %st(0) # sched: [1:1.00] 1892 ; SANDY-NEXT: #NO_APP 1893 ; SANDY-NEXT: retl # sched: [6:1.00] 1894 ; 1895 ; HASWELL-LABEL: test_ffree: 1896 ; HASWELL: # %bb.0: 1897 ; HASWELL-NEXT: #APP 1898 ; HASWELL-NEXT: ffree %st(0) # sched: [1:0.50] 1899 ; HASWELL-NEXT: #NO_APP 1900 ; HASWELL-NEXT: retl # sched: [7:1.00] 1901 ; 1902 ; BROADWELL-LABEL: test_ffree: 1903 ; BROADWELL: # %bb.0: 1904 ; BROADWELL-NEXT: #APP 1905 ; BROADWELL-NEXT: ffree %st(0) # sched: [100:0.25] 1906 ; BROADWELL-NEXT: #NO_APP 1907 ; BROADWELL-NEXT: retl # sched: [6:0.50] 1908 ; 1909 ; SKYLAKE-LABEL: test_ffree: 1910 ; SKYLAKE: # %bb.0: 1911 ; SKYLAKE-NEXT: #APP 1912 ; SKYLAKE-NEXT: ffree %st(0) # sched: [100:0.25] 1913 ; SKYLAKE-NEXT: #NO_APP 1914 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 1915 ; 1916 ; SKX-LABEL: test_ffree: 1917 ; SKX: # %bb.0: 1918 ; SKX-NEXT: #APP 1919 ; SKX-NEXT: ffree %st(0) # sched: [100:0.25] 1920 ; SKX-NEXT: #NO_APP 1921 ; SKX-NEXT: retl # sched: [6:0.50] 1922 ; 1923 ; BTVER2-LABEL: test_ffree: 1924 ; BTVER2: # %bb.0: 1925 ; BTVER2-NEXT: #APP 1926 ; BTVER2-NEXT: ffree %st(0) # sched: [100:0.50] 1927 ; BTVER2-NEXT: #NO_APP 1928 ; BTVER2-NEXT: retl # sched: [4:1.00] 1929 ; 1930 ; ZNVER1-LABEL: test_ffree: 1931 ; ZNVER1: # %bb.0: 1932 ; ZNVER1-NEXT: #APP 1933 ; ZNVER1-NEXT: ffree %st(0) # sched: [11:1.00] 1934 ; ZNVER1-NEXT: #NO_APP 1935 ; ZNVER1-NEXT: retl # sched: [1:0.50] 1936 tail call void asm sideeffect "ffree %st(0)", ""() nounwind 1937 ret void 1938 } 1939 1940 define void @test_ficom(i16 *%a0, i32 *%a1) optsize { 1941 ; GENERIC-LABEL: test_ficom: 1942 ; GENERIC: # %bb.0: 1943 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1944 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1945 ; GENERIC-NEXT: #APP 1946 ; GENERIC-NEXT: ficoms (%ecx) 1947 ; GENERIC-NEXT: ficoml (%eax) 1948 ; GENERIC-NEXT: ficomps (%ecx) 1949 ; GENERIC-NEXT: ficompl (%eax) 1950 ; GENERIC-NEXT: #NO_APP 1951 ; GENERIC-NEXT: retl 1952 ; 1953 ; ATOM-LABEL: test_ficom: 1954 ; ATOM: # %bb.0: 1955 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1956 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1957 ; ATOM-NEXT: #APP 1958 ; ATOM-NEXT: ficoms (%ecx) # sched: [5:5.00] 1959 ; ATOM-NEXT: ficoml (%eax) # sched: [5:5.00] 1960 ; ATOM-NEXT: ficomps (%ecx) # sched: [5:5.00] 1961 ; ATOM-NEXT: ficompl (%eax) # sched: [5:5.00] 1962 ; ATOM-NEXT: #NO_APP 1963 ; ATOM-NEXT: retl # sched: [79:39.50] 1964 ; 1965 ; SLM-LABEL: test_ficom: 1966 ; SLM: # %bb.0: 1967 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1968 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1969 ; SLM-NEXT: #APP 1970 ; SLM-NEXT: ficoms (%ecx) # sched: [6:1.00] 1971 ; SLM-NEXT: ficoml (%eax) # sched: [6:1.00] 1972 ; SLM-NEXT: ficomps (%ecx) # sched: [6:1.00] 1973 ; SLM-NEXT: ficompl (%eax) # sched: [6:1.00] 1974 ; SLM-NEXT: #NO_APP 1975 ; SLM-NEXT: retl # sched: [4:1.00] 1976 ; 1977 ; SANDY-LABEL: test_ficom: 1978 ; SANDY: # %bb.0: 1979 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1980 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1981 ; SANDY-NEXT: #APP 1982 ; SANDY-NEXT: ficoms (%ecx) # sched: [11:2.00] 1983 ; SANDY-NEXT: ficoml (%eax) # sched: [11:2.00] 1984 ; SANDY-NEXT: ficomps (%ecx) # sched: [11:2.00] 1985 ; SANDY-NEXT: ficompl (%eax) # sched: [11:2.00] 1986 ; SANDY-NEXT: #NO_APP 1987 ; SANDY-NEXT: retl # sched: [6:1.00] 1988 ; 1989 ; HASWELL-LABEL: test_ficom: 1990 ; HASWELL: # %bb.0: 1991 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1992 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1993 ; HASWELL-NEXT: #APP 1994 ; HASWELL-NEXT: ficoms (%ecx) # sched: [11:2.00] 1995 ; HASWELL-NEXT: ficoml (%eax) # sched: [11:2.00] 1996 ; HASWELL-NEXT: ficomps (%ecx) # sched: [11:2.00] 1997 ; HASWELL-NEXT: ficompl (%eax) # sched: [11:2.00] 1998 ; HASWELL-NEXT: #NO_APP 1999 ; HASWELL-NEXT: retl # sched: [7:1.00] 2000 ; 2001 ; BROADWELL-LABEL: test_ficom: 2002 ; BROADWELL: # %bb.0: 2003 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2004 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2005 ; BROADWELL-NEXT: #APP 2006 ; BROADWELL-NEXT: ficoms (%ecx) # sched: [10:2.00] 2007 ; BROADWELL-NEXT: ficoml (%eax) # sched: [10:2.00] 2008 ; BROADWELL-NEXT: ficomps (%ecx) # sched: [10:2.00] 2009 ; BROADWELL-NEXT: ficompl (%eax) # sched: [10:2.00] 2010 ; BROADWELL-NEXT: #NO_APP 2011 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2012 ; 2013 ; SKYLAKE-LABEL: test_ficom: 2014 ; SKYLAKE: # %bb.0: 2015 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2016 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2017 ; SKYLAKE-NEXT: #APP 2018 ; SKYLAKE-NEXT: ficoms (%ecx) # sched: [11:2.00] 2019 ; SKYLAKE-NEXT: ficoml (%eax) # sched: [11:2.00] 2020 ; SKYLAKE-NEXT: ficomps (%ecx) # sched: [11:2.00] 2021 ; SKYLAKE-NEXT: ficompl (%eax) # sched: [11:2.00] 2022 ; SKYLAKE-NEXT: #NO_APP 2023 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2024 ; 2025 ; SKX-LABEL: test_ficom: 2026 ; SKX: # %bb.0: 2027 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2028 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2029 ; SKX-NEXT: #APP 2030 ; SKX-NEXT: ficoms (%ecx) # sched: [11:2.00] 2031 ; SKX-NEXT: ficoml (%eax) # sched: [11:2.00] 2032 ; SKX-NEXT: ficomps (%ecx) # sched: [11:2.00] 2033 ; SKX-NEXT: ficompl (%eax) # sched: [11:2.00] 2034 ; SKX-NEXT: #NO_APP 2035 ; SKX-NEXT: retl # sched: [6:0.50] 2036 ; 2037 ; BTVER2-LABEL: test_ficom: 2038 ; BTVER2: # %bb.0: 2039 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2040 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2041 ; BTVER2-NEXT: #APP 2042 ; BTVER2-NEXT: ficoms (%ecx) # sched: [8:1.00] 2043 ; BTVER2-NEXT: ficoml (%eax) # sched: [8:1.00] 2044 ; BTVER2-NEXT: ficomps (%ecx) # sched: [8:1.00] 2045 ; BTVER2-NEXT: ficompl (%eax) # sched: [8:1.00] 2046 ; BTVER2-NEXT: #NO_APP 2047 ; BTVER2-NEXT: retl # sched: [4:1.00] 2048 ; 2049 ; ZNVER1-LABEL: test_ficom: 2050 ; ZNVER1: # %bb.0: 2051 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2052 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2053 ; ZNVER1-NEXT: #APP 2054 ; ZNVER1-NEXT: ficoms (%ecx) # sched: [12:1.50] 2055 ; ZNVER1-NEXT: ficoml (%eax) # sched: [12:1.50] 2056 ; ZNVER1-NEXT: ficomps (%ecx) # sched: [12:1.50] 2057 ; ZNVER1-NEXT: ficompl (%eax) # sched: [12:1.50] 2058 ; ZNVER1-NEXT: #NO_APP 2059 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2060 tail call void asm sideeffect "ficoms $0 \0A\09 ficoml $1 \0A\09 ficomps $0 \0A\09 ficompl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 2061 ret void 2062 } 2063 2064 define void @test_fild(i16 *%a0, i32 *%a1, i64 *%a2) optsize { 2065 ; GENERIC-LABEL: test_fild: 2066 ; GENERIC: # %bb.0: 2067 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2068 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2069 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 2070 ; GENERIC-NEXT: #APP 2071 ; GENERIC-NEXT: filds (%edx) 2072 ; GENERIC-NEXT: fildl (%ecx) 2073 ; GENERIC-NEXT: fildll (%eax) 2074 ; GENERIC-NEXT: #NO_APP 2075 ; GENERIC-NEXT: retl 2076 ; 2077 ; ATOM-LABEL: test_fild: 2078 ; ATOM: # %bb.0: 2079 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2080 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2081 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 2082 ; ATOM-NEXT: #APP 2083 ; ATOM-NEXT: filds (%edx) # sched: [5:5.00] 2084 ; ATOM-NEXT: fildl (%ecx) # sched: [5:5.00] 2085 ; ATOM-NEXT: fildll (%eax) # sched: [5:5.00] 2086 ; ATOM-NEXT: #NO_APP 2087 ; ATOM-NEXT: retl # sched: [79:39.50] 2088 ; 2089 ; SLM-LABEL: test_fild: 2090 ; SLM: # %bb.0: 2091 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2092 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2093 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 2094 ; SLM-NEXT: #APP 2095 ; SLM-NEXT: filds (%edx) # sched: [3:1.00] 2096 ; SLM-NEXT: fildl (%ecx) # sched: [3:1.00] 2097 ; SLM-NEXT: fildll (%eax) # sched: [3:1.00] 2098 ; SLM-NEXT: #NO_APP 2099 ; SLM-NEXT: retl # sched: [4:1.00] 2100 ; 2101 ; SANDY-LABEL: test_fild: 2102 ; SANDY: # %bb.0: 2103 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2104 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2105 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2106 ; SANDY-NEXT: #APP 2107 ; SANDY-NEXT: filds (%edx) # sched: [10:1.00] 2108 ; SANDY-NEXT: fildl (%ecx) # sched: [10:1.00] 2109 ; SANDY-NEXT: fildll (%eax) # sched: [10:1.00] 2110 ; SANDY-NEXT: #NO_APP 2111 ; SANDY-NEXT: retl # sched: [6:1.00] 2112 ; 2113 ; HASWELL-LABEL: test_fild: 2114 ; HASWELL: # %bb.0: 2115 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2116 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2117 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2118 ; HASWELL-NEXT: #APP 2119 ; HASWELL-NEXT: filds (%edx) # sched: [10:1.00] 2120 ; HASWELL-NEXT: fildl (%ecx) # sched: [10:1.00] 2121 ; HASWELL-NEXT: fildll (%eax) # sched: [10:1.00] 2122 ; HASWELL-NEXT: #NO_APP 2123 ; HASWELL-NEXT: retl # sched: [7:1.00] 2124 ; 2125 ; BROADWELL-LABEL: test_fild: 2126 ; BROADWELL: # %bb.0: 2127 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2128 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2129 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2130 ; BROADWELL-NEXT: #APP 2131 ; BROADWELL-NEXT: filds (%edx) # sched: [9:1.00] 2132 ; BROADWELL-NEXT: fildl (%ecx) # sched: [9:1.00] 2133 ; BROADWELL-NEXT: fildll (%eax) # sched: [9:1.00] 2134 ; BROADWELL-NEXT: #NO_APP 2135 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2136 ; 2137 ; SKYLAKE-LABEL: test_fild: 2138 ; SKYLAKE: # %bb.0: 2139 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2140 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2141 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2142 ; SKYLAKE-NEXT: #APP 2143 ; SKYLAKE-NEXT: filds (%edx) # sched: [10:1.00] 2144 ; SKYLAKE-NEXT: fildl (%ecx) # sched: [10:1.00] 2145 ; SKYLAKE-NEXT: fildll (%eax) # sched: [10:1.00] 2146 ; SKYLAKE-NEXT: #NO_APP 2147 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2148 ; 2149 ; SKX-LABEL: test_fild: 2150 ; SKX: # %bb.0: 2151 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2152 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2153 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2154 ; SKX-NEXT: #APP 2155 ; SKX-NEXT: filds (%edx) # sched: [10:1.00] 2156 ; SKX-NEXT: fildl (%ecx) # sched: [10:1.00] 2157 ; SKX-NEXT: fildll (%eax) # sched: [10:1.00] 2158 ; SKX-NEXT: #NO_APP 2159 ; SKX-NEXT: retl # sched: [6:0.50] 2160 ; 2161 ; BTVER2-LABEL: test_fild: 2162 ; BTVER2: # %bb.0: 2163 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2164 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2165 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 2166 ; BTVER2-NEXT: #APP 2167 ; BTVER2-NEXT: filds (%edx) # sched: [5:1.00] 2168 ; BTVER2-NEXT: fildl (%ecx) # sched: [5:1.00] 2169 ; BTVER2-NEXT: fildll (%eax) # sched: [5:1.00] 2170 ; BTVER2-NEXT: #NO_APP 2171 ; BTVER2-NEXT: retl # sched: [4:1.00] 2172 ; 2173 ; ZNVER1-LABEL: test_fild: 2174 ; ZNVER1: # %bb.0: 2175 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2176 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2177 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 2178 ; ZNVER1-NEXT: #APP 2179 ; ZNVER1-NEXT: filds (%edx) # sched: [11:1.00] 2180 ; ZNVER1-NEXT: fildl (%ecx) # sched: [11:1.00] 2181 ; ZNVER1-NEXT: fildll (%eax) # sched: [11:1.00] 2182 ; ZNVER1-NEXT: #NO_APP 2183 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2184 tail call void asm sideeffect "filds $0 \0A\09 fildl $1 \0A\09 fildll $2", "*m,*m,*m"(i16 *%a0, i32 *%a1, i64 *%a2) nounwind 2185 ret void 2186 } 2187 2188 define void @test_fincstp() optsize { 2189 ; GENERIC-LABEL: test_fincstp: 2190 ; GENERIC: # %bb.0: 2191 ; GENERIC-NEXT: #APP 2192 ; GENERIC-NEXT: fincstp 2193 ; GENERIC-NEXT: #NO_APP 2194 ; GENERIC-NEXT: retl 2195 ; 2196 ; ATOM-LABEL: test_fincstp: 2197 ; ATOM: # %bb.0: 2198 ; ATOM-NEXT: #APP 2199 ; ATOM-NEXT: fincstp # sched: [1:0.50] 2200 ; ATOM-NEXT: #NO_APP 2201 ; ATOM-NEXT: retl # sched: [79:39.50] 2202 ; 2203 ; SLM-LABEL: test_fincstp: 2204 ; SLM: # %bb.0: 2205 ; SLM-NEXT: #APP 2206 ; SLM-NEXT: fincstp # sched: [100:1.00] 2207 ; SLM-NEXT: #NO_APP 2208 ; SLM-NEXT: retl # sched: [4:1.00] 2209 ; 2210 ; SANDY-LABEL: test_fincstp: 2211 ; SANDY: # %bb.0: 2212 ; SANDY-NEXT: #APP 2213 ; SANDY-NEXT: fincstp # sched: [1:1.00] 2214 ; SANDY-NEXT: #NO_APP 2215 ; SANDY-NEXT: retl # sched: [6:1.00] 2216 ; 2217 ; HASWELL-LABEL: test_fincstp: 2218 ; HASWELL: # %bb.0: 2219 ; HASWELL-NEXT: #APP 2220 ; HASWELL-NEXT: fincstp # sched: [1:0.50] 2221 ; HASWELL-NEXT: #NO_APP 2222 ; HASWELL-NEXT: retl # sched: [7:1.00] 2223 ; 2224 ; BROADWELL-LABEL: test_fincstp: 2225 ; BROADWELL: # %bb.0: 2226 ; BROADWELL-NEXT: #APP 2227 ; BROADWELL-NEXT: fincstp # sched: [1:0.50] 2228 ; BROADWELL-NEXT: #NO_APP 2229 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2230 ; 2231 ; SKYLAKE-LABEL: test_fincstp: 2232 ; SKYLAKE: # %bb.0: 2233 ; SKYLAKE-NEXT: #APP 2234 ; SKYLAKE-NEXT: fincstp # sched: [1:0.50] 2235 ; SKYLAKE-NEXT: #NO_APP 2236 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2237 ; 2238 ; SKX-LABEL: test_fincstp: 2239 ; SKX: # %bb.0: 2240 ; SKX-NEXT: #APP 2241 ; SKX-NEXT: fincstp # sched: [1:0.50] 2242 ; SKX-NEXT: #NO_APP 2243 ; SKX-NEXT: retl # sched: [6:0.50] 2244 ; 2245 ; BTVER2-LABEL: test_fincstp: 2246 ; BTVER2: # %bb.0: 2247 ; BTVER2-NEXT: #APP 2248 ; BTVER2-NEXT: fincstp # sched: [100:0.50] 2249 ; BTVER2-NEXT: #NO_APP 2250 ; BTVER2-NEXT: retl # sched: [4:1.00] 2251 ; 2252 ; ZNVER1-LABEL: test_fincstp: 2253 ; ZNVER1: # %bb.0: 2254 ; ZNVER1-NEXT: #APP 2255 ; ZNVER1-NEXT: fincstp # sched: [11:1.00] 2256 ; ZNVER1-NEXT: #NO_APP 2257 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2258 tail call void asm sideeffect "fincstp", ""() nounwind 2259 ret void 2260 } 2261 2262 define void @test_finit() optsize { 2263 ; GENERIC-LABEL: test_finit: 2264 ; GENERIC: # %bb.0: 2265 ; GENERIC-NEXT: #APP 2266 ; GENERIC-NEXT: wait 2267 ; GENERIC-NEXT: fninit 2268 ; GENERIC-NEXT: #NO_APP 2269 ; GENERIC-NEXT: retl 2270 ; 2271 ; ATOM-LABEL: test_finit: 2272 ; ATOM: # %bb.0: 2273 ; ATOM-NEXT: #APP 2274 ; ATOM-NEXT: wait # sched: [1:0.50] 2275 ; ATOM-NEXT: fninit # sched: [63:31.50] 2276 ; ATOM-NEXT: #NO_APP 2277 ; ATOM-NEXT: retl # sched: [79:39.50] 2278 ; 2279 ; SLM-LABEL: test_finit: 2280 ; SLM: # %bb.0: 2281 ; SLM-NEXT: #APP 2282 ; SLM-NEXT: wait # sched: [100:1.00] 2283 ; SLM-NEXT: fninit # sched: [100:1.00] 2284 ; SLM-NEXT: #NO_APP 2285 ; SLM-NEXT: retl # sched: [4:1.00] 2286 ; 2287 ; SANDY-LABEL: test_finit: 2288 ; SANDY: # %bb.0: 2289 ; SANDY-NEXT: #APP 2290 ; SANDY-NEXT: wait # sched: [100:0.33] 2291 ; SANDY-NEXT: fninit # sched: [5:1.33] 2292 ; SANDY-NEXT: #NO_APP 2293 ; SANDY-NEXT: retl # sched: [6:1.00] 2294 ; 2295 ; HASWELL-LABEL: test_finit: 2296 ; HASWELL: # %bb.0: 2297 ; HASWELL-NEXT: #APP 2298 ; HASWELL-NEXT: wait # sched: [2:0.50] 2299 ; HASWELL-NEXT: fninit # sched: [75:6.00] 2300 ; HASWELL-NEXT: #NO_APP 2301 ; HASWELL-NEXT: retl # sched: [7:1.00] 2302 ; 2303 ; BROADWELL-LABEL: test_finit: 2304 ; BROADWELL: # %bb.0: 2305 ; BROADWELL-NEXT: #APP 2306 ; BROADWELL-NEXT: wait # sched: [2:0.50] 2307 ; BROADWELL-NEXT: fninit # sched: [75:6.00] 2308 ; BROADWELL-NEXT: #NO_APP 2309 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2310 ; 2311 ; SKYLAKE-LABEL: test_finit: 2312 ; SKYLAKE: # %bb.0: 2313 ; SKYLAKE-NEXT: #APP 2314 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 2315 ; SKYLAKE-NEXT: fninit # sched: [75:6.00] 2316 ; SKYLAKE-NEXT: #NO_APP 2317 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2318 ; 2319 ; SKX-LABEL: test_finit: 2320 ; SKX: # %bb.0: 2321 ; SKX-NEXT: #APP 2322 ; SKX-NEXT: wait # sched: [2:0.50] 2323 ; SKX-NEXT: fninit # sched: [75:6.00] 2324 ; SKX-NEXT: #NO_APP 2325 ; SKX-NEXT: retl # sched: [6:0.50] 2326 ; 2327 ; BTVER2-LABEL: test_finit: 2328 ; BTVER2: # %bb.0: 2329 ; BTVER2-NEXT: #APP 2330 ; BTVER2-NEXT: wait # sched: [100:0.50] 2331 ; BTVER2-NEXT: fninit # sched: [100:0.50] 2332 ; BTVER2-NEXT: #NO_APP 2333 ; BTVER2-NEXT: retl # sched: [4:1.00] 2334 ; 2335 ; ZNVER1-LABEL: test_finit: 2336 ; ZNVER1: # %bb.0: 2337 ; ZNVER1-NEXT: #APP 2338 ; ZNVER1-NEXT: wait # sched: [1:1.00] 2339 ; ZNVER1-NEXT: fninit # sched: [100:0.25] 2340 ; ZNVER1-NEXT: #NO_APP 2341 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2342 tail call void asm sideeffect "finit", ""() nounwind 2343 ret void 2344 } 2345 2346 define void @test_fninit() optsize { 2347 ; GENERIC-LABEL: test_fninit: 2348 ; GENERIC: # %bb.0: 2349 ; GENERIC-NEXT: #APP 2350 ; GENERIC-NEXT: fninit 2351 ; GENERIC-NEXT: #NO_APP 2352 ; GENERIC-NEXT: retl 2353 ; 2354 ; ATOM-LABEL: test_fninit: 2355 ; ATOM: # %bb.0: 2356 ; ATOM-NEXT: #APP 2357 ; ATOM-NEXT: fninit # sched: [63:31.50] 2358 ; ATOM-NEXT: #NO_APP 2359 ; ATOM-NEXT: retl # sched: [79:39.50] 2360 ; 2361 ; SLM-LABEL: test_fninit: 2362 ; SLM: # %bb.0: 2363 ; SLM-NEXT: #APP 2364 ; SLM-NEXT: fninit # sched: [100:1.00] 2365 ; SLM-NEXT: #NO_APP 2366 ; SLM-NEXT: retl # sched: [4:1.00] 2367 ; 2368 ; SANDY-LABEL: test_fninit: 2369 ; SANDY: # %bb.0: 2370 ; SANDY-NEXT: #APP 2371 ; SANDY-NEXT: fninit # sched: [5:1.33] 2372 ; SANDY-NEXT: #NO_APP 2373 ; SANDY-NEXT: retl # sched: [6:1.00] 2374 ; 2375 ; HASWELL-LABEL: test_fninit: 2376 ; HASWELL: # %bb.0: 2377 ; HASWELL-NEXT: #APP 2378 ; HASWELL-NEXT: fninit # sched: [75:6.00] 2379 ; HASWELL-NEXT: #NO_APP 2380 ; HASWELL-NEXT: retl # sched: [7:1.00] 2381 ; 2382 ; BROADWELL-LABEL: test_fninit: 2383 ; BROADWELL: # %bb.0: 2384 ; BROADWELL-NEXT: #APP 2385 ; BROADWELL-NEXT: fninit # sched: [75:6.00] 2386 ; BROADWELL-NEXT: #NO_APP 2387 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2388 ; 2389 ; SKYLAKE-LABEL: test_fninit: 2390 ; SKYLAKE: # %bb.0: 2391 ; SKYLAKE-NEXT: #APP 2392 ; SKYLAKE-NEXT: fninit # sched: [75:6.00] 2393 ; SKYLAKE-NEXT: #NO_APP 2394 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2395 ; 2396 ; SKX-LABEL: test_fninit: 2397 ; SKX: # %bb.0: 2398 ; SKX-NEXT: #APP 2399 ; SKX-NEXT: fninit # sched: [75:6.00] 2400 ; SKX-NEXT: #NO_APP 2401 ; SKX-NEXT: retl # sched: [6:0.50] 2402 ; 2403 ; BTVER2-LABEL: test_fninit: 2404 ; BTVER2: # %bb.0: 2405 ; BTVER2-NEXT: #APP 2406 ; BTVER2-NEXT: fninit # sched: [100:0.50] 2407 ; BTVER2-NEXT: #NO_APP 2408 ; BTVER2-NEXT: retl # sched: [4:1.00] 2409 ; 2410 ; ZNVER1-LABEL: test_fninit: 2411 ; ZNVER1: # %bb.0: 2412 ; ZNVER1-NEXT: #APP 2413 ; ZNVER1-NEXT: fninit # sched: [100:0.25] 2414 ; ZNVER1-NEXT: #NO_APP 2415 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2416 tail call void asm sideeffect "fninit", ""() nounwind 2417 ret void 2418 } 2419 2420 define void @test_fist_fistp_fisttp(i16* %a0, i32* %a1, i64 *%a2) optsize { 2421 ; GENERIC-LABEL: test_fist_fistp_fisttp: 2422 ; GENERIC: # %bb.0: 2423 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2424 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2425 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 2426 ; GENERIC-NEXT: #APP 2427 ; GENERIC-NEXT: fists (%edx) 2428 ; GENERIC-NEXT: fistl (%ecx) 2429 ; GENERIC-NEXT: fistps (%edx) 2430 ; GENERIC-NEXT: fistpl (%ecx) 2431 ; GENERIC-NEXT: fistpll (%eax) 2432 ; GENERIC-NEXT: fisttps (%edx) 2433 ; GENERIC-NEXT: fisttpl (%ecx) 2434 ; GENERIC-NEXT: fisttpll (%eax) 2435 ; GENERIC-NEXT: #NO_APP 2436 ; GENERIC-NEXT: retl 2437 ; 2438 ; ATOM-LABEL: test_fist_fistp_fisttp: 2439 ; ATOM: # %bb.0: 2440 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2441 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2442 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 2443 ; ATOM-NEXT: #APP 2444 ; ATOM-NEXT: fists (%edx) # sched: [6:3.00] 2445 ; ATOM-NEXT: fistl (%ecx) # sched: [6:3.00] 2446 ; ATOM-NEXT: fistps (%edx) # sched: [6:3.00] 2447 ; ATOM-NEXT: fistpl (%ecx) # sched: [6:3.00] 2448 ; ATOM-NEXT: fistpll (%eax) # sched: [6:3.00] 2449 ; ATOM-NEXT: fisttps (%edx) # sched: [2:1.00] 2450 ; ATOM-NEXT: fisttpl (%ecx) # sched: [2:1.00] 2451 ; ATOM-NEXT: fisttpll (%eax) # sched: [2:1.00] 2452 ; ATOM-NEXT: #NO_APP 2453 ; ATOM-NEXT: retl # sched: [79:39.50] 2454 ; 2455 ; SLM-LABEL: test_fist_fistp_fisttp: 2456 ; SLM: # %bb.0: 2457 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2458 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2459 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 2460 ; SLM-NEXT: #APP 2461 ; SLM-NEXT: fists (%edx) # sched: [1:1.00] 2462 ; SLM-NEXT: fistl (%ecx) # sched: [1:1.00] 2463 ; SLM-NEXT: fistps (%edx) # sched: [1:1.00] 2464 ; SLM-NEXT: fistpl (%ecx) # sched: [1:1.00] 2465 ; SLM-NEXT: fistpll (%eax) # sched: [1:1.00] 2466 ; SLM-NEXT: fisttps (%edx) # sched: [1:1.00] 2467 ; SLM-NEXT: fisttpl (%ecx) # sched: [1:1.00] 2468 ; SLM-NEXT: fisttpll (%eax) # sched: [1:1.00] 2469 ; SLM-NEXT: #NO_APP 2470 ; SLM-NEXT: retl # sched: [4:1.00] 2471 ; 2472 ; SANDY-LABEL: test_fist_fistp_fisttp: 2473 ; SANDY: # %bb.0: 2474 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2475 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2476 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2477 ; SANDY-NEXT: #APP 2478 ; SANDY-NEXT: fists (%edx) # sched: [9:1.00] 2479 ; SANDY-NEXT: fistl (%ecx) # sched: [9:1.00] 2480 ; SANDY-NEXT: fistps (%edx) # sched: [9:1.00] 2481 ; SANDY-NEXT: fistpl (%ecx) # sched: [9:1.00] 2482 ; SANDY-NEXT: fistpll (%eax) # sched: [9:1.00] 2483 ; SANDY-NEXT: fisttps (%edx) # sched: [5:1.00] 2484 ; SANDY-NEXT: fisttpl (%ecx) # sched: [5:1.00] 2485 ; SANDY-NEXT: fisttpll (%eax) # sched: [5:1.00] 2486 ; SANDY-NEXT: #NO_APP 2487 ; SANDY-NEXT: retl # sched: [6:1.00] 2488 ; 2489 ; HASWELL-LABEL: test_fist_fistp_fisttp: 2490 ; HASWELL: # %bb.0: 2491 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2492 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2493 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2494 ; HASWELL-NEXT: #APP 2495 ; HASWELL-NEXT: fists (%edx) # sched: [4:1.00] 2496 ; HASWELL-NEXT: fistl (%ecx) # sched: [4:1.00] 2497 ; HASWELL-NEXT: fistps (%edx) # sched: [4:1.00] 2498 ; HASWELL-NEXT: fistpl (%ecx) # sched: [4:1.00] 2499 ; HASWELL-NEXT: fistpll (%eax) # sched: [4:1.00] 2500 ; HASWELL-NEXT: fisttps (%edx) # sched: [4:1.00] 2501 ; HASWELL-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2502 ; HASWELL-NEXT: fisttpll (%eax) # sched: [4:1.00] 2503 ; HASWELL-NEXT: #NO_APP 2504 ; HASWELL-NEXT: retl # sched: [7:1.00] 2505 ; 2506 ; BROADWELL-LABEL: test_fist_fistp_fisttp: 2507 ; BROADWELL: # %bb.0: 2508 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2509 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2510 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2511 ; BROADWELL-NEXT: #APP 2512 ; BROADWELL-NEXT: fists (%edx) # sched: [4:1.00] 2513 ; BROADWELL-NEXT: fistl (%ecx) # sched: [4:1.00] 2514 ; BROADWELL-NEXT: fistps (%edx) # sched: [4:1.00] 2515 ; BROADWELL-NEXT: fistpl (%ecx) # sched: [4:1.00] 2516 ; BROADWELL-NEXT: fistpll (%eax) # sched: [4:1.00] 2517 ; BROADWELL-NEXT: fisttps (%edx) # sched: [4:1.00] 2518 ; BROADWELL-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2519 ; BROADWELL-NEXT: fisttpll (%eax) # sched: [4:1.00] 2520 ; BROADWELL-NEXT: #NO_APP 2521 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2522 ; 2523 ; SKYLAKE-LABEL: test_fist_fistp_fisttp: 2524 ; SKYLAKE: # %bb.0: 2525 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2526 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2527 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2528 ; SKYLAKE-NEXT: #APP 2529 ; SKYLAKE-NEXT: fists (%edx) # sched: [4:1.00] 2530 ; SKYLAKE-NEXT: fistl (%ecx) # sched: [4:1.00] 2531 ; SKYLAKE-NEXT: fistps (%edx) # sched: [4:1.00] 2532 ; SKYLAKE-NEXT: fistpl (%ecx) # sched: [4:1.00] 2533 ; SKYLAKE-NEXT: fistpll (%eax) # sched: [4:1.00] 2534 ; SKYLAKE-NEXT: fisttps (%edx) # sched: [4:1.00] 2535 ; SKYLAKE-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2536 ; SKYLAKE-NEXT: fisttpll (%eax) # sched: [4:1.00] 2537 ; SKYLAKE-NEXT: #NO_APP 2538 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2539 ; 2540 ; SKX-LABEL: test_fist_fistp_fisttp: 2541 ; SKX: # %bb.0: 2542 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2543 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2544 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2545 ; SKX-NEXT: #APP 2546 ; SKX-NEXT: fists (%edx) # sched: [4:1.00] 2547 ; SKX-NEXT: fistl (%ecx) # sched: [4:1.00] 2548 ; SKX-NEXT: fistps (%edx) # sched: [4:1.00] 2549 ; SKX-NEXT: fistpl (%ecx) # sched: [4:1.00] 2550 ; SKX-NEXT: fistpll (%eax) # sched: [4:1.00] 2551 ; SKX-NEXT: fisttps (%edx) # sched: [4:1.00] 2552 ; SKX-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2553 ; SKX-NEXT: fisttpll (%eax) # sched: [4:1.00] 2554 ; SKX-NEXT: #NO_APP 2555 ; SKX-NEXT: retl # sched: [6:0.50] 2556 ; 2557 ; BTVER2-LABEL: test_fist_fistp_fisttp: 2558 ; BTVER2: # %bb.0: 2559 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2560 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2561 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 2562 ; BTVER2-NEXT: #APP 2563 ; BTVER2-NEXT: fists (%edx) # sched: [1:1.00] 2564 ; BTVER2-NEXT: fistl (%ecx) # sched: [1:1.00] 2565 ; BTVER2-NEXT: fistps (%edx) # sched: [1:1.00] 2566 ; BTVER2-NEXT: fistpl (%ecx) # sched: [1:1.00] 2567 ; BTVER2-NEXT: fistpll (%eax) # sched: [1:1.00] 2568 ; BTVER2-NEXT: fisttps (%edx) # sched: [1:1.00] 2569 ; BTVER2-NEXT: fisttpl (%ecx) # sched: [1:1.00] 2570 ; BTVER2-NEXT: fisttpll (%eax) # sched: [1:1.00] 2571 ; BTVER2-NEXT: #NO_APP 2572 ; BTVER2-NEXT: retl # sched: [4:1.00] 2573 ; 2574 ; ZNVER1-LABEL: test_fist_fistp_fisttp: 2575 ; ZNVER1: # %bb.0: 2576 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2577 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2578 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 2579 ; ZNVER1-NEXT: #APP 2580 ; ZNVER1-NEXT: fists (%edx) # sched: [12:0.50] 2581 ; ZNVER1-NEXT: fistl (%ecx) # sched: [12:0.50] 2582 ; ZNVER1-NEXT: fistps (%edx) # sched: [12:0.50] 2583 ; ZNVER1-NEXT: fistpl (%ecx) # sched: [12:0.50] 2584 ; ZNVER1-NEXT: fistpll (%eax) # sched: [12:0.50] 2585 ; ZNVER1-NEXT: fisttps (%edx) # sched: [12:0.50] 2586 ; ZNVER1-NEXT: fisttpl (%ecx) # sched: [12:0.50] 2587 ; ZNVER1-NEXT: fisttpll (%eax) # sched: [12:0.50] 2588 ; ZNVER1-NEXT: #NO_APP 2589 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2590 tail call void asm sideeffect "fists $0 \0A\09 fistl $1 \0A\09 fistps $0 \0A\09 fistpl $1 \0A\09 fistpll $2 \0A\09 fisttps $0 \0A\09 fisttpl $1 \0A\09 fisttpll $2", "*m,*m,*m"(i16* %a0, i32* %a1, i64 *%a2) nounwind 2591 ret void 2592 } 2593 2594 define void @test_fld(i16* %a0, i32* %a1, i64 *%a2) optsize { 2595 ; GENERIC-LABEL: test_fld: 2596 ; GENERIC: # %bb.0: 2597 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2598 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2599 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 2600 ; GENERIC-NEXT: #APP 2601 ; GENERIC-NEXT: fld %st(0) 2602 ; GENERIC-NEXT: flds (%edx) 2603 ; GENERIC-NEXT: fldl (%ecx) 2604 ; GENERIC-NEXT: fldt (%eax) 2605 ; GENERIC-NEXT: #NO_APP 2606 ; GENERIC-NEXT: retl 2607 ; 2608 ; ATOM-LABEL: test_fld: 2609 ; ATOM: # %bb.0: 2610 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2611 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2612 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 2613 ; ATOM-NEXT: #APP 2614 ; ATOM-NEXT: fld %st(0) # sched: [1:1.00] 2615 ; ATOM-NEXT: flds (%edx) # sched: [1:1.00] 2616 ; ATOM-NEXT: fldl (%ecx) # sched: [1:1.00] 2617 ; ATOM-NEXT: fldt (%eax) # sched: [4:2.00] 2618 ; ATOM-NEXT: #NO_APP 2619 ; ATOM-NEXT: retl # sched: [79:39.50] 2620 ; 2621 ; SLM-LABEL: test_fld: 2622 ; SLM: # %bb.0: 2623 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2624 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2625 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 2626 ; SLM-NEXT: #APP 2627 ; SLM-NEXT: fld %st(0) # sched: [1:0.50] 2628 ; SLM-NEXT: flds (%edx) # sched: [3:1.00] 2629 ; SLM-NEXT: fldl (%ecx) # sched: [3:1.00] 2630 ; SLM-NEXT: fldt (%eax) # sched: [3:1.00] 2631 ; SLM-NEXT: #NO_APP 2632 ; SLM-NEXT: retl # sched: [4:1.00] 2633 ; 2634 ; SANDY-LABEL: test_fld: 2635 ; SANDY: # %bb.0: 2636 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2637 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2638 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2639 ; SANDY-NEXT: #APP 2640 ; SANDY-NEXT: fld %st(0) # sched: [1:1.00] 2641 ; SANDY-NEXT: flds (%edx) # sched: [9:1.00] 2642 ; SANDY-NEXT: fldl (%ecx) # sched: [9:1.00] 2643 ; SANDY-NEXT: fldt (%eax) # sched: [9:1.00] 2644 ; SANDY-NEXT: #NO_APP 2645 ; SANDY-NEXT: retl # sched: [6:1.00] 2646 ; 2647 ; HASWELL-LABEL: test_fld: 2648 ; HASWELL: # %bb.0: 2649 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2650 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2651 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2652 ; HASWELL-NEXT: #APP 2653 ; HASWELL-NEXT: fld %st(0) # sched: [1:0.50] 2654 ; HASWELL-NEXT: flds (%edx) # sched: [7:0.50] 2655 ; HASWELL-NEXT: fldl (%ecx) # sched: [7:0.50] 2656 ; HASWELL-NEXT: fldt (%eax) # sched: [7:0.50] 2657 ; HASWELL-NEXT: #NO_APP 2658 ; HASWELL-NEXT: retl # sched: [7:1.00] 2659 ; 2660 ; BROADWELL-LABEL: test_fld: 2661 ; BROADWELL: # %bb.0: 2662 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2663 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2664 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2665 ; BROADWELL-NEXT: #APP 2666 ; BROADWELL-NEXT: fld %st(0) # sched: [1:0.25] 2667 ; BROADWELL-NEXT: flds (%edx) # sched: [6:0.50] 2668 ; BROADWELL-NEXT: fldl (%ecx) # sched: [6:0.50] 2669 ; BROADWELL-NEXT: fldt (%eax) # sched: [6:0.50] 2670 ; BROADWELL-NEXT: #NO_APP 2671 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2672 ; 2673 ; SKYLAKE-LABEL: test_fld: 2674 ; SKYLAKE: # %bb.0: 2675 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2676 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2677 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2678 ; SKYLAKE-NEXT: #APP 2679 ; SKYLAKE-NEXT: fld %st(0) # sched: [1:0.25] 2680 ; SKYLAKE-NEXT: flds (%edx) # sched: [7:0.50] 2681 ; SKYLAKE-NEXT: fldl (%ecx) # sched: [7:0.50] 2682 ; SKYLAKE-NEXT: fldt (%eax) # sched: [7:0.50] 2683 ; SKYLAKE-NEXT: #NO_APP 2684 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2685 ; 2686 ; SKX-LABEL: test_fld: 2687 ; SKX: # %bb.0: 2688 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2689 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2690 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2691 ; SKX-NEXT: #APP 2692 ; SKX-NEXT: fld %st(0) # sched: [1:0.25] 2693 ; SKX-NEXT: flds (%edx) # sched: [7:0.50] 2694 ; SKX-NEXT: fldl (%ecx) # sched: [7:0.50] 2695 ; SKX-NEXT: fldt (%eax) # sched: [7:0.50] 2696 ; SKX-NEXT: #NO_APP 2697 ; SKX-NEXT: retl # sched: [6:0.50] 2698 ; 2699 ; BTVER2-LABEL: test_fld: 2700 ; BTVER2: # %bb.0: 2701 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2702 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2703 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 2704 ; BTVER2-NEXT: #APP 2705 ; BTVER2-NEXT: fld %st(0) # sched: [1:0.50] 2706 ; BTVER2-NEXT: flds (%edx) # sched: [5:1.00] 2707 ; BTVER2-NEXT: fldl (%ecx) # sched: [5:1.00] 2708 ; BTVER2-NEXT: fldt (%eax) # sched: [5:1.00] 2709 ; BTVER2-NEXT: #NO_APP 2710 ; BTVER2-NEXT: retl # sched: [4:1.00] 2711 ; 2712 ; ZNVER1-LABEL: test_fld: 2713 ; ZNVER1: # %bb.0: 2714 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2715 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2716 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 2717 ; ZNVER1-NEXT: #APP 2718 ; ZNVER1-NEXT: fld %st(0) # sched: [1:0.50] 2719 ; ZNVER1-NEXT: flds (%edx) # sched: [8:0.50] 2720 ; ZNVER1-NEXT: fldl (%ecx) # sched: [8:0.50] 2721 ; ZNVER1-NEXT: fldt (%eax) # sched: [1:0.50] 2722 ; ZNVER1-NEXT: #NO_APP 2723 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2724 tail call void asm sideeffect "fld %st(0) \0A\09 flds $0 \0A\09 fldl $1 \0A\09 fldt $2", "*m,*m,*m"(i16* %a0, i32* %a1, i64 *%a2) nounwind 2725 ret void 2726 } 2727 2728 define void @test_fldcw_fldenv(i8* %a0) optsize { 2729 ; GENERIC-LABEL: test_fldcw_fldenv: 2730 ; GENERIC: # %bb.0: 2731 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2732 ; GENERIC-NEXT: #APP 2733 ; GENERIC-NEXT: fldcw (%eax) 2734 ; GENERIC-NEXT: fldenv (%eax) 2735 ; GENERIC-NEXT: #NO_APP 2736 ; GENERIC-NEXT: retl 2737 ; 2738 ; ATOM-LABEL: test_fldcw_fldenv: 2739 ; ATOM: # %bb.0: 2740 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2741 ; ATOM-NEXT: #APP 2742 ; ATOM-NEXT: fldcw (%eax) # sched: [5:2.50] 2743 ; ATOM-NEXT: fldenv (%eax) # sched: [100:0.50] 2744 ; ATOM-NEXT: #NO_APP 2745 ; ATOM-NEXT: retl # sched: [79:39.50] 2746 ; 2747 ; SLM-LABEL: test_fldcw_fldenv: 2748 ; SLM: # %bb.0: 2749 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2750 ; SLM-NEXT: #APP 2751 ; SLM-NEXT: fldcw (%eax) # sched: [3:1.00] 2752 ; SLM-NEXT: fldenv (%eax) # sched: [100:1.00] 2753 ; SLM-NEXT: #NO_APP 2754 ; SLM-NEXT: retl # sched: [4:1.00] 2755 ; 2756 ; SANDY-LABEL: test_fldcw_fldenv: 2757 ; SANDY: # %bb.0: 2758 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2759 ; SANDY-NEXT: #APP 2760 ; SANDY-NEXT: fldcw (%eax) # sched: [8:2.00] 2761 ; SANDY-NEXT: fldenv (%eax) # sched: [100:0.33] 2762 ; SANDY-NEXT: #NO_APP 2763 ; SANDY-NEXT: retl # sched: [6:1.00] 2764 ; 2765 ; HASWELL-LABEL: test_fldcw_fldenv: 2766 ; HASWELL: # %bb.0: 2767 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2768 ; HASWELL-NEXT: #APP 2769 ; HASWELL-NEXT: fldcw (%eax) # sched: [7:1.00] 2770 ; HASWELL-NEXT: fldenv (%eax) # sched: [61:14.00] 2771 ; HASWELL-NEXT: #NO_APP 2772 ; HASWELL-NEXT: retl # sched: [7:1.00] 2773 ; 2774 ; BROADWELL-LABEL: test_fldcw_fldenv: 2775 ; BROADWELL: # %bb.0: 2776 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2777 ; BROADWELL-NEXT: #APP 2778 ; BROADWELL-NEXT: fldcw (%eax) # sched: [7:1.00] 2779 ; BROADWELL-NEXT: fldenv (%eax) # sched: [60:14.00] 2780 ; BROADWELL-NEXT: #NO_APP 2781 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2782 ; 2783 ; SKYLAKE-LABEL: test_fldcw_fldenv: 2784 ; SKYLAKE: # %bb.0: 2785 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2786 ; SKYLAKE-NEXT: #APP 2787 ; SKYLAKE-NEXT: fldcw (%eax) # sched: [7:1.00] 2788 ; SKYLAKE-NEXT: fldenv (%eax) # sched: [62:14.00] 2789 ; SKYLAKE-NEXT: #NO_APP 2790 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2791 ; 2792 ; SKX-LABEL: test_fldcw_fldenv: 2793 ; SKX: # %bb.0: 2794 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2795 ; SKX-NEXT: #APP 2796 ; SKX-NEXT: fldcw (%eax) # sched: [7:1.00] 2797 ; SKX-NEXT: fldenv (%eax) # sched: [62:14.00] 2798 ; SKX-NEXT: #NO_APP 2799 ; SKX-NEXT: retl # sched: [6:0.50] 2800 ; 2801 ; BTVER2-LABEL: test_fldcw_fldenv: 2802 ; BTVER2: # %bb.0: 2803 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2804 ; BTVER2-NEXT: #APP 2805 ; BTVER2-NEXT: fldcw (%eax) # sched: [5:1.00] 2806 ; BTVER2-NEXT: fldenv (%eax) # sched: [100:0.50] 2807 ; BTVER2-NEXT: #NO_APP 2808 ; BTVER2-NEXT: retl # sched: [4:1.00] 2809 ; 2810 ; ZNVER1-LABEL: test_fldcw_fldenv: 2811 ; ZNVER1: # %bb.0: 2812 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2813 ; ZNVER1-NEXT: #APP 2814 ; ZNVER1-NEXT: fldcw (%eax) # sched: [100:0.25] 2815 ; ZNVER1-NEXT: fldenv (%eax) # sched: [100:0.25] 2816 ; ZNVER1-NEXT: #NO_APP 2817 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2818 tail call void asm sideeffect "fldcw $0 \0A\09 fldenv $0", "*m"(i8* %a0) nounwind 2819 ret void 2820 } 2821 2822 define void @test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz() optsize { 2823 ; GENERIC-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2824 ; GENERIC: # %bb.0: 2825 ; GENERIC-NEXT: #APP 2826 ; GENERIC-NEXT: fld1 2827 ; GENERIC-NEXT: fldl2e 2828 ; GENERIC-NEXT: fldl2t 2829 ; GENERIC-NEXT: fldlg2 2830 ; GENERIC-NEXT: fldln2 2831 ; GENERIC-NEXT: fldpi 2832 ; GENERIC-NEXT: fldz 2833 ; GENERIC-NEXT: #NO_APP 2834 ; GENERIC-NEXT: retl 2835 ; 2836 ; ATOM-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2837 ; ATOM: # %bb.0: 2838 ; ATOM-NEXT: #APP 2839 ; ATOM-NEXT: fld1 # sched: [6:3.00] 2840 ; ATOM-NEXT: fldl2e # sched: [10:5.00] 2841 ; ATOM-NEXT: fldl2t # sched: [10:5.00] 2842 ; ATOM-NEXT: fldlg2 # sched: [10:5.00] 2843 ; ATOM-NEXT: fldln2 # sched: [10:5.00] 2844 ; ATOM-NEXT: fldpi # sched: [10:5.00] 2845 ; ATOM-NEXT: fldz # sched: [1:0.50] 2846 ; ATOM-NEXT: #NO_APP 2847 ; ATOM-NEXT: retl # sched: [79:39.50] 2848 ; 2849 ; SLM-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2850 ; SLM: # %bb.0: 2851 ; SLM-NEXT: #APP 2852 ; SLM-NEXT: fld1 # sched: [1:0.50] 2853 ; SLM-NEXT: fldl2e # sched: [1:1.00] 2854 ; SLM-NEXT: fldl2t # sched: [1:1.00] 2855 ; SLM-NEXT: fldlg2 # sched: [1:1.00] 2856 ; SLM-NEXT: fldln2 # sched: [1:1.00] 2857 ; SLM-NEXT: fldpi # sched: [1:1.00] 2858 ; SLM-NEXT: fldz # sched: [1:0.50] 2859 ; SLM-NEXT: #NO_APP 2860 ; SLM-NEXT: retl # sched: [4:1.00] 2861 ; 2862 ; SANDY-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2863 ; SANDY: # %bb.0: 2864 ; SANDY-NEXT: #APP 2865 ; SANDY-NEXT: fld1 # sched: [1:1.00] 2866 ; SANDY-NEXT: fldl2e # sched: [1:1.00] 2867 ; SANDY-NEXT: fldl2t # sched: [1:1.00] 2868 ; SANDY-NEXT: fldlg2 # sched: [1:1.00] 2869 ; SANDY-NEXT: fldln2 # sched: [1:1.00] 2870 ; SANDY-NEXT: fldpi # sched: [1:1.00] 2871 ; SANDY-NEXT: fldz # sched: [1:1.00] 2872 ; SANDY-NEXT: #NO_APP 2873 ; SANDY-NEXT: retl # sched: [6:1.00] 2874 ; 2875 ; HASWELL-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2876 ; HASWELL: # %bb.0: 2877 ; HASWELL-NEXT: #APP 2878 ; HASWELL-NEXT: fld1 # sched: [1:1.00] 2879 ; HASWELL-NEXT: fldl2e # sched: [1:1.00] 2880 ; HASWELL-NEXT: fldl2t # sched: [1:1.00] 2881 ; HASWELL-NEXT: fldlg2 # sched: [1:1.00] 2882 ; HASWELL-NEXT: fldln2 # sched: [1:1.00] 2883 ; HASWELL-NEXT: fldpi # sched: [1:1.00] 2884 ; HASWELL-NEXT: fldz # sched: [1:0.50] 2885 ; HASWELL-NEXT: #NO_APP 2886 ; HASWELL-NEXT: retl # sched: [7:1.00] 2887 ; 2888 ; BROADWELL-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2889 ; BROADWELL: # %bb.0: 2890 ; BROADWELL-NEXT: #APP 2891 ; BROADWELL-NEXT: fld1 # sched: [1:1.00] 2892 ; BROADWELL-NEXT: fldl2e # sched: [1:1.00] 2893 ; BROADWELL-NEXT: fldl2t # sched: [1:1.00] 2894 ; BROADWELL-NEXT: fldlg2 # sched: [1:1.00] 2895 ; BROADWELL-NEXT: fldln2 # sched: [1:1.00] 2896 ; BROADWELL-NEXT: fldpi # sched: [1:1.00] 2897 ; BROADWELL-NEXT: fldz # sched: [1:0.50] 2898 ; BROADWELL-NEXT: #NO_APP 2899 ; BROADWELL-NEXT: retl # sched: [6:0.50] 2900 ; 2901 ; SKYLAKE-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2902 ; SKYLAKE: # %bb.0: 2903 ; SKYLAKE-NEXT: #APP 2904 ; SKYLAKE-NEXT: fld1 # sched: [1:1.00] 2905 ; SKYLAKE-NEXT: fldl2e # sched: [1:1.00] 2906 ; SKYLAKE-NEXT: fldl2t # sched: [1:1.00] 2907 ; SKYLAKE-NEXT: fldlg2 # sched: [1:1.00] 2908 ; SKYLAKE-NEXT: fldln2 # sched: [1:1.00] 2909 ; SKYLAKE-NEXT: fldpi # sched: [1:1.00] 2910 ; SKYLAKE-NEXT: fldz # sched: [1:0.50] 2911 ; SKYLAKE-NEXT: #NO_APP 2912 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 2913 ; 2914 ; SKX-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2915 ; SKX: # %bb.0: 2916 ; SKX-NEXT: #APP 2917 ; SKX-NEXT: fld1 # sched: [1:1.00] 2918 ; SKX-NEXT: fldl2e # sched: [1:1.00] 2919 ; SKX-NEXT: fldl2t # sched: [1:1.00] 2920 ; SKX-NEXT: fldlg2 # sched: [1:1.00] 2921 ; SKX-NEXT: fldln2 # sched: [1:1.00] 2922 ; SKX-NEXT: fldpi # sched: [1:1.00] 2923 ; SKX-NEXT: fldz # sched: [1:0.50] 2924 ; SKX-NEXT: #NO_APP 2925 ; SKX-NEXT: retl # sched: [6:0.50] 2926 ; 2927 ; BTVER2-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2928 ; BTVER2: # %bb.0: 2929 ; BTVER2-NEXT: #APP 2930 ; BTVER2-NEXT: fld1 # sched: [3:1.00] 2931 ; BTVER2-NEXT: fldl2e # sched: [3:1.00] 2932 ; BTVER2-NEXT: fldl2t # sched: [3:1.00] 2933 ; BTVER2-NEXT: fldlg2 # sched: [3:1.00] 2934 ; BTVER2-NEXT: fldln2 # sched: [3:1.00] 2935 ; BTVER2-NEXT: fldpi # sched: [3:1.00] 2936 ; BTVER2-NEXT: fldz # sched: [3:1.00] 2937 ; BTVER2-NEXT: #NO_APP 2938 ; BTVER2-NEXT: retl # sched: [4:1.00] 2939 ; 2940 ; ZNVER1-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2941 ; ZNVER1: # %bb.0: 2942 ; ZNVER1-NEXT: #APP 2943 ; ZNVER1-NEXT: fld1 # sched: [11:1.00] 2944 ; ZNVER1-NEXT: fldl2e # sched: [11:1.00] 2945 ; ZNVER1-NEXT: fldl2t # sched: [11:1.00] 2946 ; ZNVER1-NEXT: fldlg2 # sched: [11:1.00] 2947 ; ZNVER1-NEXT: fldln2 # sched: [11:1.00] 2948 ; ZNVER1-NEXT: fldpi # sched: [11:1.00] 2949 ; ZNVER1-NEXT: fldz # sched: [8:0.50] 2950 ; ZNVER1-NEXT: #NO_APP 2951 ; ZNVER1-NEXT: retl # sched: [1:0.50] 2952 tail call void asm sideeffect "fld1 \0A\09 fldl2e \0A\09 fldl2t \0A\09 fldlg2 \0A\09 fldln2 \0A\09 fldpi \0A\09 fldz", ""() nounwind 2953 ret void 2954 } 2955 2956 define void @test_fmul(float *%a0, double *%a1) optsize { 2957 ; GENERIC-LABEL: test_fmul: 2958 ; GENERIC: # %bb.0: 2959 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2960 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2961 ; GENERIC-NEXT: #APP 2962 ; GENERIC-NEXT: fmul %st(0), %st(1) 2963 ; GENERIC-NEXT: fmul %st(2) 2964 ; GENERIC-NEXT: fmuls (%ecx) 2965 ; GENERIC-NEXT: fmull (%eax) 2966 ; GENERIC-NEXT: #NO_APP 2967 ; GENERIC-NEXT: retl 2968 ; 2969 ; ATOM-LABEL: test_fmul: 2970 ; ATOM: # %bb.0: 2971 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2972 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2973 ; ATOM-NEXT: #APP 2974 ; ATOM-NEXT: fmul %st(0), %st(1) # sched: [4:4.00] 2975 ; ATOM-NEXT: fmul %st(2) # sched: [4:4.00] 2976 ; ATOM-NEXT: fmuls (%ecx) # sched: [4:4.00] 2977 ; ATOM-NEXT: fmull (%eax) # sched: [4:4.00] 2978 ; ATOM-NEXT: #NO_APP 2979 ; ATOM-NEXT: retl # sched: [79:39.50] 2980 ; 2981 ; SLM-LABEL: test_fmul: 2982 ; SLM: # %bb.0: 2983 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2984 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2985 ; SLM-NEXT: #APP 2986 ; SLM-NEXT: fmul %st(0), %st(1) # sched: [5:2.00] 2987 ; SLM-NEXT: fmul %st(2) # sched: [5:2.00] 2988 ; SLM-NEXT: fmuls (%ecx) # sched: [8:2.00] 2989 ; SLM-NEXT: fmull (%eax) # sched: [8:2.00] 2990 ; SLM-NEXT: #NO_APP 2991 ; SLM-NEXT: retl # sched: [4:1.00] 2992 ; 2993 ; SANDY-LABEL: test_fmul: 2994 ; SANDY: # %bb.0: 2995 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2996 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2997 ; SANDY-NEXT: #APP 2998 ; SANDY-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] 2999 ; SANDY-NEXT: fmul %st(2) # sched: [5:1.00] 3000 ; SANDY-NEXT: fmuls (%ecx) # sched: [12:1.00] 3001 ; SANDY-NEXT: fmull (%eax) # sched: [12:1.00] 3002 ; SANDY-NEXT: #NO_APP 3003 ; SANDY-NEXT: retl # sched: [6:1.00] 3004 ; 3005 ; HASWELL-LABEL: test_fmul: 3006 ; HASWELL: # %bb.0: 3007 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3008 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3009 ; HASWELL-NEXT: #APP 3010 ; HASWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] 3011 ; HASWELL-NEXT: fmul %st(2) # sched: [5:1.00] 3012 ; HASWELL-NEXT: fmuls (%ecx) # sched: [12:1.00] 3013 ; HASWELL-NEXT: fmull (%eax) # sched: [12:1.00] 3014 ; HASWELL-NEXT: #NO_APP 3015 ; HASWELL-NEXT: retl # sched: [7:1.00] 3016 ; 3017 ; BROADWELL-LABEL: test_fmul: 3018 ; BROADWELL: # %bb.0: 3019 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3020 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3021 ; BROADWELL-NEXT: #APP 3022 ; BROADWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] 3023 ; BROADWELL-NEXT: fmul %st(2) # sched: [5:1.00] 3024 ; BROADWELL-NEXT: fmuls (%ecx) # sched: [11:1.00] 3025 ; BROADWELL-NEXT: fmull (%eax) # sched: [11:1.00] 3026 ; BROADWELL-NEXT: #NO_APP 3027 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3028 ; 3029 ; SKYLAKE-LABEL: test_fmul: 3030 ; SKYLAKE: # %bb.0: 3031 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3032 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3033 ; SKYLAKE-NEXT: #APP 3034 ; SKYLAKE-NEXT: fmul %st(0), %st(1) # sched: [4:1.00] 3035 ; SKYLAKE-NEXT: fmul %st(2) # sched: [4:1.00] 3036 ; SKYLAKE-NEXT: fmuls (%ecx) # sched: [11:1.00] 3037 ; SKYLAKE-NEXT: fmull (%eax) # sched: [11:1.00] 3038 ; SKYLAKE-NEXT: #NO_APP 3039 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3040 ; 3041 ; SKX-LABEL: test_fmul: 3042 ; SKX: # %bb.0: 3043 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3044 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3045 ; SKX-NEXT: #APP 3046 ; SKX-NEXT: fmul %st(0), %st(1) # sched: [4:1.00] 3047 ; SKX-NEXT: fmul %st(2) # sched: [4:1.00] 3048 ; SKX-NEXT: fmuls (%ecx) # sched: [11:1.00] 3049 ; SKX-NEXT: fmull (%eax) # sched: [11:1.00] 3050 ; SKX-NEXT: #NO_APP 3051 ; SKX-NEXT: retl # sched: [6:0.50] 3052 ; 3053 ; BTVER2-LABEL: test_fmul: 3054 ; BTVER2: # %bb.0: 3055 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3056 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 3057 ; BTVER2-NEXT: #APP 3058 ; BTVER2-NEXT: fmul %st(0), %st(1) # sched: [2:1.00] 3059 ; BTVER2-NEXT: fmul %st(2) # sched: [2:1.00] 3060 ; BTVER2-NEXT: fmuls (%ecx) # sched: [7:1.00] 3061 ; BTVER2-NEXT: fmull (%eax) # sched: [7:1.00] 3062 ; BTVER2-NEXT: #NO_APP 3063 ; BTVER2-NEXT: retl # sched: [4:1.00] 3064 ; 3065 ; ZNVER1-LABEL: test_fmul: 3066 ; ZNVER1: # %bb.0: 3067 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3068 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 3069 ; ZNVER1-NEXT: #APP 3070 ; ZNVER1-NEXT: fmul %st(0), %st(1) # sched: [3:0.50] 3071 ; ZNVER1-NEXT: fmul %st(2) # sched: [3:0.50] 3072 ; ZNVER1-NEXT: fmuls (%ecx) # sched: [10:0.50] 3073 ; ZNVER1-NEXT: fmull (%eax) # sched: [10:0.50] 3074 ; ZNVER1-NEXT: #NO_APP 3075 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3076 tail call void asm sideeffect "fmul %st(0), %st(1) \0A\09 fmul %st(2), %st(0) \0A\09 fmuls $0 \0A\09 fmull $1", "*m,*m"(float *%a0, double *%a1) nounwind 3077 ret void 3078 } 3079 3080 define void @test_fmulp_fimul(i16 *%a0, i32 *%a1) optsize { 3081 ; GENERIC-LABEL: test_fmulp_fimul: 3082 ; GENERIC: # %bb.0: 3083 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3084 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3085 ; GENERIC-NEXT: #APP 3086 ; GENERIC-NEXT: fmulp %st(1) 3087 ; GENERIC-NEXT: fmulp %st(2) 3088 ; GENERIC-NEXT: fimuls (%ecx) 3089 ; GENERIC-NEXT: fimull (%eax) 3090 ; GENERIC-NEXT: #NO_APP 3091 ; GENERIC-NEXT: retl 3092 ; 3093 ; ATOM-LABEL: test_fmulp_fimul: 3094 ; ATOM: # %bb.0: 3095 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3096 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 3097 ; ATOM-NEXT: #APP 3098 ; ATOM-NEXT: fmulp %st(1) # sched: [4:4.00] 3099 ; ATOM-NEXT: fmulp %st(2) # sched: [4:4.00] 3100 ; ATOM-NEXT: fimuls (%ecx) # sched: [4:4.00] 3101 ; ATOM-NEXT: fimull (%eax) # sched: [4:4.00] 3102 ; ATOM-NEXT: #NO_APP 3103 ; ATOM-NEXT: retl # sched: [79:39.50] 3104 ; 3105 ; SLM-LABEL: test_fmulp_fimul: 3106 ; SLM: # %bb.0: 3107 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3108 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 3109 ; SLM-NEXT: #APP 3110 ; SLM-NEXT: fmulp %st(1) # sched: [5:2.00] 3111 ; SLM-NEXT: fmulp %st(2) # sched: [5:2.00] 3112 ; SLM-NEXT: fimuls (%ecx) # sched: [8:2.00] 3113 ; SLM-NEXT: fimull (%eax) # sched: [8:2.00] 3114 ; SLM-NEXT: #NO_APP 3115 ; SLM-NEXT: retl # sched: [4:1.00] 3116 ; 3117 ; SANDY-LABEL: test_fmulp_fimul: 3118 ; SANDY: # %bb.0: 3119 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3120 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3121 ; SANDY-NEXT: #APP 3122 ; SANDY-NEXT: fmulp %st(1) # sched: [5:1.00] 3123 ; SANDY-NEXT: fmulp %st(2) # sched: [5:1.00] 3124 ; SANDY-NEXT: fimuls (%ecx) # sched: [15:1.00] 3125 ; SANDY-NEXT: fimull (%eax) # sched: [15:1.00] 3126 ; SANDY-NEXT: #NO_APP 3127 ; SANDY-NEXT: retl # sched: [6:1.00] 3128 ; 3129 ; HASWELL-LABEL: test_fmulp_fimul: 3130 ; HASWELL: # %bb.0: 3131 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3132 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3133 ; HASWELL-NEXT: #APP 3134 ; HASWELL-NEXT: fmulp %st(1) # sched: [5:1.00] 3135 ; HASWELL-NEXT: fmulp %st(2) # sched: [5:1.00] 3136 ; HASWELL-NEXT: fimuls (%ecx) # sched: [15:1.00] 3137 ; HASWELL-NEXT: fimull (%eax) # sched: [15:1.00] 3138 ; HASWELL-NEXT: #NO_APP 3139 ; HASWELL-NEXT: retl # sched: [7:1.00] 3140 ; 3141 ; BROADWELL-LABEL: test_fmulp_fimul: 3142 ; BROADWELL: # %bb.0: 3143 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3144 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3145 ; BROADWELL-NEXT: #APP 3146 ; BROADWELL-NEXT: fmulp %st(1) # sched: [5:1.00] 3147 ; BROADWELL-NEXT: fmulp %st(2) # sched: [5:1.00] 3148 ; BROADWELL-NEXT: fimuls (%ecx) # sched: [14:1.00] 3149 ; BROADWELL-NEXT: fimull (%eax) # sched: [14:1.00] 3150 ; BROADWELL-NEXT: #NO_APP 3151 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3152 ; 3153 ; SKYLAKE-LABEL: test_fmulp_fimul: 3154 ; SKYLAKE: # %bb.0: 3155 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3156 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3157 ; SKYLAKE-NEXT: #APP 3158 ; SKYLAKE-NEXT: fmulp %st(1) # sched: [4:1.00] 3159 ; SKYLAKE-NEXT: fmulp %st(2) # sched: [4:1.00] 3160 ; SKYLAKE-NEXT: fimuls (%ecx) # sched: [14:1.00] 3161 ; SKYLAKE-NEXT: fimull (%eax) # sched: [14:1.00] 3162 ; SKYLAKE-NEXT: #NO_APP 3163 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3164 ; 3165 ; SKX-LABEL: test_fmulp_fimul: 3166 ; SKX: # %bb.0: 3167 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3168 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3169 ; SKX-NEXT: #APP 3170 ; SKX-NEXT: fmulp %st(1) # sched: [4:1.00] 3171 ; SKX-NEXT: fmulp %st(2) # sched: [4:1.00] 3172 ; SKX-NEXT: fimuls (%ecx) # sched: [14:1.00] 3173 ; SKX-NEXT: fimull (%eax) # sched: [14:1.00] 3174 ; SKX-NEXT: #NO_APP 3175 ; SKX-NEXT: retl # sched: [6:0.50] 3176 ; 3177 ; BTVER2-LABEL: test_fmulp_fimul: 3178 ; BTVER2: # %bb.0: 3179 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3180 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 3181 ; BTVER2-NEXT: #APP 3182 ; BTVER2-NEXT: fmulp %st(1) # sched: [2:1.00] 3183 ; BTVER2-NEXT: fmulp %st(2) # sched: [2:1.00] 3184 ; BTVER2-NEXT: fimuls (%ecx) # sched: [7:1.00] 3185 ; BTVER2-NEXT: fimull (%eax) # sched: [7:1.00] 3186 ; BTVER2-NEXT: #NO_APP 3187 ; BTVER2-NEXT: retl # sched: [4:1.00] 3188 ; 3189 ; ZNVER1-LABEL: test_fmulp_fimul: 3190 ; ZNVER1: # %bb.0: 3191 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3192 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 3193 ; ZNVER1-NEXT: #APP 3194 ; ZNVER1-NEXT: fmulp %st(1) # sched: [3:0.50] 3195 ; ZNVER1-NEXT: fmulp %st(2) # sched: [3:0.50] 3196 ; ZNVER1-NEXT: fimuls (%ecx) # sched: [10:0.50] 3197 ; ZNVER1-NEXT: fimull (%eax) # sched: [10:0.50] 3198 ; ZNVER1-NEXT: #NO_APP 3199 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3200 tail call void asm sideeffect "fmulp \0A\09 fmulp %st(2), %st(0) \0A\09 fimuls $0 \0A\09 fimull $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 3201 ret void 3202 } 3203 3204 define void @test_fnop() optsize { 3205 ; GENERIC-LABEL: test_fnop: 3206 ; GENERIC: # %bb.0: 3207 ; GENERIC-NEXT: #APP 3208 ; GENERIC-NEXT: fnop 3209 ; GENERIC-NEXT: #NO_APP 3210 ; GENERIC-NEXT: retl 3211 ; 3212 ; ATOM-LABEL: test_fnop: 3213 ; ATOM: # %bb.0: 3214 ; ATOM-NEXT: #APP 3215 ; ATOM-NEXT: fnop # sched: [1:0.50] 3216 ; ATOM-NEXT: #NO_APP 3217 ; ATOM-NEXT: retl # sched: [79:39.50] 3218 ; 3219 ; SLM-LABEL: test_fnop: 3220 ; SLM: # %bb.0: 3221 ; SLM-NEXT: #APP 3222 ; SLM-NEXT: fnop # sched: [1:0.50] 3223 ; SLM-NEXT: #NO_APP 3224 ; SLM-NEXT: retl # sched: [4:1.00] 3225 ; 3226 ; SANDY-LABEL: test_fnop: 3227 ; SANDY: # %bb.0: 3228 ; SANDY-NEXT: #APP 3229 ; SANDY-NEXT: fnop # sched: [1:1.00] 3230 ; SANDY-NEXT: #NO_APP 3231 ; SANDY-NEXT: retl # sched: [6:1.00] 3232 ; 3233 ; HASWELL-LABEL: test_fnop: 3234 ; HASWELL: # %bb.0: 3235 ; HASWELL-NEXT: #APP 3236 ; HASWELL-NEXT: fnop # sched: [1:0.50] 3237 ; HASWELL-NEXT: #NO_APP 3238 ; HASWELL-NEXT: retl # sched: [7:1.00] 3239 ; 3240 ; BROADWELL-LABEL: test_fnop: 3241 ; BROADWELL: # %bb.0: 3242 ; BROADWELL-NEXT: #APP 3243 ; BROADWELL-NEXT: fnop # sched: [1:0.50] 3244 ; BROADWELL-NEXT: #NO_APP 3245 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3246 ; 3247 ; SKYLAKE-LABEL: test_fnop: 3248 ; SKYLAKE: # %bb.0: 3249 ; SKYLAKE-NEXT: #APP 3250 ; SKYLAKE-NEXT: fnop # sched: [1:0.50] 3251 ; SKYLAKE-NEXT: #NO_APP 3252 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3253 ; 3254 ; SKX-LABEL: test_fnop: 3255 ; SKX: # %bb.0: 3256 ; SKX-NEXT: #APP 3257 ; SKX-NEXT: fnop # sched: [1:0.50] 3258 ; SKX-NEXT: #NO_APP 3259 ; SKX-NEXT: retl # sched: [6:0.50] 3260 ; 3261 ; BTVER2-LABEL: test_fnop: 3262 ; BTVER2: # %bb.0: 3263 ; BTVER2-NEXT: #APP 3264 ; BTVER2-NEXT: fnop # sched: [1:0.50] 3265 ; BTVER2-NEXT: #NO_APP 3266 ; BTVER2-NEXT: retl # sched: [4:1.00] 3267 ; 3268 ; ZNVER1-LABEL: test_fnop: 3269 ; ZNVER1: # %bb.0: 3270 ; ZNVER1-NEXT: #APP 3271 ; ZNVER1-NEXT: fnop # sched: [1:1.00] 3272 ; ZNVER1-NEXT: #NO_APP 3273 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3274 tail call void asm sideeffect "fnop", ""() nounwind 3275 ret void 3276 } 3277 3278 define void @test_fpatan() optsize { 3279 ; GENERIC-LABEL: test_fpatan: 3280 ; GENERIC: # %bb.0: 3281 ; GENERIC-NEXT: #APP 3282 ; GENERIC-NEXT: fpatan 3283 ; GENERIC-NEXT: #NO_APP 3284 ; GENERIC-NEXT: retl 3285 ; 3286 ; ATOM-LABEL: test_fpatan: 3287 ; ATOM: # %bb.0: 3288 ; ATOM-NEXT: #APP 3289 ; ATOM-NEXT: fpatan # sched: [183:91.50] 3290 ; ATOM-NEXT: #NO_APP 3291 ; ATOM-NEXT: retl # sched: [79:39.50] 3292 ; 3293 ; SLM-LABEL: test_fpatan: 3294 ; SLM: # %bb.0: 3295 ; SLM-NEXT: #APP 3296 ; SLM-NEXT: fpatan # sched: [100:1.00] 3297 ; SLM-NEXT: #NO_APP 3298 ; SLM-NEXT: retl # sched: [4:1.00] 3299 ; 3300 ; SANDY-LABEL: test_fpatan: 3301 ; SANDY: # %bb.0: 3302 ; SANDY-NEXT: #APP 3303 ; SANDY-NEXT: fpatan # sched: [100:0.33] 3304 ; SANDY-NEXT: #NO_APP 3305 ; SANDY-NEXT: retl # sched: [6:1.00] 3306 ; 3307 ; HASWELL-LABEL: test_fpatan: 3308 ; HASWELL: # %bb.0: 3309 ; HASWELL-NEXT: #APP 3310 ; HASWELL-NEXT: fpatan # sched: [100:0.25] 3311 ; HASWELL-NEXT: #NO_APP 3312 ; HASWELL-NEXT: retl # sched: [7:1.00] 3313 ; 3314 ; BROADWELL-LABEL: test_fpatan: 3315 ; BROADWELL: # %bb.0: 3316 ; BROADWELL-NEXT: #APP 3317 ; BROADWELL-NEXT: fpatan # sched: [100:0.25] 3318 ; BROADWELL-NEXT: #NO_APP 3319 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3320 ; 3321 ; SKYLAKE-LABEL: test_fpatan: 3322 ; SKYLAKE: # %bb.0: 3323 ; SKYLAKE-NEXT: #APP 3324 ; SKYLAKE-NEXT: fpatan # sched: [100:0.25] 3325 ; SKYLAKE-NEXT: #NO_APP 3326 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3327 ; 3328 ; SKX-LABEL: test_fpatan: 3329 ; SKX: # %bb.0: 3330 ; SKX-NEXT: #APP 3331 ; SKX-NEXT: fpatan # sched: [100:0.25] 3332 ; SKX-NEXT: #NO_APP 3333 ; SKX-NEXT: retl # sched: [6:0.50] 3334 ; 3335 ; BTVER2-LABEL: test_fpatan: 3336 ; BTVER2: # %bb.0: 3337 ; BTVER2-NEXT: #APP 3338 ; BTVER2-NEXT: fpatan # sched: [100:0.50] 3339 ; BTVER2-NEXT: #NO_APP 3340 ; BTVER2-NEXT: retl # sched: [4:1.00] 3341 ; 3342 ; ZNVER1-LABEL: test_fpatan: 3343 ; ZNVER1: # %bb.0: 3344 ; ZNVER1-NEXT: #APP 3345 ; ZNVER1-NEXT: fpatan # sched: [100:0.25] 3346 ; ZNVER1-NEXT: #NO_APP 3347 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3348 tail call void asm sideeffect "fpatan", ""() nounwind 3349 ret void 3350 } 3351 3352 define void @test_fprem_fprem1() optsize { 3353 ; GENERIC-LABEL: test_fprem_fprem1: 3354 ; GENERIC: # %bb.0: 3355 ; GENERIC-NEXT: #APP 3356 ; GENERIC-NEXT: fprem 3357 ; GENERIC-NEXT: fprem1 3358 ; GENERIC-NEXT: #NO_APP 3359 ; GENERIC-NEXT: retl 3360 ; 3361 ; ATOM-LABEL: test_fprem_fprem1: 3362 ; ATOM: # %bb.0: 3363 ; ATOM-NEXT: #APP 3364 ; ATOM-NEXT: fprem # sched: [55:27.50] 3365 ; ATOM-NEXT: fprem1 # sched: [71:35.50] 3366 ; ATOM-NEXT: #NO_APP 3367 ; ATOM-NEXT: retl # sched: [79:39.50] 3368 ; 3369 ; SLM-LABEL: test_fprem_fprem1: 3370 ; SLM: # %bb.0: 3371 ; SLM-NEXT: #APP 3372 ; SLM-NEXT: fprem # sched: [100:1.00] 3373 ; SLM-NEXT: fprem1 # sched: [100:1.00] 3374 ; SLM-NEXT: #NO_APP 3375 ; SLM-NEXT: retl # sched: [4:1.00] 3376 ; 3377 ; SANDY-LABEL: test_fprem_fprem1: 3378 ; SANDY: # %bb.0: 3379 ; SANDY-NEXT: #APP 3380 ; SANDY-NEXT: fprem # sched: [100:0.33] 3381 ; SANDY-NEXT: fprem1 # sched: [100:0.33] 3382 ; SANDY-NEXT: #NO_APP 3383 ; SANDY-NEXT: retl # sched: [6:1.00] 3384 ; 3385 ; HASWELL-LABEL: test_fprem_fprem1: 3386 ; HASWELL: # %bb.0: 3387 ; HASWELL-NEXT: #APP 3388 ; HASWELL-NEXT: fprem # sched: [19:7.00] 3389 ; HASWELL-NEXT: fprem1 # sched: [27:10.25] 3390 ; HASWELL-NEXT: #NO_APP 3391 ; HASWELL-NEXT: retl # sched: [7:1.00] 3392 ; 3393 ; BROADWELL-LABEL: test_fprem_fprem1: 3394 ; BROADWELL: # %bb.0: 3395 ; BROADWELL-NEXT: #APP 3396 ; BROADWELL-NEXT: fprem # sched: [100:0.25] 3397 ; BROADWELL-NEXT: fprem1 # sched: [100:0.25] 3398 ; BROADWELL-NEXT: #NO_APP 3399 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3400 ; 3401 ; SKYLAKE-LABEL: test_fprem_fprem1: 3402 ; SKYLAKE: # %bb.0: 3403 ; SKYLAKE-NEXT: #APP 3404 ; SKYLAKE-NEXT: fprem # sched: [100:0.25] 3405 ; SKYLAKE-NEXT: fprem1 # sched: [100:0.25] 3406 ; SKYLAKE-NEXT: #NO_APP 3407 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3408 ; 3409 ; SKX-LABEL: test_fprem_fprem1: 3410 ; SKX: # %bb.0: 3411 ; SKX-NEXT: #APP 3412 ; SKX-NEXT: fprem # sched: [100:0.25] 3413 ; SKX-NEXT: fprem1 # sched: [100:0.25] 3414 ; SKX-NEXT: #NO_APP 3415 ; SKX-NEXT: retl # sched: [6:0.50] 3416 ; 3417 ; BTVER2-LABEL: test_fprem_fprem1: 3418 ; BTVER2: # %bb.0: 3419 ; BTVER2-NEXT: #APP 3420 ; BTVER2-NEXT: fprem # sched: [100:0.50] 3421 ; BTVER2-NEXT: fprem1 # sched: [100:0.50] 3422 ; BTVER2-NEXT: #NO_APP 3423 ; BTVER2-NEXT: retl # sched: [4:1.00] 3424 ; 3425 ; ZNVER1-LABEL: test_fprem_fprem1: 3426 ; ZNVER1: # %bb.0: 3427 ; ZNVER1-NEXT: #APP 3428 ; ZNVER1-NEXT: fprem # sched: [100:0.25] 3429 ; ZNVER1-NEXT: fprem1 # sched: [100:0.25] 3430 ; ZNVER1-NEXT: #NO_APP 3431 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3432 tail call void asm sideeffect "fprem \0A\09 fprem1", ""() nounwind 3433 ret void 3434 } 3435 3436 define void @test_fptan() optsize { 3437 ; GENERIC-LABEL: test_fptan: 3438 ; GENERIC: # %bb.0: 3439 ; GENERIC-NEXT: #APP 3440 ; GENERIC-NEXT: fptan 3441 ; GENERIC-NEXT: #NO_APP 3442 ; GENERIC-NEXT: retl 3443 ; 3444 ; ATOM-LABEL: test_fptan: 3445 ; ATOM: # %bb.0: 3446 ; ATOM-NEXT: #APP 3447 ; ATOM-NEXT: fptan # sched: [168:84.00] 3448 ; ATOM-NEXT: #NO_APP 3449 ; ATOM-NEXT: retl # sched: [79:39.50] 3450 ; 3451 ; SLM-LABEL: test_fptan: 3452 ; SLM: # %bb.0: 3453 ; SLM-NEXT: #APP 3454 ; SLM-NEXT: fptan # sched: [100:1.00] 3455 ; SLM-NEXT: #NO_APP 3456 ; SLM-NEXT: retl # sched: [4:1.00] 3457 ; 3458 ; SANDY-LABEL: test_fptan: 3459 ; SANDY: # %bb.0: 3460 ; SANDY-NEXT: #APP 3461 ; SANDY-NEXT: fptan # sched: [100:0.33] 3462 ; SANDY-NEXT: #NO_APP 3463 ; SANDY-NEXT: retl # sched: [6:1.00] 3464 ; 3465 ; HASWELL-LABEL: test_fptan: 3466 ; HASWELL: # %bb.0: 3467 ; HASWELL-NEXT: #APP 3468 ; HASWELL-NEXT: fptan # sched: [100:0.25] 3469 ; HASWELL-NEXT: #NO_APP 3470 ; HASWELL-NEXT: retl # sched: [7:1.00] 3471 ; 3472 ; BROADWELL-LABEL: test_fptan: 3473 ; BROADWELL: # %bb.0: 3474 ; BROADWELL-NEXT: #APP 3475 ; BROADWELL-NEXT: fptan # sched: [100:0.25] 3476 ; BROADWELL-NEXT: #NO_APP 3477 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3478 ; 3479 ; SKYLAKE-LABEL: test_fptan: 3480 ; SKYLAKE: # %bb.0: 3481 ; SKYLAKE-NEXT: #APP 3482 ; SKYLAKE-NEXT: fptan # sched: [100:0.25] 3483 ; SKYLAKE-NEXT: #NO_APP 3484 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3485 ; 3486 ; SKX-LABEL: test_fptan: 3487 ; SKX: # %bb.0: 3488 ; SKX-NEXT: #APP 3489 ; SKX-NEXT: fptan # sched: [100:0.25] 3490 ; SKX-NEXT: #NO_APP 3491 ; SKX-NEXT: retl # sched: [6:0.50] 3492 ; 3493 ; BTVER2-LABEL: test_fptan: 3494 ; BTVER2: # %bb.0: 3495 ; BTVER2-NEXT: #APP 3496 ; BTVER2-NEXT: fptan # sched: [100:0.50] 3497 ; BTVER2-NEXT: #NO_APP 3498 ; BTVER2-NEXT: retl # sched: [4:1.00] 3499 ; 3500 ; ZNVER1-LABEL: test_fptan: 3501 ; ZNVER1: # %bb.0: 3502 ; ZNVER1-NEXT: #APP 3503 ; ZNVER1-NEXT: fptan # sched: [100:0.25] 3504 ; ZNVER1-NEXT: #NO_APP 3505 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3506 tail call void asm sideeffect "fptan", ""() nounwind 3507 ret void 3508 } 3509 3510 define void @test_frndint() optsize { 3511 ; GENERIC-LABEL: test_frndint: 3512 ; GENERIC: # %bb.0: 3513 ; GENERIC-NEXT: #APP 3514 ; GENERIC-NEXT: frndint 3515 ; GENERIC-NEXT: #NO_APP 3516 ; GENERIC-NEXT: retl 3517 ; 3518 ; ATOM-LABEL: test_frndint: 3519 ; ATOM: # %bb.0: 3520 ; ATOM-NEXT: #APP 3521 ; ATOM-NEXT: frndint # sched: [46:23.00] 3522 ; ATOM-NEXT: #NO_APP 3523 ; ATOM-NEXT: retl # sched: [79:39.50] 3524 ; 3525 ; SLM-LABEL: test_frndint: 3526 ; SLM: # %bb.0: 3527 ; SLM-NEXT: #APP 3528 ; SLM-NEXT: frndint # sched: [100:1.00] 3529 ; SLM-NEXT: #NO_APP 3530 ; SLM-NEXT: retl # sched: [4:1.00] 3531 ; 3532 ; SANDY-LABEL: test_frndint: 3533 ; SANDY: # %bb.0: 3534 ; SANDY-NEXT: #APP 3535 ; SANDY-NEXT: frndint # sched: [100:0.33] 3536 ; SANDY-NEXT: #NO_APP 3537 ; SANDY-NEXT: retl # sched: [6:1.00] 3538 ; 3539 ; HASWELL-LABEL: test_frndint: 3540 ; HASWELL: # %bb.0: 3541 ; HASWELL-NEXT: #APP 3542 ; HASWELL-NEXT: frndint # sched: [11:4.25] 3543 ; HASWELL-NEXT: #NO_APP 3544 ; HASWELL-NEXT: retl # sched: [7:1.00] 3545 ; 3546 ; BROADWELL-LABEL: test_frndint: 3547 ; BROADWELL: # %bb.0: 3548 ; BROADWELL-NEXT: #APP 3549 ; BROADWELL-NEXT: frndint # sched: [100:0.25] 3550 ; BROADWELL-NEXT: #NO_APP 3551 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3552 ; 3553 ; SKYLAKE-LABEL: test_frndint: 3554 ; SKYLAKE: # %bb.0: 3555 ; SKYLAKE-NEXT: #APP 3556 ; SKYLAKE-NEXT: frndint # sched: [100:0.25] 3557 ; SKYLAKE-NEXT: #NO_APP 3558 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3559 ; 3560 ; SKX-LABEL: test_frndint: 3561 ; SKX: # %bb.0: 3562 ; SKX-NEXT: #APP 3563 ; SKX-NEXT: frndint # sched: [100:0.25] 3564 ; SKX-NEXT: #NO_APP 3565 ; SKX-NEXT: retl # sched: [6:0.50] 3566 ; 3567 ; BTVER2-LABEL: test_frndint: 3568 ; BTVER2: # %bb.0: 3569 ; BTVER2-NEXT: #APP 3570 ; BTVER2-NEXT: frndint # sched: [100:0.50] 3571 ; BTVER2-NEXT: #NO_APP 3572 ; BTVER2-NEXT: retl # sched: [4:1.00] 3573 ; 3574 ; ZNVER1-LABEL: test_frndint: 3575 ; ZNVER1: # %bb.0: 3576 ; ZNVER1-NEXT: #APP 3577 ; ZNVER1-NEXT: frndint # sched: [100:0.25] 3578 ; ZNVER1-NEXT: #NO_APP 3579 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3580 tail call void asm sideeffect "frndint", ""() nounwind 3581 ret void 3582 } 3583 3584 define void @test_frstor(i8* %a0) optsize { 3585 ; GENERIC-LABEL: test_frstor: 3586 ; GENERIC: # %bb.0: 3587 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3588 ; GENERIC-NEXT: #APP 3589 ; GENERIC-NEXT: frstor (%eax) 3590 ; GENERIC-NEXT: #NO_APP 3591 ; GENERIC-NEXT: retl 3592 ; 3593 ; ATOM-LABEL: test_frstor: 3594 ; ATOM: # %bb.0: 3595 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3596 ; ATOM-NEXT: #APP 3597 ; ATOM-NEXT: frstor (%eax) # sched: [100:0.50] 3598 ; ATOM-NEXT: #NO_APP 3599 ; ATOM-NEXT: retl # sched: [79:39.50] 3600 ; 3601 ; SLM-LABEL: test_frstor: 3602 ; SLM: # %bb.0: 3603 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3604 ; SLM-NEXT: #APP 3605 ; SLM-NEXT: frstor (%eax) # sched: [100:1.00] 3606 ; SLM-NEXT: #NO_APP 3607 ; SLM-NEXT: retl # sched: [4:1.00] 3608 ; 3609 ; SANDY-LABEL: test_frstor: 3610 ; SANDY: # %bb.0: 3611 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3612 ; SANDY-NEXT: #APP 3613 ; SANDY-NEXT: frstor (%eax) # sched: [100:0.33] 3614 ; SANDY-NEXT: #NO_APP 3615 ; SANDY-NEXT: retl # sched: [6:1.00] 3616 ; 3617 ; HASWELL-LABEL: test_frstor: 3618 ; HASWELL: # %bb.0: 3619 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3620 ; HASWELL-NEXT: #APP 3621 ; HASWELL-NEXT: frstor (%eax) # sched: [1:22.50] 3622 ; HASWELL-NEXT: #NO_APP 3623 ; HASWELL-NEXT: retl # sched: [7:1.00] 3624 ; 3625 ; BROADWELL-LABEL: test_frstor: 3626 ; BROADWELL: # %bb.0: 3627 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3628 ; BROADWELL-NEXT: #APP 3629 ; BROADWELL-NEXT: frstor (%eax) # sched: [100:0.25] 3630 ; BROADWELL-NEXT: #NO_APP 3631 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3632 ; 3633 ; SKYLAKE-LABEL: test_frstor: 3634 ; SKYLAKE: # %bb.0: 3635 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3636 ; SKYLAKE-NEXT: #APP 3637 ; SKYLAKE-NEXT: frstor (%eax) # sched: [100:0.25] 3638 ; SKYLAKE-NEXT: #NO_APP 3639 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3640 ; 3641 ; SKX-LABEL: test_frstor: 3642 ; SKX: # %bb.0: 3643 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3644 ; SKX-NEXT: #APP 3645 ; SKX-NEXT: frstor (%eax) # sched: [100:0.25] 3646 ; SKX-NEXT: #NO_APP 3647 ; SKX-NEXT: retl # sched: [6:0.50] 3648 ; 3649 ; BTVER2-LABEL: test_frstor: 3650 ; BTVER2: # %bb.0: 3651 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3652 ; BTVER2-NEXT: #APP 3653 ; BTVER2-NEXT: frstor (%eax) # sched: [100:0.50] 3654 ; BTVER2-NEXT: #NO_APP 3655 ; BTVER2-NEXT: retl # sched: [4:1.00] 3656 ; 3657 ; ZNVER1-LABEL: test_frstor: 3658 ; ZNVER1: # %bb.0: 3659 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3660 ; ZNVER1-NEXT: #APP 3661 ; ZNVER1-NEXT: frstor (%eax) # sched: [100:0.25] 3662 ; ZNVER1-NEXT: #NO_APP 3663 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3664 tail call void asm sideeffect "frstor $0", "*m"(i8* %a0) nounwind 3665 ret void 3666 } 3667 3668 define void @test_fsave(i8* %a0) optsize { 3669 ; GENERIC-LABEL: test_fsave: 3670 ; GENERIC: # %bb.0: 3671 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3672 ; GENERIC-NEXT: #APP 3673 ; GENERIC-NEXT: wait 3674 ; GENERIC-NEXT: fnsave (%eax) 3675 ; GENERIC-NEXT: #NO_APP 3676 ; GENERIC-NEXT: retl 3677 ; 3678 ; ATOM-LABEL: test_fsave: 3679 ; ATOM: # %bb.0: 3680 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3681 ; ATOM-NEXT: #APP 3682 ; ATOM-NEXT: wait # sched: [1:0.50] 3683 ; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] 3684 ; ATOM-NEXT: #NO_APP 3685 ; ATOM-NEXT: retl # sched: [79:39.50] 3686 ; 3687 ; SLM-LABEL: test_fsave: 3688 ; SLM: # %bb.0: 3689 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3690 ; SLM-NEXT: #APP 3691 ; SLM-NEXT: wait # sched: [100:1.00] 3692 ; SLM-NEXT: fnsave (%eax) # sched: [100:1.00] 3693 ; SLM-NEXT: #NO_APP 3694 ; SLM-NEXT: retl # sched: [4:1.00] 3695 ; 3696 ; SANDY-LABEL: test_fsave: 3697 ; SANDY: # %bb.0: 3698 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3699 ; SANDY-NEXT: #APP 3700 ; SANDY-NEXT: wait # sched: [100:0.33] 3701 ; SANDY-NEXT: fnsave (%eax) # sched: [100:0.33] 3702 ; SANDY-NEXT: #NO_APP 3703 ; SANDY-NEXT: retl # sched: [6:1.00] 3704 ; 3705 ; HASWELL-LABEL: test_fsave: 3706 ; HASWELL: # %bb.0: 3707 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3708 ; HASWELL-NEXT: #APP 3709 ; HASWELL-NEXT: wait # sched: [2:0.50] 3710 ; HASWELL-NEXT: fnsave (%eax) # sched: [1:36.75] 3711 ; HASWELL-NEXT: #NO_APP 3712 ; HASWELL-NEXT: retl # sched: [7:1.00] 3713 ; 3714 ; BROADWELL-LABEL: test_fsave: 3715 ; BROADWELL: # %bb.0: 3716 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3717 ; BROADWELL-NEXT: #APP 3718 ; BROADWELL-NEXT: wait # sched: [2:0.50] 3719 ; BROADWELL-NEXT: fnsave (%eax) # sched: [100:0.25] 3720 ; BROADWELL-NEXT: #NO_APP 3721 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3722 ; 3723 ; SKYLAKE-LABEL: test_fsave: 3724 ; SKYLAKE: # %bb.0: 3725 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3726 ; SKYLAKE-NEXT: #APP 3727 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 3728 ; SKYLAKE-NEXT: fnsave (%eax) # sched: [100:0.25] 3729 ; SKYLAKE-NEXT: #NO_APP 3730 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3731 ; 3732 ; SKX-LABEL: test_fsave: 3733 ; SKX: # %bb.0: 3734 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3735 ; SKX-NEXT: #APP 3736 ; SKX-NEXT: wait # sched: [2:0.50] 3737 ; SKX-NEXT: fnsave (%eax) # sched: [100:0.25] 3738 ; SKX-NEXT: #NO_APP 3739 ; SKX-NEXT: retl # sched: [6:0.50] 3740 ; 3741 ; BTVER2-LABEL: test_fsave: 3742 ; BTVER2: # %bb.0: 3743 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3744 ; BTVER2-NEXT: #APP 3745 ; BTVER2-NEXT: wait # sched: [100:0.50] 3746 ; BTVER2-NEXT: fnsave (%eax) # sched: [100:0.50] 3747 ; BTVER2-NEXT: #NO_APP 3748 ; BTVER2-NEXT: retl # sched: [4:1.00] 3749 ; 3750 ; ZNVER1-LABEL: test_fsave: 3751 ; ZNVER1: # %bb.0: 3752 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3753 ; ZNVER1-NEXT: #APP 3754 ; ZNVER1-NEXT: wait # sched: [1:1.00] 3755 ; ZNVER1-NEXT: fnsave (%eax) # sched: [100:0.25] 3756 ; ZNVER1-NEXT: #NO_APP 3757 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3758 tail call void asm sideeffect "fsave $0", "*m"(i8* %a0) nounwind 3759 ret void 3760 } 3761 3762 define void @test_fnsave(i8* %a0) optsize { 3763 ; GENERIC-LABEL: test_fnsave: 3764 ; GENERIC: # %bb.0: 3765 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3766 ; GENERIC-NEXT: #APP 3767 ; GENERIC-NEXT: fnsave (%eax) 3768 ; GENERIC-NEXT: #NO_APP 3769 ; GENERIC-NEXT: retl 3770 ; 3771 ; ATOM-LABEL: test_fnsave: 3772 ; ATOM: # %bb.0: 3773 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3774 ; ATOM-NEXT: #APP 3775 ; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] 3776 ; ATOM-NEXT: #NO_APP 3777 ; ATOM-NEXT: retl # sched: [79:39.50] 3778 ; 3779 ; SLM-LABEL: test_fnsave: 3780 ; SLM: # %bb.0: 3781 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3782 ; SLM-NEXT: #APP 3783 ; SLM-NEXT: fnsave (%eax) # sched: [100:1.00] 3784 ; SLM-NEXT: #NO_APP 3785 ; SLM-NEXT: retl # sched: [4:1.00] 3786 ; 3787 ; SANDY-LABEL: test_fnsave: 3788 ; SANDY: # %bb.0: 3789 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3790 ; SANDY-NEXT: #APP 3791 ; SANDY-NEXT: fnsave (%eax) # sched: [100:0.33] 3792 ; SANDY-NEXT: #NO_APP 3793 ; SANDY-NEXT: retl # sched: [6:1.00] 3794 ; 3795 ; HASWELL-LABEL: test_fnsave: 3796 ; HASWELL: # %bb.0: 3797 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3798 ; HASWELL-NEXT: #APP 3799 ; HASWELL-NEXT: fnsave (%eax) # sched: [1:36.75] 3800 ; HASWELL-NEXT: #NO_APP 3801 ; HASWELL-NEXT: retl # sched: [7:1.00] 3802 ; 3803 ; BROADWELL-LABEL: test_fnsave: 3804 ; BROADWELL: # %bb.0: 3805 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3806 ; BROADWELL-NEXT: #APP 3807 ; BROADWELL-NEXT: fnsave (%eax) # sched: [100:0.25] 3808 ; BROADWELL-NEXT: #NO_APP 3809 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3810 ; 3811 ; SKYLAKE-LABEL: test_fnsave: 3812 ; SKYLAKE: # %bb.0: 3813 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3814 ; SKYLAKE-NEXT: #APP 3815 ; SKYLAKE-NEXT: fnsave (%eax) # sched: [100:0.25] 3816 ; SKYLAKE-NEXT: #NO_APP 3817 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3818 ; 3819 ; SKX-LABEL: test_fnsave: 3820 ; SKX: # %bb.0: 3821 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3822 ; SKX-NEXT: #APP 3823 ; SKX-NEXT: fnsave (%eax) # sched: [100:0.25] 3824 ; SKX-NEXT: #NO_APP 3825 ; SKX-NEXT: retl # sched: [6:0.50] 3826 ; 3827 ; BTVER2-LABEL: test_fnsave: 3828 ; BTVER2: # %bb.0: 3829 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3830 ; BTVER2-NEXT: #APP 3831 ; BTVER2-NEXT: fnsave (%eax) # sched: [100:0.50] 3832 ; BTVER2-NEXT: #NO_APP 3833 ; BTVER2-NEXT: retl # sched: [4:1.00] 3834 ; 3835 ; ZNVER1-LABEL: test_fnsave: 3836 ; ZNVER1: # %bb.0: 3837 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3838 ; ZNVER1-NEXT: #APP 3839 ; ZNVER1-NEXT: fnsave (%eax) # sched: [100:0.25] 3840 ; ZNVER1-NEXT: #NO_APP 3841 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3842 tail call void asm sideeffect "fnsave $0", "*m"(i8* %a0) nounwind 3843 ret void 3844 } 3845 3846 define void @test_fscale() optsize { 3847 ; GENERIC-LABEL: test_fscale: 3848 ; GENERIC: # %bb.0: 3849 ; GENERIC-NEXT: #APP 3850 ; GENERIC-NEXT: fscale 3851 ; GENERIC-NEXT: #NO_APP 3852 ; GENERIC-NEXT: retl 3853 ; 3854 ; ATOM-LABEL: test_fscale: 3855 ; ATOM: # %bb.0: 3856 ; ATOM-NEXT: #APP 3857 ; ATOM-NEXT: fscale # sched: [77:38.50] 3858 ; ATOM-NEXT: #NO_APP 3859 ; ATOM-NEXT: retl # sched: [79:39.50] 3860 ; 3861 ; SLM-LABEL: test_fscale: 3862 ; SLM: # %bb.0: 3863 ; SLM-NEXT: #APP 3864 ; SLM-NEXT: fscale # sched: [100:1.00] 3865 ; SLM-NEXT: #NO_APP 3866 ; SLM-NEXT: retl # sched: [4:1.00] 3867 ; 3868 ; SANDY-LABEL: test_fscale: 3869 ; SANDY: # %bb.0: 3870 ; SANDY-NEXT: #APP 3871 ; SANDY-NEXT: fscale # sched: [100:0.33] 3872 ; SANDY-NEXT: #NO_APP 3873 ; SANDY-NEXT: retl # sched: [6:1.00] 3874 ; 3875 ; HASWELL-LABEL: test_fscale: 3876 ; HASWELL: # %bb.0: 3877 ; HASWELL-NEXT: #APP 3878 ; HASWELL-NEXT: fscale # sched: [75:12.50] 3879 ; HASWELL-NEXT: #NO_APP 3880 ; HASWELL-NEXT: retl # sched: [7:1.00] 3881 ; 3882 ; BROADWELL-LABEL: test_fscale: 3883 ; BROADWELL: # %bb.0: 3884 ; BROADWELL-NEXT: #APP 3885 ; BROADWELL-NEXT: fscale # sched: [100:0.25] 3886 ; BROADWELL-NEXT: #NO_APP 3887 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3888 ; 3889 ; SKYLAKE-LABEL: test_fscale: 3890 ; SKYLAKE: # %bb.0: 3891 ; SKYLAKE-NEXT: #APP 3892 ; SKYLAKE-NEXT: fscale # sched: [100:0.25] 3893 ; SKYLAKE-NEXT: #NO_APP 3894 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3895 ; 3896 ; SKX-LABEL: test_fscale: 3897 ; SKX: # %bb.0: 3898 ; SKX-NEXT: #APP 3899 ; SKX-NEXT: fscale # sched: [100:0.25] 3900 ; SKX-NEXT: #NO_APP 3901 ; SKX-NEXT: retl # sched: [6:0.50] 3902 ; 3903 ; BTVER2-LABEL: test_fscale: 3904 ; BTVER2: # %bb.0: 3905 ; BTVER2-NEXT: #APP 3906 ; BTVER2-NEXT: fscale # sched: [100:0.50] 3907 ; BTVER2-NEXT: #NO_APP 3908 ; BTVER2-NEXT: retl # sched: [4:1.00] 3909 ; 3910 ; ZNVER1-LABEL: test_fscale: 3911 ; ZNVER1: # %bb.0: 3912 ; ZNVER1-NEXT: #APP 3913 ; ZNVER1-NEXT: fscale # sched: [100:0.25] 3914 ; ZNVER1-NEXT: #NO_APP 3915 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3916 tail call void asm sideeffect "fscale", ""() nounwind 3917 ret void 3918 } 3919 3920 define void @test_fsin() optsize { 3921 ; GENERIC-LABEL: test_fsin: 3922 ; GENERIC: # %bb.0: 3923 ; GENERIC-NEXT: #APP 3924 ; GENERIC-NEXT: fsin 3925 ; GENERIC-NEXT: #NO_APP 3926 ; GENERIC-NEXT: retl 3927 ; 3928 ; ATOM-LABEL: test_fsin: 3929 ; ATOM: # %bb.0: 3930 ; ATOM-NEXT: #APP 3931 ; ATOM-NEXT: fsin # sched: [174:87.00] 3932 ; ATOM-NEXT: #NO_APP 3933 ; ATOM-NEXT: retl # sched: [79:39.50] 3934 ; 3935 ; SLM-LABEL: test_fsin: 3936 ; SLM: # %bb.0: 3937 ; SLM-NEXT: #APP 3938 ; SLM-NEXT: fsin # sched: [100:1.00] 3939 ; SLM-NEXT: #NO_APP 3940 ; SLM-NEXT: retl # sched: [4:1.00] 3941 ; 3942 ; SANDY-LABEL: test_fsin: 3943 ; SANDY: # %bb.0: 3944 ; SANDY-NEXT: #APP 3945 ; SANDY-NEXT: fsin # sched: [100:0.33] 3946 ; SANDY-NEXT: #NO_APP 3947 ; SANDY-NEXT: retl # sched: [6:1.00] 3948 ; 3949 ; HASWELL-LABEL: test_fsin: 3950 ; HASWELL: # %bb.0: 3951 ; HASWELL-NEXT: #APP 3952 ; HASWELL-NEXT: fsin # sched: [100:0.25] 3953 ; HASWELL-NEXT: #NO_APP 3954 ; HASWELL-NEXT: retl # sched: [7:1.00] 3955 ; 3956 ; BROADWELL-LABEL: test_fsin: 3957 ; BROADWELL: # %bb.0: 3958 ; BROADWELL-NEXT: #APP 3959 ; BROADWELL-NEXT: fsin # sched: [100:0.25] 3960 ; BROADWELL-NEXT: #NO_APP 3961 ; BROADWELL-NEXT: retl # sched: [6:0.50] 3962 ; 3963 ; SKYLAKE-LABEL: test_fsin: 3964 ; SKYLAKE: # %bb.0: 3965 ; SKYLAKE-NEXT: #APP 3966 ; SKYLAKE-NEXT: fsin # sched: [100:0.25] 3967 ; SKYLAKE-NEXT: #NO_APP 3968 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 3969 ; 3970 ; SKX-LABEL: test_fsin: 3971 ; SKX: # %bb.0: 3972 ; SKX-NEXT: #APP 3973 ; SKX-NEXT: fsin # sched: [100:0.25] 3974 ; SKX-NEXT: #NO_APP 3975 ; SKX-NEXT: retl # sched: [6:0.50] 3976 ; 3977 ; BTVER2-LABEL: test_fsin: 3978 ; BTVER2: # %bb.0: 3979 ; BTVER2-NEXT: #APP 3980 ; BTVER2-NEXT: fsin # sched: [100:0.50] 3981 ; BTVER2-NEXT: #NO_APP 3982 ; BTVER2-NEXT: retl # sched: [4:1.00] 3983 ; 3984 ; ZNVER1-LABEL: test_fsin: 3985 ; ZNVER1: # %bb.0: 3986 ; ZNVER1-NEXT: #APP 3987 ; ZNVER1-NEXT: fsin # sched: [100:0.25] 3988 ; ZNVER1-NEXT: #NO_APP 3989 ; ZNVER1-NEXT: retl # sched: [1:0.50] 3990 tail call void asm sideeffect "fsin", ""() nounwind 3991 ret void 3992 } 3993 3994 define void @test_fsincos() optsize { 3995 ; GENERIC-LABEL: test_fsincos: 3996 ; GENERIC: # %bb.0: 3997 ; GENERIC-NEXT: #APP 3998 ; GENERIC-NEXT: fsincos 3999 ; GENERIC-NEXT: #NO_APP 4000 ; GENERIC-NEXT: retl 4001 ; 4002 ; ATOM-LABEL: test_fsincos: 4003 ; ATOM: # %bb.0: 4004 ; ATOM-NEXT: #APP 4005 ; ATOM-NEXT: fsincos # sched: [174:87.00] 4006 ; ATOM-NEXT: #NO_APP 4007 ; ATOM-NEXT: retl # sched: [79:39.50] 4008 ; 4009 ; SLM-LABEL: test_fsincos: 4010 ; SLM: # %bb.0: 4011 ; SLM-NEXT: #APP 4012 ; SLM-NEXT: fsincos # sched: [100:1.00] 4013 ; SLM-NEXT: #NO_APP 4014 ; SLM-NEXT: retl # sched: [4:1.00] 4015 ; 4016 ; SANDY-LABEL: test_fsincos: 4017 ; SANDY: # %bb.0: 4018 ; SANDY-NEXT: #APP 4019 ; SANDY-NEXT: fsincos # sched: [100:0.33] 4020 ; SANDY-NEXT: #NO_APP 4021 ; SANDY-NEXT: retl # sched: [6:1.00] 4022 ; 4023 ; HASWELL-LABEL: test_fsincos: 4024 ; HASWELL: # %bb.0: 4025 ; HASWELL-NEXT: #APP 4026 ; HASWELL-NEXT: fsincos # sched: [100:0.25] 4027 ; HASWELL-NEXT: #NO_APP 4028 ; HASWELL-NEXT: retl # sched: [7:1.00] 4029 ; 4030 ; BROADWELL-LABEL: test_fsincos: 4031 ; BROADWELL: # %bb.0: 4032 ; BROADWELL-NEXT: #APP 4033 ; BROADWELL-NEXT: fsincos # sched: [100:0.25] 4034 ; BROADWELL-NEXT: #NO_APP 4035 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4036 ; 4037 ; SKYLAKE-LABEL: test_fsincos: 4038 ; SKYLAKE: # %bb.0: 4039 ; SKYLAKE-NEXT: #APP 4040 ; SKYLAKE-NEXT: fsincos # sched: [100:0.25] 4041 ; SKYLAKE-NEXT: #NO_APP 4042 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4043 ; 4044 ; SKX-LABEL: test_fsincos: 4045 ; SKX: # %bb.0: 4046 ; SKX-NEXT: #APP 4047 ; SKX-NEXT: fsincos # sched: [100:0.25] 4048 ; SKX-NEXT: #NO_APP 4049 ; SKX-NEXT: retl # sched: [6:0.50] 4050 ; 4051 ; BTVER2-LABEL: test_fsincos: 4052 ; BTVER2: # %bb.0: 4053 ; BTVER2-NEXT: #APP 4054 ; BTVER2-NEXT: fsincos # sched: [100:0.50] 4055 ; BTVER2-NEXT: #NO_APP 4056 ; BTVER2-NEXT: retl # sched: [4:1.00] 4057 ; 4058 ; ZNVER1-LABEL: test_fsincos: 4059 ; ZNVER1: # %bb.0: 4060 ; ZNVER1-NEXT: #APP 4061 ; ZNVER1-NEXT: fsincos # sched: [100:0.25] 4062 ; ZNVER1-NEXT: #NO_APP 4063 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4064 tail call void asm sideeffect "fsincos", ""() nounwind 4065 ret void 4066 } 4067 4068 define void @test_fsqrt() optsize { 4069 ; GENERIC-LABEL: test_fsqrt: 4070 ; GENERIC: # %bb.0: 4071 ; GENERIC-NEXT: #APP 4072 ; GENERIC-NEXT: fsqrt 4073 ; GENERIC-NEXT: #NO_APP 4074 ; GENERIC-NEXT: retl 4075 ; 4076 ; ATOM-LABEL: test_fsqrt: 4077 ; ATOM: # %bb.0: 4078 ; ATOM-NEXT: #APP 4079 ; ATOM-NEXT: fsqrt # sched: [71:35.50] 4080 ; ATOM-NEXT: #NO_APP 4081 ; ATOM-NEXT: retl # sched: [79:39.50] 4082 ; 4083 ; SLM-LABEL: test_fsqrt: 4084 ; SLM: # %bb.0: 4085 ; SLM-NEXT: #APP 4086 ; SLM-NEXT: fsqrt # sched: [40:40.00] 4087 ; SLM-NEXT: #NO_APP 4088 ; SLM-NEXT: retl # sched: [4:1.00] 4089 ; 4090 ; SANDY-LABEL: test_fsqrt: 4091 ; SANDY: # %bb.0: 4092 ; SANDY-NEXT: #APP 4093 ; SANDY-NEXT: fsqrt # sched: [24:24.00] 4094 ; SANDY-NEXT: #NO_APP 4095 ; SANDY-NEXT: retl # sched: [6:1.00] 4096 ; 4097 ; HASWELL-LABEL: test_fsqrt: 4098 ; HASWELL: # %bb.0: 4099 ; HASWELL-NEXT: #APP 4100 ; HASWELL-NEXT: fsqrt # sched: [23:17.00] 4101 ; HASWELL-NEXT: #NO_APP 4102 ; HASWELL-NEXT: retl # sched: [7:1.00] 4103 ; 4104 ; BROADWELL-LABEL: test_fsqrt: 4105 ; BROADWELL: # %bb.0: 4106 ; BROADWELL-NEXT: #APP 4107 ; BROADWELL-NEXT: fsqrt # sched: [23:9.00] 4108 ; BROADWELL-NEXT: #NO_APP 4109 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4110 ; 4111 ; SKYLAKE-LABEL: test_fsqrt: 4112 ; SKYLAKE: # %bb.0: 4113 ; SKYLAKE-NEXT: #APP 4114 ; SKYLAKE-NEXT: fsqrt # sched: [21:7.00] 4115 ; SKYLAKE-NEXT: #NO_APP 4116 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4117 ; 4118 ; SKX-LABEL: test_fsqrt: 4119 ; SKX: # %bb.0: 4120 ; SKX-NEXT: #APP 4121 ; SKX-NEXT: fsqrt # sched: [21:7.00] 4122 ; SKX-NEXT: #NO_APP 4123 ; SKX-NEXT: retl # sched: [6:0.50] 4124 ; 4125 ; BTVER2-LABEL: test_fsqrt: 4126 ; BTVER2: # %bb.0: 4127 ; BTVER2-NEXT: #APP 4128 ; BTVER2-NEXT: fsqrt # sched: [35:35.00] 4129 ; BTVER2-NEXT: #NO_APP 4130 ; BTVER2-NEXT: retl # sched: [4:1.00] 4131 ; 4132 ; ZNVER1-LABEL: test_fsqrt: 4133 ; ZNVER1: # %bb.0: 4134 ; ZNVER1-NEXT: #APP 4135 ; ZNVER1-NEXT: fsqrt # sched: [20:20.00] 4136 ; ZNVER1-NEXT: #NO_APP 4137 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4138 tail call void asm sideeffect "fsqrt", ""() nounwind 4139 ret void 4140 } 4141 4142 define void @test_fst_fstp(i16* %a0, i32* %a1, i64 *%a2) optsize { 4143 ; GENERIC-LABEL: test_fst_fstp: 4144 ; GENERIC: # %bb.0: 4145 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4146 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4147 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 4148 ; GENERIC-NEXT: #APP 4149 ; GENERIC-NEXT: fst %st(0) 4150 ; GENERIC-NEXT: fsts (%edx) 4151 ; GENERIC-NEXT: fstl (%ecx) 4152 ; GENERIC-NEXT: fstp %st(0) 4153 ; GENERIC-NEXT: fstpl (%edx) 4154 ; GENERIC-NEXT: fstpl (%ecx) 4155 ; GENERIC-NEXT: fstpt (%eax) 4156 ; GENERIC-NEXT: #NO_APP 4157 ; GENERIC-NEXT: retl 4158 ; 4159 ; ATOM-LABEL: test_fst_fstp: 4160 ; ATOM: # %bb.0: 4161 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4162 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4163 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 4164 ; ATOM-NEXT: #APP 4165 ; ATOM-NEXT: fst %st(0) # sched: [2:1.00] 4166 ; ATOM-NEXT: fsts (%edx) # sched: [2:1.00] 4167 ; ATOM-NEXT: fstl (%ecx) # sched: [2:1.00] 4168 ; ATOM-NEXT: fstp %st(0) # sched: [2:1.00] 4169 ; ATOM-NEXT: fstpl (%edx) # sched: [2:1.00] 4170 ; ATOM-NEXT: fstpl (%ecx) # sched: [2:1.00] 4171 ; ATOM-NEXT: fstpt (%eax) # sched: [5:2.50] 4172 ; ATOM-NEXT: #NO_APP 4173 ; ATOM-NEXT: retl # sched: [79:39.50] 4174 ; 4175 ; SLM-LABEL: test_fst_fstp: 4176 ; SLM: # %bb.0: 4177 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4178 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4179 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 4180 ; SLM-NEXT: #APP 4181 ; SLM-NEXT: fst %st(0) # sched: [1:0.50] 4182 ; SLM-NEXT: fsts (%edx) # sched: [1:1.00] 4183 ; SLM-NEXT: fstl (%ecx) # sched: [1:1.00] 4184 ; SLM-NEXT: fstp %st(0) # sched: [1:0.50] 4185 ; SLM-NEXT: fstpl (%edx) # sched: [1:1.00] 4186 ; SLM-NEXT: fstpl (%ecx) # sched: [1:1.00] 4187 ; SLM-NEXT: fstpt (%eax) # sched: [1:1.00] 4188 ; SLM-NEXT: #NO_APP 4189 ; SLM-NEXT: retl # sched: [4:1.00] 4190 ; 4191 ; SANDY-LABEL: test_fst_fstp: 4192 ; SANDY: # %bb.0: 4193 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4194 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4195 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4196 ; SANDY-NEXT: #APP 4197 ; SANDY-NEXT: fst %st(0) # sched: [1:1.00] 4198 ; SANDY-NEXT: fsts (%edx) # sched: [6:1.00] 4199 ; SANDY-NEXT: fstl (%ecx) # sched: [6:1.00] 4200 ; SANDY-NEXT: fstp %st(0) # sched: [1:1.00] 4201 ; SANDY-NEXT: fstpl (%edx) # sched: [6:1.00] 4202 ; SANDY-NEXT: fstpl (%ecx) # sched: [6:1.00] 4203 ; SANDY-NEXT: fstpt (%eax) # sched: [6:1.00] 4204 ; SANDY-NEXT: #NO_APP 4205 ; SANDY-NEXT: retl # sched: [6:1.00] 4206 ; 4207 ; HASWELL-LABEL: test_fst_fstp: 4208 ; HASWELL: # %bb.0: 4209 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4210 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4211 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4212 ; HASWELL-NEXT: #APP 4213 ; HASWELL-NEXT: fst %st(0) # sched: [1:0.50] 4214 ; HASWELL-NEXT: fsts (%edx) # sched: [1:1.00] 4215 ; HASWELL-NEXT: fstl (%ecx) # sched: [1:1.00] 4216 ; HASWELL-NEXT: fstp %st(0) # sched: [1:0.50] 4217 ; HASWELL-NEXT: fstpl (%edx) # sched: [1:1.00] 4218 ; HASWELL-NEXT: fstpl (%ecx) # sched: [1:1.00] 4219 ; HASWELL-NEXT: fstpt (%eax) # sched: [1:1.00] 4220 ; HASWELL-NEXT: #NO_APP 4221 ; HASWELL-NEXT: retl # sched: [7:1.00] 4222 ; 4223 ; BROADWELL-LABEL: test_fst_fstp: 4224 ; BROADWELL: # %bb.0: 4225 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4226 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4227 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4228 ; BROADWELL-NEXT: #APP 4229 ; BROADWELL-NEXT: fst %st(0) # sched: [1:0.25] 4230 ; BROADWELL-NEXT: fsts (%edx) # sched: [1:1.00] 4231 ; BROADWELL-NEXT: fstl (%ecx) # sched: [1:1.00] 4232 ; BROADWELL-NEXT: fstp %st(0) # sched: [1:0.25] 4233 ; BROADWELL-NEXT: fstpl (%edx) # sched: [1:1.00] 4234 ; BROADWELL-NEXT: fstpl (%ecx) # sched: [1:1.00] 4235 ; BROADWELL-NEXT: fstpt (%eax) # sched: [1:1.00] 4236 ; BROADWELL-NEXT: #NO_APP 4237 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4238 ; 4239 ; SKYLAKE-LABEL: test_fst_fstp: 4240 ; SKYLAKE: # %bb.0: 4241 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4242 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4243 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4244 ; SKYLAKE-NEXT: #APP 4245 ; SKYLAKE-NEXT: fst %st(0) # sched: [1:0.25] 4246 ; SKYLAKE-NEXT: fsts (%edx) # sched: [1:1.00] 4247 ; SKYLAKE-NEXT: fstl (%ecx) # sched: [1:1.00] 4248 ; SKYLAKE-NEXT: fstp %st(0) # sched: [1:0.25] 4249 ; SKYLAKE-NEXT: fstpl (%edx) # sched: [1:1.00] 4250 ; SKYLAKE-NEXT: fstpl (%ecx) # sched: [1:1.00] 4251 ; SKYLAKE-NEXT: fstpt (%eax) # sched: [1:1.00] 4252 ; SKYLAKE-NEXT: #NO_APP 4253 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4254 ; 4255 ; SKX-LABEL: test_fst_fstp: 4256 ; SKX: # %bb.0: 4257 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4258 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4259 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4260 ; SKX-NEXT: #APP 4261 ; SKX-NEXT: fst %st(0) # sched: [1:0.25] 4262 ; SKX-NEXT: fsts (%edx) # sched: [1:1.00] 4263 ; SKX-NEXT: fstl (%ecx) # sched: [1:1.00] 4264 ; SKX-NEXT: fstp %st(0) # sched: [1:0.25] 4265 ; SKX-NEXT: fstpl (%edx) # sched: [1:1.00] 4266 ; SKX-NEXT: fstpl (%ecx) # sched: [1:1.00] 4267 ; SKX-NEXT: fstpt (%eax) # sched: [1:1.00] 4268 ; SKX-NEXT: #NO_APP 4269 ; SKX-NEXT: retl # sched: [6:0.50] 4270 ; 4271 ; BTVER2-LABEL: test_fst_fstp: 4272 ; BTVER2: # %bb.0: 4273 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4274 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4275 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 4276 ; BTVER2-NEXT: #APP 4277 ; BTVER2-NEXT: fst %st(0) # sched: [1:0.50] 4278 ; BTVER2-NEXT: fsts (%edx) # sched: [1:1.00] 4279 ; BTVER2-NEXT: fstl (%ecx) # sched: [1:1.00] 4280 ; BTVER2-NEXT: fstp %st(0) # sched: [1:0.50] 4281 ; BTVER2-NEXT: fstpl (%edx) # sched: [1:1.00] 4282 ; BTVER2-NEXT: fstpl (%ecx) # sched: [1:1.00] 4283 ; BTVER2-NEXT: fstpt (%eax) # sched: [1:1.00] 4284 ; BTVER2-NEXT: #NO_APP 4285 ; BTVER2-NEXT: retl # sched: [4:1.00] 4286 ; 4287 ; ZNVER1-LABEL: test_fst_fstp: 4288 ; ZNVER1: # %bb.0: 4289 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4290 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4291 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 4292 ; ZNVER1-NEXT: #APP 4293 ; ZNVER1-NEXT: fst %st(0) # sched: [5:0.50] 4294 ; ZNVER1-NEXT: fsts (%edx) # sched: [1:0.50] 4295 ; ZNVER1-NEXT: fstl (%ecx) # sched: [1:0.50] 4296 ; ZNVER1-NEXT: fstp %st(0) # sched: [5:0.50] 4297 ; ZNVER1-NEXT: fstpl (%edx) # sched: [1:0.50] 4298 ; ZNVER1-NEXT: fstpl (%ecx) # sched: [1:0.50] 4299 ; ZNVER1-NEXT: fstpt (%eax) # sched: [5:0.50] 4300 ; ZNVER1-NEXT: #NO_APP 4301 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4302 tail call void asm sideeffect "fst %st(0) \0A\09 fsts $0 \0A\09 fstl $1 \0A\09 fstp %st(0) \0A\09 fstpl $0 \0A\09 fstpl $1 \0A\09 fstpt $2", "*m,*m,*m"(i16* %a0, i32* %a1, i64 *%a2) nounwind 4303 ret void 4304 } 4305 4306 define void @test_fstcw_fstenv_fstsw(i8* %a0) optsize { 4307 ; GENERIC-LABEL: test_fstcw_fstenv_fstsw: 4308 ; GENERIC: # %bb.0: 4309 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4310 ; GENERIC-NEXT: #APP 4311 ; GENERIC-NEXT: wait 4312 ; GENERIC-NEXT: fnstcw (%eax) 4313 ; GENERIC-NEXT: wait 4314 ; GENERIC-NEXT: fnstenv (%eax) 4315 ; GENERIC-NEXT: wait 4316 ; GENERIC-NEXT: fnstsw (%eax) 4317 ; GENERIC-NEXT: #NO_APP 4318 ; GENERIC-NEXT: retl 4319 ; 4320 ; ATOM-LABEL: test_fstcw_fstenv_fstsw: 4321 ; ATOM: # %bb.0: 4322 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4323 ; ATOM-NEXT: #APP 4324 ; ATOM-NEXT: wait # sched: [1:0.50] 4325 ; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] 4326 ; ATOM-NEXT: wait # sched: [1:0.50] 4327 ; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] 4328 ; ATOM-NEXT: wait # sched: [1:0.50] 4329 ; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] 4330 ; ATOM-NEXT: #NO_APP 4331 ; ATOM-NEXT: retl # sched: [79:39.50] 4332 ; 4333 ; SLM-LABEL: test_fstcw_fstenv_fstsw: 4334 ; SLM: # %bb.0: 4335 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4336 ; SLM-NEXT: #APP 4337 ; SLM-NEXT: wait # sched: [100:1.00] 4338 ; SLM-NEXT: fnstcw (%eax) # sched: [1:0.50] 4339 ; SLM-NEXT: wait # sched: [100:1.00] 4340 ; SLM-NEXT: fnstenv (%eax) # sched: [100:1.00] 4341 ; SLM-NEXT: wait # sched: [100:1.00] 4342 ; SLM-NEXT: fnstsw (%eax) # sched: [100:1.00] 4343 ; SLM-NEXT: #NO_APP 4344 ; SLM-NEXT: retl # sched: [4:1.00] 4345 ; 4346 ; SANDY-LABEL: test_fstcw_fstenv_fstsw: 4347 ; SANDY: # %bb.0: 4348 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4349 ; SANDY-NEXT: #APP 4350 ; SANDY-NEXT: wait # sched: [100:0.33] 4351 ; SANDY-NEXT: fnstcw (%eax) # sched: [7:1.00] 4352 ; SANDY-NEXT: wait # sched: [100:0.33] 4353 ; SANDY-NEXT: fnstenv (%eax) # sched: [100:0.33] 4354 ; SANDY-NEXT: wait # sched: [100:0.33] 4355 ; SANDY-NEXT: fnstsw (%eax) # sched: [7:1.00] 4356 ; SANDY-NEXT: #NO_APP 4357 ; SANDY-NEXT: retl # sched: [6:1.00] 4358 ; 4359 ; HASWELL-LABEL: test_fstcw_fstenv_fstsw: 4360 ; HASWELL: # %bb.0: 4361 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4362 ; HASWELL-NEXT: #APP 4363 ; HASWELL-NEXT: wait # sched: [2:0.50] 4364 ; HASWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4365 ; HASWELL-NEXT: wait # sched: [2:0.50] 4366 ; HASWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4367 ; HASWELL-NEXT: wait # sched: [2:0.50] 4368 ; HASWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4369 ; HASWELL-NEXT: #NO_APP 4370 ; HASWELL-NEXT: retl # sched: [7:1.00] 4371 ; 4372 ; BROADWELL-LABEL: test_fstcw_fstenv_fstsw: 4373 ; BROADWELL: # %bb.0: 4374 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4375 ; BROADWELL-NEXT: #APP 4376 ; BROADWELL-NEXT: wait # sched: [2:0.50] 4377 ; BROADWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4378 ; BROADWELL-NEXT: wait # sched: [2:0.50] 4379 ; BROADWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4380 ; BROADWELL-NEXT: wait # sched: [2:0.50] 4381 ; BROADWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4382 ; BROADWELL-NEXT: #NO_APP 4383 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4384 ; 4385 ; SKYLAKE-LABEL: test_fstcw_fstenv_fstsw: 4386 ; SKYLAKE: # %bb.0: 4387 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4388 ; SKYLAKE-NEXT: #APP 4389 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 4390 ; SKYLAKE-NEXT: fnstcw (%eax) # sched: [2:1.00] 4391 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 4392 ; SKYLAKE-NEXT: fnstenv (%eax) # sched: [106:19.50] 4393 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 4394 ; SKYLAKE-NEXT: fnstsw (%eax) # sched: [3:1.00] 4395 ; SKYLAKE-NEXT: #NO_APP 4396 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4397 ; 4398 ; SKX-LABEL: test_fstcw_fstenv_fstsw: 4399 ; SKX: # %bb.0: 4400 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4401 ; SKX-NEXT: #APP 4402 ; SKX-NEXT: wait # sched: [2:0.50] 4403 ; SKX-NEXT: fnstcw (%eax) # sched: [2:1.00] 4404 ; SKX-NEXT: wait # sched: [2:0.50] 4405 ; SKX-NEXT: fnstenv (%eax) # sched: [106:19.50] 4406 ; SKX-NEXT: wait # sched: [2:0.50] 4407 ; SKX-NEXT: fnstsw (%eax) # sched: [3:1.00] 4408 ; SKX-NEXT: #NO_APP 4409 ; SKX-NEXT: retl # sched: [6:0.50] 4410 ; 4411 ; BTVER2-LABEL: test_fstcw_fstenv_fstsw: 4412 ; BTVER2: # %bb.0: 4413 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4414 ; BTVER2-NEXT: #APP 4415 ; BTVER2-NEXT: wait # sched: [100:0.50] 4416 ; BTVER2-NEXT: fnstcw (%eax) # sched: [1:0.50] 4417 ; BTVER2-NEXT: wait # sched: [100:0.50] 4418 ; BTVER2-NEXT: fnstenv (%eax) # sched: [100:0.50] 4419 ; BTVER2-NEXT: wait # sched: [100:0.50] 4420 ; BTVER2-NEXT: fnstsw (%eax) # sched: [100:0.50] 4421 ; BTVER2-NEXT: #NO_APP 4422 ; BTVER2-NEXT: retl # sched: [4:1.00] 4423 ; 4424 ; ZNVER1-LABEL: test_fstcw_fstenv_fstsw: 4425 ; ZNVER1: # %bb.0: 4426 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4427 ; ZNVER1-NEXT: #APP 4428 ; ZNVER1-NEXT: wait # sched: [1:1.00] 4429 ; ZNVER1-NEXT: fnstcw (%eax) # sched: [100:0.25] 4430 ; ZNVER1-NEXT: wait # sched: [1:1.00] 4431 ; ZNVER1-NEXT: fnstenv (%eax) # sched: [100:0.25] 4432 ; ZNVER1-NEXT: wait # sched: [1:1.00] 4433 ; ZNVER1-NEXT: fnstsw (%eax) # sched: [100:0.25] 4434 ; ZNVER1-NEXT: #NO_APP 4435 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4436 tail call void asm sideeffect "fstcw $0 \0A\09 fstenv $0 \0A\09 fstsw $0", "*m"(i8* %a0) nounwind 4437 ret void 4438 } 4439 4440 define void @test_fnstcw_fnstenv_fnstsw(i8* %a0) optsize { 4441 ; GENERIC-LABEL: test_fnstcw_fnstenv_fnstsw: 4442 ; GENERIC: # %bb.0: 4443 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4444 ; GENERIC-NEXT: #APP 4445 ; GENERIC-NEXT: fnstcw (%eax) 4446 ; GENERIC-NEXT: fnstenv (%eax) 4447 ; GENERIC-NEXT: fnstsw (%eax) 4448 ; GENERIC-NEXT: #NO_APP 4449 ; GENERIC-NEXT: retl 4450 ; 4451 ; ATOM-LABEL: test_fnstcw_fnstenv_fnstsw: 4452 ; ATOM: # %bb.0: 4453 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4454 ; ATOM-NEXT: #APP 4455 ; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] 4456 ; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] 4457 ; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] 4458 ; ATOM-NEXT: #NO_APP 4459 ; ATOM-NEXT: retl # sched: [79:39.50] 4460 ; 4461 ; SLM-LABEL: test_fnstcw_fnstenv_fnstsw: 4462 ; SLM: # %bb.0: 4463 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4464 ; SLM-NEXT: #APP 4465 ; SLM-NEXT: fnstcw (%eax) # sched: [1:0.50] 4466 ; SLM-NEXT: fnstenv (%eax) # sched: [100:1.00] 4467 ; SLM-NEXT: fnstsw (%eax) # sched: [100:1.00] 4468 ; SLM-NEXT: #NO_APP 4469 ; SLM-NEXT: retl # sched: [4:1.00] 4470 ; 4471 ; SANDY-LABEL: test_fnstcw_fnstenv_fnstsw: 4472 ; SANDY: # %bb.0: 4473 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4474 ; SANDY-NEXT: #APP 4475 ; SANDY-NEXT: fnstcw (%eax) # sched: [7:1.00] 4476 ; SANDY-NEXT: fnstenv (%eax) # sched: [100:0.33] 4477 ; SANDY-NEXT: fnstsw (%eax) # sched: [7:1.00] 4478 ; SANDY-NEXT: #NO_APP 4479 ; SANDY-NEXT: retl # sched: [6:1.00] 4480 ; 4481 ; HASWELL-LABEL: test_fnstcw_fnstenv_fnstsw: 4482 ; HASWELL: # %bb.0: 4483 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4484 ; HASWELL-NEXT: #APP 4485 ; HASWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4486 ; HASWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4487 ; HASWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4488 ; HASWELL-NEXT: #NO_APP 4489 ; HASWELL-NEXT: retl # sched: [7:1.00] 4490 ; 4491 ; BROADWELL-LABEL: test_fnstcw_fnstenv_fnstsw: 4492 ; BROADWELL: # %bb.0: 4493 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4494 ; BROADWELL-NEXT: #APP 4495 ; BROADWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4496 ; BROADWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4497 ; BROADWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4498 ; BROADWELL-NEXT: #NO_APP 4499 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4500 ; 4501 ; SKYLAKE-LABEL: test_fnstcw_fnstenv_fnstsw: 4502 ; SKYLAKE: # %bb.0: 4503 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4504 ; SKYLAKE-NEXT: #APP 4505 ; SKYLAKE-NEXT: fnstcw (%eax) # sched: [2:1.00] 4506 ; SKYLAKE-NEXT: fnstenv (%eax) # sched: [106:19.50] 4507 ; SKYLAKE-NEXT: fnstsw (%eax) # sched: [3:1.00] 4508 ; SKYLAKE-NEXT: #NO_APP 4509 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4510 ; 4511 ; SKX-LABEL: test_fnstcw_fnstenv_fnstsw: 4512 ; SKX: # %bb.0: 4513 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4514 ; SKX-NEXT: #APP 4515 ; SKX-NEXT: fnstcw (%eax) # sched: [2:1.00] 4516 ; SKX-NEXT: fnstenv (%eax) # sched: [106:19.50] 4517 ; SKX-NEXT: fnstsw (%eax) # sched: [3:1.00] 4518 ; SKX-NEXT: #NO_APP 4519 ; SKX-NEXT: retl # sched: [6:0.50] 4520 ; 4521 ; BTVER2-LABEL: test_fnstcw_fnstenv_fnstsw: 4522 ; BTVER2: # %bb.0: 4523 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4524 ; BTVER2-NEXT: #APP 4525 ; BTVER2-NEXT: fnstcw (%eax) # sched: [1:0.50] 4526 ; BTVER2-NEXT: fnstenv (%eax) # sched: [100:0.50] 4527 ; BTVER2-NEXT: fnstsw (%eax) # sched: [100:0.50] 4528 ; BTVER2-NEXT: #NO_APP 4529 ; BTVER2-NEXT: retl # sched: [4:1.00] 4530 ; 4531 ; ZNVER1-LABEL: test_fnstcw_fnstenv_fnstsw: 4532 ; ZNVER1: # %bb.0: 4533 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4534 ; ZNVER1-NEXT: #APP 4535 ; ZNVER1-NEXT: fnstcw (%eax) # sched: [100:0.25] 4536 ; ZNVER1-NEXT: fnstenv (%eax) # sched: [100:0.25] 4537 ; ZNVER1-NEXT: fnstsw (%eax) # sched: [100:0.25] 4538 ; ZNVER1-NEXT: #NO_APP 4539 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4540 tail call void asm sideeffect "fnstcw $0 \0A\09 fnstenv $0 \0A\09 fnstsw $0", "*m"(i8* %a0) nounwind 4541 ret void 4542 } 4543 4544 define void @test_fsub(float *%a0, double *%a1) optsize { 4545 ; GENERIC-LABEL: test_fsub: 4546 ; GENERIC: # %bb.0: 4547 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4548 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4549 ; GENERIC-NEXT: #APP 4550 ; GENERIC-NEXT: fsub %st(0), %st(1) 4551 ; GENERIC-NEXT: fsub %st(2) 4552 ; GENERIC-NEXT: fsubs (%ecx) 4553 ; GENERIC-NEXT: fsubl (%eax) 4554 ; GENERIC-NEXT: #NO_APP 4555 ; GENERIC-NEXT: retl 4556 ; 4557 ; ATOM-LABEL: test_fsub: 4558 ; ATOM: # %bb.0: 4559 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4560 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4561 ; ATOM-NEXT: #APP 4562 ; ATOM-NEXT: fsub %st(0), %st(1) # sched: [5:5.00] 4563 ; ATOM-NEXT: fsub %st(2) # sched: [5:5.00] 4564 ; ATOM-NEXT: fsubs (%ecx) # sched: [5:5.00] 4565 ; ATOM-NEXT: fsubl (%eax) # sched: [5:5.00] 4566 ; ATOM-NEXT: #NO_APP 4567 ; ATOM-NEXT: retl # sched: [79:39.50] 4568 ; 4569 ; SLM-LABEL: test_fsub: 4570 ; SLM: # %bb.0: 4571 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4572 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4573 ; SLM-NEXT: #APP 4574 ; SLM-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4575 ; SLM-NEXT: fsub %st(2) # sched: [3:1.00] 4576 ; SLM-NEXT: fsubs (%ecx) # sched: [6:1.00] 4577 ; SLM-NEXT: fsubl (%eax) # sched: [6:1.00] 4578 ; SLM-NEXT: #NO_APP 4579 ; SLM-NEXT: retl # sched: [4:1.00] 4580 ; 4581 ; SANDY-LABEL: test_fsub: 4582 ; SANDY: # %bb.0: 4583 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4584 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4585 ; SANDY-NEXT: #APP 4586 ; SANDY-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4587 ; SANDY-NEXT: fsub %st(2) # sched: [3:1.00] 4588 ; SANDY-NEXT: fsubs (%ecx) # sched: [10:1.00] 4589 ; SANDY-NEXT: fsubl (%eax) # sched: [10:1.00] 4590 ; SANDY-NEXT: #NO_APP 4591 ; SANDY-NEXT: retl # sched: [6:1.00] 4592 ; 4593 ; HASWELL-LABEL: test_fsub: 4594 ; HASWELL: # %bb.0: 4595 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4596 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4597 ; HASWELL-NEXT: #APP 4598 ; HASWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4599 ; HASWELL-NEXT: fsub %st(2) # sched: [3:1.00] 4600 ; HASWELL-NEXT: fsubs (%ecx) # sched: [10:1.00] 4601 ; HASWELL-NEXT: fsubl (%eax) # sched: [10:1.00] 4602 ; HASWELL-NEXT: #NO_APP 4603 ; HASWELL-NEXT: retl # sched: [7:1.00] 4604 ; 4605 ; BROADWELL-LABEL: test_fsub: 4606 ; BROADWELL: # %bb.0: 4607 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4608 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4609 ; BROADWELL-NEXT: #APP 4610 ; BROADWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4611 ; BROADWELL-NEXT: fsub %st(2) # sched: [3:1.00] 4612 ; BROADWELL-NEXT: fsubs (%ecx) # sched: [9:1.00] 4613 ; BROADWELL-NEXT: fsubl (%eax) # sched: [9:1.00] 4614 ; BROADWELL-NEXT: #NO_APP 4615 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4616 ; 4617 ; SKYLAKE-LABEL: test_fsub: 4618 ; SKYLAKE: # %bb.0: 4619 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4620 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4621 ; SKYLAKE-NEXT: #APP 4622 ; SKYLAKE-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4623 ; SKYLAKE-NEXT: fsub %st(2) # sched: [3:1.00] 4624 ; SKYLAKE-NEXT: fsubs (%ecx) # sched: [10:1.00] 4625 ; SKYLAKE-NEXT: fsubl (%eax) # sched: [10:1.00] 4626 ; SKYLAKE-NEXT: #NO_APP 4627 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4628 ; 4629 ; SKX-LABEL: test_fsub: 4630 ; SKX: # %bb.0: 4631 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4632 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4633 ; SKX-NEXT: #APP 4634 ; SKX-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4635 ; SKX-NEXT: fsub %st(2) # sched: [3:1.00] 4636 ; SKX-NEXT: fsubs (%ecx) # sched: [10:1.00] 4637 ; SKX-NEXT: fsubl (%eax) # sched: [10:1.00] 4638 ; SKX-NEXT: #NO_APP 4639 ; SKX-NEXT: retl # sched: [6:0.50] 4640 ; 4641 ; BTVER2-LABEL: test_fsub: 4642 ; BTVER2: # %bb.0: 4643 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4644 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4645 ; BTVER2-NEXT: #APP 4646 ; BTVER2-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4647 ; BTVER2-NEXT: fsub %st(2) # sched: [3:1.00] 4648 ; BTVER2-NEXT: fsubs (%ecx) # sched: [8:1.00] 4649 ; BTVER2-NEXT: fsubl (%eax) # sched: [8:1.00] 4650 ; BTVER2-NEXT: #NO_APP 4651 ; BTVER2-NEXT: retl # sched: [4:1.00] 4652 ; 4653 ; ZNVER1-LABEL: test_fsub: 4654 ; ZNVER1: # %bb.0: 4655 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4656 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4657 ; ZNVER1-NEXT: #APP 4658 ; ZNVER1-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4659 ; ZNVER1-NEXT: fsub %st(2) # sched: [3:1.00] 4660 ; ZNVER1-NEXT: fsubs (%ecx) # sched: [10:1.00] 4661 ; ZNVER1-NEXT: fsubl (%eax) # sched: [10:1.00] 4662 ; ZNVER1-NEXT: #NO_APP 4663 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4664 tail call void asm sideeffect "fsub %st(0), %st(1) \0A\09 fsub %st(2), %st(0) \0A\09 fsubs $0 \0A\09 fsubl $1", "*m,*m"(float *%a0, double *%a1) nounwind 4665 ret void 4666 } 4667 4668 define void @test_fsubp_fisub(i16 *%a0, i32 *%a1) optsize { 4669 ; GENERIC-LABEL: test_fsubp_fisub: 4670 ; GENERIC: # %bb.0: 4671 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4672 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4673 ; GENERIC-NEXT: #APP 4674 ; GENERIC-NEXT: fsubp %st(1) 4675 ; GENERIC-NEXT: fsubp %st(2) 4676 ; GENERIC-NEXT: fisubs (%ecx) 4677 ; GENERIC-NEXT: fisubl (%eax) 4678 ; GENERIC-NEXT: #NO_APP 4679 ; GENERIC-NEXT: retl 4680 ; 4681 ; ATOM-LABEL: test_fsubp_fisub: 4682 ; ATOM: # %bb.0: 4683 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4684 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4685 ; ATOM-NEXT: #APP 4686 ; ATOM-NEXT: fsubp %st(1) # sched: [5:5.00] 4687 ; ATOM-NEXT: fsubp %st(2) # sched: [5:5.00] 4688 ; ATOM-NEXT: fisubs (%ecx) # sched: [5:5.00] 4689 ; ATOM-NEXT: fisubl (%eax) # sched: [5:5.00] 4690 ; ATOM-NEXT: #NO_APP 4691 ; ATOM-NEXT: retl # sched: [79:39.50] 4692 ; 4693 ; SLM-LABEL: test_fsubp_fisub: 4694 ; SLM: # %bb.0: 4695 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4696 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4697 ; SLM-NEXT: #APP 4698 ; SLM-NEXT: fsubp %st(1) # sched: [3:1.00] 4699 ; SLM-NEXT: fsubp %st(2) # sched: [3:1.00] 4700 ; SLM-NEXT: fisubs (%ecx) # sched: [6:1.00] 4701 ; SLM-NEXT: fisubl (%eax) # sched: [6:1.00] 4702 ; SLM-NEXT: #NO_APP 4703 ; SLM-NEXT: retl # sched: [4:1.00] 4704 ; 4705 ; SANDY-LABEL: test_fsubp_fisub: 4706 ; SANDY: # %bb.0: 4707 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4708 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4709 ; SANDY-NEXT: #APP 4710 ; SANDY-NEXT: fsubp %st(1) # sched: [3:1.00] 4711 ; SANDY-NEXT: fsubp %st(2) # sched: [3:1.00] 4712 ; SANDY-NEXT: fisubs (%ecx) # sched: [13:2.00] 4713 ; SANDY-NEXT: fisubl (%eax) # sched: [13:2.00] 4714 ; SANDY-NEXT: #NO_APP 4715 ; SANDY-NEXT: retl # sched: [6:1.00] 4716 ; 4717 ; HASWELL-LABEL: test_fsubp_fisub: 4718 ; HASWELL: # %bb.0: 4719 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4720 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4721 ; HASWELL-NEXT: #APP 4722 ; HASWELL-NEXT: fsubp %st(1) # sched: [3:1.00] 4723 ; HASWELL-NEXT: fsubp %st(2) # sched: [3:1.00] 4724 ; HASWELL-NEXT: fisubs (%ecx) # sched: [13:2.00] 4725 ; HASWELL-NEXT: fisubl (%eax) # sched: [13:2.00] 4726 ; HASWELL-NEXT: #NO_APP 4727 ; HASWELL-NEXT: retl # sched: [7:1.00] 4728 ; 4729 ; BROADWELL-LABEL: test_fsubp_fisub: 4730 ; BROADWELL: # %bb.0: 4731 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4732 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4733 ; BROADWELL-NEXT: #APP 4734 ; BROADWELL-NEXT: fsubp %st(1) # sched: [3:1.00] 4735 ; BROADWELL-NEXT: fsubp %st(2) # sched: [3:1.00] 4736 ; BROADWELL-NEXT: fisubs (%ecx) # sched: [12:2.00] 4737 ; BROADWELL-NEXT: fisubl (%eax) # sched: [12:2.00] 4738 ; BROADWELL-NEXT: #NO_APP 4739 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4740 ; 4741 ; SKYLAKE-LABEL: test_fsubp_fisub: 4742 ; SKYLAKE: # %bb.0: 4743 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4744 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4745 ; SKYLAKE-NEXT: #APP 4746 ; SKYLAKE-NEXT: fsubp %st(1) # sched: [3:1.00] 4747 ; SKYLAKE-NEXT: fsubp %st(2) # sched: [3:1.00] 4748 ; SKYLAKE-NEXT: fisubs (%ecx) # sched: [13:2.00] 4749 ; SKYLAKE-NEXT: fisubl (%eax) # sched: [13:2.00] 4750 ; SKYLAKE-NEXT: #NO_APP 4751 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4752 ; 4753 ; SKX-LABEL: test_fsubp_fisub: 4754 ; SKX: # %bb.0: 4755 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4756 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4757 ; SKX-NEXT: #APP 4758 ; SKX-NEXT: fsubp %st(1) # sched: [3:1.00] 4759 ; SKX-NEXT: fsubp %st(2) # sched: [3:1.00] 4760 ; SKX-NEXT: fisubs (%ecx) # sched: [13:2.00] 4761 ; SKX-NEXT: fisubl (%eax) # sched: [13:2.00] 4762 ; SKX-NEXT: #NO_APP 4763 ; SKX-NEXT: retl # sched: [6:0.50] 4764 ; 4765 ; BTVER2-LABEL: test_fsubp_fisub: 4766 ; BTVER2: # %bb.0: 4767 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4768 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4769 ; BTVER2-NEXT: #APP 4770 ; BTVER2-NEXT: fsubp %st(1) # sched: [3:1.00] 4771 ; BTVER2-NEXT: fsubp %st(2) # sched: [3:1.00] 4772 ; BTVER2-NEXT: fisubs (%ecx) # sched: [8:1.00] 4773 ; BTVER2-NEXT: fisubl (%eax) # sched: [8:1.00] 4774 ; BTVER2-NEXT: #NO_APP 4775 ; BTVER2-NEXT: retl # sched: [4:1.00] 4776 ; 4777 ; ZNVER1-LABEL: test_fsubp_fisub: 4778 ; ZNVER1: # %bb.0: 4779 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4780 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4781 ; ZNVER1-NEXT: #APP 4782 ; ZNVER1-NEXT: fsubp %st(1) # sched: [3:1.00] 4783 ; ZNVER1-NEXT: fsubp %st(2) # sched: [3:1.00] 4784 ; ZNVER1-NEXT: fisubs (%ecx) # sched: [10:1.00] 4785 ; ZNVER1-NEXT: fisubl (%eax) # sched: [10:1.00] 4786 ; ZNVER1-NEXT: #NO_APP 4787 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4788 tail call void asm sideeffect "fsubp \0A\09 fsubp %st(2), %st(0) \0A\09 fisubs $0 \0A\09 fisubl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 4789 ret void 4790 } 4791 4792 define void @test_fsubr(float *%a0, double *%a1) optsize { 4793 ; GENERIC-LABEL: test_fsubr: 4794 ; GENERIC: # %bb.0: 4795 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4796 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4797 ; GENERIC-NEXT: #APP 4798 ; GENERIC-NEXT: fsubr %st(0), %st(1) 4799 ; GENERIC-NEXT: fsubr %st(2) 4800 ; GENERIC-NEXT: fsubrs (%ecx) 4801 ; GENERIC-NEXT: fsubrl (%eax) 4802 ; GENERIC-NEXT: #NO_APP 4803 ; GENERIC-NEXT: retl 4804 ; 4805 ; ATOM-LABEL: test_fsubr: 4806 ; ATOM: # %bb.0: 4807 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4808 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4809 ; ATOM-NEXT: #APP 4810 ; ATOM-NEXT: fsubr %st(0), %st(1) # sched: [5:5.00] 4811 ; ATOM-NEXT: fsubr %st(2) # sched: [5:5.00] 4812 ; ATOM-NEXT: fsubrs (%ecx) # sched: [5:5.00] 4813 ; ATOM-NEXT: fsubrl (%eax) # sched: [5:5.00] 4814 ; ATOM-NEXT: #NO_APP 4815 ; ATOM-NEXT: retl # sched: [79:39.50] 4816 ; 4817 ; SLM-LABEL: test_fsubr: 4818 ; SLM: # %bb.0: 4819 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4820 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4821 ; SLM-NEXT: #APP 4822 ; SLM-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4823 ; SLM-NEXT: fsubr %st(2) # sched: [3:1.00] 4824 ; SLM-NEXT: fsubrs (%ecx) # sched: [6:1.00] 4825 ; SLM-NEXT: fsubrl (%eax) # sched: [6:1.00] 4826 ; SLM-NEXT: #NO_APP 4827 ; SLM-NEXT: retl # sched: [4:1.00] 4828 ; 4829 ; SANDY-LABEL: test_fsubr: 4830 ; SANDY: # %bb.0: 4831 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4832 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4833 ; SANDY-NEXT: #APP 4834 ; SANDY-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4835 ; SANDY-NEXT: fsubr %st(2) # sched: [3:1.00] 4836 ; SANDY-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4837 ; SANDY-NEXT: fsubrl (%eax) # sched: [10:1.00] 4838 ; SANDY-NEXT: #NO_APP 4839 ; SANDY-NEXT: retl # sched: [6:1.00] 4840 ; 4841 ; HASWELL-LABEL: test_fsubr: 4842 ; HASWELL: # %bb.0: 4843 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4844 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4845 ; HASWELL-NEXT: #APP 4846 ; HASWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4847 ; HASWELL-NEXT: fsubr %st(2) # sched: [3:1.00] 4848 ; HASWELL-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4849 ; HASWELL-NEXT: fsubrl (%eax) # sched: [10:1.00] 4850 ; HASWELL-NEXT: #NO_APP 4851 ; HASWELL-NEXT: retl # sched: [7:1.00] 4852 ; 4853 ; BROADWELL-LABEL: test_fsubr: 4854 ; BROADWELL: # %bb.0: 4855 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4856 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4857 ; BROADWELL-NEXT: #APP 4858 ; BROADWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4859 ; BROADWELL-NEXT: fsubr %st(2) # sched: [3:1.00] 4860 ; BROADWELL-NEXT: fsubrs (%ecx) # sched: [9:1.00] 4861 ; BROADWELL-NEXT: fsubrl (%eax) # sched: [9:1.00] 4862 ; BROADWELL-NEXT: #NO_APP 4863 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4864 ; 4865 ; SKYLAKE-LABEL: test_fsubr: 4866 ; SKYLAKE: # %bb.0: 4867 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4868 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4869 ; SKYLAKE-NEXT: #APP 4870 ; SKYLAKE-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4871 ; SKYLAKE-NEXT: fsubr %st(2) # sched: [3:1.00] 4872 ; SKYLAKE-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4873 ; SKYLAKE-NEXT: fsubrl (%eax) # sched: [10:1.00] 4874 ; SKYLAKE-NEXT: #NO_APP 4875 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 4876 ; 4877 ; SKX-LABEL: test_fsubr: 4878 ; SKX: # %bb.0: 4879 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4880 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4881 ; SKX-NEXT: #APP 4882 ; SKX-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4883 ; SKX-NEXT: fsubr %st(2) # sched: [3:1.00] 4884 ; SKX-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4885 ; SKX-NEXT: fsubrl (%eax) # sched: [10:1.00] 4886 ; SKX-NEXT: #NO_APP 4887 ; SKX-NEXT: retl # sched: [6:0.50] 4888 ; 4889 ; BTVER2-LABEL: test_fsubr: 4890 ; BTVER2: # %bb.0: 4891 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4892 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4893 ; BTVER2-NEXT: #APP 4894 ; BTVER2-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4895 ; BTVER2-NEXT: fsubr %st(2) # sched: [3:1.00] 4896 ; BTVER2-NEXT: fsubrs (%ecx) # sched: [8:1.00] 4897 ; BTVER2-NEXT: fsubrl (%eax) # sched: [8:1.00] 4898 ; BTVER2-NEXT: #NO_APP 4899 ; BTVER2-NEXT: retl # sched: [4:1.00] 4900 ; 4901 ; ZNVER1-LABEL: test_fsubr: 4902 ; ZNVER1: # %bb.0: 4903 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4904 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4905 ; ZNVER1-NEXT: #APP 4906 ; ZNVER1-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4907 ; ZNVER1-NEXT: fsubr %st(2) # sched: [3:1.00] 4908 ; ZNVER1-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4909 ; ZNVER1-NEXT: fsubrl (%eax) # sched: [10:1.00] 4910 ; ZNVER1-NEXT: #NO_APP 4911 ; ZNVER1-NEXT: retl # sched: [1:0.50] 4912 tail call void asm sideeffect "fsubr %st(0), %st(1) \0A\09 fsubr %st(2), %st(0) \0A\09 fsubrs $0 \0A\09 fsubrl $1", "*m,*m"(float *%a0, double *%a1) nounwind 4913 ret void 4914 } 4915 4916 define void @test_fsubrp_fisubr(i16 *%a0, i32 *%a1) optsize { 4917 ; GENERIC-LABEL: test_fsubrp_fisubr: 4918 ; GENERIC: # %bb.0: 4919 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4920 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4921 ; GENERIC-NEXT: #APP 4922 ; GENERIC-NEXT: fsubrp %st(1) 4923 ; GENERIC-NEXT: fsubrp %st(2) 4924 ; GENERIC-NEXT: fisubrs (%ecx) 4925 ; GENERIC-NEXT: fisubrl (%eax) 4926 ; GENERIC-NEXT: #NO_APP 4927 ; GENERIC-NEXT: retl 4928 ; 4929 ; ATOM-LABEL: test_fsubrp_fisubr: 4930 ; ATOM: # %bb.0: 4931 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4932 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4933 ; ATOM-NEXT: #APP 4934 ; ATOM-NEXT: fsubrp %st(1) # sched: [5:5.00] 4935 ; ATOM-NEXT: fsubrp %st(2) # sched: [5:5.00] 4936 ; ATOM-NEXT: fisubrs (%ecx) # sched: [5:5.00] 4937 ; ATOM-NEXT: fisubrl (%eax) # sched: [5:5.00] 4938 ; ATOM-NEXT: #NO_APP 4939 ; ATOM-NEXT: retl # sched: [79:39.50] 4940 ; 4941 ; SLM-LABEL: test_fsubrp_fisubr: 4942 ; SLM: # %bb.0: 4943 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4944 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4945 ; SLM-NEXT: #APP 4946 ; SLM-NEXT: fsubrp %st(1) # sched: [3:1.00] 4947 ; SLM-NEXT: fsubrp %st(2) # sched: [3:1.00] 4948 ; SLM-NEXT: fisubrs (%ecx) # sched: [6:1.00] 4949 ; SLM-NEXT: fisubrl (%eax) # sched: [6:1.00] 4950 ; SLM-NEXT: #NO_APP 4951 ; SLM-NEXT: retl # sched: [4:1.00] 4952 ; 4953 ; SANDY-LABEL: test_fsubrp_fisubr: 4954 ; SANDY: # %bb.0: 4955 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4956 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4957 ; SANDY-NEXT: #APP 4958 ; SANDY-NEXT: fsubrp %st(1) # sched: [3:1.00] 4959 ; SANDY-NEXT: fsubrp %st(2) # sched: [3:1.00] 4960 ; SANDY-NEXT: fisubrs (%ecx) # sched: [13:2.00] 4961 ; SANDY-NEXT: fisubrl (%eax) # sched: [13:2.00] 4962 ; SANDY-NEXT: #NO_APP 4963 ; SANDY-NEXT: retl # sched: [6:1.00] 4964 ; 4965 ; HASWELL-LABEL: test_fsubrp_fisubr: 4966 ; HASWELL: # %bb.0: 4967 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4968 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4969 ; HASWELL-NEXT: #APP 4970 ; HASWELL-NEXT: fsubrp %st(1) # sched: [3:1.00] 4971 ; HASWELL-NEXT: fsubrp %st(2) # sched: [3:1.00] 4972 ; HASWELL-NEXT: fisubrs (%ecx) # sched: [13:2.00] 4973 ; HASWELL-NEXT: fisubrl (%eax) # sched: [13:2.00] 4974 ; HASWELL-NEXT: #NO_APP 4975 ; HASWELL-NEXT: retl # sched: [7:1.00] 4976 ; 4977 ; BROADWELL-LABEL: test_fsubrp_fisubr: 4978 ; BROADWELL: # %bb.0: 4979 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4980 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4981 ; BROADWELL-NEXT: #APP 4982 ; BROADWELL-NEXT: fsubrp %st(1) # sched: [3:1.00] 4983 ; BROADWELL-NEXT: fsubrp %st(2) # sched: [3:1.00] 4984 ; BROADWELL-NEXT: fisubrs (%ecx) # sched: [12:2.00] 4985 ; BROADWELL-NEXT: fisubrl (%eax) # sched: [12:2.00] 4986 ; BROADWELL-NEXT: #NO_APP 4987 ; BROADWELL-NEXT: retl # sched: [6:0.50] 4988 ; 4989 ; SKYLAKE-LABEL: test_fsubrp_fisubr: 4990 ; SKYLAKE: # %bb.0: 4991 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4992 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4993 ; SKYLAKE-NEXT: #APP 4994 ; SKYLAKE-NEXT: fsubrp %st(1) # sched: [3:1.00] 4995 ; SKYLAKE-NEXT: fsubrp %st(2) # sched: [3:1.00] 4996 ; SKYLAKE-NEXT: fisubrs (%ecx) # sched: [13:2.00] 4997 ; SKYLAKE-NEXT: fisubrl (%eax) # sched: [13:2.00] 4998 ; SKYLAKE-NEXT: #NO_APP 4999 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5000 ; 5001 ; SKX-LABEL: test_fsubrp_fisubr: 5002 ; SKX: # %bb.0: 5003 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5004 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 5005 ; SKX-NEXT: #APP 5006 ; SKX-NEXT: fsubrp %st(1) # sched: [3:1.00] 5007 ; SKX-NEXT: fsubrp %st(2) # sched: [3:1.00] 5008 ; SKX-NEXT: fisubrs (%ecx) # sched: [13:2.00] 5009 ; SKX-NEXT: fisubrl (%eax) # sched: [13:2.00] 5010 ; SKX-NEXT: #NO_APP 5011 ; SKX-NEXT: retl # sched: [6:0.50] 5012 ; 5013 ; BTVER2-LABEL: test_fsubrp_fisubr: 5014 ; BTVER2: # %bb.0: 5015 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 5016 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 5017 ; BTVER2-NEXT: #APP 5018 ; BTVER2-NEXT: fsubrp %st(1) # sched: [3:1.00] 5019 ; BTVER2-NEXT: fsubrp %st(2) # sched: [3:1.00] 5020 ; BTVER2-NEXT: fisubrs (%ecx) # sched: [8:1.00] 5021 ; BTVER2-NEXT: fisubrl (%eax) # sched: [8:1.00] 5022 ; BTVER2-NEXT: #NO_APP 5023 ; BTVER2-NEXT: retl # sched: [4:1.00] 5024 ; 5025 ; ZNVER1-LABEL: test_fsubrp_fisubr: 5026 ; ZNVER1: # %bb.0: 5027 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 5028 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 5029 ; ZNVER1-NEXT: #APP 5030 ; ZNVER1-NEXT: fsubrp %st(1) # sched: [3:1.00] 5031 ; ZNVER1-NEXT: fsubrp %st(2) # sched: [3:1.00] 5032 ; ZNVER1-NEXT: fisubrs (%ecx) # sched: [10:1.00] 5033 ; ZNVER1-NEXT: fisubrl (%eax) # sched: [10:1.00] 5034 ; ZNVER1-NEXT: #NO_APP 5035 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5036 tail call void asm sideeffect "fsubrp \0A\09 fsubrp %st(2), %st(0) \0A\09 fisubrs $0 \0A\09 fisubrl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 5037 ret void 5038 } 5039 5040 define void @test_ftst() optsize { 5041 ; GENERIC-LABEL: test_ftst: 5042 ; GENERIC: # %bb.0: 5043 ; GENERIC-NEXT: #APP 5044 ; GENERIC-NEXT: ftst 5045 ; GENERIC-NEXT: #NO_APP 5046 ; GENERIC-NEXT: retl 5047 ; 5048 ; ATOM-LABEL: test_ftst: 5049 ; ATOM: # %bb.0: 5050 ; ATOM-NEXT: #APP 5051 ; ATOM-NEXT: ftst # sched: [9:4.50] 5052 ; ATOM-NEXT: #NO_APP 5053 ; ATOM-NEXT: retl # sched: [79:39.50] 5054 ; 5055 ; SLM-LABEL: test_ftst: 5056 ; SLM: # %bb.0: 5057 ; SLM-NEXT: #APP 5058 ; SLM-NEXT: ftst # sched: [3:1.00] 5059 ; SLM-NEXT: #NO_APP 5060 ; SLM-NEXT: retl # sched: [4:1.00] 5061 ; 5062 ; SANDY-LABEL: test_ftst: 5063 ; SANDY: # %bb.0: 5064 ; SANDY-NEXT: #APP 5065 ; SANDY-NEXT: ftst # sched: [3:1.00] 5066 ; SANDY-NEXT: #NO_APP 5067 ; SANDY-NEXT: retl # sched: [6:1.00] 5068 ; 5069 ; HASWELL-LABEL: test_ftst: 5070 ; HASWELL: # %bb.0: 5071 ; HASWELL-NEXT: #APP 5072 ; HASWELL-NEXT: ftst # sched: [1:1.00] 5073 ; HASWELL-NEXT: #NO_APP 5074 ; HASWELL-NEXT: retl # sched: [7:1.00] 5075 ; 5076 ; BROADWELL-LABEL: test_ftst: 5077 ; BROADWELL: # %bb.0: 5078 ; BROADWELL-NEXT: #APP 5079 ; BROADWELL-NEXT: ftst # sched: [3:1.00] 5080 ; BROADWELL-NEXT: #NO_APP 5081 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5082 ; 5083 ; SKYLAKE-LABEL: test_ftst: 5084 ; SKYLAKE: # %bb.0: 5085 ; SKYLAKE-NEXT: #APP 5086 ; SKYLAKE-NEXT: ftst # sched: [2:1.00] 5087 ; SKYLAKE-NEXT: #NO_APP 5088 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5089 ; 5090 ; SKX-LABEL: test_ftst: 5091 ; SKX: # %bb.0: 5092 ; SKX-NEXT: #APP 5093 ; SKX-NEXT: ftst # sched: [2:1.00] 5094 ; SKX-NEXT: #NO_APP 5095 ; SKX-NEXT: retl # sched: [6:0.50] 5096 ; 5097 ; BTVER2-LABEL: test_ftst: 5098 ; BTVER2: # %bb.0: 5099 ; BTVER2-NEXT: #APP 5100 ; BTVER2-NEXT: ftst # sched: [3:1.00] 5101 ; BTVER2-NEXT: #NO_APP 5102 ; BTVER2-NEXT: retl # sched: [4:1.00] 5103 ; 5104 ; ZNVER1-LABEL: test_ftst: 5105 ; ZNVER1: # %bb.0: 5106 ; ZNVER1-NEXT: #APP 5107 ; ZNVER1-NEXT: ftst # sched: [1:1.00] 5108 ; ZNVER1-NEXT: #NO_APP 5109 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5110 tail call void asm sideeffect "ftst", ""() nounwind 5111 ret void 5112 } 5113 5114 define void @test_fucom_fucomp_fucompp() optsize { 5115 ; GENERIC-LABEL: test_fucom_fucomp_fucompp: 5116 ; GENERIC: # %bb.0: 5117 ; GENERIC-NEXT: #APP 5118 ; GENERIC-NEXT: fucom %st(1) 5119 ; GENERIC-NEXT: fucom %st(3) 5120 ; GENERIC-NEXT: fucomp %st(1) 5121 ; GENERIC-NEXT: fucomp %st(3) 5122 ; GENERIC-NEXT: fucompp 5123 ; GENERIC-NEXT: #NO_APP 5124 ; GENERIC-NEXT: retl 5125 ; 5126 ; ATOM-LABEL: test_fucom_fucomp_fucompp: 5127 ; ATOM: # %bb.0: 5128 ; ATOM-NEXT: #APP 5129 ; ATOM-NEXT: fucom %st(1) # sched: [1:1.00] 5130 ; ATOM-NEXT: fucom %st(3) # sched: [1:1.00] 5131 ; ATOM-NEXT: fucomp %st(1) # sched: [1:1.00] 5132 ; ATOM-NEXT: fucomp %st(3) # sched: [1:1.00] 5133 ; ATOM-NEXT: fucompp # sched: [1:1.00] 5134 ; ATOM-NEXT: #NO_APP 5135 ; ATOM-NEXT: retl # sched: [79:39.50] 5136 ; 5137 ; SLM-LABEL: test_fucom_fucomp_fucompp: 5138 ; SLM: # %bb.0: 5139 ; SLM-NEXT: #APP 5140 ; SLM-NEXT: fucom %st(1) # sched: [3:1.00] 5141 ; SLM-NEXT: fucom %st(3) # sched: [3:1.00] 5142 ; SLM-NEXT: fucomp %st(1) # sched: [3:1.00] 5143 ; SLM-NEXT: fucomp %st(3) # sched: [3:1.00] 5144 ; SLM-NEXT: fucompp # sched: [3:1.00] 5145 ; SLM-NEXT: #NO_APP 5146 ; SLM-NEXT: retl # sched: [4:1.00] 5147 ; 5148 ; SANDY-LABEL: test_fucom_fucomp_fucompp: 5149 ; SANDY: # %bb.0: 5150 ; SANDY-NEXT: #APP 5151 ; SANDY-NEXT: fucom %st(1) # sched: [1:1.00] 5152 ; SANDY-NEXT: fucom %st(3) # sched: [1:1.00] 5153 ; SANDY-NEXT: fucomp %st(1) # sched: [1:1.00] 5154 ; SANDY-NEXT: fucomp %st(3) # sched: [1:1.00] 5155 ; SANDY-NEXT: fucompp # sched: [3:1.00] 5156 ; SANDY-NEXT: #NO_APP 5157 ; SANDY-NEXT: retl # sched: [6:1.00] 5158 ; 5159 ; HASWELL-LABEL: test_fucom_fucomp_fucompp: 5160 ; HASWELL: # %bb.0: 5161 ; HASWELL-NEXT: #APP 5162 ; HASWELL-NEXT: fucom %st(1) # sched: [1:1.00] 5163 ; HASWELL-NEXT: fucom %st(3) # sched: [1:1.00] 5164 ; HASWELL-NEXT: fucomp %st(1) # sched: [1:1.00] 5165 ; HASWELL-NEXT: fucomp %st(3) # sched: [1:1.00] 5166 ; HASWELL-NEXT: fucompp # sched: [1:0.50] 5167 ; HASWELL-NEXT: #NO_APP 5168 ; HASWELL-NEXT: retl # sched: [7:1.00] 5169 ; 5170 ; BROADWELL-LABEL: test_fucom_fucomp_fucompp: 5171 ; BROADWELL: # %bb.0: 5172 ; BROADWELL-NEXT: #APP 5173 ; BROADWELL-NEXT: fucom %st(1) # sched: [1:1.00] 5174 ; BROADWELL-NEXT: fucom %st(3) # sched: [1:1.00] 5175 ; BROADWELL-NEXT: fucomp %st(1) # sched: [1:1.00] 5176 ; BROADWELL-NEXT: fucomp %st(3) # sched: [1:1.00] 5177 ; BROADWELL-NEXT: fucompp # sched: [3:1.00] 5178 ; BROADWELL-NEXT: #NO_APP 5179 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5180 ; 5181 ; SKYLAKE-LABEL: test_fucom_fucomp_fucompp: 5182 ; SKYLAKE: # %bb.0: 5183 ; SKYLAKE-NEXT: #APP 5184 ; SKYLAKE-NEXT: fucom %st(1) # sched: [1:1.00] 5185 ; SKYLAKE-NEXT: fucom %st(3) # sched: [1:1.00] 5186 ; SKYLAKE-NEXT: fucomp %st(1) # sched: [1:1.00] 5187 ; SKYLAKE-NEXT: fucomp %st(3) # sched: [1:1.00] 5188 ; SKYLAKE-NEXT: fucompp # sched: [2:1.00] 5189 ; SKYLAKE-NEXT: #NO_APP 5190 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5191 ; 5192 ; SKX-LABEL: test_fucom_fucomp_fucompp: 5193 ; SKX: # %bb.0: 5194 ; SKX-NEXT: #APP 5195 ; SKX-NEXT: fucom %st(1) # sched: [1:1.00] 5196 ; SKX-NEXT: fucom %st(3) # sched: [1:1.00] 5197 ; SKX-NEXT: fucomp %st(1) # sched: [1:1.00] 5198 ; SKX-NEXT: fucomp %st(3) # sched: [1:1.00] 5199 ; SKX-NEXT: fucompp # sched: [2:1.00] 5200 ; SKX-NEXT: #NO_APP 5201 ; SKX-NEXT: retl # sched: [6:0.50] 5202 ; 5203 ; BTVER2-LABEL: test_fucom_fucomp_fucompp: 5204 ; BTVER2: # %bb.0: 5205 ; BTVER2-NEXT: #APP 5206 ; BTVER2-NEXT: fucom %st(1) # sched: [3:1.00] 5207 ; BTVER2-NEXT: fucom %st(3) # sched: [3:1.00] 5208 ; BTVER2-NEXT: fucomp %st(1) # sched: [3:1.00] 5209 ; BTVER2-NEXT: fucomp %st(3) # sched: [3:1.00] 5210 ; BTVER2-NEXT: fucompp # sched: [3:1.00] 5211 ; BTVER2-NEXT: #NO_APP 5212 ; BTVER2-NEXT: retl # sched: [4:1.00] 5213 ; 5214 ; ZNVER1-LABEL: test_fucom_fucomp_fucompp: 5215 ; ZNVER1: # %bb.0: 5216 ; ZNVER1-NEXT: #APP 5217 ; ZNVER1-NEXT: fucom %st(1) # sched: [1:1.00] 5218 ; ZNVER1-NEXT: fucom %st(3) # sched: [1:1.00] 5219 ; ZNVER1-NEXT: fucomp %st(1) # sched: [1:1.00] 5220 ; ZNVER1-NEXT: fucomp %st(3) # sched: [1:1.00] 5221 ; ZNVER1-NEXT: fucompp # sched: [1:1.00] 5222 ; ZNVER1-NEXT: #NO_APP 5223 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5224 tail call void asm sideeffect "fucom \0A\09 fucom %st(3) \0A\09 fucomp \0A\09 fucomp %st(3) \0A\09 fucompp", ""() nounwind 5225 ret void 5226 } 5227 5228 define void @test_fucomi_fucomip() optsize { 5229 ; GENERIC-LABEL: test_fucomi_fucomip: 5230 ; GENERIC: # %bb.0: 5231 ; GENERIC-NEXT: #APP 5232 ; GENERIC-NEXT: fucomi %st(3) 5233 ; GENERIC-NEXT: fucompi %st(3) 5234 ; GENERIC-NEXT: #NO_APP 5235 ; GENERIC-NEXT: retl 5236 ; 5237 ; ATOM-LABEL: test_fucomi_fucomip: 5238 ; ATOM: # %bb.0: 5239 ; ATOM-NEXT: #APP 5240 ; ATOM-NEXT: fucomi %st(3) # sched: [9:4.50] 5241 ; ATOM-NEXT: fucompi %st(3) # sched: [9:4.50] 5242 ; ATOM-NEXT: #NO_APP 5243 ; ATOM-NEXT: retl # sched: [79:39.50] 5244 ; 5245 ; SLM-LABEL: test_fucomi_fucomip: 5246 ; SLM: # %bb.0: 5247 ; SLM-NEXT: #APP 5248 ; SLM-NEXT: fucomi %st(3) # sched: [3:1.00] 5249 ; SLM-NEXT: fucompi %st(3) # sched: [3:1.00] 5250 ; SLM-NEXT: #NO_APP 5251 ; SLM-NEXT: retl # sched: [4:1.00] 5252 ; 5253 ; SANDY-LABEL: test_fucomi_fucomip: 5254 ; SANDY: # %bb.0: 5255 ; SANDY-NEXT: #APP 5256 ; SANDY-NEXT: fucomi %st(3) # sched: [3:1.00] 5257 ; SANDY-NEXT: fucompi %st(3) # sched: [3:1.00] 5258 ; SANDY-NEXT: #NO_APP 5259 ; SANDY-NEXT: retl # sched: [6:1.00] 5260 ; 5261 ; HASWELL-LABEL: test_fucomi_fucomip: 5262 ; HASWELL: # %bb.0: 5263 ; HASWELL-NEXT: #APP 5264 ; HASWELL-NEXT: fucomi %st(3) # sched: [1:0.50] 5265 ; HASWELL-NEXT: fucompi %st(3) # sched: [1:0.50] 5266 ; HASWELL-NEXT: #NO_APP 5267 ; HASWELL-NEXT: retl # sched: [7:1.00] 5268 ; 5269 ; BROADWELL-LABEL: test_fucomi_fucomip: 5270 ; BROADWELL: # %bb.0: 5271 ; BROADWELL-NEXT: #APP 5272 ; BROADWELL-NEXT: fucomi %st(3) # sched: [3:1.00] 5273 ; BROADWELL-NEXT: fucompi %st(3) # sched: [3:1.00] 5274 ; BROADWELL-NEXT: #NO_APP 5275 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5276 ; 5277 ; SKYLAKE-LABEL: test_fucomi_fucomip: 5278 ; SKYLAKE: # %bb.0: 5279 ; SKYLAKE-NEXT: #APP 5280 ; SKYLAKE-NEXT: fucomi %st(3) # sched: [2:1.00] 5281 ; SKYLAKE-NEXT: fucompi %st(3) # sched: [2:1.00] 5282 ; SKYLAKE-NEXT: #NO_APP 5283 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5284 ; 5285 ; SKX-LABEL: test_fucomi_fucomip: 5286 ; SKX: # %bb.0: 5287 ; SKX-NEXT: #APP 5288 ; SKX-NEXT: fucomi %st(3) # sched: [2:1.00] 5289 ; SKX-NEXT: fucompi %st(3) # sched: [2:1.00] 5290 ; SKX-NEXT: #NO_APP 5291 ; SKX-NEXT: retl # sched: [6:0.50] 5292 ; 5293 ; BTVER2-LABEL: test_fucomi_fucomip: 5294 ; BTVER2: # %bb.0: 5295 ; BTVER2-NEXT: #APP 5296 ; BTVER2-NEXT: fucomi %st(3) # sched: [3:1.00] 5297 ; BTVER2-NEXT: fucompi %st(3) # sched: [3:1.00] 5298 ; BTVER2-NEXT: #NO_APP 5299 ; BTVER2-NEXT: retl # sched: [4:1.00] 5300 ; 5301 ; ZNVER1-LABEL: test_fucomi_fucomip: 5302 ; ZNVER1: # %bb.0: 5303 ; ZNVER1-NEXT: #APP 5304 ; ZNVER1-NEXT: fucomi %st(3) # sched: [9:0.50] 5305 ; ZNVER1-NEXT: fucompi %st(3) # sched: [9:0.50] 5306 ; ZNVER1-NEXT: #NO_APP 5307 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5308 tail call void asm sideeffect "fucomi %st(3) \0A\09 fucomip %st(3)", ""() nounwind 5309 ret void 5310 } 5311 5312 define void @test_fwait() optsize { 5313 ; GENERIC-LABEL: test_fwait: 5314 ; GENERIC: # %bb.0: 5315 ; GENERIC-NEXT: #APP 5316 ; GENERIC-NEXT: wait 5317 ; GENERIC-NEXT: #NO_APP 5318 ; GENERIC-NEXT: retl 5319 ; 5320 ; ATOM-LABEL: test_fwait: 5321 ; ATOM: # %bb.0: 5322 ; ATOM-NEXT: #APP 5323 ; ATOM-NEXT: wait # sched: [1:0.50] 5324 ; ATOM-NEXT: #NO_APP 5325 ; ATOM-NEXT: retl # sched: [79:39.50] 5326 ; 5327 ; SLM-LABEL: test_fwait: 5328 ; SLM: # %bb.0: 5329 ; SLM-NEXT: #APP 5330 ; SLM-NEXT: wait # sched: [100:1.00] 5331 ; SLM-NEXT: #NO_APP 5332 ; SLM-NEXT: retl # sched: [4:1.00] 5333 ; 5334 ; SANDY-LABEL: test_fwait: 5335 ; SANDY: # %bb.0: 5336 ; SANDY-NEXT: #APP 5337 ; SANDY-NEXT: wait # sched: [100:0.33] 5338 ; SANDY-NEXT: #NO_APP 5339 ; SANDY-NEXT: retl # sched: [6:1.00] 5340 ; 5341 ; HASWELL-LABEL: test_fwait: 5342 ; HASWELL: # %bb.0: 5343 ; HASWELL-NEXT: #APP 5344 ; HASWELL-NEXT: wait # sched: [2:0.50] 5345 ; HASWELL-NEXT: #NO_APP 5346 ; HASWELL-NEXT: retl # sched: [7:1.00] 5347 ; 5348 ; BROADWELL-LABEL: test_fwait: 5349 ; BROADWELL: # %bb.0: 5350 ; BROADWELL-NEXT: #APP 5351 ; BROADWELL-NEXT: wait # sched: [2:0.50] 5352 ; BROADWELL-NEXT: #NO_APP 5353 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5354 ; 5355 ; SKYLAKE-LABEL: test_fwait: 5356 ; SKYLAKE: # %bb.0: 5357 ; SKYLAKE-NEXT: #APP 5358 ; SKYLAKE-NEXT: wait # sched: [2:0.50] 5359 ; SKYLAKE-NEXT: #NO_APP 5360 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5361 ; 5362 ; SKX-LABEL: test_fwait: 5363 ; SKX: # %bb.0: 5364 ; SKX-NEXT: #APP 5365 ; SKX-NEXT: wait # sched: [2:0.50] 5366 ; SKX-NEXT: #NO_APP 5367 ; SKX-NEXT: retl # sched: [6:0.50] 5368 ; 5369 ; BTVER2-LABEL: test_fwait: 5370 ; BTVER2: # %bb.0: 5371 ; BTVER2-NEXT: #APP 5372 ; BTVER2-NEXT: wait # sched: [100:0.50] 5373 ; BTVER2-NEXT: #NO_APP 5374 ; BTVER2-NEXT: retl # sched: [4:1.00] 5375 ; 5376 ; ZNVER1-LABEL: test_fwait: 5377 ; ZNVER1: # %bb.0: 5378 ; ZNVER1-NEXT: #APP 5379 ; ZNVER1-NEXT: wait # sched: [1:1.00] 5380 ; ZNVER1-NEXT: #NO_APP 5381 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5382 tail call void asm sideeffect "fwait", ""() nounwind 5383 ret void 5384 } 5385 5386 define void @test_fxam() optsize { 5387 ; GENERIC-LABEL: test_fxam: 5388 ; GENERIC: # %bb.0: 5389 ; GENERIC-NEXT: #APP 5390 ; GENERIC-NEXT: fxam 5391 ; GENERIC-NEXT: #NO_APP 5392 ; GENERIC-NEXT: retl 5393 ; 5394 ; ATOM-LABEL: test_fxam: 5395 ; ATOM: # %bb.0: 5396 ; ATOM-NEXT: #APP 5397 ; ATOM-NEXT: fxam # sched: [1:1.00] 5398 ; ATOM-NEXT: #NO_APP 5399 ; ATOM-NEXT: retl # sched: [79:39.50] 5400 ; 5401 ; SLM-LABEL: test_fxam: 5402 ; SLM: # %bb.0: 5403 ; SLM-NEXT: #APP 5404 ; SLM-NEXT: fxam # sched: [100:1.00] 5405 ; SLM-NEXT: #NO_APP 5406 ; SLM-NEXT: retl # sched: [4:1.00] 5407 ; 5408 ; SANDY-LABEL: test_fxam: 5409 ; SANDY: # %bb.0: 5410 ; SANDY-NEXT: #APP 5411 ; SANDY-NEXT: fxam # sched: [100:0.33] 5412 ; SANDY-NEXT: #NO_APP 5413 ; SANDY-NEXT: retl # sched: [6:1.00] 5414 ; 5415 ; HASWELL-LABEL: test_fxam: 5416 ; HASWELL: # %bb.0: 5417 ; HASWELL-NEXT: #APP 5418 ; HASWELL-NEXT: fxam # sched: [1:2.00] 5419 ; HASWELL-NEXT: #NO_APP 5420 ; HASWELL-NEXT: retl # sched: [7:1.00] 5421 ; 5422 ; BROADWELL-LABEL: test_fxam: 5423 ; BROADWELL: # %bb.0: 5424 ; BROADWELL-NEXT: #APP 5425 ; BROADWELL-NEXT: fxam # sched: [100:0.25] 5426 ; BROADWELL-NEXT: #NO_APP 5427 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5428 ; 5429 ; SKYLAKE-LABEL: test_fxam: 5430 ; SKYLAKE: # %bb.0: 5431 ; SKYLAKE-NEXT: #APP 5432 ; SKYLAKE-NEXT: fxam # sched: [100:0.25] 5433 ; SKYLAKE-NEXT: #NO_APP 5434 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5435 ; 5436 ; SKX-LABEL: test_fxam: 5437 ; SKX: # %bb.0: 5438 ; SKX-NEXT: #APP 5439 ; SKX-NEXT: fxam # sched: [100:0.25] 5440 ; SKX-NEXT: #NO_APP 5441 ; SKX-NEXT: retl # sched: [6:0.50] 5442 ; 5443 ; BTVER2-LABEL: test_fxam: 5444 ; BTVER2: # %bb.0: 5445 ; BTVER2-NEXT: #APP 5446 ; BTVER2-NEXT: fxam # sched: [100:0.50] 5447 ; BTVER2-NEXT: #NO_APP 5448 ; BTVER2-NEXT: retl # sched: [4:1.00] 5449 ; 5450 ; ZNVER1-LABEL: test_fxam: 5451 ; ZNVER1: # %bb.0: 5452 ; ZNVER1-NEXT: #APP 5453 ; ZNVER1-NEXT: fxam # sched: [1:1.00] 5454 ; ZNVER1-NEXT: #NO_APP 5455 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5456 tail call void asm sideeffect "fxam", ""() nounwind 5457 ret void 5458 } 5459 5460 define void @test_fxch() optsize { 5461 ; GENERIC-LABEL: test_fxch: 5462 ; GENERIC: # %bb.0: 5463 ; GENERIC-NEXT: #APP 5464 ; GENERIC-NEXT: fxch %st(1) 5465 ; GENERIC-NEXT: fxch %st(3) 5466 ; GENERIC-NEXT: #NO_APP 5467 ; GENERIC-NEXT: retl 5468 ; 5469 ; ATOM-LABEL: test_fxch: 5470 ; ATOM: # %bb.0: 5471 ; ATOM-NEXT: #APP 5472 ; ATOM-NEXT: fxch %st(1) # sched: [1:1.00] 5473 ; ATOM-NEXT: fxch %st(3) # sched: [1:1.00] 5474 ; ATOM-NEXT: #NO_APP 5475 ; ATOM-NEXT: retl # sched: [79:39.50] 5476 ; 5477 ; SLM-LABEL: test_fxch: 5478 ; SLM: # %bb.0: 5479 ; SLM-NEXT: #APP 5480 ; SLM-NEXT: fxch %st(1) # sched: [1:0.50] 5481 ; SLM-NEXT: fxch %st(3) # sched: [1:0.50] 5482 ; SLM-NEXT: #NO_APP 5483 ; SLM-NEXT: retl # sched: [4:1.00] 5484 ; 5485 ; SANDY-LABEL: test_fxch: 5486 ; SANDY: # %bb.0: 5487 ; SANDY-NEXT: #APP 5488 ; SANDY-NEXT: fxch %st(1) # sched: [1:0.33] 5489 ; SANDY-NEXT: fxch %st(3) # sched: [1:0.33] 5490 ; SANDY-NEXT: #NO_APP 5491 ; SANDY-NEXT: retl # sched: [6:1.00] 5492 ; 5493 ; HASWELL-LABEL: test_fxch: 5494 ; HASWELL: # %bb.0: 5495 ; HASWELL-NEXT: #APP 5496 ; HASWELL-NEXT: fxch %st(1) # sched: [17:4.00] 5497 ; HASWELL-NEXT: fxch %st(3) # sched: [17:4.00] 5498 ; HASWELL-NEXT: #NO_APP 5499 ; HASWELL-NEXT: retl # sched: [7:1.00] 5500 ; 5501 ; BROADWELL-LABEL: test_fxch: 5502 ; BROADWELL: # %bb.0: 5503 ; BROADWELL-NEXT: #APP 5504 ; BROADWELL-NEXT: fxch %st(1) # sched: [14:4.00] 5505 ; BROADWELL-NEXT: fxch %st(3) # sched: [14:4.00] 5506 ; BROADWELL-NEXT: #NO_APP 5507 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5508 ; 5509 ; SKYLAKE-LABEL: test_fxch: 5510 ; SKYLAKE: # %bb.0: 5511 ; SKYLAKE-NEXT: #APP 5512 ; SKYLAKE-NEXT: fxch %st(1) # sched: [17:4.00] 5513 ; SKYLAKE-NEXT: fxch %st(3) # sched: [17:4.00] 5514 ; SKYLAKE-NEXT: #NO_APP 5515 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5516 ; 5517 ; SKX-LABEL: test_fxch: 5518 ; SKX: # %bb.0: 5519 ; SKX-NEXT: #APP 5520 ; SKX-NEXT: fxch %st(1) # sched: [17:4.00] 5521 ; SKX-NEXT: fxch %st(3) # sched: [17:4.00] 5522 ; SKX-NEXT: #NO_APP 5523 ; SKX-NEXT: retl # sched: [6:0.50] 5524 ; 5525 ; BTVER2-LABEL: test_fxch: 5526 ; BTVER2: # %bb.0: 5527 ; BTVER2-NEXT: #APP 5528 ; BTVER2-NEXT: fxch %st(1) # sched: [1:0.50] 5529 ; BTVER2-NEXT: fxch %st(3) # sched: [1:0.50] 5530 ; BTVER2-NEXT: #NO_APP 5531 ; BTVER2-NEXT: retl # sched: [4:1.00] 5532 ; 5533 ; ZNVER1-LABEL: test_fxch: 5534 ; ZNVER1: # %bb.0: 5535 ; ZNVER1-NEXT: #APP 5536 ; ZNVER1-NEXT: fxch %st(1) # sched: [1:0.25] 5537 ; ZNVER1-NEXT: fxch %st(3) # sched: [1:0.25] 5538 ; ZNVER1-NEXT: #NO_APP 5539 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5540 tail call void asm sideeffect "fxch \0A\09 fxch %st(3)", ""() nounwind 5541 ret void 5542 } 5543 5544 define void @test_fxrstor_fxsave(i8* %a0) optsize { 5545 ; GENERIC-LABEL: test_fxrstor_fxsave: 5546 ; GENERIC: # %bb.0: 5547 ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5548 ; GENERIC-NEXT: #APP 5549 ; GENERIC-NEXT: fxrstor (%eax) 5550 ; GENERIC-NEXT: fxsave (%eax) 5551 ; GENERIC-NEXT: #NO_APP 5552 ; GENERIC-NEXT: retl 5553 ; 5554 ; ATOM-LABEL: test_fxrstor_fxsave: 5555 ; ATOM: # %bb.0: 5556 ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 5557 ; ATOM-NEXT: #APP 5558 ; ATOM-NEXT: fxrstor (%eax) # sched: [141:70.50] 5559 ; ATOM-NEXT: fxsave (%eax) # sched: [140:70.00] 5560 ; ATOM-NEXT: #NO_APP 5561 ; ATOM-NEXT: retl # sched: [79:39.50] 5562 ; 5563 ; SLM-LABEL: test_fxrstor_fxsave: 5564 ; SLM: # %bb.0: 5565 ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 5566 ; SLM-NEXT: #APP 5567 ; SLM-NEXT: fxrstor (%eax) # sched: [100:1.00] 5568 ; SLM-NEXT: fxsave (%eax) # sched: [100:1.00] 5569 ; SLM-NEXT: #NO_APP 5570 ; SLM-NEXT: retl # sched: [4:1.00] 5571 ; 5572 ; SANDY-LABEL: test_fxrstor_fxsave: 5573 ; SANDY: # %bb.0: 5574 ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5575 ; SANDY-NEXT: #APP 5576 ; SANDY-NEXT: fxrstor (%eax) # sched: [5:2.00] 5577 ; SANDY-NEXT: fxsave (%eax) # sched: [100:0.33] 5578 ; SANDY-NEXT: #NO_APP 5579 ; SANDY-NEXT: retl # sched: [6:1.00] 5580 ; 5581 ; HASWELL-LABEL: test_fxrstor_fxsave: 5582 ; HASWELL: # %bb.0: 5583 ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5584 ; HASWELL-NEXT: #APP 5585 ; HASWELL-NEXT: fxrstor (%eax) # sched: [64:16.50] 5586 ; HASWELL-NEXT: fxsave (%eax) # sched: [100:0.25] 5587 ; HASWELL-NEXT: #NO_APP 5588 ; HASWELL-NEXT: retl # sched: [7:1.00] 5589 ; 5590 ; BROADWELL-LABEL: test_fxrstor_fxsave: 5591 ; BROADWELL: # %bb.0: 5592 ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5593 ; BROADWELL-NEXT: #APP 5594 ; BROADWELL-NEXT: fxrstor (%eax) # sched: [63:16.50] 5595 ; BROADWELL-NEXT: fxsave (%eax) # sched: [100:0.25] 5596 ; BROADWELL-NEXT: #NO_APP 5597 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5598 ; 5599 ; SKYLAKE-LABEL: test_fxrstor_fxsave: 5600 ; SKYLAKE: # %bb.0: 5601 ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5602 ; SKYLAKE-NEXT: #APP 5603 ; SKYLAKE-NEXT: fxrstor (%eax) # sched: [63:16.50] 5604 ; SKYLAKE-NEXT: fxsave (%eax) # sched: [100:0.25] 5605 ; SKYLAKE-NEXT: #NO_APP 5606 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5607 ; 5608 ; SKX-LABEL: test_fxrstor_fxsave: 5609 ; SKX: # %bb.0: 5610 ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5611 ; SKX-NEXT: #APP 5612 ; SKX-NEXT: fxrstor (%eax) # sched: [63:16.50] 5613 ; SKX-NEXT: fxsave (%eax) # sched: [100:0.25] 5614 ; SKX-NEXT: #NO_APP 5615 ; SKX-NEXT: retl # sched: [6:0.50] 5616 ; 5617 ; BTVER2-LABEL: test_fxrstor_fxsave: 5618 ; BTVER2: # %bb.0: 5619 ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 5620 ; BTVER2-NEXT: #APP 5621 ; BTVER2-NEXT: fxrstor (%eax) # sched: [100:0.50] 5622 ; BTVER2-NEXT: fxsave (%eax) # sched: [100:0.50] 5623 ; BTVER2-NEXT: #NO_APP 5624 ; BTVER2-NEXT: retl # sched: [4:1.00] 5625 ; 5626 ; ZNVER1-LABEL: test_fxrstor_fxsave: 5627 ; ZNVER1: # %bb.0: 5628 ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 5629 ; ZNVER1-NEXT: #APP 5630 ; ZNVER1-NEXT: fxrstor (%eax) # sched: [100:0.25] 5631 ; ZNVER1-NEXT: fxsave (%eax) # sched: [100:0.25] 5632 ; ZNVER1-NEXT: #NO_APP 5633 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5634 tail call void asm sideeffect "fxrstor $0 \0A\09 fxsave $0", "*m"(i8 *%a0) nounwind 5635 ret void 5636 } 5637 5638 define void @test_fxtract() optsize { 5639 ; GENERIC-LABEL: test_fxtract: 5640 ; GENERIC: # %bb.0: 5641 ; GENERIC-NEXT: #APP 5642 ; GENERIC-NEXT: fxtract 5643 ; GENERIC-NEXT: #NO_APP 5644 ; GENERIC-NEXT: retl 5645 ; 5646 ; ATOM-LABEL: test_fxtract: 5647 ; ATOM: # %bb.0: 5648 ; ATOM-NEXT: #APP 5649 ; ATOM-NEXT: fxtract # sched: [25:12.50] 5650 ; ATOM-NEXT: #NO_APP 5651 ; ATOM-NEXT: retl # sched: [79:39.50] 5652 ; 5653 ; SLM-LABEL: test_fxtract: 5654 ; SLM: # %bb.0: 5655 ; SLM-NEXT: #APP 5656 ; SLM-NEXT: fxtract # sched: [100:1.00] 5657 ; SLM-NEXT: #NO_APP 5658 ; SLM-NEXT: retl # sched: [4:1.00] 5659 ; 5660 ; SANDY-LABEL: test_fxtract: 5661 ; SANDY: # %bb.0: 5662 ; SANDY-NEXT: #APP 5663 ; SANDY-NEXT: fxtract # sched: [100:0.33] 5664 ; SANDY-NEXT: #NO_APP 5665 ; SANDY-NEXT: retl # sched: [6:1.00] 5666 ; 5667 ; HASWELL-LABEL: test_fxtract: 5668 ; HASWELL: # %bb.0: 5669 ; HASWELL-NEXT: #APP 5670 ; HASWELL-NEXT: fxtract # sched: [15:4.25] 5671 ; HASWELL-NEXT: #NO_APP 5672 ; HASWELL-NEXT: retl # sched: [7:1.00] 5673 ; 5674 ; BROADWELL-LABEL: test_fxtract: 5675 ; BROADWELL: # %bb.0: 5676 ; BROADWELL-NEXT: #APP 5677 ; BROADWELL-NEXT: fxtract # sched: [100:0.25] 5678 ; BROADWELL-NEXT: #NO_APP 5679 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5680 ; 5681 ; SKYLAKE-LABEL: test_fxtract: 5682 ; SKYLAKE: # %bb.0: 5683 ; SKYLAKE-NEXT: #APP 5684 ; SKYLAKE-NEXT: fxtract # sched: [100:0.25] 5685 ; SKYLAKE-NEXT: #NO_APP 5686 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5687 ; 5688 ; SKX-LABEL: test_fxtract: 5689 ; SKX: # %bb.0: 5690 ; SKX-NEXT: #APP 5691 ; SKX-NEXT: fxtract # sched: [100:0.25] 5692 ; SKX-NEXT: #NO_APP 5693 ; SKX-NEXT: retl # sched: [6:0.50] 5694 ; 5695 ; BTVER2-LABEL: test_fxtract: 5696 ; BTVER2: # %bb.0: 5697 ; BTVER2-NEXT: #APP 5698 ; BTVER2-NEXT: fxtract # sched: [100:0.50] 5699 ; BTVER2-NEXT: #NO_APP 5700 ; BTVER2-NEXT: retl # sched: [4:1.00] 5701 ; 5702 ; ZNVER1-LABEL: test_fxtract: 5703 ; ZNVER1: # %bb.0: 5704 ; ZNVER1-NEXT: #APP 5705 ; ZNVER1-NEXT: fxtract # sched: [100:0.25] 5706 ; ZNVER1-NEXT: #NO_APP 5707 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5708 tail call void asm sideeffect "fxtract", ""() nounwind 5709 ret void 5710 } 5711 5712 define void @test_fyl2x() optsize { 5713 ; GENERIC-LABEL: test_fyl2x: 5714 ; GENERIC: # %bb.0: 5715 ; GENERIC-NEXT: #APP 5716 ; GENERIC-NEXT: fyl2x 5717 ; GENERIC-NEXT: #NO_APP 5718 ; GENERIC-NEXT: retl 5719 ; 5720 ; ATOM-LABEL: test_fyl2x: 5721 ; ATOM: # %bb.0: 5722 ; ATOM-NEXT: #APP 5723 ; ATOM-NEXT: fyl2x # sched: [146:73.00] 5724 ; ATOM-NEXT: #NO_APP 5725 ; ATOM-NEXT: retl # sched: [79:39.50] 5726 ; 5727 ; SLM-LABEL: test_fyl2x: 5728 ; SLM: # %bb.0: 5729 ; SLM-NEXT: #APP 5730 ; SLM-NEXT: fyl2x # sched: [100:1.00] 5731 ; SLM-NEXT: #NO_APP 5732 ; SLM-NEXT: retl # sched: [4:1.00] 5733 ; 5734 ; SANDY-LABEL: test_fyl2x: 5735 ; SANDY: # %bb.0: 5736 ; SANDY-NEXT: #APP 5737 ; SANDY-NEXT: fyl2x # sched: [100:0.33] 5738 ; SANDY-NEXT: #NO_APP 5739 ; SANDY-NEXT: retl # sched: [6:1.00] 5740 ; 5741 ; HASWELL-LABEL: test_fyl2x: 5742 ; HASWELL: # %bb.0: 5743 ; HASWELL-NEXT: #APP 5744 ; HASWELL-NEXT: fyl2x # sched: [100:0.25] 5745 ; HASWELL-NEXT: #NO_APP 5746 ; HASWELL-NEXT: retl # sched: [7:1.00] 5747 ; 5748 ; BROADWELL-LABEL: test_fyl2x: 5749 ; BROADWELL: # %bb.0: 5750 ; BROADWELL-NEXT: #APP 5751 ; BROADWELL-NEXT: fyl2x # sched: [100:0.25] 5752 ; BROADWELL-NEXT: #NO_APP 5753 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5754 ; 5755 ; SKYLAKE-LABEL: test_fyl2x: 5756 ; SKYLAKE: # %bb.0: 5757 ; SKYLAKE-NEXT: #APP 5758 ; SKYLAKE-NEXT: fyl2x # sched: [100:0.25] 5759 ; SKYLAKE-NEXT: #NO_APP 5760 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5761 ; 5762 ; SKX-LABEL: test_fyl2x: 5763 ; SKX: # %bb.0: 5764 ; SKX-NEXT: #APP 5765 ; SKX-NEXT: fyl2x # sched: [100:0.25] 5766 ; SKX-NEXT: #NO_APP 5767 ; SKX-NEXT: retl # sched: [6:0.50] 5768 ; 5769 ; BTVER2-LABEL: test_fyl2x: 5770 ; BTVER2: # %bb.0: 5771 ; BTVER2-NEXT: #APP 5772 ; BTVER2-NEXT: fyl2x # sched: [100:0.50] 5773 ; BTVER2-NEXT: #NO_APP 5774 ; BTVER2-NEXT: retl # sched: [4:1.00] 5775 ; 5776 ; ZNVER1-LABEL: test_fyl2x: 5777 ; ZNVER1: # %bb.0: 5778 ; ZNVER1-NEXT: #APP 5779 ; ZNVER1-NEXT: fyl2x # sched: [100:0.25] 5780 ; ZNVER1-NEXT: #NO_APP 5781 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5782 tail call void asm sideeffect "fyl2x", ""() nounwind 5783 ret void 5784 } 5785 5786 define void @test_fyl2xp1() optsize { 5787 ; GENERIC-LABEL: test_fyl2xp1: 5788 ; GENERIC: # %bb.0: 5789 ; GENERIC-NEXT: #APP 5790 ; GENERIC-NEXT: fyl2xp1 5791 ; GENERIC-NEXT: #NO_APP 5792 ; GENERIC-NEXT: retl 5793 ; 5794 ; ATOM-LABEL: test_fyl2xp1: 5795 ; ATOM: # %bb.0: 5796 ; ATOM-NEXT: #APP 5797 ; ATOM-NEXT: fyl2xp1 # sched: [147:73.50] 5798 ; ATOM-NEXT: #NO_APP 5799 ; ATOM-NEXT: retl # sched: [79:39.50] 5800 ; 5801 ; SLM-LABEL: test_fyl2xp1: 5802 ; SLM: # %bb.0: 5803 ; SLM-NEXT: #APP 5804 ; SLM-NEXT: fyl2xp1 # sched: [100:1.00] 5805 ; SLM-NEXT: #NO_APP 5806 ; SLM-NEXT: retl # sched: [4:1.00] 5807 ; 5808 ; SANDY-LABEL: test_fyl2xp1: 5809 ; SANDY: # %bb.0: 5810 ; SANDY-NEXT: #APP 5811 ; SANDY-NEXT: fyl2xp1 # sched: [100:0.33] 5812 ; SANDY-NEXT: #NO_APP 5813 ; SANDY-NEXT: retl # sched: [6:1.00] 5814 ; 5815 ; HASWELL-LABEL: test_fyl2xp1: 5816 ; HASWELL: # %bb.0: 5817 ; HASWELL-NEXT: #APP 5818 ; HASWELL-NEXT: fyl2xp1 # sched: [100:0.25] 5819 ; HASWELL-NEXT: #NO_APP 5820 ; HASWELL-NEXT: retl # sched: [7:1.00] 5821 ; 5822 ; BROADWELL-LABEL: test_fyl2xp1: 5823 ; BROADWELL: # %bb.0: 5824 ; BROADWELL-NEXT: #APP 5825 ; BROADWELL-NEXT: fyl2xp1 # sched: [100:0.25] 5826 ; BROADWELL-NEXT: #NO_APP 5827 ; BROADWELL-NEXT: retl # sched: [6:0.50] 5828 ; 5829 ; SKYLAKE-LABEL: test_fyl2xp1: 5830 ; SKYLAKE: # %bb.0: 5831 ; SKYLAKE-NEXT: #APP 5832 ; SKYLAKE-NEXT: fyl2xp1 # sched: [100:0.25] 5833 ; SKYLAKE-NEXT: #NO_APP 5834 ; SKYLAKE-NEXT: retl # sched: [6:0.50] 5835 ; 5836 ; SKX-LABEL: test_fyl2xp1: 5837 ; SKX: # %bb.0: 5838 ; SKX-NEXT: #APP 5839 ; SKX-NEXT: fyl2xp1 # sched: [100:0.25] 5840 ; SKX-NEXT: #NO_APP 5841 ; SKX-NEXT: retl # sched: [6:0.50] 5842 ; 5843 ; BTVER2-LABEL: test_fyl2xp1: 5844 ; BTVER2: # %bb.0: 5845 ; BTVER2-NEXT: #APP 5846 ; BTVER2-NEXT: fyl2xp1 # sched: [100:0.50] 5847 ; BTVER2-NEXT: #NO_APP 5848 ; BTVER2-NEXT: retl # sched: [4:1.00] 5849 ; 5850 ; ZNVER1-LABEL: test_fyl2xp1: 5851 ; ZNVER1: # %bb.0: 5852 ; ZNVER1-NEXT: #APP 5853 ; ZNVER1-NEXT: fyl2xp1 # sched: [100:0.25] 5854 ; ZNVER1-NEXT: #NO_APP 5855 ; ZNVER1-NEXT: retl # sched: [1:0.50] 5856 tail call void asm sideeffect "fyl2xp1", ""() nounwind 5857 ret void 5858 } 5859