1; RUN: llc -march=hexagon -mcpu=hexagonv5 -verify-machineinstrs < %s 2 3; Test that the name rewriter code doesn't chase the Phi operands for 4; Phis that do not occur in the loop that is being pipelined. 5 6define void @test(i32 %srcStride) local_unnamed_addr #0 { 7entry: 8 br label %for.body 9 10for.body: 11 %add.ptr3.pn = phi i8* [ undef, %entry ], [ %src4.0394, %for.end ] 12 %src2.0390 = phi i8* [ undef, %entry ], [ %add.ptr3.pn, %for.end ] 13 %src4.0394 = getelementptr inbounds i8, i8* %add.ptr3.pn, i32 %srcStride 14 %sri414 = load i8, i8* undef, align 1 15 br i1 undef, label %for.body9.epil, label %for.body9.preheader.new 16 17for.body9.preheader.new: 18 br label %for.body9.epil 19 20for.body9.epil: 21 %inc.sink385.epil = phi i32 [ %add17.epil, %for.body9.epil ], [ 2, %for.body ], [ undef, %for.body9.preheader.new ] 22 %sr420.epil = phi i8 [ undef, %for.body9.epil ], [ %sri414, %for.body ], [ undef, %for.body9.preheader.new ] 23 %sr421.epil = phi i8 [ %sr420.epil, %for.body9.epil ], [ undef, %for.body ], [ undef, %for.body9.preheader.new ] 24 %sr422.epil = phi i8 [ %sr421.epil, %for.body9.epil ], [ 0, %for.body ], [ undef, %for.body9.preheader.new ] 25 %epil.iter = phi i32 [ %epil.iter.sub, %for.body9.epil ], [ undef, %for.body9.preheader.new ], [ undef, %for.body ] 26 %add17.epil = add nuw i32 %inc.sink385.epil, 1 27 %add21.epil = add i32 %inc.sink385.epil, 2 28 %arrayidx22.epil = getelementptr inbounds i8, i8* undef, i32 %add21.epil 29 %conv27.epil = zext i8 %sr422.epil to i32 30 %0 = load i8, i8* null, align 1 31 %conv61.epil = zext i8 %0 to i32 32 %arrayidx94.epil = getelementptr inbounds i8, i8* %src4.0394, i32 %add17.epil 33 %1 = load i8, i8* %arrayidx94.epil, align 1 34 %add35.epil = add i32 0, %conv27.epil 35 %add39.epil = add i32 %add35.epil, 0 36 %add43.epil = add i32 %add39.epil, 0 37 %add47.epil = add i32 %add43.epil, 0 38 %add51.epil = add i32 %add47.epil, 0 39 %add54.epil = add i32 %add51.epil, 0 40 %add58.epil = add i32 %add54.epil, 0 41 %add62.epil = add i32 %add58.epil, %conv61.epil 42 %add66.epil = add i32 %add62.epil, 0 43 %add70.epil = add i32 %add66.epil, 0 44 %add73.epil = add i32 %add70.epil, 0 45 %add77.epil = add i32 %add73.epil, 0 46 %add81.epil = add i32 %add77.epil, 0 47 %add85.epil = add i32 %add81.epil, 0 48 %add89.epil = add i32 %add85.epil, 0 49 %add92.epil = add i32 %add89.epil, 0 50 %add96.epil = add i32 %add92.epil, 0 51 %add100.epil = add i32 %add96.epil, 0 52 %mul.epil = mul nsw i32 %add100.epil, 2621 53 %add101.epil = add nsw i32 %mul.epil, 32768 54 %shr369.epil = lshr i32 %add101.epil, 16 55 %conv102.epil = trunc i32 %shr369.epil to i8 56 store i8 %conv102.epil, i8* undef, align 1 57 %epil.iter.sub = add i32 %epil.iter, -1 58 %epil.iter.cmp = icmp eq i32 %epil.iter.sub, 0 59 br i1 %epil.iter.cmp, label %for.end, label %for.body9.epil 60 61for.end: 62 br label %for.body 63} 64 65attributes #0 = { norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "unsafe-fp-math"="false" "use-soft-float"="false" } 66