1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X87 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 -mattr=-sse | FileCheck %s -check-prefix=X87 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -mattr=-x87 | FileCheck %s -check-prefix=NOX87 --implicit-check-not "{{ }}f{{.*}}" 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 -mattr=-x87,-sse | FileCheck %s -check-prefix=NOX87 --implicit-check-not "{{ }}f{{.*}}" 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -mattr=-x87,+sse | FileCheck %s -check-prefix=NOX87 --implicit-check-not "{{ }}f{{.*}}" 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 -mattr=-x87,-sse2 | FileCheck %s -check-prefix=NOX87 --implicit-check-not "{{ }}f{{.*}}" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine void @test(i32 %i, i64 %l, float* %pf, double* %pd, fp128* %pld) nounwind readnone { 9*9880d681SAndroid Build Coastguard Worker; X87-LABEL: test: 10*9880d681SAndroid Build Coastguard Worker; NOX87-LABEL: test: 11*9880d681SAndroid Build Coastguard Worker; X87: fild 12*9880d681SAndroid Build Coastguard Worker; NOX87: __floatunsisf 13*9880d681SAndroid Build Coastguard Worker %tmp = uitofp i32 %i to float 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker; X87: fild 16*9880d681SAndroid Build Coastguard Worker; NOX87: __floatdisf 17*9880d681SAndroid Build Coastguard Worker %tmp1 = sitofp i64 %l to float 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; X87: fadd 20*9880d681SAndroid Build Coastguard Worker; NOX87: __addsf3 21*9880d681SAndroid Build Coastguard Worker %tmp2 = fadd float %tmp, %tmp1 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; X87: fstp 24*9880d681SAndroid Build Coastguard Worker store float %tmp2, float* %pf 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker; X87: fild 27*9880d681SAndroid Build Coastguard Worker; NOX87: __floatunsidf 28*9880d681SAndroid Build Coastguard Worker %tmp3 = uitofp i32 %i to double 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; X87: fild 31*9880d681SAndroid Build Coastguard Worker; NOX87: __floatdidf 32*9880d681SAndroid Build Coastguard Worker %tmp4 = sitofp i64 %l to double 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; X87: fadd 35*9880d681SAndroid Build Coastguard Worker; NOX87: __adddf3 36*9880d681SAndroid Build Coastguard Worker %tmp5 = fadd double %tmp3, %tmp4 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; X87: fstp 39*9880d681SAndroid Build Coastguard Worker store double %tmp5, double* %pd 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; X87: __floatsitf 42*9880d681SAndroid Build Coastguard Worker; NOX87: __floatsitf 43*9880d681SAndroid Build Coastguard Worker %tmp6 = sitofp i32 %i to fp128 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; X87: __floatunditf 46*9880d681SAndroid Build Coastguard Worker; NOX87: __floatunditf 47*9880d681SAndroid Build Coastguard Worker %tmp7 = uitofp i64 %l to fp128 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; X87: __addtf3 50*9880d681SAndroid Build Coastguard Worker; NOX87: __addtf3 51*9880d681SAndroid Build Coastguard Worker %tmp8 = fadd fp128 %tmp6, %tmp7 52*9880d681SAndroid Build Coastguard Worker store fp128 %tmp8, fp128* %pld 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56