Skip to content

Commit cdc5e00

Browse files
committed
[LV] Add test case to scalarize ptrtoint instructions.
Extra test for #69013
1 parent 4fc1e7d commit cdc5e00

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

llvm/test/Transforms/LoopVectorize/interleave-and-scalarize-only.ll

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,3 +267,43 @@ exit:
267267
%count.0 = trunc i32 %add.lcssa to i16
268268
ret i16 %count.0
269269
}
270+
271+
define void @scalarize_ptrtoint(ptr %src, ptr %dst) {
272+
; CHECK: vector.body:
273+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %vector.ph ], [ [[INDEX_NEXT:%.*]], %vector.body ]
274+
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
275+
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[INDEX]], 1
276+
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr ptr, ptr %src, i64 [[TMP0]]
277+
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr ptr, ptr %src, i64 [[TMP1]]
278+
; CHECK-NEXT: [[TMP4:%.*]] = load ptr, ptr [[TMP2]], align 8
279+
; CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP3]], align 8
280+
; CHECK-NEXT: [[TMP6:%.*]] = ptrtoint ptr [[TMP4]] to i64
281+
; CHECK-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[TMP5]] to i64
282+
; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[TMP6]], 10
283+
; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[TMP7]], 10
284+
; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP8]] to ptr
285+
; CHECK-NEXT: [[TMP11:%.*]] = inttoptr i64 [[TMP9]] to ptr
286+
; CHECK-NEXT: store ptr [[TMP10]], ptr %dst, align 8
287+
; CHECK-NEXT: store ptr [[TMP11]], ptr %dst, align 8
288+
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
289+
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 0
290+
; CHECK-NEXT: br i1 [[TMP12]], label %middle.block, label %vector.body
291+
292+
entry:
293+
br label %loop
294+
295+
loop:
296+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
297+
%gep = getelementptr ptr, ptr %src, i64 %iv
298+
%l = load ptr, ptr %gep, align 8
299+
%cast = ptrtoint ptr %l to i64
300+
%add = add i64 %cast, 10
301+
%cast.2 = inttoptr i64 %add to ptr
302+
store ptr %cast.2, ptr %dst, align 8
303+
%iv.next = add i64 %iv, 1
304+
%ec = icmp eq i64 %iv.next, 0
305+
br i1 %ec, label %exit, label %loop
306+
307+
exit:
308+
ret void
309+
}

0 commit comments

Comments
 (0)