; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=i686 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2 ; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1 define void @test_f2xm1() optsize { ; GENERIC-LABEL: test_f2xm1: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: f2xm1 ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_f2xm1: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: f2xm1 # sched: [99:49.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_f2xm1: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: f2xm1 # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_f2xm1: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: f2xm1 # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_f2xm1: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: f2xm1 # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_f2xm1: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: f2xm1 # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_f2xm1: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: f2xm1 # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_f2xm1: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: f2xm1 # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_f2xm1: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: f2xm1 # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_f2xm1: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: f2xm1 # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "f2xm1", ""() nounwind ret void } define void @test_fabs() optsize { ; GENERIC-LABEL: test_fabs: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fabs ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fabs: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fabs # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fabs: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fabs # sched: [1:0.50] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fabs: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fabs # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fabs: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fabs # sched: [1:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fabs: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fabs # sched: [1:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fabs: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fabs # sched: [1:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fabs: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fabs # sched: [1:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fabs: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fabs # sched: [2:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fabs: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fabs # sched: [2:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fabs", ""() nounwind ret void } define void @test_fadd(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fadd: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fadd %st(0), %st(1) ; GENERIC-NEXT: fadd %st(2) ; GENERIC-NEXT: fadds (%ecx) ; GENERIC-NEXT: faddl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fadd: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fadd %st(0), %st(1) # sched: [5:5.00] ; ATOM-NEXT: fadd %st(2) # sched: [5:5.00] ; ATOM-NEXT: fadds (%ecx) # sched: [5:5.00] ; ATOM-NEXT: faddl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fadd: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; SLM-NEXT: fadd %st(2) # sched: [3:1.00] ; SLM-NEXT: fadds (%ecx) # sched: [6:1.00] ; SLM-NEXT: faddl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fadd: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; SANDY-NEXT: fadd %st(2) # sched: [3:1.00] ; SANDY-NEXT: fadds (%ecx) # sched: [10:1.00] ; SANDY-NEXT: faddl (%eax) # sched: [10:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fadd: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; HASWELL-NEXT: fadd %st(2) # sched: [3:1.00] ; HASWELL-NEXT: fadds (%ecx) # sched: [10:1.00] ; HASWELL-NEXT: faddl (%eax) # sched: [10:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fadd: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; BROADWELL-NEXT: fadd %st(2) # sched: [3:1.00] ; BROADWELL-NEXT: fadds (%ecx) # sched: [9:1.00] ; BROADWELL-NEXT: faddl (%eax) # sched: [9:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fadd: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; SKYLAKE-NEXT: fadd %st(2) # sched: [3:1.00] ; SKYLAKE-NEXT: fadds (%ecx) # sched: [10:1.00] ; SKYLAKE-NEXT: faddl (%eax) # sched: [10:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fadd: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; SKX-NEXT: fadd %st(2) # sched: [3:1.00] ; SKX-NEXT: fadds (%ecx) # sched: [10:1.00] ; SKX-NEXT: faddl (%eax) # sched: [10:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fadd: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fadd %st(2) # sched: [3:1.00] ; BTVER2-NEXT: fadds (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: faddl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fadd: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] ; ZNVER1-NEXT: fadd %st(2) # sched: [3:1.00] ; ZNVER1-NEXT: fadds (%ecx) # sched: [10:1.00] ; ZNVER1-NEXT: faddl (%eax) # sched: [10:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_faddp_fiadd(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_faddp_fiadd: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: faddp %st(1) ; GENERIC-NEXT: faddp %st(2) ; GENERIC-NEXT: fiadds (%ecx) ; GENERIC-NEXT: fiaddl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_faddp_fiadd: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: faddp %st(1) # sched: [5:5.00] ; ATOM-NEXT: faddp %st(2) # sched: [5:5.00] ; ATOM-NEXT: fiadds (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fiaddl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_faddp_fiadd: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: faddp %st(1) # sched: [3:1.00] ; SLM-NEXT: faddp %st(2) # sched: [3:1.00] ; SLM-NEXT: fiadds (%ecx) # sched: [6:1.00] ; SLM-NEXT: fiaddl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_faddp_fiadd: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: faddp %st(1) # sched: [3:1.00] ; SANDY-NEXT: faddp %st(2) # sched: [3:1.00] ; SANDY-NEXT: fiadds (%ecx) # sched: [13:2.00] ; SANDY-NEXT: fiaddl (%eax) # sched: [13:2.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_faddp_fiadd: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: faddp %st(1) # sched: [3:1.00] ; HASWELL-NEXT: faddp %st(2) # sched: [3:1.00] ; HASWELL-NEXT: fiadds (%ecx) # sched: [13:2.00] ; HASWELL-NEXT: fiaddl (%eax) # sched: [13:2.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_faddp_fiadd: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: faddp %st(1) # sched: [3:1.00] ; BROADWELL-NEXT: faddp %st(2) # sched: [3:1.00] ; BROADWELL-NEXT: fiadds (%ecx) # sched: [12:2.00] ; BROADWELL-NEXT: fiaddl (%eax) # sched: [12:2.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_faddp_fiadd: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: faddp %st(1) # sched: [3:1.00] ; SKYLAKE-NEXT: faddp %st(2) # sched: [3:1.00] ; SKYLAKE-NEXT: fiadds (%ecx) # sched: [13:2.00] ; SKYLAKE-NEXT: fiaddl (%eax) # sched: [13:2.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_faddp_fiadd: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: faddp %st(1) # sched: [3:1.00] ; SKX-NEXT: faddp %st(2) # sched: [3:1.00] ; SKX-NEXT: fiadds (%ecx) # sched: [13:2.00] ; SKX-NEXT: fiaddl (%eax) # sched: [13:2.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_faddp_fiadd: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: faddp %st(1) # sched: [3:1.00] ; BTVER2-NEXT: faddp %st(2) # sched: [3:1.00] ; BTVER2-NEXT: fiadds (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fiaddl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_faddp_fiadd: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: faddp %st(1) # sched: [3:1.00] ; ZNVER1-NEXT: faddp %st(2) # sched: [3:1.00] ; ZNVER1-NEXT: fiadds (%ecx) # sched: [10:1.00] ; ZNVER1-NEXT: fiaddl (%eax) # sched: [10:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fbld_fbstp(i8* %a0) optsize { ; GENERIC-LABEL: test_fbld_fbstp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fbld (%eax) ; GENERIC-NEXT: fbstp (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fbld_fbstp: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fbld (%eax) # sched: [100:0.50] ; ATOM-NEXT: fbstp (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fbld_fbstp: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fbld (%eax) # sched: [100:1.00] ; SLM-NEXT: fbstp (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fbld_fbstp: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fbld (%eax) # sched: [100:0.33] ; SANDY-NEXT: fbstp (%eax) # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fbld_fbstp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fbld (%eax) # sched: [47:10.75] ; HASWELL-NEXT: fbstp (%eax) # sched: [1:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fbld_fbstp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fbld (%eax) # sched: [100:0.25] ; BROADWELL-NEXT: fbstp (%eax) # sched: [1:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fbld_fbstp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fbld (%eax) # sched: [100:0.25] ; SKYLAKE-NEXT: fbstp (%eax) # sched: [1:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fbld_fbstp: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fbld (%eax) # sched: [100:0.25] ; SKX-NEXT: fbstp (%eax) # sched: [1:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fbld_fbstp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fbld (%eax) # sched: [100:0.50] ; BTVER2-NEXT: fbstp (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fbld_fbstp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fbld (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: fbstp (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fbld $0 \0A\09 fbstp $0", "*m"(i8 *%a0) nounwind ret void } define void @test_fchs() optsize { ; GENERIC-LABEL: test_fchs: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fchs ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fchs: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fchs # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fchs: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fchs # sched: [1:0.50] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fchs: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fchs # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fchs: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fchs # sched: [1:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fchs: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fchs # sched: [1:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fchs: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fchs # sched: [1:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fchs: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fchs # sched: [1:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fchs: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fchs # sched: [2:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fchs: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fchs # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fchs", ""() nounwind ret void } define void @test_fclex() optsize { ; GENERIC-LABEL: test_fclex: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: wait ; GENERIC-NEXT: fnclex ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fclex: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fnclex # sched: [25:12.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fclex: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: fnclex # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fclex: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: fnclex # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fclex: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: fnclex # sched: [4:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fclex: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: fnclex # sched: [4:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fclex: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: fnclex # sched: [4:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fclex: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: fnclex # sched: [4:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fclex: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: fnclex # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fclex: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: fnclex # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fclex", ""() nounwind ret void } define void @test_fnclex() optsize { ; GENERIC-LABEL: test_fnclex: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fnclex ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fnclex: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fnclex # sched: [25:12.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fnclex: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fnclex # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fnclex: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fnclex # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fnclex: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fnclex # sched: [4:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fnclex: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fnclex # sched: [4:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fnclex: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fnclex # sched: [4:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fnclex: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fnclex # sched: [4:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fnclex: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fnclex # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fnclex: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fnclex # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fnclex", ""() nounwind ret void } define void @test_fcmov() optsize { ; GENERIC-LABEL: test_fcmov: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fcmovb %st(1), %st(0) ; GENERIC-NEXT: fcmovbe %st(1), %st(0) ; GENERIC-NEXT: fcmove %st(1), %st(0) ; GENERIC-NEXT: fcmovnb %st(1), %st(0) ; GENERIC-NEXT: fcmovnbe %st(1), %st(0) ; GENERIC-NEXT: fcmovne %st(1), %st(0) ; GENERIC-NEXT: fcmovnu %st(1), %st(0) ; GENERIC-NEXT: fcmovu %st(1), %st(0) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fcmov: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fcmovb %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmovbe %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmove %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmovnb %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmovnbe %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmovne %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmovnu %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: fcmovu %st(1), %st(0) # sched: [9:4.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fcmov: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fcmov: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fcmovb %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmovbe %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmove %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmovnb %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmovne %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmovnu %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: fcmovu %st(1), %st(0) # sched: [3:2.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fcmov: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fcmov: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fcmov: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fcmov: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fcmov: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fcmov: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fcmovb %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmovbe %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmove %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmovnb %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmovnbe %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmovne %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmovnu %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: fcmovu %st(1), %st(0) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fcom(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fcom: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fcom %st(1) ; GENERIC-NEXT: fcom %st(3) ; GENERIC-NEXT: fcoms (%ecx) ; GENERIC-NEXT: fcoml (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fcom: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fcom %st(1) # sched: [5:5.00] ; ATOM-NEXT: fcom %st(3) # sched: [5:5.00] ; ATOM-NEXT: fcoms (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fcoml (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fcom: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fcom %st(1) # sched: [3:1.00] ; SLM-NEXT: fcom %st(3) # sched: [3:1.00] ; SLM-NEXT: fcoms (%ecx) # sched: [6:1.00] ; SLM-NEXT: fcoml (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fcom: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fcom %st(1) # sched: [1:1.00] ; SANDY-NEXT: fcom %st(3) # sched: [1:1.00] ; SANDY-NEXT: fcoms (%ecx) # sched: [8:1.00] ; SANDY-NEXT: fcoml (%eax) # sched: [8:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fcom: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fcom %st(1) # sched: [1:1.00] ; HASWELL-NEXT: fcom %st(3) # sched: [1:1.00] ; HASWELL-NEXT: fcoms (%ecx) # sched: [8:1.00] ; HASWELL-NEXT: fcoml (%eax) # sched: [8:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fcom: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fcom %st(1) # sched: [1:1.00] ; BROADWELL-NEXT: fcom %st(3) # sched: [1:1.00] ; BROADWELL-NEXT: fcoms (%ecx) # sched: [7:1.00] ; BROADWELL-NEXT: fcoml (%eax) # sched: [7:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fcom: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fcom %st(1) # sched: [1:1.00] ; SKYLAKE-NEXT: fcom %st(3) # sched: [1:1.00] ; SKYLAKE-NEXT: fcoms (%ecx) # sched: [8:1.00] ; SKYLAKE-NEXT: fcoml (%eax) # sched: [8:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fcom: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fcom %st(1) # sched: [1:1.00] ; SKX-NEXT: fcom %st(3) # sched: [1:1.00] ; SKX-NEXT: fcoms (%ecx) # sched: [8:1.00] ; SKX-NEXT: fcoml (%eax) # sched: [8:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fcom: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fcom %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fcom %st(3) # sched: [3:1.00] ; BTVER2-NEXT: fcoms (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fcoml (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fcom: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fcom %st(1) # sched: [1:1.00] ; ZNVER1-NEXT: fcom %st(3) # sched: [1:1.00] ; ZNVER1-NEXT: fcoms (%ecx) # sched: [8:1.00] ; ZNVER1-NEXT: fcoml (%eax) # sched: [8:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fcomp_fcompp(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fcomp_fcompp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fcomp %st(1) ; GENERIC-NEXT: fcomp %st(3) ; GENERIC-NEXT: fcomps (%ecx) ; GENERIC-NEXT: fcompl (%eax) ; GENERIC-NEXT: fcompp ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fcomp_fcompp: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fcomp %st(1) # sched: [5:5.00] ; ATOM-NEXT: fcomp %st(3) # sched: [5:5.00] ; ATOM-NEXT: fcomps (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fcompl (%eax) # sched: [5:5.00] ; ATOM-NEXT: fcompp # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fcomp_fcompp: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fcomp %st(1) # sched: [3:1.00] ; SLM-NEXT: fcomp %st(3) # sched: [3:1.00] ; SLM-NEXT: fcomps (%ecx) # sched: [6:1.00] ; SLM-NEXT: fcompl (%eax) # sched: [6:1.00] ; SLM-NEXT: fcompp # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fcomp_fcompp: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fcomp %st(1) # sched: [1:1.00] ; SANDY-NEXT: fcomp %st(3) # sched: [1:1.00] ; SANDY-NEXT: fcomps (%ecx) # sched: [8:1.00] ; SANDY-NEXT: fcompl (%eax) # sched: [8:1.00] ; SANDY-NEXT: fcompp # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fcomp_fcompp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fcomp %st(1) # sched: [1:1.00] ; HASWELL-NEXT: fcomp %st(3) # sched: [1:1.00] ; HASWELL-NEXT: fcomps (%ecx) # sched: [8:1.00] ; HASWELL-NEXT: fcompl (%eax) # sched: [8:1.00] ; HASWELL-NEXT: fcompp # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fcomp_fcompp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fcomp %st(1) # sched: [1:1.00] ; BROADWELL-NEXT: fcomp %st(3) # sched: [1:1.00] ; BROADWELL-NEXT: fcomps (%ecx) # sched: [7:1.00] ; BROADWELL-NEXT: fcompl (%eax) # sched: [7:1.00] ; BROADWELL-NEXT: fcompp # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fcomp_fcompp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fcomp %st(1) # sched: [1:1.00] ; SKYLAKE-NEXT: fcomp %st(3) # sched: [1:1.00] ; SKYLAKE-NEXT: fcomps (%ecx) # sched: [8:1.00] ; SKYLAKE-NEXT: fcompl (%eax) # sched: [8:1.00] ; SKYLAKE-NEXT: fcompp # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fcomp_fcompp: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fcomp %st(1) # sched: [1:1.00] ; SKX-NEXT: fcomp %st(3) # sched: [1:1.00] ; SKX-NEXT: fcomps (%ecx) # sched: [8:1.00] ; SKX-NEXT: fcompl (%eax) # sched: [8:1.00] ; SKX-NEXT: fcompp # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fcomp_fcompp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fcomp %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fcomp %st(3) # sched: [3:1.00] ; BTVER2-NEXT: fcomps (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fcompl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: fcompp # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fcomp_fcompp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fcomp %st(1) # sched: [1:1.00] ; ZNVER1-NEXT: fcomp %st(3) # sched: [1:1.00] ; ZNVER1-NEXT: fcomps (%ecx) # sched: [8:1.00] ; ZNVER1-NEXT: fcompl (%eax) # sched: [8:1.00] ; ZNVER1-NEXT: fcompp # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fcomi_fcomip() optsize { ; GENERIC-LABEL: test_fcomi_fcomip: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fcomi %st(3) ; GENERIC-NEXT: fcompi %st(3) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fcomi_fcomip: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fcomi %st(3) # sched: [9:4.50] ; ATOM-NEXT: fcompi %st(3) # sched: [9:4.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fcomi_fcomip: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fcomi %st(3) # sched: [3:1.00] ; SLM-NEXT: fcompi %st(3) # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fcomi_fcomip: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fcomi %st(3) # sched: [3:1.00] ; SANDY-NEXT: fcompi %st(3) # sched: [3:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fcomi_fcomip: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fcomi %st(3) # sched: [1:0.50] ; HASWELL-NEXT: fcompi %st(3) # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fcomi_fcomip: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fcomi %st(3) # sched: [3:1.00] ; BROADWELL-NEXT: fcompi %st(3) # sched: [3:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fcomi_fcomip: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fcomi %st(3) # sched: [2:1.00] ; SKYLAKE-NEXT: fcompi %st(3) # sched: [2:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fcomi_fcomip: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fcomi %st(3) # sched: [2:1.00] ; SKX-NEXT: fcompi %st(3) # sched: [2:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fcomi_fcomip: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fcomi %st(3) # sched: [3:1.00] ; BTVER2-NEXT: fcompi %st(3) # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fcomi_fcomip: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fcomi %st(3) # sched: [9:0.50] ; ZNVER1-NEXT: fcompi %st(3) # sched: [9:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fcomi %st(3) \0A\09 fcomip %st(3)", ""() nounwind ret void } define void @test_fcos() optsize { ; GENERIC-LABEL: test_fcos: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fcos ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fcos: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fcos # sched: [174:87.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fcos: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fcos # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fcos: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fcos # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fcos: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fcos # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fcos: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fcos # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fcos: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fcos # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fcos: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fcos # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fcos: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fcos # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fcos: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fcos # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fcos", ""() nounwind ret void } define void @test_fdecstp() optsize { ; GENERIC-LABEL: test_fdecstp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fdecstp ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fdecstp: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fdecstp # sched: [1:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fdecstp: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fdecstp # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fdecstp: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fdecstp # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fdecstp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fdecstp # sched: [2:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fdecstp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fdecstp # sched: [2:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fdecstp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fdecstp # sched: [2:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fdecstp: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fdecstp # sched: [2:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fdecstp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fdecstp # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fdecstp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fdecstp # sched: [11:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fdecstp", ""() nounwind ret void } define void @test_fdiv(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fdiv: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fdiv %st(0), %st(1) ; GENERIC-NEXT: fdiv %st(2) ; GENERIC-NEXT: fdivs (%ecx) ; GENERIC-NEXT: fdivl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fdiv: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fdiv %st(0), %st(1) # sched: [34:17.00] ; ATOM-NEXT: fdiv %st(2) # sched: [34:17.00] ; ATOM-NEXT: fdivs (%ecx) # sched: [34:17.00] ; ATOM-NEXT: fdivl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fdiv: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fdiv %st(0), %st(1) # sched: [19:17.00] ; SLM-NEXT: fdiv %st(2) # sched: [19:17.00] ; SLM-NEXT: fdivs (%ecx) # sched: [22:17.00] ; SLM-NEXT: fdivl (%eax) # sched: [22:17.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fdiv: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fdiv %st(0), %st(1) # sched: [14:14.00] ; SANDY-NEXT: fdiv %st(2) # sched: [14:14.00] ; SANDY-NEXT: fdivs (%ecx) # sched: [31:1.00] ; SANDY-NEXT: fdivl (%eax) # sched: [31:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fdiv: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fdiv %st(0), %st(1) # sched: [24:1.00] ; HASWELL-NEXT: fdiv %st(2) # sched: [20:1.00] ; HASWELL-NEXT: fdivs (%ecx) # sched: [31:1.00] ; HASWELL-NEXT: fdivl (%eax) # sched: [31:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fdiv: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] ; BROADWELL-NEXT: fdiv %st(2) # sched: [20:1.00] ; BROADWELL-NEXT: fdivs (%ecx) # sched: [21:1.00] ; BROADWELL-NEXT: fdivl (%eax) # sched: [21:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fdiv: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] ; SKYLAKE-NEXT: fdiv %st(2) # sched: [20:1.00] ; SKYLAKE-NEXT: fdivs (%ecx) # sched: [22:1.00] ; SKYLAKE-NEXT: fdivl (%eax) # sched: [22:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fdiv: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] ; SKX-NEXT: fdiv %st(2) # sched: [20:1.00] ; SKX-NEXT: fdivs (%ecx) # sched: [22:1.00] ; SKX-NEXT: fdivl (%eax) # sched: [22:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fdiv: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fdiv %st(0), %st(1) # sched: [19:19.00] ; BTVER2-NEXT: fdiv %st(2) # sched: [19:19.00] ; BTVER2-NEXT: fdivs (%ecx) # sched: [24:19.00] ; BTVER2-NEXT: fdivl (%eax) # sched: [24:19.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fdiv: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] ; ZNVER1-NEXT: fdiv %st(2) # sched: [15:1.00] ; ZNVER1-NEXT: fdivs (%ecx) # sched: [22:1.00] ; ZNVER1-NEXT: fdivl (%eax) # sched: [22:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fdivp_fidiv(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_fdivp_fidiv: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fdivp %st(1) ; GENERIC-NEXT: fdivp %st(2) ; GENERIC-NEXT: fidivs (%ecx) ; GENERIC-NEXT: fidivl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fdivp_fidiv: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fdivp %st(1) # sched: [34:17.00] ; ATOM-NEXT: fdivp %st(2) # sched: [34:17.00] ; ATOM-NEXT: fidivs (%ecx) # sched: [34:17.00] ; ATOM-NEXT: fidivl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fdivp_fidiv: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fdivp %st(1) # sched: [19:17.00] ; SLM-NEXT: fdivp %st(2) # sched: [19:17.00] ; SLM-NEXT: fidivs (%ecx) # sched: [22:17.00] ; SLM-NEXT: fidivl (%eax) # sched: [22:17.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fdivp_fidiv: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fdivp %st(1) # sched: [14:14.00] ; SANDY-NEXT: fdivp %st(2) # sched: [14:14.00] ; SANDY-NEXT: fidivs (%ecx) # sched: [34:1.00] ; SANDY-NEXT: fidivl (%eax) # sched: [34:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fdivp_fidiv: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fdivp %st(1) # sched: [24:1.00] ; HASWELL-NEXT: fdivp %st(2) # sched: [24:1.00] ; HASWELL-NEXT: fidivs (%ecx) # sched: [34:1.00] ; HASWELL-NEXT: fidivl (%eax) # sched: [34:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fdivp_fidiv: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fdivp %st(1) # sched: [15:1.00] ; BROADWELL-NEXT: fdivp %st(2) # sched: [15:1.00] ; BROADWELL-NEXT: fidivs (%ecx) # sched: [24:1.00] ; BROADWELL-NEXT: fidivl (%eax) # sched: [24:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fdivp_fidiv: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fdivp %st(1) # sched: [15:1.00] ; SKYLAKE-NEXT: fdivp %st(2) # sched: [15:1.00] ; SKYLAKE-NEXT: fidivs (%ecx) # sched: [25:1.00] ; SKYLAKE-NEXT: fidivl (%eax) # sched: [25:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fdivp_fidiv: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fdivp %st(1) # sched: [15:1.00] ; SKX-NEXT: fdivp %st(2) # sched: [15:1.00] ; SKX-NEXT: fidivs (%ecx) # sched: [25:1.00] ; SKX-NEXT: fidivl (%eax) # sched: [25:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fdivp_fidiv: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fdivp %st(1) # sched: [19:19.00] ; BTVER2-NEXT: fdivp %st(2) # sched: [19:19.00] ; BTVER2-NEXT: fidivs (%ecx) # sched: [24:19.00] ; BTVER2-NEXT: fidivl (%eax) # sched: [24:19.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fdivp_fidiv: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fdivp %st(1) # sched: [15:1.00] ; ZNVER1-NEXT: fdivp %st(2) # sched: [15:1.00] ; ZNVER1-NEXT: fidivs (%ecx) # sched: [22:1.00] ; ZNVER1-NEXT: fidivl (%eax) # sched: [22:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fdivr(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fdivr: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fdivr %st(0), %st(1) ; GENERIC-NEXT: fdivr %st(2) ; GENERIC-NEXT: fdivrs (%ecx) ; GENERIC-NEXT: fdivrl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fdivr: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fdivr %st(0), %st(1) # sched: [34:17.00] ; ATOM-NEXT: fdivr %st(2) # sched: [34:17.00] ; ATOM-NEXT: fdivrs (%ecx) # sched: [34:17.00] ; ATOM-NEXT: fdivrl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fdivr: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fdivr %st(0), %st(1) # sched: [19:17.00] ; SLM-NEXT: fdivr %st(2) # sched: [19:17.00] ; SLM-NEXT: fdivrs (%ecx) # sched: [22:17.00] ; SLM-NEXT: fdivrl (%eax) # sched: [22:17.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fdivr: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fdivr %st(0), %st(1) # sched: [14:14.00] ; SANDY-NEXT: fdivr %st(2) # sched: [14:14.00] ; SANDY-NEXT: fdivrs (%ecx) # sched: [31:1.00] ; SANDY-NEXT: fdivrl (%eax) # sched: [31:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fdivr: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] ; HASWELL-NEXT: fdivr %st(2) # sched: [24:1.00] ; HASWELL-NEXT: fdivrs (%ecx) # sched: [27:1.00] ; HASWELL-NEXT: fdivrl (%eax) # sched: [27:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fdivr: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] ; BROADWELL-NEXT: fdivr %st(2) # sched: [15:1.00] ; BROADWELL-NEXT: fdivrs (%ecx) # sched: [26:1.00] ; BROADWELL-NEXT: fdivrl (%eax) # sched: [26:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fdivr: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] ; SKYLAKE-NEXT: fdivr %st(2) # sched: [15:1.00] ; SKYLAKE-NEXT: fdivrs (%ecx) # sched: [27:1.00] ; SKYLAKE-NEXT: fdivrl (%eax) # sched: [27:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fdivr: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] ; SKX-NEXT: fdivr %st(2) # sched: [15:1.00] ; SKX-NEXT: fdivrs (%ecx) # sched: [27:1.00] ; SKX-NEXT: fdivrl (%eax) # sched: [27:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fdivr: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fdivr %st(0), %st(1) # sched: [19:19.00] ; BTVER2-NEXT: fdivr %st(2) # sched: [19:19.00] ; BTVER2-NEXT: fdivrs (%ecx) # sched: [24:19.00] ; BTVER2-NEXT: fdivrl (%eax) # sched: [24:19.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fdivr: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fdivr %st(0), %st(1) # sched: [15:1.00] ; ZNVER1-NEXT: fdivr %st(2) # sched: [15:1.00] ; ZNVER1-NEXT: fdivrs (%ecx) # sched: [22:1.00] ; ZNVER1-NEXT: fdivrl (%eax) # sched: [22:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fdivrp_fidivr(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_fdivrp_fidivr: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fdivrp %st(1) ; GENERIC-NEXT: fdivrp %st(2) ; GENERIC-NEXT: fidivrs (%ecx) ; GENERIC-NEXT: fidivrl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fdivrp_fidivr: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fdivrp %st(1) # sched: [34:17.00] ; ATOM-NEXT: fdivrp %st(2) # sched: [34:17.00] ; ATOM-NEXT: fidivrs (%ecx) # sched: [34:17.00] ; ATOM-NEXT: fidivrl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fdivrp_fidivr: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fdivrp %st(1) # sched: [19:17.00] ; SLM-NEXT: fdivrp %st(2) # sched: [19:17.00] ; SLM-NEXT: fidivrs (%ecx) # sched: [22:17.00] ; SLM-NEXT: fidivrl (%eax) # sched: [22:17.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fdivrp_fidivr: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fdivrp %st(1) # sched: [14:14.00] ; SANDY-NEXT: fdivrp %st(2) # sched: [14:14.00] ; SANDY-NEXT: fidivrs (%ecx) # sched: [34:1.00] ; SANDY-NEXT: fidivrl (%eax) # sched: [34:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fdivrp_fidivr: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fdivrp %st(1) # sched: [20:1.00] ; HASWELL-NEXT: fdivrp %st(2) # sched: [20:1.00] ; HASWELL-NEXT: fidivrs (%ecx) # sched: [30:1.00] ; HASWELL-NEXT: fidivrl (%eax) # sched: [30:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fdivrp_fidivr: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fdivrp %st(1) # sched: [20:1.00] ; BROADWELL-NEXT: fdivrp %st(2) # sched: [20:1.00] ; BROADWELL-NEXT: fidivrs (%ecx) # sched: [29:1.00] ; BROADWELL-NEXT: fidivrl (%eax) # sched: [29:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fdivrp_fidivr: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fdivrp %st(1) # sched: [20:1.00] ; SKYLAKE-NEXT: fdivrp %st(2) # sched: [20:1.00] ; SKYLAKE-NEXT: fidivrs (%ecx) # sched: [30:1.00] ; SKYLAKE-NEXT: fidivrl (%eax) # sched: [30:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fdivrp_fidivr: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fdivrp %st(1) # sched: [20:1.00] ; SKX-NEXT: fdivrp %st(2) # sched: [20:1.00] ; SKX-NEXT: fidivrs (%ecx) # sched: [30:1.00] ; SKX-NEXT: fidivrl (%eax) # sched: [30:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fdivrp_fidivr: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fdivrp %st(1) # sched: [19:19.00] ; BTVER2-NEXT: fdivrp %st(2) # sched: [19:19.00] ; BTVER2-NEXT: fidivrs (%ecx) # sched: [24:19.00] ; BTVER2-NEXT: fidivrl (%eax) # sched: [24:19.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fdivrp_fidivr: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fdivrp %st(1) # sched: [15:1.00] ; ZNVER1-NEXT: fdivrp %st(2) # sched: [15:1.00] ; ZNVER1-NEXT: fidivrs (%ecx) # sched: [22:1.00] ; ZNVER1-NEXT: fidivrl (%eax) # sched: [22:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_ffree() optsize { ; GENERIC-LABEL: test_ffree: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: ffree %st(0) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_ffree: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: ffree %st(0) # sched: [1:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_ffree: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: ffree %st(0) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_ffree: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: ffree %st(0) # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_ffree: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: ffree %st(0) # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_ffree: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: ffree %st(0) # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_ffree: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: ffree %st(0) # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_ffree: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: ffree %st(0) # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_ffree: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: ffree %st(0) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_ffree: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: ffree %st(0) # sched: [11:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "ffree %st(0)", ""() nounwind ret void } define void @test_ficom(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_ficom: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: ficoms (%ecx) ; GENERIC-NEXT: ficoml (%eax) ; GENERIC-NEXT: ficomps (%ecx) ; GENERIC-NEXT: ficompl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_ficom: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: ficoms (%ecx) # sched: [5:5.00] ; ATOM-NEXT: ficoml (%eax) # sched: [5:5.00] ; ATOM-NEXT: ficomps (%ecx) # sched: [5:5.00] ; ATOM-NEXT: ficompl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_ficom: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: ficoms (%ecx) # sched: [6:1.00] ; SLM-NEXT: ficoml (%eax) # sched: [6:1.00] ; SLM-NEXT: ficomps (%ecx) # sched: [6:1.00] ; SLM-NEXT: ficompl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_ficom: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: ficoms (%ecx) # sched: [11:2.00] ; SANDY-NEXT: ficoml (%eax) # sched: [11:2.00] ; SANDY-NEXT: ficomps (%ecx) # sched: [11:2.00] ; SANDY-NEXT: ficompl (%eax) # sched: [11:2.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_ficom: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: ficoms (%ecx) # sched: [11:2.00] ; HASWELL-NEXT: ficoml (%eax) # sched: [11:2.00] ; HASWELL-NEXT: ficomps (%ecx) # sched: [11:2.00] ; HASWELL-NEXT: ficompl (%eax) # sched: [11:2.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_ficom: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: ficoms (%ecx) # sched: [10:2.00] ; BROADWELL-NEXT: ficoml (%eax) # sched: [10:2.00] ; BROADWELL-NEXT: ficomps (%ecx) # sched: [10:2.00] ; BROADWELL-NEXT: ficompl (%eax) # sched: [10:2.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_ficom: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: ficoms (%ecx) # sched: [11:2.00] ; SKYLAKE-NEXT: ficoml (%eax) # sched: [11:2.00] ; SKYLAKE-NEXT: ficomps (%ecx) # sched: [11:2.00] ; SKYLAKE-NEXT: ficompl (%eax) # sched: [11:2.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_ficom: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: ficoms (%ecx) # sched: [11:2.00] ; SKX-NEXT: ficoml (%eax) # sched: [11:2.00] ; SKX-NEXT: ficomps (%ecx) # sched: [11:2.00] ; SKX-NEXT: ficompl (%eax) # sched: [11:2.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_ficom: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: ficoms (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: ficoml (%eax) # sched: [8:1.00] ; BTVER2-NEXT: ficomps (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: ficompl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_ficom: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: ficoms (%ecx) # sched: [12:1.50] ; ZNVER1-NEXT: ficoml (%eax) # sched: [12:1.50] ; ZNVER1-NEXT: ficomps (%ecx) # sched: [12:1.50] ; ZNVER1-NEXT: ficompl (%eax) # sched: [12:1.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fild(i16 *%a0, i32 *%a1, i64 *%a2) optsize { ; GENERIC-LABEL: test_fild: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: filds (%edx) ; GENERIC-NEXT: fildl (%ecx) ; GENERIC-NEXT: fildll (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fild: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: filds (%edx) # sched: [5:5.00] ; ATOM-NEXT: fildl (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fildll (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fild: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: filds (%edx) # sched: [3:1.00] ; SLM-NEXT: fildl (%ecx) # sched: [3:1.00] ; SLM-NEXT: fildll (%eax) # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fild: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: filds (%edx) # sched: [10:1.00] ; SANDY-NEXT: fildl (%ecx) # sched: [10:1.00] ; SANDY-NEXT: fildll (%eax) # sched: [10:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fild: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: filds (%edx) # sched: [10:1.00] ; HASWELL-NEXT: fildl (%ecx) # sched: [10:1.00] ; HASWELL-NEXT: fildll (%eax) # sched: [10:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fild: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: filds (%edx) # sched: [9:1.00] ; BROADWELL-NEXT: fildl (%ecx) # sched: [9:1.00] ; BROADWELL-NEXT: fildll (%eax) # sched: [9:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fild: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: filds (%edx) # sched: [10:1.00] ; SKYLAKE-NEXT: fildl (%ecx) # sched: [10:1.00] ; SKYLAKE-NEXT: fildll (%eax) # sched: [10:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fild: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: filds (%edx) # sched: [10:1.00] ; SKX-NEXT: fildl (%ecx) # sched: [10:1.00] ; SKX-NEXT: fildll (%eax) # sched: [10:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fild: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: filds (%edx) # sched: [5:1.00] ; BTVER2-NEXT: fildl (%ecx) # sched: [5:1.00] ; BTVER2-NEXT: fildll (%eax) # sched: [5:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fild: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: filds (%edx) # sched: [11:1.00] ; ZNVER1-NEXT: fildl (%ecx) # sched: [11:1.00] ; ZNVER1-NEXT: fildll (%eax) # sched: [11:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fincstp() optsize { ; GENERIC-LABEL: test_fincstp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fincstp ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fincstp: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fincstp # sched: [1:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fincstp: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fincstp # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fincstp: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fincstp # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fincstp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fincstp # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fincstp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fincstp # sched: [1:0.50] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fincstp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fincstp # sched: [1:0.50] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fincstp: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fincstp # sched: [1:0.50] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fincstp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fincstp # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fincstp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fincstp # sched: [11:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fincstp", ""() nounwind ret void } define void @test_finit() optsize { ; GENERIC-LABEL: test_finit: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: wait ; GENERIC-NEXT: fninit ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_finit: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fninit # sched: [63:31.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_finit: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: fninit # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_finit: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: fninit # sched: [5:1.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_finit: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: fninit # sched: [75:6.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_finit: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: fninit # sched: [75:6.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_finit: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: fninit # sched: [75:6.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_finit: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: fninit # sched: [75:6.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_finit: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: fninit # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_finit: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: fninit # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "finit", ""() nounwind ret void } define void @test_fninit() optsize { ; GENERIC-LABEL: test_fninit: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fninit ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fninit: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fninit # sched: [63:31.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fninit: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fninit # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fninit: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fninit # sched: [5:1.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fninit: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fninit # sched: [75:6.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fninit: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fninit # sched: [75:6.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fninit: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fninit # sched: [75:6.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fninit: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fninit # sched: [75:6.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fninit: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fninit # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fninit: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fninit # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fninit", ""() nounwind ret void } define void @test_fist_fistp_fisttp(i16* %a0, i32* %a1, i64 *%a2) optsize { ; GENERIC-LABEL: test_fist_fistp_fisttp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fists (%edx) ; GENERIC-NEXT: fistl (%ecx) ; GENERIC-NEXT: fistps (%edx) ; GENERIC-NEXT: fistpl (%ecx) ; GENERIC-NEXT: fistpll (%eax) ; GENERIC-NEXT: fisttps (%edx) ; GENERIC-NEXT: fisttpl (%ecx) ; GENERIC-NEXT: fisttpll (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fist_fistp_fisttp: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fists (%edx) # sched: [6:3.00] ; ATOM-NEXT: fistl (%ecx) # sched: [6:3.00] ; ATOM-NEXT: fistps (%edx) # sched: [6:3.00] ; ATOM-NEXT: fistpl (%ecx) # sched: [6:3.00] ; ATOM-NEXT: fistpll (%eax) # sched: [6:3.00] ; ATOM-NEXT: fisttps (%edx) # sched: [2:1.00] ; ATOM-NEXT: fisttpl (%ecx) # sched: [2:1.00] ; ATOM-NEXT: fisttpll (%eax) # sched: [2:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fist_fistp_fisttp: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fists (%edx) # sched: [1:1.00] ; SLM-NEXT: fistl (%ecx) # sched: [1:1.00] ; SLM-NEXT: fistps (%edx) # sched: [1:1.00] ; SLM-NEXT: fistpl (%ecx) # sched: [1:1.00] ; SLM-NEXT: fistpll (%eax) # sched: [1:1.00] ; SLM-NEXT: fisttps (%edx) # sched: [1:1.00] ; SLM-NEXT: fisttpl (%ecx) # sched: [1:1.00] ; SLM-NEXT: fisttpll (%eax) # sched: [1:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fist_fistp_fisttp: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fists (%edx) # sched: [9:1.00] ; SANDY-NEXT: fistl (%ecx) # sched: [9:1.00] ; SANDY-NEXT: fistps (%edx) # sched: [9:1.00] ; SANDY-NEXT: fistpl (%ecx) # sched: [9:1.00] ; SANDY-NEXT: fistpll (%eax) # sched: [9:1.00] ; SANDY-NEXT: fisttps (%edx) # sched: [5:1.00] ; SANDY-NEXT: fisttpl (%ecx) # sched: [5:1.00] ; SANDY-NEXT: fisttpll (%eax) # sched: [5:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fist_fistp_fisttp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fists (%edx) # sched: [4:1.00] ; HASWELL-NEXT: fistl (%ecx) # sched: [4:1.00] ; HASWELL-NEXT: fistps (%edx) # sched: [4:1.00] ; HASWELL-NEXT: fistpl (%ecx) # sched: [4:1.00] ; HASWELL-NEXT: fistpll (%eax) # sched: [4:1.00] ; HASWELL-NEXT: fisttps (%edx) # sched: [4:1.00] ; HASWELL-NEXT: fisttpl (%ecx) # sched: [4:1.00] ; HASWELL-NEXT: fisttpll (%eax) # sched: [4:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fist_fistp_fisttp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fists (%edx) # sched: [4:1.00] ; BROADWELL-NEXT: fistl (%ecx) # sched: [4:1.00] ; BROADWELL-NEXT: fistps (%edx) # sched: [4:1.00] ; BROADWELL-NEXT: fistpl (%ecx) # sched: [4:1.00] ; BROADWELL-NEXT: fistpll (%eax) # sched: [4:1.00] ; BROADWELL-NEXT: fisttps (%edx) # sched: [4:1.00] ; BROADWELL-NEXT: fisttpl (%ecx) # sched: [4:1.00] ; BROADWELL-NEXT: fisttpll (%eax) # sched: [4:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fist_fistp_fisttp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fists (%edx) # sched: [4:1.00] ; SKYLAKE-NEXT: fistl (%ecx) # sched: [4:1.00] ; SKYLAKE-NEXT: fistps (%edx) # sched: [4:1.00] ; SKYLAKE-NEXT: fistpl (%ecx) # sched: [4:1.00] ; SKYLAKE-NEXT: fistpll (%eax) # sched: [4:1.00] ; SKYLAKE-NEXT: fisttps (%edx) # sched: [4:1.00] ; SKYLAKE-NEXT: fisttpl (%ecx) # sched: [4:1.00] ; SKYLAKE-NEXT: fisttpll (%eax) # sched: [4:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fist_fistp_fisttp: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fists (%edx) # sched: [4:1.00] ; SKX-NEXT: fistl (%ecx) # sched: [4:1.00] ; SKX-NEXT: fistps (%edx) # sched: [4:1.00] ; SKX-NEXT: fistpl (%ecx) # sched: [4:1.00] ; SKX-NEXT: fistpll (%eax) # sched: [4:1.00] ; SKX-NEXT: fisttps (%edx) # sched: [4:1.00] ; SKX-NEXT: fisttpl (%ecx) # sched: [4:1.00] ; SKX-NEXT: fisttpll (%eax) # sched: [4:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fist_fistp_fisttp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fists (%edx) # sched: [1:1.00] ; BTVER2-NEXT: fistl (%ecx) # sched: [1:1.00] ; BTVER2-NEXT: fistps (%edx) # sched: [1:1.00] ; BTVER2-NEXT: fistpl (%ecx) # sched: [1:1.00] ; BTVER2-NEXT: fistpll (%eax) # sched: [1:1.00] ; BTVER2-NEXT: fisttps (%edx) # sched: [1:1.00] ; BTVER2-NEXT: fisttpl (%ecx) # sched: [1:1.00] ; BTVER2-NEXT: fisttpll (%eax) # sched: [1:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fist_fistp_fisttp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fists (%edx) # sched: [12:0.50] ; ZNVER1-NEXT: fistl (%ecx) # sched: [12:0.50] ; ZNVER1-NEXT: fistps (%edx) # sched: [12:0.50] ; ZNVER1-NEXT: fistpl (%ecx) # sched: [12:0.50] ; ZNVER1-NEXT: fistpll (%eax) # sched: [12:0.50] ; ZNVER1-NEXT: fisttps (%edx) # sched: [12:0.50] ; ZNVER1-NEXT: fisttpl (%ecx) # sched: [12:0.50] ; ZNVER1-NEXT: fisttpll (%eax) # sched: [12:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fld(i16* %a0, i32* %a1, i64 *%a2) optsize { ; GENERIC-LABEL: test_fld: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fld %st(0) ; GENERIC-NEXT: flds (%edx) ; GENERIC-NEXT: fldl (%ecx) ; GENERIC-NEXT: fldt (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fld: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fld %st(0) # sched: [1:1.00] ; ATOM-NEXT: flds (%edx) # sched: [1:1.00] ; ATOM-NEXT: fldl (%ecx) # sched: [1:1.00] ; ATOM-NEXT: fldt (%eax) # sched: [4:2.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fld: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fld %st(0) # sched: [1:0.50] ; SLM-NEXT: flds (%edx) # sched: [3:1.00] ; SLM-NEXT: fldl (%ecx) # sched: [3:1.00] ; SLM-NEXT: fldt (%eax) # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fld: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fld %st(0) # sched: [1:1.00] ; SANDY-NEXT: flds (%edx) # sched: [9:1.00] ; SANDY-NEXT: fldl (%ecx) # sched: [9:1.00] ; SANDY-NEXT: fldt (%eax) # sched: [9:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fld: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fld %st(0) # sched: [1:0.50] ; HASWELL-NEXT: flds (%edx) # sched: [7:0.50] ; HASWELL-NEXT: fldl (%ecx) # sched: [7:0.50] ; HASWELL-NEXT: fldt (%eax) # sched: [7:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fld: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fld %st(0) # sched: [1:0.25] ; BROADWELL-NEXT: flds (%edx) # sched: [6:0.50] ; BROADWELL-NEXT: fldl (%ecx) # sched: [6:0.50] ; BROADWELL-NEXT: fldt (%eax) # sched: [6:0.50] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fld: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fld %st(0) # sched: [1:0.25] ; SKYLAKE-NEXT: flds (%edx) # sched: [7:0.50] ; SKYLAKE-NEXT: fldl (%ecx) # sched: [7:0.50] ; SKYLAKE-NEXT: fldt (%eax) # sched: [7:0.50] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fld: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fld %st(0) # sched: [1:0.25] ; SKX-NEXT: flds (%edx) # sched: [7:0.50] ; SKX-NEXT: fldl (%ecx) # sched: [7:0.50] ; SKX-NEXT: fldt (%eax) # sched: [7:0.50] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fld: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fld %st(0) # sched: [1:0.50] ; BTVER2-NEXT: flds (%edx) # sched: [5:1.00] ; BTVER2-NEXT: fldl (%ecx) # sched: [5:1.00] ; BTVER2-NEXT: fldt (%eax) # sched: [5:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fld: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fld %st(0) # sched: [1:0.50] ; ZNVER1-NEXT: flds (%edx) # sched: [8:0.50] ; ZNVER1-NEXT: fldl (%ecx) # sched: [8:0.50] ; ZNVER1-NEXT: fldt (%eax) # sched: [1:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fldcw_fldenv(i8* %a0) optsize { ; GENERIC-LABEL: test_fldcw_fldenv: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fldcw (%eax) ; GENERIC-NEXT: fldenv (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fldcw_fldenv: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fldcw (%eax) # sched: [5:2.50] ; ATOM-NEXT: fldenv (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fldcw_fldenv: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fldcw (%eax) # sched: [3:1.00] ; SLM-NEXT: fldenv (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fldcw_fldenv: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fldcw (%eax) # sched: [8:2.00] ; SANDY-NEXT: fldenv (%eax) # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fldcw_fldenv: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fldcw (%eax) # sched: [7:1.00] ; HASWELL-NEXT: fldenv (%eax) # sched: [61:14.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fldcw_fldenv: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fldcw (%eax) # sched: [7:1.00] ; BROADWELL-NEXT: fldenv (%eax) # sched: [60:14.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fldcw_fldenv: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fldcw (%eax) # sched: [7:1.00] ; SKYLAKE-NEXT: fldenv (%eax) # sched: [62:14.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fldcw_fldenv: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fldcw (%eax) # sched: [7:1.00] ; SKX-NEXT: fldenv (%eax) # sched: [62:14.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fldcw_fldenv: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fldcw (%eax) # sched: [5:1.00] ; BTVER2-NEXT: fldenv (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fldcw_fldenv: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fldcw (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: fldenv (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fldcw $0 \0A\09 fldenv $0", "*m"(i8* %a0) nounwind ret void } define void @test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz() optsize { ; GENERIC-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fld1 ; GENERIC-NEXT: fldl2e ; GENERIC-NEXT: fldl2t ; GENERIC-NEXT: fldlg2 ; GENERIC-NEXT: fldln2 ; GENERIC-NEXT: fldpi ; GENERIC-NEXT: fldz ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fld1 # sched: [6:3.00] ; ATOM-NEXT: fldl2e # sched: [10:5.00] ; ATOM-NEXT: fldl2t # sched: [10:5.00] ; ATOM-NEXT: fldlg2 # sched: [10:5.00] ; ATOM-NEXT: fldln2 # sched: [10:5.00] ; ATOM-NEXT: fldpi # sched: [10:5.00] ; ATOM-NEXT: fldz # sched: [1:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fld1 # sched: [1:0.50] ; SLM-NEXT: fldl2e # sched: [1:1.00] ; SLM-NEXT: fldl2t # sched: [1:1.00] ; SLM-NEXT: fldlg2 # sched: [1:1.00] ; SLM-NEXT: fldln2 # sched: [1:1.00] ; SLM-NEXT: fldpi # sched: [1:1.00] ; SLM-NEXT: fldz # sched: [1:0.50] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fld1 # sched: [1:1.00] ; SANDY-NEXT: fldl2e # sched: [1:1.00] ; SANDY-NEXT: fldl2t # sched: [1:1.00] ; SANDY-NEXT: fldlg2 # sched: [1:1.00] ; SANDY-NEXT: fldln2 # sched: [1:1.00] ; SANDY-NEXT: fldpi # sched: [1:1.00] ; SANDY-NEXT: fldz # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fld1 # sched: [1:1.00] ; HASWELL-NEXT: fldl2e # sched: [1:1.00] ; HASWELL-NEXT: fldl2t # sched: [1:1.00] ; HASWELL-NEXT: fldlg2 # sched: [1:1.00] ; HASWELL-NEXT: fldln2 # sched: [1:1.00] ; HASWELL-NEXT: fldpi # sched: [1:1.00] ; HASWELL-NEXT: fldz # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fld1 # sched: [1:1.00] ; BROADWELL-NEXT: fldl2e # sched: [1:1.00] ; BROADWELL-NEXT: fldl2t # sched: [1:1.00] ; BROADWELL-NEXT: fldlg2 # sched: [1:1.00] ; BROADWELL-NEXT: fldln2 # sched: [1:1.00] ; BROADWELL-NEXT: fldpi # sched: [1:1.00] ; BROADWELL-NEXT: fldz # sched: [1:0.50] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fld1 # sched: [1:1.00] ; SKYLAKE-NEXT: fldl2e # sched: [1:1.00] ; SKYLAKE-NEXT: fldl2t # sched: [1:1.00] ; SKYLAKE-NEXT: fldlg2 # sched: [1:1.00] ; SKYLAKE-NEXT: fldln2 # sched: [1:1.00] ; SKYLAKE-NEXT: fldpi # sched: [1:1.00] ; SKYLAKE-NEXT: fldz # sched: [1:0.50] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fld1 # sched: [1:1.00] ; SKX-NEXT: fldl2e # sched: [1:1.00] ; SKX-NEXT: fldl2t # sched: [1:1.00] ; SKX-NEXT: fldlg2 # sched: [1:1.00] ; SKX-NEXT: fldln2 # sched: [1:1.00] ; SKX-NEXT: fldpi # sched: [1:1.00] ; SKX-NEXT: fldz # sched: [1:0.50] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fld1 # sched: [3:1.00] ; BTVER2-NEXT: fldl2e # sched: [3:1.00] ; BTVER2-NEXT: fldl2t # sched: [3:1.00] ; BTVER2-NEXT: fldlg2 # sched: [3:1.00] ; BTVER2-NEXT: fldln2 # sched: [3:1.00] ; BTVER2-NEXT: fldpi # sched: [3:1.00] ; BTVER2-NEXT: fldz # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fld1 # sched: [11:1.00] ; ZNVER1-NEXT: fldl2e # sched: [11:1.00] ; ZNVER1-NEXT: fldl2t # sched: [11:1.00] ; ZNVER1-NEXT: fldlg2 # sched: [11:1.00] ; ZNVER1-NEXT: fldln2 # sched: [11:1.00] ; ZNVER1-NEXT: fldpi # sched: [11:1.00] ; ZNVER1-NEXT: fldz # sched: [8:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fmul(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fmul: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fmul %st(0), %st(1) ; GENERIC-NEXT: fmul %st(2) ; GENERIC-NEXT: fmuls (%ecx) ; GENERIC-NEXT: fmull (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fmul: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fmul %st(0), %st(1) # sched: [4:4.00] ; ATOM-NEXT: fmul %st(2) # sched: [4:4.00] ; ATOM-NEXT: fmuls (%ecx) # sched: [4:4.00] ; ATOM-NEXT: fmull (%eax) # sched: [4:4.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fmul: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fmul %st(0), %st(1) # sched: [5:2.00] ; SLM-NEXT: fmul %st(2) # sched: [5:2.00] ; SLM-NEXT: fmuls (%ecx) # sched: [8:2.00] ; SLM-NEXT: fmull (%eax) # sched: [8:2.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fmul: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] ; SANDY-NEXT: fmul %st(2) # sched: [5:1.00] ; SANDY-NEXT: fmuls (%ecx) # sched: [12:1.00] ; SANDY-NEXT: fmull (%eax) # sched: [12:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fmul: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] ; HASWELL-NEXT: fmul %st(2) # sched: [5:1.00] ; HASWELL-NEXT: fmuls (%ecx) # sched: [12:1.00] ; HASWELL-NEXT: fmull (%eax) # sched: [12:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fmul: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] ; BROADWELL-NEXT: fmul %st(2) # sched: [5:1.00] ; BROADWELL-NEXT: fmuls (%ecx) # sched: [11:1.00] ; BROADWELL-NEXT: fmull (%eax) # sched: [11:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fmul: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fmul %st(0), %st(1) # sched: [4:1.00] ; SKYLAKE-NEXT: fmul %st(2) # sched: [4:1.00] ; SKYLAKE-NEXT: fmuls (%ecx) # sched: [11:1.00] ; SKYLAKE-NEXT: fmull (%eax) # sched: [11:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fmul: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fmul %st(0), %st(1) # sched: [4:1.00] ; SKX-NEXT: fmul %st(2) # sched: [4:1.00] ; SKX-NEXT: fmuls (%ecx) # sched: [11:1.00] ; SKX-NEXT: fmull (%eax) # sched: [11:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fmul: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fmul %st(0), %st(1) # sched: [2:1.00] ; BTVER2-NEXT: fmul %st(2) # sched: [2:1.00] ; BTVER2-NEXT: fmuls (%ecx) # sched: [7:1.00] ; BTVER2-NEXT: fmull (%eax) # sched: [7:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fmul: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fmul %st(0), %st(1) # sched: [3:0.50] ; ZNVER1-NEXT: fmul %st(2) # sched: [3:0.50] ; ZNVER1-NEXT: fmuls (%ecx) # sched: [10:0.50] ; ZNVER1-NEXT: fmull (%eax) # sched: [10:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fmulp_fimul(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_fmulp_fimul: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fmulp %st(1) ; GENERIC-NEXT: fmulp %st(2) ; GENERIC-NEXT: fimuls (%ecx) ; GENERIC-NEXT: fimull (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fmulp_fimul: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fmulp %st(1) # sched: [4:4.00] ; ATOM-NEXT: fmulp %st(2) # sched: [4:4.00] ; ATOM-NEXT: fimuls (%ecx) # sched: [4:4.00] ; ATOM-NEXT: fimull (%eax) # sched: [4:4.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fmulp_fimul: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fmulp %st(1) # sched: [5:2.00] ; SLM-NEXT: fmulp %st(2) # sched: [5:2.00] ; SLM-NEXT: fimuls (%ecx) # sched: [8:2.00] ; SLM-NEXT: fimull (%eax) # sched: [8:2.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fmulp_fimul: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fmulp %st(1) # sched: [5:1.00] ; SANDY-NEXT: fmulp %st(2) # sched: [5:1.00] ; SANDY-NEXT: fimuls (%ecx) # sched: [15:1.00] ; SANDY-NEXT: fimull (%eax) # sched: [15:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fmulp_fimul: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fmulp %st(1) # sched: [5:1.00] ; HASWELL-NEXT: fmulp %st(2) # sched: [5:1.00] ; HASWELL-NEXT: fimuls (%ecx) # sched: [15:1.00] ; HASWELL-NEXT: fimull (%eax) # sched: [15:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fmulp_fimul: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fmulp %st(1) # sched: [5:1.00] ; BROADWELL-NEXT: fmulp %st(2) # sched: [5:1.00] ; BROADWELL-NEXT: fimuls (%ecx) # sched: [14:1.00] ; BROADWELL-NEXT: fimull (%eax) # sched: [14:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fmulp_fimul: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fmulp %st(1) # sched: [4:1.00] ; SKYLAKE-NEXT: fmulp %st(2) # sched: [4:1.00] ; SKYLAKE-NEXT: fimuls (%ecx) # sched: [14:1.00] ; SKYLAKE-NEXT: fimull (%eax) # sched: [14:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fmulp_fimul: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fmulp %st(1) # sched: [4:1.00] ; SKX-NEXT: fmulp %st(2) # sched: [4:1.00] ; SKX-NEXT: fimuls (%ecx) # sched: [14:1.00] ; SKX-NEXT: fimull (%eax) # sched: [14:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fmulp_fimul: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fmulp %st(1) # sched: [2:1.00] ; BTVER2-NEXT: fmulp %st(2) # sched: [2:1.00] ; BTVER2-NEXT: fimuls (%ecx) # sched: [7:1.00] ; BTVER2-NEXT: fimull (%eax) # sched: [7:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fmulp_fimul: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fmulp %st(1) # sched: [3:0.50] ; ZNVER1-NEXT: fmulp %st(2) # sched: [3:0.50] ; ZNVER1-NEXT: fimuls (%ecx) # sched: [10:0.50] ; ZNVER1-NEXT: fimull (%eax) # sched: [10:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fnop() optsize { ; GENERIC-LABEL: test_fnop: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fnop ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fnop: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fnop # sched: [1:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fnop: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fnop # sched: [1:0.50] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fnop: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fnop # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fnop: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fnop # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fnop: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fnop # sched: [1:0.50] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fnop: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fnop # sched: [1:0.50] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fnop: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fnop # sched: [1:0.50] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fnop: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fnop # sched: [1:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fnop: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fnop # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fnop", ""() nounwind ret void } define void @test_fpatan() optsize { ; GENERIC-LABEL: test_fpatan: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fpatan ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fpatan: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fpatan # sched: [183:91.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fpatan: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fpatan # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fpatan: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fpatan # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fpatan: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fpatan # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fpatan: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fpatan # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fpatan: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fpatan # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fpatan: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fpatan # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fpatan: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fpatan # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fpatan: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fpatan # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fpatan", ""() nounwind ret void } define void @test_fprem_fprem1() optsize { ; GENERIC-LABEL: test_fprem_fprem1: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fprem ; GENERIC-NEXT: fprem1 ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fprem_fprem1: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fprem # sched: [55:27.50] ; ATOM-NEXT: fprem1 # sched: [71:35.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fprem_fprem1: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fprem # sched: [100:1.00] ; SLM-NEXT: fprem1 # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fprem_fprem1: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fprem # sched: [100:0.33] ; SANDY-NEXT: fprem1 # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fprem_fprem1: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fprem # sched: [19:7.00] ; HASWELL-NEXT: fprem1 # sched: [27:10.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fprem_fprem1: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fprem # sched: [100:0.25] ; BROADWELL-NEXT: fprem1 # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fprem_fprem1: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fprem # sched: [100:0.25] ; SKYLAKE-NEXT: fprem1 # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fprem_fprem1: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fprem # sched: [100:0.25] ; SKX-NEXT: fprem1 # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fprem_fprem1: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fprem # sched: [100:0.50] ; BTVER2-NEXT: fprem1 # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fprem_fprem1: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fprem # sched: [100:0.25] ; ZNVER1-NEXT: fprem1 # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fprem \0A\09 fprem1", ""() nounwind ret void } define void @test_fptan() optsize { ; GENERIC-LABEL: test_fptan: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fptan ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fptan: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fptan # sched: [168:84.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fptan: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fptan # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fptan: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fptan # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fptan: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fptan # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fptan: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fptan # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fptan: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fptan # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fptan: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fptan # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fptan: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fptan # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fptan: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fptan # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fptan", ""() nounwind ret void } define void @test_frndint() optsize { ; GENERIC-LABEL: test_frndint: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: frndint ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_frndint: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: frndint # sched: [46:23.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_frndint: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: frndint # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_frndint: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: frndint # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_frndint: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: frndint # sched: [11:4.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_frndint: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: frndint # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_frndint: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: frndint # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_frndint: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: frndint # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_frndint: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: frndint # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_frndint: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: frndint # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "frndint", ""() nounwind ret void } define void @test_frstor(i8* %a0) optsize { ; GENERIC-LABEL: test_frstor: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: frstor (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_frstor: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: frstor (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_frstor: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: frstor (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_frstor: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: frstor (%eax) # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_frstor: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: frstor (%eax) # sched: [1:22.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_frstor: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: frstor (%eax) # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_frstor: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: frstor (%eax) # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_frstor: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: frstor (%eax) # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_frstor: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: frstor (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_frstor: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: frstor (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "frstor $0", "*m"(i8* %a0) nounwind ret void } define void @test_fsave(i8* %a0) optsize { ; GENERIC-LABEL: test_fsave: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: wait ; GENERIC-NEXT: fnsave (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsave: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsave: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: fnsave (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsave: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: fnsave (%eax) # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsave: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: fnsave (%eax) # sched: [1:36.75] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsave: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: fnsave (%eax) # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsave: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: fnsave (%eax) # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsave: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: fnsave (%eax) # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsave: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: fnsave (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsave: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: fnsave (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fsave $0", "*m"(i8* %a0) nounwind ret void } define void @test_fnsave(i8* %a0) optsize { ; GENERIC-LABEL: test_fnsave: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fnsave (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fnsave: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fnsave: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fnsave (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fnsave: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fnsave (%eax) # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fnsave: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fnsave (%eax) # sched: [1:36.75] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fnsave: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fnsave (%eax) # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fnsave: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fnsave (%eax) # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fnsave: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fnsave (%eax) # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fnsave: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fnsave (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fnsave: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fnsave (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fnsave $0", "*m"(i8* %a0) nounwind ret void } define void @test_fscale() optsize { ; GENERIC-LABEL: test_fscale: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fscale ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fscale: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fscale # sched: [77:38.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fscale: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fscale # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fscale: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fscale # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fscale: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fscale # sched: [75:12.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fscale: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fscale # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fscale: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fscale # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fscale: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fscale # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fscale: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fscale # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fscale: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fscale # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fscale", ""() nounwind ret void } define void @test_fsin() optsize { ; GENERIC-LABEL: test_fsin: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsin ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsin: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fsin # sched: [174:87.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsin: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fsin # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsin: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fsin # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsin: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsin # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsin: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsin # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsin: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsin # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsin: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fsin # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsin: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsin # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsin: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsin # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fsin", ""() nounwind ret void } define void @test_fsincos() optsize { ; GENERIC-LABEL: test_fsincos: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsincos ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsincos: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fsincos # sched: [174:87.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsincos: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fsincos # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsincos: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fsincos # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsincos: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsincos # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsincos: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsincos # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsincos: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsincos # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsincos: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fsincos # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsincos: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsincos # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsincos: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsincos # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fsincos", ""() nounwind ret void } define void @test_fsqrt() optsize { ; GENERIC-LABEL: test_fsqrt: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsqrt ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsqrt: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fsqrt # sched: [71:35.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsqrt: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fsqrt # sched: [40:40.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsqrt: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fsqrt # sched: [24:24.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsqrt: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsqrt # sched: [23:17.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsqrt: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsqrt # sched: [23:9.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsqrt: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsqrt # sched: [21:7.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsqrt: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fsqrt # sched: [21:7.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsqrt: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsqrt # sched: [35:35.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsqrt: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsqrt # sched: [20:20.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fsqrt", ""() nounwind ret void } define void @test_fst_fstp(i16* %a0, i32* %a1, i64 *%a2) optsize { ; GENERIC-LABEL: test_fst_fstp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fst %st(0) ; GENERIC-NEXT: fsts (%edx) ; GENERIC-NEXT: fstl (%ecx) ; GENERIC-NEXT: fstp %st(0) ; GENERIC-NEXT: fstpl (%edx) ; GENERIC-NEXT: fstpl (%ecx) ; GENERIC-NEXT: fstpt (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fst_fstp: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fst %st(0) # sched: [2:1.00] ; ATOM-NEXT: fsts (%edx) # sched: [2:1.00] ; ATOM-NEXT: fstl (%ecx) # sched: [2:1.00] ; ATOM-NEXT: fstp %st(0) # sched: [2:1.00] ; ATOM-NEXT: fstpl (%edx) # sched: [2:1.00] ; ATOM-NEXT: fstpl (%ecx) # sched: [2:1.00] ; ATOM-NEXT: fstpt (%eax) # sched: [5:2.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fst_fstp: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fst %st(0) # sched: [1:0.50] ; SLM-NEXT: fsts (%edx) # sched: [1:1.00] ; SLM-NEXT: fstl (%ecx) # sched: [1:1.00] ; SLM-NEXT: fstp %st(0) # sched: [1:0.50] ; SLM-NEXT: fstpl (%edx) # sched: [1:1.00] ; SLM-NEXT: fstpl (%ecx) # sched: [1:1.00] ; SLM-NEXT: fstpt (%eax) # sched: [1:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fst_fstp: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fst %st(0) # sched: [1:1.00] ; SANDY-NEXT: fsts (%edx) # sched: [6:1.00] ; SANDY-NEXT: fstl (%ecx) # sched: [6:1.00] ; SANDY-NEXT: fstp %st(0) # sched: [1:1.00] ; SANDY-NEXT: fstpl (%edx) # sched: [6:1.00] ; SANDY-NEXT: fstpl (%ecx) # sched: [6:1.00] ; SANDY-NEXT: fstpt (%eax) # sched: [6:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fst_fstp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fst %st(0) # sched: [1:0.50] ; HASWELL-NEXT: fsts (%edx) # sched: [1:1.00] ; HASWELL-NEXT: fstl (%ecx) # sched: [1:1.00] ; HASWELL-NEXT: fstp %st(0) # sched: [1:0.50] ; HASWELL-NEXT: fstpl (%edx) # sched: [1:1.00] ; HASWELL-NEXT: fstpl (%ecx) # sched: [1:1.00] ; HASWELL-NEXT: fstpt (%eax) # sched: [1:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fst_fstp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fst %st(0) # sched: [1:0.25] ; BROADWELL-NEXT: fsts (%edx) # sched: [1:1.00] ; BROADWELL-NEXT: fstl (%ecx) # sched: [1:1.00] ; BROADWELL-NEXT: fstp %st(0) # sched: [1:0.25] ; BROADWELL-NEXT: fstpl (%edx) # sched: [1:1.00] ; BROADWELL-NEXT: fstpl (%ecx) # sched: [1:1.00] ; BROADWELL-NEXT: fstpt (%eax) # sched: [1:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fst_fstp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fst %st(0) # sched: [1:0.25] ; SKYLAKE-NEXT: fsts (%edx) # sched: [1:1.00] ; SKYLAKE-NEXT: fstl (%ecx) # sched: [1:1.00] ; SKYLAKE-NEXT: fstp %st(0) # sched: [1:0.25] ; SKYLAKE-NEXT: fstpl (%edx) # sched: [1:1.00] ; SKYLAKE-NEXT: fstpl (%ecx) # sched: [1:1.00] ; SKYLAKE-NEXT: fstpt (%eax) # sched: [1:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fst_fstp: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fst %st(0) # sched: [1:0.25] ; SKX-NEXT: fsts (%edx) # sched: [1:1.00] ; SKX-NEXT: fstl (%ecx) # sched: [1:1.00] ; SKX-NEXT: fstp %st(0) # sched: [1:0.25] ; SKX-NEXT: fstpl (%edx) # sched: [1:1.00] ; SKX-NEXT: fstpl (%ecx) # sched: [1:1.00] ; SKX-NEXT: fstpt (%eax) # sched: [1:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fst_fstp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fst %st(0) # sched: [1:0.50] ; BTVER2-NEXT: fsts (%edx) # sched: [1:1.00] ; BTVER2-NEXT: fstl (%ecx) # sched: [1:1.00] ; BTVER2-NEXT: fstp %st(0) # sched: [1:0.50] ; BTVER2-NEXT: fstpl (%edx) # sched: [1:1.00] ; BTVER2-NEXT: fstpl (%ecx) # sched: [1:1.00] ; BTVER2-NEXT: fstpt (%eax) # sched: [1:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fst_fstp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fst %st(0) # sched: [5:0.50] ; ZNVER1-NEXT: fsts (%edx) # sched: [1:0.50] ; ZNVER1-NEXT: fstl (%ecx) # sched: [1:0.50] ; ZNVER1-NEXT: fstp %st(0) # sched: [5:0.50] ; ZNVER1-NEXT: fstpl (%edx) # sched: [1:0.50] ; ZNVER1-NEXT: fstpl (%ecx) # sched: [1:0.50] ; ZNVER1-NEXT: fstpt (%eax) # sched: [5:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fstcw_fstenv_fstsw(i8* %a0) optsize { ; GENERIC-LABEL: test_fstcw_fstenv_fstsw: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: wait ; GENERIC-NEXT: fnstcw (%eax) ; GENERIC-NEXT: wait ; GENERIC-NEXT: fnstenv (%eax) ; GENERIC-NEXT: wait ; GENERIC-NEXT: fnstsw (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fstcw_fstenv_fstsw: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fstcw_fstenv_fstsw: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: fnstcw (%eax) # sched: [1:0.50] ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: fnstenv (%eax) # sched: [100:1.00] ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: fnstsw (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fstcw_fstenv_fstsw: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: fnstcw (%eax) # sched: [7:1.00] ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: fnstenv (%eax) # sched: [100:0.33] ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: fnstsw (%eax) # sched: [7:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fstcw_fstenv_fstsw: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fstcw_fstenv_fstsw: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fstcw_fstenv_fstsw: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: fnstcw (%eax) # sched: [2:1.00] ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: fnstenv (%eax) # sched: [106:19.50] ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: fnstsw (%eax) # sched: [3:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fstcw_fstenv_fstsw: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: fnstcw (%eax) # sched: [2:1.00] ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: fnstenv (%eax) # sched: [106:19.50] ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: fnstsw (%eax) # sched: [3:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fstcw_fstenv_fstsw: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: fnstcw (%eax) # sched: [1:0.50] ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: fnstenv (%eax) # sched: [100:0.50] ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: fnstsw (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fstcw_fstenv_fstsw: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: fnstcw (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: fnstenv (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: fnstsw (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fstcw $0 \0A\09 fstenv $0 \0A\09 fstsw $0", "*m"(i8* %a0) nounwind ret void } define void @test_fnstcw_fnstenv_fnstsw(i8* %a0) optsize { ; GENERIC-LABEL: test_fnstcw_fnstenv_fnstsw: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fnstcw (%eax) ; GENERIC-NEXT: fnstenv (%eax) ; GENERIC-NEXT: fnstsw (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fnstcw_fnstenv_fnstsw: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] ; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] ; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fnstcw_fnstenv_fnstsw: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fnstcw (%eax) # sched: [1:0.50] ; SLM-NEXT: fnstenv (%eax) # sched: [100:1.00] ; SLM-NEXT: fnstsw (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fnstcw_fnstenv_fnstsw: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fnstcw (%eax) # sched: [7:1.00] ; SANDY-NEXT: fnstenv (%eax) # sched: [100:0.33] ; SANDY-NEXT: fnstsw (%eax) # sched: [7:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fnstcw_fnstenv_fnstsw: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] ; HASWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] ; HASWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fnstcw_fnstenv_fnstsw: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] ; BROADWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] ; BROADWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fnstcw_fnstenv_fnstsw: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fnstcw (%eax) # sched: [2:1.00] ; SKYLAKE-NEXT: fnstenv (%eax) # sched: [106:19.50] ; SKYLAKE-NEXT: fnstsw (%eax) # sched: [3:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fnstcw_fnstenv_fnstsw: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fnstcw (%eax) # sched: [2:1.00] ; SKX-NEXT: fnstenv (%eax) # sched: [106:19.50] ; SKX-NEXT: fnstsw (%eax) # sched: [3:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fnstcw_fnstenv_fnstsw: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fnstcw (%eax) # sched: [1:0.50] ; BTVER2-NEXT: fnstenv (%eax) # sched: [100:0.50] ; BTVER2-NEXT: fnstsw (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fnstcw_fnstenv_fnstsw: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fnstcw (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: fnstenv (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: fnstsw (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fnstcw $0 \0A\09 fnstenv $0 \0A\09 fnstsw $0", "*m"(i8* %a0) nounwind ret void } define void @test_fsub(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fsub: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsub %st(0), %st(1) ; GENERIC-NEXT: fsub %st(2) ; GENERIC-NEXT: fsubs (%ecx) ; GENERIC-NEXT: fsubl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsub: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fsub %st(0), %st(1) # sched: [5:5.00] ; ATOM-NEXT: fsub %st(2) # sched: [5:5.00] ; ATOM-NEXT: fsubs (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fsubl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsub: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; SLM-NEXT: fsub %st(2) # sched: [3:1.00] ; SLM-NEXT: fsubs (%ecx) # sched: [6:1.00] ; SLM-NEXT: fsubl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsub: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; SANDY-NEXT: fsub %st(2) # sched: [3:1.00] ; SANDY-NEXT: fsubs (%ecx) # sched: [10:1.00] ; SANDY-NEXT: fsubl (%eax) # sched: [10:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsub: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; HASWELL-NEXT: fsub %st(2) # sched: [3:1.00] ; HASWELL-NEXT: fsubs (%ecx) # sched: [10:1.00] ; HASWELL-NEXT: fsubl (%eax) # sched: [10:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsub: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; BROADWELL-NEXT: fsub %st(2) # sched: [3:1.00] ; BROADWELL-NEXT: fsubs (%ecx) # sched: [9:1.00] ; BROADWELL-NEXT: fsubl (%eax) # sched: [9:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsub: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; SKYLAKE-NEXT: fsub %st(2) # sched: [3:1.00] ; SKYLAKE-NEXT: fsubs (%ecx) # sched: [10:1.00] ; SKYLAKE-NEXT: fsubl (%eax) # sched: [10:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsub: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; SKX-NEXT: fsub %st(2) # sched: [3:1.00] ; SKX-NEXT: fsubs (%ecx) # sched: [10:1.00] ; SKX-NEXT: fsubl (%eax) # sched: [10:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsub: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fsub %st(2) # sched: [3:1.00] ; BTVER2-NEXT: fsubs (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fsubl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsub: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] ; ZNVER1-NEXT: fsub %st(2) # sched: [3:1.00] ; ZNVER1-NEXT: fsubs (%ecx) # sched: [10:1.00] ; ZNVER1-NEXT: fsubl (%eax) # sched: [10:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fsubp_fisub(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_fsubp_fisub: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsubp %st(1) ; GENERIC-NEXT: fsubp %st(2) ; GENERIC-NEXT: fisubs (%ecx) ; GENERIC-NEXT: fisubl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsubp_fisub: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fsubp %st(1) # sched: [5:5.00] ; ATOM-NEXT: fsubp %st(2) # sched: [5:5.00] ; ATOM-NEXT: fisubs (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fisubl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsubp_fisub: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fsubp %st(1) # sched: [3:1.00] ; SLM-NEXT: fsubp %st(2) # sched: [3:1.00] ; SLM-NEXT: fisubs (%ecx) # sched: [6:1.00] ; SLM-NEXT: fisubl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsubp_fisub: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fsubp %st(1) # sched: [3:1.00] ; SANDY-NEXT: fsubp %st(2) # sched: [3:1.00] ; SANDY-NEXT: fisubs (%ecx) # sched: [13:2.00] ; SANDY-NEXT: fisubl (%eax) # sched: [13:2.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsubp_fisub: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsubp %st(1) # sched: [3:1.00] ; HASWELL-NEXT: fsubp %st(2) # sched: [3:1.00] ; HASWELL-NEXT: fisubs (%ecx) # sched: [13:2.00] ; HASWELL-NEXT: fisubl (%eax) # sched: [13:2.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsubp_fisub: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsubp %st(1) # sched: [3:1.00] ; BROADWELL-NEXT: fsubp %st(2) # sched: [3:1.00] ; BROADWELL-NEXT: fisubs (%ecx) # sched: [12:2.00] ; BROADWELL-NEXT: fisubl (%eax) # sched: [12:2.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsubp_fisub: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsubp %st(1) # sched: [3:1.00] ; SKYLAKE-NEXT: fsubp %st(2) # sched: [3:1.00] ; SKYLAKE-NEXT: fisubs (%ecx) # sched: [13:2.00] ; SKYLAKE-NEXT: fisubl (%eax) # sched: [13:2.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsubp_fisub: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fsubp %st(1) # sched: [3:1.00] ; SKX-NEXT: fsubp %st(2) # sched: [3:1.00] ; SKX-NEXT: fisubs (%ecx) # sched: [13:2.00] ; SKX-NEXT: fisubl (%eax) # sched: [13:2.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsubp_fisub: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsubp %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fsubp %st(2) # sched: [3:1.00] ; BTVER2-NEXT: fisubs (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fisubl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsubp_fisub: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsubp %st(1) # sched: [3:1.00] ; ZNVER1-NEXT: fsubp %st(2) # sched: [3:1.00] ; ZNVER1-NEXT: fisubs (%ecx) # sched: [10:1.00] ; ZNVER1-NEXT: fisubl (%eax) # sched: [10:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fsubr(float *%a0, double *%a1) optsize { ; GENERIC-LABEL: test_fsubr: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsubr %st(0), %st(1) ; GENERIC-NEXT: fsubr %st(2) ; GENERIC-NEXT: fsubrs (%ecx) ; GENERIC-NEXT: fsubrl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsubr: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fsubr %st(0), %st(1) # sched: [5:5.00] ; ATOM-NEXT: fsubr %st(2) # sched: [5:5.00] ; ATOM-NEXT: fsubrs (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fsubrl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsubr: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; SLM-NEXT: fsubr %st(2) # sched: [3:1.00] ; SLM-NEXT: fsubrs (%ecx) # sched: [6:1.00] ; SLM-NEXT: fsubrl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsubr: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; SANDY-NEXT: fsubr %st(2) # sched: [3:1.00] ; SANDY-NEXT: fsubrs (%ecx) # sched: [10:1.00] ; SANDY-NEXT: fsubrl (%eax) # sched: [10:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsubr: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; HASWELL-NEXT: fsubr %st(2) # sched: [3:1.00] ; HASWELL-NEXT: fsubrs (%ecx) # sched: [10:1.00] ; HASWELL-NEXT: fsubrl (%eax) # sched: [10:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsubr: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; BROADWELL-NEXT: fsubr %st(2) # sched: [3:1.00] ; BROADWELL-NEXT: fsubrs (%ecx) # sched: [9:1.00] ; BROADWELL-NEXT: fsubrl (%eax) # sched: [9:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsubr: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; SKYLAKE-NEXT: fsubr %st(2) # sched: [3:1.00] ; SKYLAKE-NEXT: fsubrs (%ecx) # sched: [10:1.00] ; SKYLAKE-NEXT: fsubrl (%eax) # sched: [10:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsubr: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; SKX-NEXT: fsubr %st(2) # sched: [3:1.00] ; SKX-NEXT: fsubrs (%ecx) # sched: [10:1.00] ; SKX-NEXT: fsubrl (%eax) # sched: [10:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsubr: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fsubr %st(2) # sched: [3:1.00] ; BTVER2-NEXT: fsubrs (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fsubrl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsubr: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] ; ZNVER1-NEXT: fsubr %st(2) # sched: [3:1.00] ; ZNVER1-NEXT: fsubrs (%ecx) # sched: [10:1.00] ; ZNVER1-NEXT: fsubrl (%eax) # sched: [10:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_fsubrp_fisubr(i16 *%a0, i32 *%a1) optsize { ; GENERIC-LABEL: test_fsubrp_fisubr: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fsubrp %st(1) ; GENERIC-NEXT: fsubrp %st(2) ; GENERIC-NEXT: fisubrs (%ecx) ; GENERIC-NEXT: fisubrl (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fsubrp_fisubr: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fsubrp %st(1) # sched: [5:5.00] ; ATOM-NEXT: fsubrp %st(2) # sched: [5:5.00] ; ATOM-NEXT: fisubrs (%ecx) # sched: [5:5.00] ; ATOM-NEXT: fisubrl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fsubrp_fisubr: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fsubrp %st(1) # sched: [3:1.00] ; SLM-NEXT: fsubrp %st(2) # sched: [3:1.00] ; SLM-NEXT: fisubrs (%ecx) # sched: [6:1.00] ; SLM-NEXT: fisubrl (%eax) # sched: [6:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fsubrp_fisubr: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fsubrp %st(1) # sched: [3:1.00] ; SANDY-NEXT: fsubrp %st(2) # sched: [3:1.00] ; SANDY-NEXT: fisubrs (%ecx) # sched: [13:2.00] ; SANDY-NEXT: fisubrl (%eax) # sched: [13:2.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fsubrp_fisubr: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fsubrp %st(1) # sched: [3:1.00] ; HASWELL-NEXT: fsubrp %st(2) # sched: [3:1.00] ; HASWELL-NEXT: fisubrs (%ecx) # sched: [13:2.00] ; HASWELL-NEXT: fisubrl (%eax) # sched: [13:2.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fsubrp_fisubr: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fsubrp %st(1) # sched: [3:1.00] ; BROADWELL-NEXT: fsubrp %st(2) # sched: [3:1.00] ; BROADWELL-NEXT: fisubrs (%ecx) # sched: [12:2.00] ; BROADWELL-NEXT: fisubrl (%eax) # sched: [12:2.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fsubrp_fisubr: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fsubrp %st(1) # sched: [3:1.00] ; SKYLAKE-NEXT: fsubrp %st(2) # sched: [3:1.00] ; SKYLAKE-NEXT: fisubrs (%ecx) # sched: [13:2.00] ; SKYLAKE-NEXT: fisubrl (%eax) # sched: [13:2.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fsubrp_fisubr: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fsubrp %st(1) # sched: [3:1.00] ; SKX-NEXT: fsubrp %st(2) # sched: [3:1.00] ; SKX-NEXT: fisubrs (%ecx) # sched: [13:2.00] ; SKX-NEXT: fisubrl (%eax) # sched: [13:2.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fsubrp_fisubr: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fsubrp %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fsubrp %st(2) # sched: [3:1.00] ; BTVER2-NEXT: fisubrs (%ecx) # sched: [8:1.00] ; BTVER2-NEXT: fisubrl (%eax) # sched: [8:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fsubrp_fisubr: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fsubrp %st(1) # sched: [3:1.00] ; ZNVER1-NEXT: fsubrp %st(2) # sched: [3:1.00] ; ZNVER1-NEXT: fisubrs (%ecx) # sched: [10:1.00] ; ZNVER1-NEXT: fisubrl (%eax) # sched: [10:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] 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 ret void } define void @test_ftst() optsize { ; GENERIC-LABEL: test_ftst: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: ftst ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_ftst: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: ftst # sched: [9:4.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_ftst: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: ftst # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_ftst: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: ftst # sched: [3:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_ftst: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: ftst # sched: [1:1.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_ftst: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: ftst # sched: [3:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_ftst: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: ftst # sched: [2:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_ftst: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: ftst # sched: [2:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_ftst: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: ftst # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_ftst: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: ftst # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "ftst", ""() nounwind ret void } define void @test_fucom_fucomp_fucompp() optsize { ; GENERIC-LABEL: test_fucom_fucomp_fucompp: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fucom %st(1) ; GENERIC-NEXT: fucom %st(3) ; GENERIC-NEXT: fucomp %st(1) ; GENERIC-NEXT: fucomp %st(3) ; GENERIC-NEXT: fucompp ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fucom_fucomp_fucompp: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fucom %st(1) # sched: [1:1.00] ; ATOM-NEXT: fucom %st(3) # sched: [1:1.00] ; ATOM-NEXT: fucomp %st(1) # sched: [1:1.00] ; ATOM-NEXT: fucomp %st(3) # sched: [1:1.00] ; ATOM-NEXT: fucompp # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fucom_fucomp_fucompp: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fucom %st(1) # sched: [3:1.00] ; SLM-NEXT: fucom %st(3) # sched: [3:1.00] ; SLM-NEXT: fucomp %st(1) # sched: [3:1.00] ; SLM-NEXT: fucomp %st(3) # sched: [3:1.00] ; SLM-NEXT: fucompp # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fucom_fucomp_fucompp: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fucom %st(1) # sched: [1:1.00] ; SANDY-NEXT: fucom %st(3) # sched: [1:1.00] ; SANDY-NEXT: fucomp %st(1) # sched: [1:1.00] ; SANDY-NEXT: fucomp %st(3) # sched: [1:1.00] ; SANDY-NEXT: fucompp # sched: [3:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fucom_fucomp_fucompp: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fucom %st(1) # sched: [1:1.00] ; HASWELL-NEXT: fucom %st(3) # sched: [1:1.00] ; HASWELL-NEXT: fucomp %st(1) # sched: [1:1.00] ; HASWELL-NEXT: fucomp %st(3) # sched: [1:1.00] ; HASWELL-NEXT: fucompp # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fucom_fucomp_fucompp: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fucom %st(1) # sched: [1:1.00] ; BROADWELL-NEXT: fucom %st(3) # sched: [1:1.00] ; BROADWELL-NEXT: fucomp %st(1) # sched: [1:1.00] ; BROADWELL-NEXT: fucomp %st(3) # sched: [1:1.00] ; BROADWELL-NEXT: fucompp # sched: [3:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fucom_fucomp_fucompp: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fucom %st(1) # sched: [1:1.00] ; SKYLAKE-NEXT: fucom %st(3) # sched: [1:1.00] ; SKYLAKE-NEXT: fucomp %st(1) # sched: [1:1.00] ; SKYLAKE-NEXT: fucomp %st(3) # sched: [1:1.00] ; SKYLAKE-NEXT: fucompp # sched: [2:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fucom_fucomp_fucompp: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fucom %st(1) # sched: [1:1.00] ; SKX-NEXT: fucom %st(3) # sched: [1:1.00] ; SKX-NEXT: fucomp %st(1) # sched: [1:1.00] ; SKX-NEXT: fucomp %st(3) # sched: [1:1.00] ; SKX-NEXT: fucompp # sched: [2:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fucom_fucomp_fucompp: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fucom %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fucom %st(3) # sched: [3:1.00] ; BTVER2-NEXT: fucomp %st(1) # sched: [3:1.00] ; BTVER2-NEXT: fucomp %st(3) # sched: [3:1.00] ; BTVER2-NEXT: fucompp # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fucom_fucomp_fucompp: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fucom %st(1) # sched: [1:1.00] ; ZNVER1-NEXT: fucom %st(3) # sched: [1:1.00] ; ZNVER1-NEXT: fucomp %st(1) # sched: [1:1.00] ; ZNVER1-NEXT: fucomp %st(3) # sched: [1:1.00] ; ZNVER1-NEXT: fucompp # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fucom \0A\09 fucom %st(3) \0A\09 fucomp \0A\09 fucomp %st(3) \0A\09 fucompp", ""() nounwind ret void } define void @test_fucomi_fucomip() optsize { ; GENERIC-LABEL: test_fucomi_fucomip: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fucomi %st(3) ; GENERIC-NEXT: fucompi %st(3) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fucomi_fucomip: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fucomi %st(3) # sched: [9:4.50] ; ATOM-NEXT: fucompi %st(3) # sched: [9:4.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fucomi_fucomip: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fucomi %st(3) # sched: [3:1.00] ; SLM-NEXT: fucompi %st(3) # sched: [3:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fucomi_fucomip: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fucomi %st(3) # sched: [3:1.00] ; SANDY-NEXT: fucompi %st(3) # sched: [3:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fucomi_fucomip: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fucomi %st(3) # sched: [1:0.50] ; HASWELL-NEXT: fucompi %st(3) # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fucomi_fucomip: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fucomi %st(3) # sched: [3:1.00] ; BROADWELL-NEXT: fucompi %st(3) # sched: [3:1.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fucomi_fucomip: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fucomi %st(3) # sched: [2:1.00] ; SKYLAKE-NEXT: fucompi %st(3) # sched: [2:1.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fucomi_fucomip: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fucomi %st(3) # sched: [2:1.00] ; SKX-NEXT: fucompi %st(3) # sched: [2:1.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fucomi_fucomip: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fucomi %st(3) # sched: [3:1.00] ; BTVER2-NEXT: fucompi %st(3) # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fucomi_fucomip: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fucomi %st(3) # sched: [9:0.50] ; ZNVER1-NEXT: fucompi %st(3) # sched: [9:0.50] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fucomi %st(3) \0A\09 fucomip %st(3)", ""() nounwind ret void } define void @test_fwait() optsize { ; GENERIC-LABEL: test_fwait: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: wait ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fwait: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fwait: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: wait # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fwait: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: wait # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fwait: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: wait # sched: [2:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fwait: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: wait # sched: [2:0.50] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fwait: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: wait # sched: [2:0.50] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fwait: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: wait # sched: [2:0.50] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fwait: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: wait # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fwait: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: wait # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fwait", ""() nounwind ret void } define void @test_fxam() optsize { ; GENERIC-LABEL: test_fxam: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fxam ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fxam: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fxam # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fxam: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fxam # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fxam: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fxam # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fxam: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fxam # sched: [1:2.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fxam: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fxam # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fxam: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fxam # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fxam: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fxam # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fxam: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fxam # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fxam: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fxam # sched: [1:1.00] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fxam", ""() nounwind ret void } define void @test_fxch() optsize { ; GENERIC-LABEL: test_fxch: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fxch %st(1) ; GENERIC-NEXT: fxch %st(3) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fxch: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fxch %st(1) # sched: [1:1.00] ; ATOM-NEXT: fxch %st(3) # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fxch: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fxch %st(1) # sched: [1:0.50] ; SLM-NEXT: fxch %st(3) # sched: [1:0.50] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fxch: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fxch %st(1) # sched: [1:0.33] ; SANDY-NEXT: fxch %st(3) # sched: [1:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fxch: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fxch %st(1) # sched: [17:4.00] ; HASWELL-NEXT: fxch %st(3) # sched: [17:4.00] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fxch: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fxch %st(1) # sched: [14:4.00] ; BROADWELL-NEXT: fxch %st(3) # sched: [14:4.00] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fxch: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fxch %st(1) # sched: [17:4.00] ; SKYLAKE-NEXT: fxch %st(3) # sched: [17:4.00] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fxch: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fxch %st(1) # sched: [17:4.00] ; SKX-NEXT: fxch %st(3) # sched: [17:4.00] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fxch: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fxch %st(1) # sched: [1:0.50] ; BTVER2-NEXT: fxch %st(3) # sched: [1:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fxch: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fxch %st(1) # sched: [1:0.25] ; ZNVER1-NEXT: fxch %st(3) # sched: [1:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fxch \0A\09 fxch %st(3)", ""() nounwind ret void } define void @test_fxrstor_fxsave(i8* %a0) optsize { ; GENERIC-LABEL: test_fxrstor_fxsave: ; GENERIC: # %bb.0: ; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fxrstor (%eax) ; GENERIC-NEXT: fxsave (%eax) ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fxrstor_fxsave: ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fxrstor (%eax) # sched: [141:70.50] ; ATOM-NEXT: fxsave (%eax) # sched: [140:70.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fxrstor_fxsave: ; SLM: # %bb.0: ; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] ; SLM-NEXT: #APP ; SLM-NEXT: fxrstor (%eax) # sched: [100:1.00] ; SLM-NEXT: fxsave (%eax) # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fxrstor_fxsave: ; SANDY: # %bb.0: ; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SANDY-NEXT: #APP ; SANDY-NEXT: fxrstor (%eax) # sched: [5:2.00] ; SANDY-NEXT: fxsave (%eax) # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fxrstor_fxsave: ; HASWELL: # %bb.0: ; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fxrstor (%eax) # sched: [64:16.50] ; HASWELL-NEXT: fxsave (%eax) # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fxrstor_fxsave: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fxrstor (%eax) # sched: [63:16.50] ; BROADWELL-NEXT: fxsave (%eax) # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fxrstor_fxsave: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fxrstor (%eax) # sched: [63:16.50] ; SKYLAKE-NEXT: fxsave (%eax) # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fxrstor_fxsave: ; SKX: # %bb.0: ; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] ; SKX-NEXT: #APP ; SKX-NEXT: fxrstor (%eax) # sched: [63:16.50] ; SKX-NEXT: fxsave (%eax) # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fxrstor_fxsave: ; BTVER2: # %bb.0: ; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fxrstor (%eax) # sched: [100:0.50] ; BTVER2-NEXT: fxsave (%eax) # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fxrstor_fxsave: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fxrstor (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: fxsave (%eax) # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fxrstor $0 \0A\09 fxsave $0", "*m"(i8 *%a0) nounwind ret void } define void @test_fxtract() optsize { ; GENERIC-LABEL: test_fxtract: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fxtract ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fxtract: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fxtract # sched: [25:12.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fxtract: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fxtract # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fxtract: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fxtract # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fxtract: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fxtract # sched: [15:4.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fxtract: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fxtract # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fxtract: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fxtract # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fxtract: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fxtract # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fxtract: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fxtract # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fxtract: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fxtract # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fxtract", ""() nounwind ret void } define void @test_fyl2x() optsize { ; GENERIC-LABEL: test_fyl2x: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fyl2x ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fyl2x: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fyl2x # sched: [146:73.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fyl2x: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fyl2x # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fyl2x: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fyl2x # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fyl2x: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fyl2x # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fyl2x: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fyl2x # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fyl2x: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fyl2x # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fyl2x: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fyl2x # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fyl2x: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fyl2x # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fyl2x: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fyl2x # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fyl2x", ""() nounwind ret void } define void @test_fyl2xp1() optsize { ; GENERIC-LABEL: test_fyl2xp1: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP ; GENERIC-NEXT: fyl2xp1 ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retl ; ; ATOM-LABEL: test_fyl2xp1: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP ; ATOM-NEXT: fyl2xp1 # sched: [147:73.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; ; SLM-LABEL: test_fyl2xp1: ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fyl2xp1 # sched: [100:1.00] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] ; ; SANDY-LABEL: test_fyl2xp1: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fyl2xp1 # sched: [100:0.33] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] ; ; HASWELL-LABEL: test_fyl2xp1: ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fyl2xp1 # sched: [100:0.25] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] ; ; BROADWELL-LABEL: test_fyl2xp1: ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fyl2xp1 # sched: [100:0.25] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] ; ; SKYLAKE-LABEL: test_fyl2xp1: ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fyl2xp1 # sched: [100:0.25] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] ; ; SKX-LABEL: test_fyl2xp1: ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fyl2xp1 # sched: [100:0.25] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] ; ; BTVER2-LABEL: test_fyl2xp1: ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fyl2xp1 # sched: [100:0.50] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] ; ; ZNVER1-LABEL: test_fyl2xp1: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: #APP ; ZNVER1-NEXT: fyl2xp1 # sched: [100:0.25] ; ZNVER1-NEXT: #NO_APP ; ZNVER1-NEXT: retl # sched: [1:0.50] tail call void asm sideeffect "fyl2xp1", ""() nounwind ret void }