[VectorCombine] scalarizeLoadExtract - don't create scalar loads if a… · llvm/llvm-project@548d057 (original) (raw)

Original file line number Diff line number Diff line change
@@ -24,3 +24,15 @@ define void @multiple_extract(ptr %p) {
24 24 store i32 %e1, ptr %p1, align 4
25 25 ret void
26 26 }
27 +
28 +; infinite loop if we fold an extract that is waiting to be erased
29 +define void @unused_extract(ptr %p) {
30 +; CHECK-LABEL: @unused_extract(
31 +; CHECK-NEXT: ret void
32 +;
33 +%load = load <4 x float>, ptr %p, align 8
34 +%shuffle0 = shufflevector <4 x float> zeroinitializer, <4 x float> %load, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
35 +%shuffle1 = shufflevector <4 x float> %shuffle0, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison>
36 +%extract = extractelement <4 x float> %load, i64 1
37 +ret void
38 +}