Home | History | Annotate | Download | only in X86
      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