Skip to content

Commit 416b137

Browse files
committed
Add baseline tests for some optimization handling
1 parent 433683a commit 416b137

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

llvm/test/Transforms/InstCombine/loadstore-metadata.ll

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,19 @@ define i32 @test_load_cast_combine_noundef(ptr %ptr) {
173173
ret i32 %c
174174
}
175175

176+
define i32 @test_load_cast_combine_noalias_addrspace(ptr %ptr) {
177+
; Ensure (cast (load (...))) -> (load (cast (...))) preserves TBAA.
178+
; CHECK-LABEL: @test_load_cast_combine_noalias_addrspace(
179+
; CHECK-NEXT: entry:
180+
; CHECK-NEXT: [[L1:%.*]] = load i32, ptr [[PTR:%.*]], align 4
181+
; CHECK-NEXT: ret i32 [[L1]]
182+
;
183+
entry:
184+
%l = load float, ptr %ptr, align 4, !noalias.addrspace !11
185+
%c = bitcast float %l to i32
186+
ret i32 %c
187+
}
188+
176189
!0 = !{!1, !1, i64 0}
177190
!1 = !{!"scalar type", !2}
178191
!2 = !{!"root"}
@@ -184,3 +197,4 @@ define i32 @test_load_cast_combine_noundef(ptr %ptr) {
184197
!8 = !{i32 1}
185198
!9 = !{i64 8}
186199
!10 = distinct !{}
200+
!11 = !{i32 5, i32 6}

llvm/test/Transforms/SimplifyCFG/hoist-with-metadata.ll

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,10 +316,80 @@ out:
316316
ret void
317317
}
318318

319+
define void @hoist_noalias_addrspace_both(i1 %c, ptr %p, i64 %val) {
320+
; CHECK-LABEL: @hoist_noalias_addrspace_both(
321+
; CHECK-NEXT: if:
322+
; CHECK-NEXT: [[T:%.*]] = atomicrmw add ptr [[P:%.*]], i64 [[VAL:%.*]] seq_cst, align 8
323+
; CHECK-NEXT: ret void
324+
;
325+
if:
326+
br i1 %c, label %then, label %else
327+
328+
then:
329+
%t = atomicrmw add ptr %p, i64 %val seq_cst, !noalias.addrspace !4
330+
br label %out
331+
332+
else:
333+
%e = atomicrmw add ptr %p, i64 %val seq_cst, !noalias.addrspace !4
334+
br label %out
335+
336+
out:
337+
ret void
338+
}
339+
340+
define void @hoist_noalias_addrspace_one(i1 %c, ptr %p, i64 %val) {
341+
; CHECK-LABEL: @hoist_noalias_addrspace_one(
342+
; CHECK-NEXT: if:
343+
; CHECK-NEXT: [[T:%.*]] = atomicrmw add ptr [[P:%.*]], i64 [[VAL:%.*]] seq_cst, align 8
344+
; CHECK-NEXT: ret void
345+
;
346+
if:
347+
br i1 %c, label %then, label %else
348+
349+
then:
350+
%t = atomicrmw add ptr %p, i64 %val seq_cst, !noalias.addrspace !4
351+
br label %out
352+
353+
else:
354+
%e = atomicrmw add ptr %p, i64 %val seq_cst
355+
br label %out
356+
357+
out:
358+
ret void
359+
}
360+
361+
define void @hoist_noalias_addrspace_switch(i64 %i, ptr %p, i64 %val) {
362+
; CHECK-LABEL: @hoist_noalias_addrspace_switch(
363+
; CHECK-NEXT: out:
364+
; CHECK-NEXT: [[T:%.*]] = atomicrmw add ptr [[P:%.*]], i64 [[VAL:%.*]] seq_cst, align 8
365+
; CHECK-NEXT: ret void
366+
;
367+
switch i64 %i, label %bb0 [
368+
i64 1, label %bb1
369+
i64 2, label %bb2
370+
]
371+
bb0:
372+
%t = atomicrmw add ptr %p, i64 %val seq_cst, !noalias.addrspace !4
373+
br label %out
374+
bb1:
375+
%e = atomicrmw add ptr %p, i64 %val seq_cst, !noalias.addrspace !5
376+
br label %out
377+
bb2:
378+
%f = atomicrmw add ptr %p, i64 %val seq_cst, !noalias.addrspace !6
379+
br label %out
380+
out:
381+
ret void
382+
}
383+
384+
319385
!0 = !{ i8 0, i8 1 }
320386
!1 = !{ i8 3, i8 5 }
321387
!2 = !{}
322388
!3 = !{ i8 7, i8 9 }
389+
!4 = !{i32 5, i32 6}
390+
!5 = !{i32 5, i32 7}
391+
!6 = !{i32 4, i32 8}
392+
323393
;.
324394
; CHECK: [[RNG0]] = !{i8 0, i8 1, i8 3, i8 5}
325395
; CHECK: [[RNG1]] = !{i8 0, i8 1, i8 3, i8 5, i8 7, i8 9}

0 commit comments

Comments
 (0)