1*a538b0f0SEhsan Amiri; RUN: llc -verify-machineinstrs < %s | FileCheck %s 2c4c6c876SHal Finkeltarget datalayout = "E-m:e-p:32:32-i128:64-n32" 3c4c6c876SHal Finkeltarget triple = "powerpc-ellcc-linux" 4c4c6c876SHal Finkel 5c4c6c876SHal Finkel; Function Attrs: nounwind 6c4c6c876SHal Finkeldefine void @foo1(i128* %a, i128* readonly %b, i128* readonly %c) #0 { 7c4c6c876SHal Finkelentry: 8c4c6c876SHal Finkel br label %for.body 9c4c6c876SHal Finkel 10c4c6c876SHal Finkelfor.body: ; preds = %for.body, %entry 11c4c6c876SHal Finkel %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] 12a79ac14fSDavid Blaikie %0 = load i128, i128* %b, align 16 13a79ac14fSDavid Blaikie %1 = load i128, i128* %c, align 16 14c4c6c876SHal Finkel %shl = shl i128 %0, %1 15c4c6c876SHal Finkel store i128 %shl, i128* %a, align 16 16c4c6c876SHal Finkel %inc = add nsw i32 %i.02, 1 17c4c6c876SHal Finkel %exitcond = icmp eq i32 %inc, 2048 18c4c6c876SHal Finkel br i1 %exitcond, label %for.end, label %for.body 19c4c6c876SHal Finkel 20c4c6c876SHal Finkelfor.end: ; preds = %for.body 21c4c6c876SHal Finkel ret void 22c4c6c876SHal Finkel 23c4c6c876SHal Finkel; CHECK-LABEL: @foo1 24c4c6c876SHal Finkel; CHECK-NOT: mtctr 25c4c6c876SHal Finkel} 26c4c6c876SHal Finkel 27c4c6c876SHal Finkel; Function Attrs: nounwind 28c4c6c876SHal Finkeldefine void @foo2(i128* %a, i128* readonly %b, i128* readonly %c) #0 { 29c4c6c876SHal Finkelentry: 30c4c6c876SHal Finkel br label %for.body 31c4c6c876SHal Finkel 32c4c6c876SHal Finkelfor.body: ; preds = %for.body, %entry 33c4c6c876SHal Finkel %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] 34a79ac14fSDavid Blaikie %0 = load i128, i128* %b, align 16 35a79ac14fSDavid Blaikie %1 = load i128, i128* %c, align 16 36c4c6c876SHal Finkel %shl = ashr i128 %0, %1 37c4c6c876SHal Finkel store i128 %shl, i128* %a, align 16 38c4c6c876SHal Finkel %inc = add nsw i32 %i.02, 1 39c4c6c876SHal Finkel %exitcond = icmp eq i32 %inc, 2048 40c4c6c876SHal Finkel br i1 %exitcond, label %for.end, label %for.body 41c4c6c876SHal Finkel 42c4c6c876SHal Finkelfor.end: ; preds = %for.body 43c4c6c876SHal Finkel ret void 44c4c6c876SHal Finkel 45c4c6c876SHal Finkel; CHECK-LABEL: @foo2 46c4c6c876SHal Finkel; CHECK-NOT: mtctr 47c4c6c876SHal Finkel} 48c4c6c876SHal Finkel 49c4c6c876SHal Finkel; Function Attrs: nounwind 50c4c6c876SHal Finkeldefine void @foo3(i128* %a, i128* readonly %b, i128* readonly %c) #0 { 51c4c6c876SHal Finkelentry: 52c4c6c876SHal Finkel br label %for.body 53c4c6c876SHal Finkel 54c4c6c876SHal Finkelfor.body: ; preds = %for.body, %entry 55c4c6c876SHal Finkel %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] 56a79ac14fSDavid Blaikie %0 = load i128, i128* %b, align 16 57a79ac14fSDavid Blaikie %1 = load i128, i128* %c, align 16 58c4c6c876SHal Finkel %shl = lshr i128 %0, %1 59c4c6c876SHal Finkel store i128 %shl, i128* %a, align 16 60c4c6c876SHal Finkel %inc = add nsw i32 %i.02, 1 61c4c6c876SHal Finkel %exitcond = icmp eq i32 %inc, 2048 62c4c6c876SHal Finkel br i1 %exitcond, label %for.end, label %for.body 63c4c6c876SHal Finkel 64c4c6c876SHal Finkelfor.end: ; preds = %for.body 65c4c6c876SHal Finkel ret void 66c4c6c876SHal Finkel 67c4c6c876SHal Finkel; CHECK-LABEL: @foo3 68c4c6c876SHal Finkel; CHECK-NOT: mtctr 69c4c6c876SHal Finkel} 70c4c6c876SHal Finkel 71c4c6c876SHal Finkelattributes #0 = { nounwind } 72c4c6c876SHal Finkel 73