Skip to content

Commit 585e925

Browse files
committed
Address review comments
1 parent 34ecbed commit 585e925

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

llvm/test/Transforms/LoopVectorize/pr36311.ll

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@
1010

1111
$test = comdat any
1212

13-
declare i32 @__gxx_personality_v0(...)
14-
15-
; Function Attrs: uwtable
16-
define dso_local void @test(ptr %p, i1 %arg) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 {
13+
define void @test(ptr %p, i1 %arg) {
1714
entry:
1815
br label %for.body51
1916

llvm/test/Transforms/LoopVectorize/reduction-small-size.ll

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
55

6-
define i8 @PR34687(i1 %c, i32 %x, i32 %n) {
6+
define i8 @PR34687(i1 %c, i32 %x, i32 %n, i32 %divisor) {
77
; CHECK-LABEL: @PR34687(
88
; CHECK-NEXT: entry:
99
; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i32 [[N:%.*]], 4
@@ -13,20 +13,30 @@ define i8 @PR34687(i1 %c, i32 %x, i32 %n) {
1313
; CHECK-NEXT: [[N_VEC:%.*]] = sub i32 [[N]], [[N_MOD_VF]]
1414
; CHECK-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement <4 x i32> poison, i32 [[X:%.*]], i64 0
1515
; CHECK-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <4 x i32> [[BROADCAST_SPLATINSERT1]], <4 x i32> poison, <4 x i32> zeroinitializer
16+
; CHECK-NEXT: [[BROADCAST_SPLATINSERT2:%.*]] = insertelement <4 x i1> poison, i1 [[C:%.*]], i64 0
17+
; CHECK-NEXT: [[BROADCAST_SPLAT3:%.*]] = shufflevector <4 x i1> [[BROADCAST_SPLATINSERT2]], <4 x i1> poison, <4 x i32> zeroinitializer
18+
; CHECK-NEXT: [[TMP0:%.*]] = select <4 x i1> [[BROADCAST_SPLAT3]], <4 x i32> [[BROADCAST_SPLAT2]], <4 x i32> splat (i32 1)
19+
; CHECK-NEXT: [[BROADCAST_SPLATINSERT3:%.*]] = insertelement <4 x i32> poison, i32 [[X1:%.*]], i64 0
20+
; CHECK-NEXT: [[BROADCAST_SPLAT4:%.*]] = shufflevector <4 x i32> [[BROADCAST_SPLATINSERT3]], <4 x i32> poison, <4 x i32> zeroinitializer
1621
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
1722
; CHECK: vector.body:
1823
; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
24+
; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ]
1925
; CHECK-NEXT: [[VEC_PHI:%.*]] = phi <4 x i32> [ zeroinitializer, [[VECTOR_PH]] ], [ [[TMP4:%.*]], [[VECTOR_BODY]] ]
26+
; CHECK-NEXT: [[TMP6:%.*]] = sdiv <4 x i32> [[VEC_IND]], [[TMP0]]
27+
; CHECK-NEXT: [[PREDPHI1:%.*]] = select <4 x i1> [[BROADCAST_SPLAT3]], <4 x i32> [[TMP6]], <4 x i32> zeroinitializer
2028
; CHECK-NEXT: [[TMP1:%.*]] = and <4 x i32> [[VEC_PHI]], splat (i32 255)
21-
; CHECK-NEXT: [[TMP2:%.*]] = add <4 x i32> [[TMP1]], [[BROADCAST_SPLAT2]]
29+
; CHECK-NEXT: [[TMP2:%.*]] = add <4 x i32> [[TMP1]], [[BROADCAST_SPLAT4]]
2230
; CHECK-NEXT: [[TMP3:%.*]] = trunc <4 x i32> [[TMP2]] to <4 x i8>
2331
; CHECK-NEXT: [[TMP4]] = zext <4 x i8> [[TMP3]] to <4 x i32>
2432
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
33+
; CHECK-NEXT: [[VEC_IND_NEXT]] = add <4 x i32> [[VEC_IND]], splat (i32 4)
2534
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
2635
; CHECK-NEXT: br i1 [[TMP5]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
2736
; CHECK: middle.block:
2837
; CHECK-NEXT: [[TMP7:%.*]] = call i8 @llvm.vector.reduce.add.v4i8(<4 x i8> [[TMP3]])
2938
; CHECK-NEXT: [[TMP8:%.*]] = zext i8 [[TMP7]] to i32
39+
; CHECK-NEXT: [[PREDPHI:%.*]] = extractelement <4 x i32> [[PREDPHI1]], i32 3
3040
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[N]], [[N_VEC]]
3141
; CHECK-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[SCALAR_PH]]
3242
; CHECK: scalar.ph:
@@ -36,17 +46,19 @@ define i8 @PR34687(i1 %c, i32 %x, i32 %n) {
3646
; CHECK: for.body:
3747
; CHECK-NEXT: [[I:%.*]] = phi i32 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[I_NEXT:%.*]], [[IF_END:%.*]] ]
3848
; CHECK-NEXT: [[R:%.*]] = phi i32 [ [[BC_MERGE_RDX]], [[SCALAR_PH]] ], [ [[R_NEXT:%.*]], [[IF_END]] ]
39-
; CHECK-NEXT: br i1 [[C:%.*]], label [[IF_THEN:%.*]], label [[IF_END]]
49+
; CHECK-NEXT: br i1 [[C]], label [[IF_THEN:%.*]], label [[IF_END]]
4050
; CHECK: if.then:
41-
; CHECK-NEXT: [[T0:%.*]] = sdiv i32 6, 2
51+
; CHECK-NEXT: [[T0:%.*]] = sdiv i32 [[I]], [[X]]
4252
; CHECK-NEXT: br label [[IF_END]]
4353
; CHECK: if.end:
54+
; CHECK-NEXT: [[DIV_PHI:%.*]] = phi i32 [ 0, [[FOR_BODY]] ], [ [[T0]], [[IF_THEN]] ]
4455
; CHECK-NEXT: [[T1:%.*]] = and i32 [[R]], 255
4556
; CHECK-NEXT: [[I_NEXT]] = add nsw i32 [[I]], 1
46-
; CHECK-NEXT: [[R_NEXT]] = add nuw nsw i32 [[T1]], [[X]]
57+
; CHECK-NEXT: [[R_NEXT]] = add nuw nsw i32 [[T1]], [[X1]]
4758
; CHECK-NEXT: [[COND:%.*]] = icmp eq i32 [[I_NEXT]], [[N]]
4859
; CHECK-NEXT: br i1 [[COND]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop [[LOOP3:![0-9]+]]
4960
; CHECK: for.end:
61+
; CHECK-NEXT: [[DIV_USE:%.*]] = phi i32 [ [[DIV_PHI]], [[IF_END]] ], [ [[PREDPHI]], [[MIDDLE_BLOCK]] ]
5062
; CHECK-NEXT: [[T2:%.*]] = phi i32 [ [[R_NEXT]], [[IF_END]] ], [ [[TMP8]], [[MIDDLE_BLOCK]] ]
5163
; CHECK-NEXT: [[T3:%.*]] = trunc i32 [[T2]] to i8
5264
; CHECK-NEXT: ret i8 [[T3]]
@@ -60,17 +72,19 @@ for.body:
6072
br i1 %c, label %if.then, label %if.end
6173

6274
if.then:
63-
%t0 = sdiv i32 6, 2
75+
%t0 = sdiv i32 %i, %divisor
6476
br label %if.end
6577

6678
if.end:
79+
%div_phi = phi i32 [ 0, %for.body ], [ %t0, %if.then ]
6780
%t1 = and i32 %r, 255
6881
%i.next = add nsw i32 %i, 1
6982
%r.next = add nuw nsw i32 %t1, %x
7083
%cond = icmp eq i32 %i.next, %n
7184
br i1 %cond, label %for.end, label %for.body
7285

7386
for.end:
87+
%div_use = phi i32 [ %div_phi, %if.end ]
7488
%t2 = phi i32 [ %r.next, %if.end ]
7589
%t3 = trunc i32 %t2 to i8
7690
ret i8 %t3

llvm/test/Transforms/LoopVectorize/runtime-drop-crash.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ entry:
1212

1313
loop:
1414
%tmp3 = phi i64 [ 0, %entry ], [ %tmp18, %loop ]
15-
%tmp4 = getelementptr inbounds %struct.foo, ptr %ptr, i64 0
15+
%tmp4 = getelementptr inbounds %struct.foo, ptr %ptr
1616
store i64 0, ptr %tmp4, align 8
1717
%tmp8 = add i64 1, %tmp3
1818
%tmp10 = getelementptr inbounds %struct.foo, ptr %ptr, i64 %tmp8

0 commit comments

Comments
 (0)