1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O2 < %s 2*9880d681SAndroid Build Coastguard Worker; Check for successful compilation. It originally caused an abort due to 3*9880d681SAndroid Build Coastguard Worker; the "isBarrier" flag set on instructions that were not meant to have it. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i1:32-i64:64-a:0-v32:32-n16:32" 6*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind optsize readnone 9*9880d681SAndroid Build Coastguard Workerdefine void @dummy() #0 { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker ret void 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind optsize 15*9880d681SAndroid Build Coastguard Workerdefine void @conv3x3(i8* nocapture readonly %inp, i8* nocapture readonly %mask, i32 %shift, i8* nocapture %outp, i32 %width) #1 { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %cmp381 = icmp sgt i32 %width, 0 18*9880d681SAndroid Build Coastguard Worker %arrayidx16.gep = getelementptr i8, i8* %mask, i32 4 19*9880d681SAndroid Build Coastguard Worker %arrayidx19.gep = getelementptr i8, i8* %mask, i32 8 20*9880d681SAndroid Build Coastguard Worker br label %for.body 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerfor.body: ; preds = %for.inc48, %entry 23*9880d681SAndroid Build Coastguard Worker %i.086 = phi i32 [ 0, %entry ], [ %inc49, %for.inc48 ] 24*9880d681SAndroid Build Coastguard Worker %mul = mul nsw i32 %i.086, %width 25*9880d681SAndroid Build Coastguard Worker %arrayidx.sum = add i32 %mul, %width 26*9880d681SAndroid Build Coastguard Worker br i1 %cmp381, label %for.cond5.preheader.lr.ph, label %for.inc48 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerfor.cond5.preheader.lr.ph: ; preds = %for.body 29*9880d681SAndroid Build Coastguard Worker %add.ptr.sum = add i32 %arrayidx.sum, %width 30*9880d681SAndroid Build Coastguard Worker %add.ptr1 = getelementptr inbounds i8, i8* %inp, i32 %add.ptr.sum 31*9880d681SAndroid Build Coastguard Worker %add.ptr = getelementptr inbounds i8, i8* %inp, i32 %arrayidx.sum 32*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i8, i8* %inp, i32 %mul 33*9880d681SAndroid Build Coastguard Worker %arrayidx44.gep = getelementptr i8, i8* %outp, i32 %mul 34*9880d681SAndroid Build Coastguard Worker br label %for.cond5.preheader 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerfor.cond5.preheader: ; preds = %if.end40, %for.cond5.preheader.lr.ph 37*9880d681SAndroid Build Coastguard Worker %arrayidx44.phi = phi i8* [ %arrayidx44.gep, %for.cond5.preheader.lr.ph ], [ %arrayidx44.inc, %if.end40 ] 38*9880d681SAndroid Build Coastguard Worker %j.085 = phi i32 [ 0, %for.cond5.preheader.lr.ph ], [ %inc46, %if.end40 ] 39*9880d681SAndroid Build Coastguard Worker %IN1.084 = phi i8* [ %arrayidx, %for.cond5.preheader.lr.ph ], [ %incdec.ptr, %if.end40 ] 40*9880d681SAndroid Build Coastguard Worker %IN2.083 = phi i8* [ %add.ptr, %for.cond5.preheader.lr.ph ], [ %incdec.ptr33, %if.end40 ] 41*9880d681SAndroid Build Coastguard Worker %IN3.082 = phi i8* [ %add.ptr1, %for.cond5.preheader.lr.ph ], [ %incdec.ptr34, %if.end40 ] 42*9880d681SAndroid Build Coastguard Worker br label %for.body7 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerfor.body7: ; preds = %for.body7, %for.cond5.preheader 45*9880d681SAndroid Build Coastguard Worker %arrayidx8.phi = phi i8* [ %IN1.084, %for.cond5.preheader ], [ %arrayidx8.inc, %for.body7 ] 46*9880d681SAndroid Build Coastguard Worker %arrayidx9.phi = phi i8* [ %IN2.083, %for.cond5.preheader ], [ %arrayidx9.inc, %for.body7 ] 47*9880d681SAndroid Build Coastguard Worker %arrayidx11.phi = phi i8* [ %IN3.082, %for.cond5.preheader ], [ %arrayidx11.inc, %for.body7 ] 48*9880d681SAndroid Build Coastguard Worker %arrayidx13.phi = phi i8* [ %mask, %for.cond5.preheader ], [ %arrayidx13.inc, %for.body7 ] 49*9880d681SAndroid Build Coastguard Worker %arrayidx16.phi = phi i8* [ %arrayidx16.gep, %for.cond5.preheader ], [ %arrayidx16.inc, %for.body7 ] 50*9880d681SAndroid Build Coastguard Worker %arrayidx19.phi = phi i8* [ %arrayidx19.gep, %for.cond5.preheader ], [ %arrayidx19.inc, %for.body7 ] 51*9880d681SAndroid Build Coastguard Worker %k.080 = phi i32 [ 0, %for.cond5.preheader ], [ %inc, %for.body7 ] 52*9880d681SAndroid Build Coastguard Worker %sum.079 = phi i32 [ 0, %for.cond5.preheader ], [ %add32, %for.body7 ] 53*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %arrayidx8.phi, align 1, !tbaa !1 54*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* %arrayidx9.phi, align 1, !tbaa !1 55*9880d681SAndroid Build Coastguard Worker %2 = load i8, i8* %arrayidx11.phi, align 1, !tbaa !1 56*9880d681SAndroid Build Coastguard Worker %3 = load i8, i8* %arrayidx13.phi, align 1, !tbaa !1 57*9880d681SAndroid Build Coastguard Worker %4 = load i8, i8* %arrayidx16.phi, align 1, !tbaa !1 58*9880d681SAndroid Build Coastguard Worker %5 = load i8, i8* %arrayidx19.phi, align 1, !tbaa !1 59*9880d681SAndroid Build Coastguard Worker %conv21 = zext i8 %0 to i32 60*9880d681SAndroid Build Coastguard Worker %conv22 = sext i8 %3 to i32 61*9880d681SAndroid Build Coastguard Worker %mul23 = mul nsw i32 %conv22, %conv21 62*9880d681SAndroid Build Coastguard Worker %conv24 = zext i8 %1 to i32 63*9880d681SAndroid Build Coastguard Worker %conv25 = sext i8 %4 to i32 64*9880d681SAndroid Build Coastguard Worker %mul26 = mul nsw i32 %conv25, %conv24 65*9880d681SAndroid Build Coastguard Worker %conv27 = zext i8 %2 to i32 66*9880d681SAndroid Build Coastguard Worker %conv28 = sext i8 %5 to i32 67*9880d681SAndroid Build Coastguard Worker %mul29 = mul nsw i32 %conv28, %conv27 68*9880d681SAndroid Build Coastguard Worker %add30 = add i32 %mul23, %sum.079 69*9880d681SAndroid Build Coastguard Worker %add31 = add i32 %add30, %mul26 70*9880d681SAndroid Build Coastguard Worker %add32 = add i32 %add31, %mul29 71*9880d681SAndroid Build Coastguard Worker %inc = add nsw i32 %k.080, 1 72*9880d681SAndroid Build Coastguard Worker %exitcond = icmp eq i32 %inc, 3 73*9880d681SAndroid Build Coastguard Worker %arrayidx8.inc = getelementptr i8, i8* %arrayidx8.phi, i32 1 74*9880d681SAndroid Build Coastguard Worker %arrayidx9.inc = getelementptr i8, i8* %arrayidx9.phi, i32 1 75*9880d681SAndroid Build Coastguard Worker %arrayidx11.inc = getelementptr i8, i8* %arrayidx11.phi, i32 1 76*9880d681SAndroid Build Coastguard Worker %arrayidx13.inc = getelementptr i8, i8* %arrayidx13.phi, i32 1 77*9880d681SAndroid Build Coastguard Worker %arrayidx16.inc = getelementptr i8, i8* %arrayidx16.phi, i32 1 78*9880d681SAndroid Build Coastguard Worker %arrayidx19.inc = getelementptr i8, i8* %arrayidx19.phi, i32 1 79*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.end, label %for.body7 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Workerfor.end: ; preds = %for.body7 82*9880d681SAndroid Build Coastguard Worker %incdec.ptr = getelementptr inbounds i8, i8* %IN1.084, i32 1 83*9880d681SAndroid Build Coastguard Worker %incdec.ptr33 = getelementptr inbounds i8, i8* %IN2.083, i32 1 84*9880d681SAndroid Build Coastguard Worker %incdec.ptr34 = getelementptr inbounds i8, i8* %IN3.082, i32 1 85*9880d681SAndroid Build Coastguard Worker %shr = ashr i32 %add32, %shift 86*9880d681SAndroid Build Coastguard Worker %cmp35 = icmp slt i32 %shr, 0 87*9880d681SAndroid Build Coastguard Worker br i1 %cmp35, label %if.end40, label %if.end 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %for.end 90*9880d681SAndroid Build Coastguard Worker %cmp37 = icmp sgt i32 %shr, 255 91*9880d681SAndroid Build Coastguard Worker br i1 %cmp37, label %if.then39, label %if.end40 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerif.then39: ; preds = %if.end 94*9880d681SAndroid Build Coastguard Worker br label %if.end40 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerif.end40: ; preds = %for.end, %if.then39, %if.end 97*9880d681SAndroid Build Coastguard Worker %sum.2 = phi i32 [ 255, %if.then39 ], [ %shr, %if.end ], [ 0, %for.end ] 98*9880d681SAndroid Build Coastguard Worker %conv41 = trunc i32 %sum.2 to i8 99*9880d681SAndroid Build Coastguard Worker store i8 %conv41, i8* %arrayidx44.phi, align 1, !tbaa !1 100*9880d681SAndroid Build Coastguard Worker %inc46 = add nsw i32 %j.085, 1 101*9880d681SAndroid Build Coastguard Worker %exitcond87 = icmp eq i32 %inc46, %width 102*9880d681SAndroid Build Coastguard Worker %arrayidx44.inc = getelementptr i8, i8* %arrayidx44.phi, i32 1 103*9880d681SAndroid Build Coastguard Worker br i1 %exitcond87, label %for.inc48.loopexit, label %for.cond5.preheader 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerfor.inc48.loopexit: ; preds = %if.end40 106*9880d681SAndroid Build Coastguard Worker br label %for.inc48 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workerfor.inc48: ; preds = %for.inc48.loopexit, %for.body 109*9880d681SAndroid Build Coastguard Worker %inc49 = add nsw i32 %i.086, 1 110*9880d681SAndroid Build Coastguard Worker %exitcond88 = icmp eq i32 %inc49, 2 111*9880d681SAndroid Build Coastguard Worker br i1 %exitcond88, label %for.end50, label %for.body 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerfor.end50: ; preds = %for.inc48 114*9880d681SAndroid Build Coastguard Worker ret void 115*9880d681SAndroid Build Coastguard Worker} 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind optsize readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 118*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind optsize "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!0} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker!0 = !{!"Clang 3.1"} 123*9880d681SAndroid Build Coastguard Worker!1 = !{!2, !2, i64 0} 124*9880d681SAndroid Build Coastguard Worker!2 = !{!"omnipotent char", !3, i64 0} 125*9880d681SAndroid Build Coastguard Worker!3 = !{!"Simple C/C++ TBAA"} 126