Krzysztof Parzyszek | df24da2 | 2016-12-22 18:49:55 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=hexagon -mcpu=hexagonv5 < %s |
| 2 | ; REQUIRES: asserts |
| 3 | |
| 4 | define void @test(i8* noalias nocapture readonly %src, i32 %srcStride) local_unnamed_addr #0 { |
| 5 | entry: |
| 6 | %add.ptr = getelementptr inbounds i8, i8* %src, i32 %srcStride |
| 7 | %add.ptr2 = getelementptr inbounds i8, i8* %add.ptr, i32 %srcStride |
| 8 | %add.ptr3 = getelementptr inbounds i8, i8* %add.ptr2, i32 %srcStride |
| 9 | br label %for.body9.epil |
| 10 | |
| 11 | for.body9.epil: |
| 12 | %inc.sink385.epil = phi i32 [ %add17.epil, %for.body9.epil ], [ 2, %entry ] |
| 13 | %sr.epil = phi i8 [ %0, %for.body9.epil ], [ undef, %entry ] |
| 14 | %sr431.epil = phi i8 [ %2, %for.body9.epil ], [ 0, %entry ] |
| 15 | %sr432.epil = phi i8 [ %sr431.epil, %for.body9.epil ], [ 0, %entry ] |
| 16 | %epil.iter = phi i32 [ %epil.iter.sub, %for.body9.epil ], [ undef, %entry ] |
| 17 | %sub11.epil = add i32 %inc.sink385.epil, -1 |
| 18 | %add17.epil = add nuw i32 %inc.sink385.epil, 1 |
| 19 | %conv19.epil = zext i8 %sr.epil to i32 |
| 20 | %add21.epil = add i32 %inc.sink385.epil, 2 |
| 21 | %arrayidx22.epil = getelementptr inbounds i8, i8* %src, i32 %add21.epil |
| 22 | %0 = load i8, i8* %arrayidx22.epil, align 1 |
| 23 | %conv23.epil = zext i8 %0 to i32 |
| 24 | %1 = load i8, i8* undef, align 1 |
| 25 | %conv42.epil = zext i8 %1 to i32 |
| 26 | %conv53.epil = zext i8 %sr432.epil to i32 |
| 27 | %2 = load i8, i8* undef, align 1 |
| 28 | %conv61.epil = zext i8 %2 to i32 |
| 29 | %3 = load i8, i8* undef, align 1 |
| 30 | %conv65.epil = zext i8 %3 to i32 |
| 31 | %4 = load i8, i8* null, align 1 |
| 32 | %conv69.epil = zext i8 %4 to i32 |
| 33 | %5 = load i8, i8* undef, align 1 |
| 34 | %conv72.epil = zext i8 %5 to i32 |
| 35 | %6 = load i8, i8* undef, align 1 |
| 36 | %conv76.epil = zext i8 %6 to i32 |
| 37 | %7 = load i8, i8* undef, align 1 |
| 38 | %conv80.epil = zext i8 %7 to i32 |
| 39 | %8 = load i8, i8* undef, align 1 |
| 40 | %conv84.epil = zext i8 %8 to i32 |
| 41 | %9 = load i8, i8* undef, align 1 |
| 42 | %conv88.epil = zext i8 %9 to i32 |
| 43 | %10 = load i8, i8* undef, align 1 |
| 44 | %conv91.epil = zext i8 %10 to i32 |
| 45 | %11 = load i8, i8* undef, align 1 |
| 46 | %conv95.epil = zext i8 %11 to i32 |
| 47 | %12 = load i8, i8* undef, align 1 |
| 48 | %conv99.epil = zext i8 %12 to i32 |
| 49 | %add.epil = add nuw nsw i32 0, %conv19.epil |
| 50 | %add16.epil = add nuw nsw i32 %add.epil, 0 |
| 51 | %add20.epil = add nuw nsw i32 %add16.epil, 0 |
| 52 | %add24.epil = add nuw nsw i32 %add20.epil, 0 |
| 53 | %add28.epil = add nuw nsw i32 %add24.epil, 0 |
| 54 | %add32.epil = add nuw nsw i32 %add28.epil, 0 |
| 55 | %add35.epil = add i32 %add32.epil, 0 |
| 56 | %add39.epil = add i32 %add35.epil, 0 |
| 57 | %add43.epil = add i32 %add39.epil, %conv53.epil |
| 58 | %add47.epil = add i32 %add43.epil, 0 |
| 59 | %add51.epil = add i32 %add47.epil, 0 |
| 60 | %add54.epil = add i32 %add51.epil, %conv23.epil |
| 61 | %add58.epil = add i32 %add54.epil, %conv42.epil |
| 62 | %add62.epil = add i32 %add58.epil, %conv61.epil |
| 63 | %add66.epil = add i32 %add62.epil, %conv65.epil |
| 64 | %add70.epil = add i32 %add66.epil, %conv69.epil |
| 65 | %add73.epil = add i32 %add70.epil, %conv72.epil |
| 66 | %add77.epil = add i32 %add73.epil, %conv76.epil |
| 67 | %add81.epil = add i32 %add77.epil, %conv80.epil |
| 68 | %add85.epil = add i32 %add81.epil, %conv84.epil |
| 69 | %add89.epil = add i32 %add85.epil, %conv88.epil |
| 70 | %add92.epil = add i32 %add89.epil, %conv91.epil |
| 71 | %add96.epil = add i32 %add92.epil, %conv95.epil |
| 72 | %add100.epil = add i32 %add96.epil, %conv99.epil |
| 73 | %mul.epil = mul nsw i32 %add100.epil, 2621 |
| 74 | %add101.epil = add nsw i32 %mul.epil, 32768 |
| 75 | %shr369.epil = lshr i32 %add101.epil, 16 |
| 76 | %conv102.epil = trunc i32 %shr369.epil to i8 |
| 77 | %arrayidx103.epil = getelementptr inbounds i8, i8* undef, i32 %inc.sink385.epil |
| 78 | store i8 %conv102.epil, i8* %arrayidx103.epil, align 1 |
| 79 | %epil.iter.sub = add i32 %epil.iter, -1 |
| 80 | %epil.iter.cmp = icmp eq i32 %epil.iter.sub, 0 |
| 81 | br i1 %epil.iter.cmp, label %for.end, label %for.body9.epil |
| 82 | |
| 83 | for.end: |
| 84 | unreachable |
| 85 | } |
| 86 | |
| 87 | attributes #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" } |
| 88 | |