1
- ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none -- version 5
2
2
; RUN: opt -S -aa-pipeline= -passes=loop-vectorize -mcpu=prescott < %s | FileCheck %s
3
3
4
4
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128"
@@ -10,7 +10,6 @@ define void @pr15344(ptr noalias %ar, ptr noalias %ar2, i32 %exit.limit, i1 %con
10
10
; CHECK-NEXT: [[ENTRY:.*:]]
11
11
; CHECK-NEXT: br label %[[PH:.*]]
12
12
; CHECK: [[PH]]:
13
- ; CHECK-NEXT: [[LD:%.*]] = load double, ptr null, align 8
14
13
; CHECK-NEXT: br i1 [[COND]], label %[[LOOP_PREHEADER:.*]], label %[[EXIT:.*]]
15
14
; CHECK: [[LOOP_PREHEADER]]:
16
15
; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i32 [[EXIT_LIMIT]], 10
@@ -27,11 +26,10 @@ define void @pr15344(ptr noalias %ar, ptr noalias %ar2, i32 %exit.limit, i1 %con
27
26
; CHECK: [[VECTOR_PH]]:
28
27
; CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i32 [[EXIT_LIMIT]], 4
29
28
; CHECK-NEXT: [[N_VEC:%.*]] = sub i32 [[EXIT_LIMIT]], [[N_MOD_VF]]
30
- ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> zeroinitializer, double [[LD]], i32 0
31
29
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
32
30
; CHECK: [[VECTOR_BODY]]:
33
31
; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
34
- ; CHECK-NEXT: [[VEC_PHI:%.*]] = phi <2 x double> [ [[TMP2]] , %[[VECTOR_PH]] ], [ [[TMP4:%.*]], %[[VECTOR_BODY]] ]
32
+ ; CHECK-NEXT: [[VEC_PHI:%.*]] = phi <2 x double> [ zeroinitializer , %[[VECTOR_PH]] ], [ [[TMP4:%.*]], %[[VECTOR_BODY]] ]
35
33
; CHECK-NEXT: [[VEC_PHI2:%.*]] = phi <2 x double> [ zeroinitializer, %[[VECTOR_PH]] ], [ [[TMP5:%.*]], %[[VECTOR_BODY]] ]
36
34
; CHECK-NEXT: [[TMP3:%.*]] = add i32 [[INDEX]], 0
37
35
; CHECK-NEXT: [[TMP4]] = fadd fast <2 x double> [[VEC_PHI]], splat (double 1.000000e+00)
@@ -50,7 +48,7 @@ define void @pr15344(ptr noalias %ar, ptr noalias %ar2, i32 %exit.limit, i1 %con
50
48
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[EXIT_LIMIT]], [[N_VEC]]
51
49
; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT_LOOPEXIT:.*]], label %[[SCALAR_PH]]
52
50
; CHECK: [[SCALAR_PH]]:
53
- ; CHECK-NEXT: [[BC_MERGE_RDX:%.*]] = phi double [ [[TMP10]], %[[MIDDLE_BLOCK]] ], [ [[LD]] , %[[LOOP_PREHEADER]] ], [ [[LD]] , %[[VECTOR_MEMCHECK]] ]
51
+ ; CHECK-NEXT: [[BC_MERGE_RDX:%.*]] = phi double [ [[TMP10]], %[[MIDDLE_BLOCK]] ], [ 0.000000e+00 , %[[LOOP_PREHEADER]] ], [ 0.000000e+00 , %[[VECTOR_MEMCHECK]] ]
54
52
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[LOOP_PREHEADER]] ], [ 0, %[[VECTOR_MEMCHECK]] ]
55
53
; CHECK-NEXT: br label %[[LOOP:.*]]
56
54
; CHECK: [[LOOP]]:
@@ -68,18 +66,17 @@ define void @pr15344(ptr noalias %ar, ptr noalias %ar2, i32 %exit.limit, i1 %con
68
66
; CHECK-NEXT: [[FADD_LCSSA:%.*]] = phi double [ [[FADD]], %[[LOOP]] ], [ [[TMP10]], %[[MIDDLE_BLOCK]] ]
69
67
; CHECK-NEXT: br label %[[EXIT]]
70
68
; CHECK: [[EXIT]]:
71
- ; CHECK-NEXT: [[RET:%.*]] = phi double [ [[LD]] , %[[PH]] ], [ [[FADD_LCSSA]], %[[EXIT_LOOPEXIT]] ]
69
+ ; CHECK-NEXT: [[RET:%.*]] = phi double [ 0.000000e+00 , %[[PH]] ], [ [[FADD_LCSSA]], %[[EXIT_LOOPEXIT]] ]
72
70
; CHECK-NEXT: ret void
73
71
;
74
72
entry:
75
73
br label %ph
76
74
77
75
ph:
78
- %ld = load double , ptr null , align 8
79
76
br i1 %cond , label %loop , label %exit
80
77
81
78
loop:
82
- %rdx = phi double [ %fadd , %loop ], [ %ld , %ph ]
79
+ %rdx = phi double [ %fadd , %loop ], [ 0 . 0 , %ph ]
83
80
%iv = phi i32 [ %iv.next , %loop ], [ 0 , %ph ]
84
81
%gep.ar = getelementptr inbounds [16 x double ], ptr %ar , i32 0 , i32 %iv
85
82
%ld2 = load double , ptr %gep.ar , align 4
91
88
br i1 %exit.cond , label %exit , label %loop
92
89
93
90
exit:
94
- %ret = phi double [ %ld , %ph ], [ %fadd , %loop ]
91
+ %ret = phi double [ 0 . 0 , %ph ], [ %fadd , %loop ]
95
92
ret void
96
93
}
97
- ;.
98
- ; CHECK: [[META0]] = !{[[META1:![0-9]+]]}
99
- ; CHECK: [[META1]] = distinct !{[[META1]], [[META2:![0-9]+]]}
100
- ; CHECK: [[META2]] = distinct !{[[META2]], !"LVerDomain"}
101
- ; CHECK: [[META3]] = !{[[META4:![0-9]+]]}
102
- ; CHECK: [[META4]] = distinct !{[[META4]], [[META2]]}
103
- ; CHECK: [[LOOP5]] = distinct !{[[LOOP5]], [[META6:![0-9]+]], [[META7:![0-9]+]]}
104
- ; CHECK: [[META6]] = !{!"llvm.loop.isvectorized", i32 1}
105
- ; CHECK: [[META7]] = !{!"llvm.loop.unroll.runtime.disable"}
106
- ; CHECK: [[LOOP8]] = distinct !{[[LOOP8]], [[META6]]}
107
- ;.
0 commit comments