Skip to content

Commit eb1ff56

Browse files
committed
[SLP][NFC]Add a test for copyable operands, used multiple times, NFC
1 parent b93bb69 commit eb1ff56

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
2+
; RUN: opt --passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
3+
4+
define i1 @test(double %circ_radius, ptr %x) {
5+
; CHECK-LABEL: define i1 @test(
6+
; CHECK-SAME: double [[CIRC_RADIUS:%.*]], ptr [[X:%.*]]) {
7+
; CHECK-NEXT: [[ENTRY:.*:]]
8+
; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[X]], align 8
9+
; CHECK-NEXT: [[ADD20:%.*]] = fadd double [[TMP0]], 0.000000e+00
10+
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x double> poison, double [[CIRC_RADIUS]], i32 3
11+
; CHECK-NEXT: [[TMP2:%.*]] = insertelement <4 x double> [[TMP1]], double [[TMP0]], i32 0
12+
; CHECK-NEXT: [[TMP3:%.*]] = insertelement <4 x double> [[TMP2]], double [[ADD20]], i32 2
13+
; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <4 x double> [[TMP3]], <4 x double> poison, <4 x i32> <i32 0, i32 0, i32 2, i32 3>
14+
; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <4 x double> [[TMP3]], <4 x double> <double 0.000000e+00, double poison, double 0.000000e+00, double 0.000000e+00>, <4 x i32> <i32 4, i32 0, i32 6, i32 7>
15+
; CHECK-NEXT: [[TMP6:%.*]] = fmul <4 x double> [[TMP4]], [[TMP5]]
16+
; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <4 x double> [[TMP6]], <4 x double> <double poison, double poison, double 0.000000e+00, double poison>, <4 x i32> <i32 1, i32 2, i32 6, i32 0>
17+
; CHECK-NEXT: [[TMP8:%.*]] = fadd <4 x double> [[TMP6]], [[TMP7]]
18+
; CHECK-NEXT: [[TMP9:%.*]] = call <4 x double> @llvm.sqrt.v4f64(<4 x double> [[TMP8]])
19+
; CHECK-NEXT: [[TMP10:%.*]] = fcmp olt <4 x double> [[TMP9]], splat (double 1.000000e+00)
20+
; CHECK-NEXT: [[TMP11:%.*]] = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> [[TMP10]])
21+
; CHECK-NEXT: ret i1 [[TMP11]]
22+
;
23+
entry:
24+
%0 = load double, ptr %x, align 8
25+
%square = fmul double %0, 0.000000e+00
26+
%square105 = fmul double %0, %0
27+
%add = fadd double %square, %square105
28+
%sqrt116 = call double @llvm.sqrt.f64(double %add)
29+
%add20 = fadd double %0, 0.000000e+00
30+
%square106 = fmul double %add20, 0.000000e+00
31+
%add25 = fadd double %square105, %square106
32+
%sqrt115 = call double @llvm.sqrt.f64(double %add25)
33+
%square109 = fmul double %circ_radius, 0.000000e+00
34+
%add39 = fadd double %square106, 0.000000e+00
35+
%sqrt114 = call double @llvm.sqrt.f64(double %add39)
36+
%add50 = fadd double %square, %square109
37+
%sqrt = call double @llvm.sqrt.f64(double %add50)
38+
%cmp52 = fcmp olt double %sqrt116, 1.000000e+00
39+
%cmp54 = fcmp olt double %sqrt115, 1.000000e+00
40+
%or.cond = or i1 %cmp52, %cmp54
41+
%cmp57 = fcmp olt double %sqrt114, 1.000000e+00
42+
%or.cond112 = or i1 %or.cond, %cmp57
43+
%cmp60 = fcmp olt double %sqrt, 1.000000e+00
44+
%or.cond113 = or i1 %or.cond112, %cmp60
45+
ret i1 %or.cond113
46+
}
47+
48+
declare double @llvm.sqrt.f64(double)
49+

0 commit comments

Comments
 (0)