Lines Matching +full:llvm +full:- +full:3
2 ; RUN: opt < %s -instcombine -S | FileCheck %s
3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
6 ; CHECK-LABEL: @test_sqrt_sd_0(
7 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
8 ; CHECK-NEXT: [[TMP2:%.*]] = tail call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> [[TMP1]])
9 ; CHECK-NEXT: [[TMP3:%.*]] = extractelement <2 x double> [[TMP2]], i32 0
10 ; CHECK-NEXT: ret double [[TMP3]]
14 %3 = tail call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %2)
15 %4 = extractelement <2 x double> %3, i32 0
20 ; CHECK-LABEL: @test_sqrt_sd_1(
21 ; CHECK-NEXT: ret double 1.000000e+00
25 %3 = tail call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %2)
26 %4 = extractelement <2 x double> %3, i32 1
31 ; CHECK-LABEL: @test_add_sd(
32 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a, <2 x …
33 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
36 %2 = tail call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a, <2 x double> %1)
41 ; CHECK-LABEL: @test_add_sd_0(
42 ; CHECK-NEXT: [[TMP1:%.*]] = fadd double %a, %b
43 ; CHECK-NEXT: ret double [[TMP1]]
47 %3 = insertelement <2 x double> undef, double %b, i32 0
48 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
49 %5 = tail call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %2, <2 x double> %4)
55 ; CHECK-LABEL: @test_add_sd_1(
56 ; CHECK-NEXT: ret double 1.000000e+00
60 %3 = insertelement <2 x double> undef, double %b, i32 0
61 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
62 %5 = tail call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %2, <2 x double> %4)
68 ; CHECK-LABEL: @test_sub_sd(
69 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a, <2 x …
70 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
73 %2 = tail call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a, <2 x double> %1)
78 ; CHECK-LABEL: @test_sub_sd_0(
79 ; CHECK-NEXT: [[TMP1:%.*]] = fsub double %a, %b
80 ; CHECK-NEXT: ret double [[TMP1]]
84 %3 = insertelement <2 x double> undef, double %b, i32 0
85 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
86 %5 = tail call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %2, <2 x double> %4)
92 ; CHECK-LABEL: @test_sub_sd_1(
93 ; CHECK-NEXT: ret double 1.000000e+00
97 %3 = insertelement <2 x double> undef, double %b, i32 0
98 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
99 %5 = tail call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %2, <2 x double> %4)
105 ; CHECK-LABEL: @test_mul_sd(
106 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a, <2 x …
107 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
110 %2 = tail call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a, <2 x double> %1)
115 ; CHECK-LABEL: @test_mul_sd_0(
116 ; CHECK-NEXT: [[TMP1:%.*]] = fmul double %a, %b
117 ; CHECK-NEXT: ret double [[TMP1]]
121 %3 = insertelement <2 x double> undef, double %b, i32 0
122 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
123 %5 = tail call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %2, <2 x double> %4)
129 ; CHECK-LABEL: @test_mul_sd_1(
130 ; CHECK-NEXT: ret double 1.000000e+00
134 %3 = insertelement <2 x double> undef, double %b, i32 0
135 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
136 %5 = tail call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %2, <2 x double> %4)
142 ; CHECK-LABEL: @test_div_sd(
143 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a, <2 x …
144 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
147 %2 = tail call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a, <2 x double> %1)
152 ; CHECK-LABEL: @test_div_sd_0(
153 ; CHECK-NEXT: [[TMP1:%.*]] = fdiv double %a, %b
154 ; CHECK-NEXT: ret double [[TMP1]]
158 %3 = insertelement <2 x double> undef, double %b, i32 0
159 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
160 %5 = tail call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %2, <2 x double> %4)
166 ; CHECK-LABEL: @test_div_sd_1(
167 ; CHECK-NEXT: ret double 1.000000e+00
171 %3 = insertelement <2 x double> undef, double %b, i32 0
172 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
173 %5 = tail call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %2, <2 x double> %4)
179 ; CHECK-LABEL: @test_min_sd(
180 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a, <2 x …
181 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
184 %2 = tail call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a, <2 x double> %1)
189 ; CHECK-LABEL: @test_min_sd_0(
190 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
191 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
192 ; CHECK-NEXT: [[TMP3:%.*]] = tail call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> [[TMP1]],…
193 ; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x double> [[TMP3]], i32 0
194 ; CHECK-NEXT: ret double [[TMP4]]
198 %3 = insertelement <2 x double> undef, double %b, i32 0
199 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
200 %5 = tail call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %2, <2 x double> %4)
206 ; CHECK-LABEL: @test_min_sd_1(
207 ; CHECK-NEXT: ret double 1.000000e+00
211 %3 = insertelement <2 x double> undef, double %b, i32 0
212 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
213 %5 = tail call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %2, <2 x double> %4)
219 ; CHECK-LABEL: @test_max_sd(
220 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a, <2 x …
221 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
224 %2 = tail call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a, <2 x double> %1)
229 ; CHECK-LABEL: @test_max_sd_0(
230 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
231 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
232 ; CHECK-NEXT: [[TMP3:%.*]] = tail call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> [[TMP1]],…
233 ; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x double> [[TMP3]], i32 0
234 ; CHECK-NEXT: ret double [[TMP4]]
238 %3 = insertelement <2 x double> undef, double %b, i32 0
239 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
240 %5 = tail call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %2, <2 x double> %4)
246 ; CHECK-LABEL: @test_max_sd_1(
247 ; CHECK-NEXT: ret double 1.000000e+00
251 %3 = insertelement <2 x double> undef, double %b, i32 0
252 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
253 %5 = tail call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %2, <2 x double> %4)
259 ; CHECK-LABEL: @test_cmp_sd(
260 ; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a, <2 x …
261 ; CHECK-NEXT: ret <2 x double> [[TMP1]]
264 %2 = tail call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a, <2 x double> %1, i8 0)
269 ; CHECK-LABEL: @test_cmp_sd_0(
270 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
271 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
272 ; CHECK-NEXT: [[TMP3:%.*]] = tail call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> [[TMP1]],…
273 ; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x double> [[TMP3]], i32 0
274 ; CHECK-NEXT: ret double [[TMP4]]
278 %3 = insertelement <2 x double> undef, double %b, i32 0
279 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
280 %5 = tail call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %2, <2 x double> %4, i8 0)
286 ; CHECK-LABEL: @test_cmp_sd_1(
287 ; CHECK-NEXT: ret double 1.000000e+00
291 %3 = insertelement <2 x double> undef, double %b, i32 0
292 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
293 %5 = tail call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %2, <2 x double> %4, i8 0)
299 ; CHECK-LABEL: @test_comieq_sd_0(
300 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
301 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
302 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.comieq.sd(<2 x double> [[TMP1]], <2 x …
303 ; CHECK-NEXT: ret i32 [[TMP3]]
307 %3 = insertelement <2 x double> undef, double %b, i32 0
308 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
309 %5 = tail call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %2, <2 x double> %4)
314 ; CHECK-LABEL: @test_comige_sd_0(
315 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
316 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
317 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.comige.sd(<2 x double> [[TMP1]], <2 x …
318 ; CHECK-NEXT: ret i32 [[TMP3]]
322 %3 = insertelement <2 x double> undef, double %b, i32 0
323 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
324 %5 = tail call i32 @llvm.x86.sse2.comige.sd(<2 x double> %2, <2 x double> %4)
329 ; CHECK-LABEL: @test_comigt_sd_0(
330 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
331 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
332 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.comigt.sd(<2 x double> [[TMP1]], <2 x …
333 ; CHECK-NEXT: ret i32 [[TMP3]]
337 %3 = insertelement <2 x double> undef, double %b, i32 0
338 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
339 %5 = tail call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %2, <2 x double> %4)
344 ; CHECK-LABEL: @test_comile_sd_0(
345 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
346 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
347 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.comile.sd(<2 x double> [[TMP1]], <2 x …
348 ; CHECK-NEXT: ret i32 [[TMP3]]
352 %3 = insertelement <2 x double> undef, double %b, i32 0
353 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
354 %5 = tail call i32 @llvm.x86.sse2.comile.sd(<2 x double> %2, <2 x double> %4)
359 ; CHECK-LABEL: @test_comilt_sd_0(
360 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
361 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
362 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.comilt.sd(<2 x double> [[TMP1]], <2 x …
363 ; CHECK-NEXT: ret i32 [[TMP3]]
367 %3 = insertelement <2 x double> undef, double %b, i32 0
368 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
369 %5 = tail call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %2, <2 x double> %4)
374 ; CHECK-LABEL: @test_comineq_sd_0(
375 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
376 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
377 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.comineq.sd(<2 x double> [[TMP1]], <2 x…
378 ; CHECK-NEXT: ret i32 [[TMP3]]
382 %3 = insertelement <2 x double> undef, double %b, i32 0
383 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
384 %5 = tail call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %2, <2 x double> %4)
389 ; CHECK-LABEL: @test_ucomieq_sd_0(
390 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
391 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
392 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> [[TMP1]], <2 x…
393 ; CHECK-NEXT: ret i32 [[TMP3]]
397 %3 = insertelement <2 x double> undef, double %b, i32 0
398 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
399 %5 = tail call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %2, <2 x double> %4)
404 ; CHECK-LABEL: @test_ucomige_sd_0(
405 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
406 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
407 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> [[TMP1]], <2 x…
408 ; CHECK-NEXT: ret i32 [[TMP3]]
412 %3 = insertelement <2 x double> undef, double %b, i32 0
413 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
414 %5 = tail call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %2, <2 x double> %4)
419 ; CHECK-LABEL: @test_ucomigt_sd_0(
420 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
421 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
422 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> [[TMP1]], <2 x…
423 ; CHECK-NEXT: ret i32 [[TMP3]]
427 %3 = insertelement <2 x double> undef, double %b, i32 0
428 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
429 %5 = tail call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %2, <2 x double> %4)
434 ; CHECK-LABEL: @test_ucomile_sd_0(
435 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
436 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
437 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> [[TMP1]], <2 x…
438 ; CHECK-NEXT: ret i32 [[TMP3]]
442 %3 = insertelement <2 x double> undef, double %b, i32 0
443 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
444 %5 = tail call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %2, <2 x double> %4)
449 ; CHECK-LABEL: @test_ucomilt_sd_0(
450 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
451 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
452 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> [[TMP1]], <2 x…
453 ; CHECK-NEXT: ret i32 [[TMP3]]
457 %3 = insertelement <2 x double> undef, double %b, i32 0
458 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
459 %5 = tail call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %2, <2 x double> %4)
464 ; CHECK-LABEL: @test_ucomineq_sd_0(
465 ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> undef, double %a, i32 0
466 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> undef, double %b, i32 0
467 ; CHECK-NEXT: [[TMP3:%.*]] = tail call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> [[TMP1]], <2 …
468 ; CHECK-NEXT: ret i32 [[TMP3]]
472 %3 = insertelement <2 x double> undef, double %b, i32 0
473 %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1
474 %5 = tail call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %2, <2 x double> %4)
478 declare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
480 declare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>)
481 declare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>)
482 declare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>)
483 declare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>)
484 declare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>)
485 declare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>)
486 declare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8)
488 declare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>)
489 declare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>)
490 declare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>)
491 declare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>)
492 declare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>)
493 declare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>)
495 declare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>)
496 declare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>)
497 declare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>)
498 declare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>)
499 declare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>)
500 declare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>)