164 lines · plain
1; RUN: llc -mtriple=armv7k-apple-watchos2.0 -mcpu=cortex-a7 < %s | FileCheck %s2 3define arm_aapcs_vfpcc float @t1(float %a, float %b) {4entry:5; CHECK: t16; CHECK-NOT: vmov7; CHECK: vadd.f328 %a.addr = alloca float, align 49 %b.addr = alloca float, align 410 store float %a, ptr %a.addr, align 411 store float %b, ptr %b.addr, align 412 %0 = load float, ptr %a.addr, align 413 %1 = load float, ptr %b.addr, align 414 %add = fadd float %0, %115 ret float %add16}17 18define arm_aapcs_vfpcc double @t2(double %a, double %b) {19entry:20; CHECK: t221; CHECK-NOT: vmov22; CHECK: vadd.f6423 %a.addr = alloca double, align 824 %b.addr = alloca double, align 825 store double %a, ptr %a.addr, align 826 store double %b, ptr %b.addr, align 827 %0 = load double, ptr %a.addr, align 828 %1 = load double, ptr %b.addr, align 829 %add = fadd double %0, %130 ret double %add31}32 33define arm_aapcs_vfpcc i64 @t3(double %ti) {34entry:35; CHECK-LABEL: t3:36; CHECK-NOT: vmov37; CHECK: bl ___fixunsdfdi38 %conv = fptoui double %ti to i6439 ret i64 %conv40}41 42define arm_aapcs_vfpcc i64 @t4(double %ti) {43entry:44; CHECK-LABEL: t4:45; CHECK-NOT: vmov46; CHECK: bl ___fixdfdi47 %conv = fptosi double %ti to i6448 ret i64 %conv49}50 51define arm_aapcs_vfpcc double @t5(i64 %ti) {52entry:53; CHECK-LABEL: t5:54; CHECK: bl ___floatundidf55; CHECK-NOT: vmov56; CHECK: pop57 %conv = uitofp i64 %ti to double58 ret double %conv59}60 61define arm_aapcs_vfpcc double @t6(i64 %ti) {62entry:63; CHECK-LABEL: t6:64; CHECK: bl ___floatdidf65; CHECK-NOT: vmov66; CHECK: pop67 %conv = sitofp i64 %ti to double68 ret double %conv69}70 71define arm_aapcs_vfpcc float @t7(i64 %ti) {72entry:73; CHECK-LABEL: t7:74; CHECK: bl ___floatundisf75; CHECK-NOT: vmov76; CHECK: pop77 %conv = uitofp i64 %ti to float78 ret float %conv79}80 81define arm_aapcs_vfpcc float @t8(i64 %ti) {82entry:83; CHECK-LABEL: t8:84; CHECK: bl ___floatdisf85; CHECK-NOT: vmov86; CHECK: pop87 %conv = sitofp i64 %ti to float88 ret float %conv89}90 91define arm_aapcs_vfpcc double @t9(double %d0, double %d1, double %d2, double %d3, double %d4, double %d5, double %d6, double %d7, float %a, float %b) {92entry:93; CHECK-LABEL: t9:94; CHECK-NOT: vmov95; CHECK: vldr96 %add = fadd float %a, %b97 %conv = fpext float %add to double98 ret double %conv99}100 101define arm_aapcs_vfpcc double @t10(double %d0, double %d1, double %d2, double %d3, double %d4, double %d5, double %a, float %b, double %c) {102entry:103; CHECK-LABEL: t10:104; CHECK-NOT: vmov105; CHECK: vldr106 %add = fadd double %a, %c107 ret double %add108}109 110define arm_aapcs_vfpcc float @t11(double %d0, double %d1, double %d2, double %d3, double %d4, double %d5, double %d6, float %a, double %b, float %c) {111entry:112; CHECK-LABEL: t11:113; CHECK: vldr114 %add = fadd float %a, %c115 ret float %add116}117 118; rdar://16039676119define arm_aapcs_vfpcc double @t12(double %a, double %b) {120entry:121; CHECK-LABEL: t12:122; CHECK: vstr123 %add = fadd double %a, %b124 %sub = fsub double %a, %b125 %call = tail call arm_aapcs_vfpcc double @x(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double %add, float 0.000000e+00, double %sub)126 ret double %call127}128 129define arm_aapcs_vfpcc double @t13(double %x) {130entry:131; CHECK-LABEL: t13:132; CHECK-NOT: vmov133; CHECK: bl ___sincos_stret134 %call = tail call arm_aapcs_vfpcc double @cos(double %x)135 %call1 = tail call arm_aapcs_vfpcc double @sin(double %x)136 %mul = fmul double %call, %call1137 ret double %mul138}139 140define arm_aapcs_vfpcc double @t14(double %x) {141; CHECK-LABEL: t14:142; CHECK-NOT: vmov143; CHECK: b ___exp10144 %__exp10 = tail call double @__exp10(double %x) #1145 ret double %__exp10146}147 148define i16 @t15(double %x) {149; CHECK-LABEL: t15:150; CHECK-NOT: vmov151; CHECK: bl ___truncdfhf2152 %tmp0 = fptrunc double %x to half153 %tmp1 = bitcast half %tmp0 to i16154 ret i16 %tmp1155}156 157declare arm_aapcs_vfpcc double @x(double, double, double, double, double, double, double, float, double)158declare arm_aapcs_vfpcc double @cos(double) #0159declare arm_aapcs_vfpcc double @sin(double) #0160declare double @__exp10(double)161 162attributes #0 = { readnone }163attributes #1 = { readonly }164