Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Mips / mips64signextendsesf.ll
blob831469ab062471a2d715e858fd7d74731df2e12e
1 ; RUN: llc -march=mips64 -mcpu=mips64r2 -mattr=+soft-float -O2 < %s | FileCheck %s
3 define void @foosf() #0 {
4 entry:
5   %in = alloca float, align 4
6   %out = alloca float, align 4
7   store volatile float 0xBFD59E1380000000, ptr %in, align 4
8   %in.0.in.0. = load volatile float, ptr %in, align 4
9   %rintf = tail call float @rintf(float %in.0.in.0.) #1
10   store volatile float %rintf, ptr %out, align 4
11   ret void
13 ; CHECK-LABEL:      foosf
14 ; CHECK-NOT:        dsll
15 ; CHECK-NOT:        dsrl
16 ; CHECK-NOT:        lwu
19 declare float @rintf(float)
21 define float @foosf1(ptr nocapture readonly %a) #0 {
22 entry:
23   %0 = load float, ptr %a, align 4
24   %call = tail call float @roundf(float %0) #2
25   ret float %call
27 ; CHECK-LABEL:      foosf1
28 ; CHECK-NOT:        dsll
29 ; CHECK-NOT:        dsrl
30 ; CHECK-NOT:        lwu
33 declare float @roundf(float) #1
35 define float @foosf2(ptr nocapture readonly %a) #0 {
36 entry:
37   %0 = load float, ptr %a, align 4
38   %call = tail call float @truncf(float %0) #2
39   ret float %call
41 ; CHECK-LABEL:      foosf2
42 ; CHECK-NOT:        dsll
43 ; CHECK-NOT:        dsrl
44 ; CHECK-NOT:        lwu
47 declare float @truncf(float) #1
49 define float @foosf3(ptr nocapture readonly %a) #0 {
50 entry:
51   %0 = load float, ptr %a, align 4
52   %call = tail call float @floorf(float %0) #2
53   ret float %call
55 ; CHECK-LABEL:      foosf3
56 ; CHECK-NOT:        dsll
57 ; CHECK-NOT:        dsrl
58 ; CHECK-NOT:        lwu
61 declare float @floorf(float) #1
63 define float @foosf4(ptr nocapture readonly %a) #0 {
64 entry:
65   %0 = load float, ptr %a, align 4
66   %call = tail call float @nearbyintf(float %0) #2
67   ret float %call
69 ; CHECK-LABEL:      foosf4
70 ; CHECK-NOT:        dsll
71 ; CHECK-NOT:        dsrl
72 ; CHECK-NOT:        lwu
75 declare float @nearbyintf(float) #1
77 define float @foosf5(ptr nocapture readonly %a) #0 {
78 entry:
79   %0 = load float, ptr %a, align 4
80   %mul = fmul float %0, undef
81   ret float %mul
83 ; CHECK-LABEL:      foosf5
84 ; CHECK-NOT:        dsll
85 ; CHECK-NOT:        dsrl
86 ; CHECK-NOT:        lwu
89 define float @foosf6(ptr nocapture readonly %a) #0 {
90 entry:
91   %0 = load float, ptr %a, align 4
92   %sub = fsub float %0, undef
93   ret float %sub
95 ; CHECK-LABEL:      foosf6
96 ; CHECK-NOT:        dsll
97 ; CHECK-NOT:        dsrl
98 ; CHECK-NOT:        lwu
101 define float @foosf7(ptr nocapture readonly %a) #0 {
102 entry:
103   %0 = load float, ptr %a, align 4
104   %add = fadd float %0, undef
105   ret float %add
107 ; CHECK-LABEL:      foosf7
108 ; CHECK-NOT:        dsll
109 ; CHECK-NOT:        dsrl
110 ; CHECK-NOT:        lwu
113 define float @foosf8(ptr nocapture readonly %a) #0 {
114 entry:
115   %b = alloca float, align 4
116   %b.0.b.0. = load volatile float, ptr %b, align 4
117   %0 = load float, ptr %a, align 4
118   %div = fdiv float %b.0.b.0., %0
119   ret float %div
121 ; CHECK-LABEL:      foosf8
122 ; CHECK-NOT:        dsll
123 ; CHECK-NOT:        dsrl
124 ; CHECK-NOT:        lwu
127 define float @foosf9() #0 {
128 entry:
129   %b = alloca float, align 4
130   %b.0.b.0. = load volatile float, ptr %b, align 4
131   %conv = fpext float %b.0.b.0. to double
132   %b.0.b.0.3 = load volatile float, ptr %b, align 4
133   %conv1 = fpext float %b.0.b.0.3 to double
134   %call = tail call double @pow(double %conv, double %conv1) #1
135   %conv2 = fptrunc double %call to float
136   ret float %conv2
138 ; CHECK-LABEL:      foosf9
139 ; CHECK-NOT:        dsll
140 ; CHECK-NOT:        dsrl
141 ; CHECK-NOT:        lwu
144 declare double @pow(double, double) #0
146 define float @foosf10() #0 {
147 entry:
148   %a = alloca float, align 4
149   %a.0.a.0. = load volatile float, ptr %a, align 4
150   %conv = fpext float %a.0.a.0. to double
151   %call = tail call double @sin(double %conv) #1
152   %conv1 = fptrunc double %call to float
153   ret float %conv1
155 ; CHECK-LABEL:      foosf10
156 ; CHECK-NOT:        dsll
157 ; CHECK-NOT:        dsrl
158 ; CHECK-NOT:        lwu
161 declare double @sin(double) #0
163 define float @foosf11() #0 {
164 entry:
165   %b = alloca float, align 4
166   %b.0.b.0. = load volatile float, ptr %b, align 4
167   %call = tail call float @ceilf(float %b.0.b.0.) #2
168   ret float %call
170 ; CHECK-LABEL:      foosf11
171 ; CHECK-NOT:        dsll
172 ; CHECK-NOT:        dsrl
173 ; CHECK-NOT:        lwu
176 declare float @ceilf(float) #1
178 define float @foosf12() #0 {
179 entry:
180   %b = alloca float, align 4
181   %a = alloca float, align 4
182   %b.0.b.0. = load volatile float, ptr %b, align 4
183   %a.0.a.0. = load volatile float, ptr %a, align 4
184   %call = tail call float @fmaxf(float %b.0.b.0., float %a.0.a.0.) #2
185   ret float %call
187 ; CHECK-LABEL:      foosf12
188 ; CHECK-NOT:        dsll
189 ; CHECK-NOT:        dsrl
190 ; CHECK-NOT:        lwu
193 declare float @fmaxf(float, float) #1
195 define float @foosf13() #0 {
196 entry:
197   %b = alloca float, align 4
198   %a = alloca float, align 4
199   %b.0.b.0. = load volatile float, ptr %b, align 4
200   %a.0.a.0. = load volatile float, ptr %a, align 4
201   %call = tail call float @fminf(float %b.0.b.0., float %a.0.a.0.) #2
202   ret float %call
204 ; CHECK-LABEL:      foosf13
205 ; CHECK-NOT:        dsll
206 ; CHECK-NOT:        dsrl
207 ; CHECK-NOT:        lwu
210 declare float @fminf(float, float) #1
213 attributes #0 = { nounwind "use-soft-float"="true" }
214 attributes #1 = { nounwind readnone "use-soft-float"="true" }