215 lines · plain
1; RUN: llc -mtriple=mips64 -mcpu=mips64r2 -mattr=+soft-float -O2 < %s | FileCheck %s2 3define void @foosf() #0 {4entry:5 %in = alloca float, align 46 %out = alloca float, align 47 store volatile float 0xBFD59E1380000000, ptr %in, align 48 %in.0.in.0. = load volatile float, ptr %in, align 49 %rintf = tail call float @rintf(float %in.0.in.0.) #110 store volatile float %rintf, ptr %out, align 411 ret void12 13; CHECK-LABEL: foosf14; CHECK-NOT: dsll15; CHECK-NOT: dsrl16; CHECK-NOT: lwu17}18 19declare float @rintf(float)20 21define float @foosf1(ptr nocapture readonly %a) #0 {22entry:23 %0 = load float, ptr %a, align 424 %call = tail call float @roundf(float %0) #225 ret float %call26 27; CHECK-LABEL: foosf128; CHECK-NOT: dsll29; CHECK-NOT: dsrl30; CHECK-NOT: lwu31}32 33declare float @roundf(float) #134 35define float @foosf2(ptr nocapture readonly %a) #0 {36entry:37 %0 = load float, ptr %a, align 438 %call = tail call float @truncf(float %0) #239 ret float %call40 41; CHECK-LABEL: foosf242; CHECK-NOT: dsll43; CHECK-NOT: dsrl44; CHECK-NOT: lwu45}46 47declare float @truncf(float) #148 49define float @foosf3(ptr nocapture readonly %a) #0 {50entry:51 %0 = load float, ptr %a, align 452 %call = tail call float @floorf(float %0) #253 ret float %call54 55; CHECK-LABEL: foosf356; CHECK-NOT: dsll57; CHECK-NOT: dsrl58; CHECK-NOT: lwu59}60 61declare float @floorf(float) #162 63define float @foosf4(ptr nocapture readonly %a) #0 {64entry:65 %0 = load float, ptr %a, align 466 %call = tail call float @nearbyintf(float %0) #267 ret float %call68 69; CHECK-LABEL: foosf470; CHECK-NOT: dsll71; CHECK-NOT: dsrl72; CHECK-NOT: lwu73}74 75declare float @nearbyintf(float) #176 77define float @foosf5(ptr nocapture readonly %a) #0 {78entry:79 %0 = load float, ptr %a, align 480 %mul = fmul float %0, undef81 ret float %mul82 83; CHECK-LABEL: foosf584; CHECK-NOT: dsll85; CHECK-NOT: dsrl86; CHECK-NOT: lwu87}88 89define float @foosf6(ptr nocapture readonly %a) #0 {90entry:91 %0 = load float, ptr %a, align 492 %sub = fsub float %0, undef93 ret float %sub94 95; CHECK-LABEL: foosf696; CHECK-NOT: dsll97; CHECK-NOT: dsrl98; CHECK-NOT: lwu99}100 101define float @foosf7(ptr nocapture readonly %a) #0 {102entry:103 %0 = load float, ptr %a, align 4104 %add = fadd float %0, undef105 ret float %add106 107; CHECK-LABEL: foosf7108; CHECK-NOT: dsll109; CHECK-NOT: dsrl110; CHECK-NOT: lwu111}112 113define float @foosf8(ptr nocapture readonly %a) #0 {114entry:115 %b = alloca float, align 4116 %b.0.b.0. = load volatile float, ptr %b, align 4117 %0 = load float, ptr %a, align 4118 %div = fdiv float %b.0.b.0., %0119 ret float %div120 121; CHECK-LABEL: foosf8122; CHECK-NOT: dsll123; CHECK-NOT: dsrl124; CHECK-NOT: lwu125}126 127define float @foosf9() #0 {128entry:129 %b = alloca float, align 4130 %b.0.b.0. = load volatile float, ptr %b, align 4131 %conv = fpext float %b.0.b.0. to double132 %b.0.b.0.3 = load volatile float, ptr %b, align 4133 %conv1 = fpext float %b.0.b.0.3 to double134 %call = tail call double @pow(double %conv, double %conv1) #1135 %conv2 = fptrunc double %call to float136 ret float %conv2137 138; CHECK-LABEL: foosf9139; CHECK-NOT: dsll140; CHECK-NOT: dsrl141; CHECK-NOT: lwu142}143 144declare double @pow(double, double) #0145 146define float @foosf10() #0 {147entry:148 %a = alloca float, align 4149 %a.0.a.0. = load volatile float, ptr %a, align 4150 %conv = fpext float %a.0.a.0. to double151 %call = tail call double @sin(double %conv) #1152 %conv1 = fptrunc double %call to float153 ret float %conv1154 155; CHECK-LABEL: foosf10156; CHECK-NOT: dsll157; CHECK-NOT: dsrl158; CHECK-NOT: lwu159}160 161declare double @sin(double) #0162 163define float @foosf11() #0 {164entry:165 %b = alloca float, align 4166 %b.0.b.0. = load volatile float, ptr %b, align 4167 %call = tail call float @ceilf(float %b.0.b.0.) #2168 ret float %call169 170; CHECK-LABEL: foosf11171; CHECK-NOT: dsll172; CHECK-NOT: dsrl173; CHECK-NOT: lwu174}175 176declare float @ceilf(float) #1177 178define float @foosf12() #0 {179entry:180 %b = alloca float, align 4181 %a = alloca float, align 4182 %b.0.b.0. = load volatile float, ptr %b, align 4183 %a.0.a.0. = load volatile float, ptr %a, align 4184 %call = tail call float @fmaxf(float %b.0.b.0., float %a.0.a.0.) #2185 ret float %call186 187; CHECK-LABEL: foosf12188; CHECK-NOT: dsll189; CHECK-NOT: dsrl190; CHECK-NOT: lwu191}192 193declare float @fmaxf(float, float) #1194 195define float @foosf13() #0 {196entry:197 %b = alloca float, align 4198 %a = alloca float, align 4199 %b.0.b.0. = load volatile float, ptr %b, align 4200 %a.0.a.0. = load volatile float, ptr %a, align 4201 %call = tail call float @fminf(float %b.0.b.0., float %a.0.a.0.) #2202 ret float %call203 204; CHECK-LABEL: foosf13205; CHECK-NOT: dsll206; CHECK-NOT: dsrl207; CHECK-NOT: lwu208}209 210declare float @fminf(float, float) #1211 212 213attributes #0 = { nounwind "use-soft-float"="true" }214attributes #1 = { nounwind readnone "use-soft-float"="true" }215