@@ -267,3 +267,43 @@ exit:
267
267
%count.0 = trunc i32 %add.lcssa to i16
268
268
ret i16 %count.0
269
269
}
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