82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -mtriple=x86_64-unknown-linux-gnu -passes='loop-unroll' -unroll-runtime -S < %s 2>&1 | FileCheck %s3 4define void @mask-high(i64 %arg, ptr dereferenceable(4) %arg1) {5; CHECK-LABEL: @mask-high(6; CHECK-NEXT: bb:7; CHECK-NEXT: [[I:%.*]] = load i32, ptr [[ARG1:%.*]], align 48; CHECK-NEXT: [[I2:%.*]] = sext i32 [[I]] to i649; CHECK-NEXT: [[I3:%.*]] = and i64 [[ARG:%.*]], -1610; CHECK-NEXT: [[I4:%.*]] = or disjoint i64 1, [[I3]]11; CHECK-NEXT: [[I5:%.*]] = icmp sgt i64 [[I4]], [[I2]]12; CHECK-NEXT: br i1 [[I5]], label [[BB10:%.*]], label [[BB6_PREHEADER:%.*]]13; CHECK: bb6.preheader:14; CHECK-NEXT: br label [[BB6:%.*]]15; CHECK: bb6:16; CHECK-NEXT: [[I7:%.*]] = phi i64 [ [[I8:%.*]], [[BB6]] ], [ [[I4]], [[BB6_PREHEADER]] ]17; CHECK-NEXT: [[I8]] = add i64 [[I7]], 118; CHECK-NEXT: [[I9:%.*]] = icmp slt i64 [[I7]], [[I2]]19; CHECK-NEXT: br i1 [[I9]], label [[BB6]], label [[BB10_LOOPEXIT:%.*]]20; CHECK: bb10.loopexit:21; CHECK-NEXT: br label [[BB10]]22; CHECK: bb10:23; CHECK-NEXT: ret void24;25bb:26 %i = load i32, ptr %arg1, align 427 %i2 = sext i32 %i to i6428 %i3 = and i64 %arg, -1629 %i4 = or disjoint i64 1, %i330 %i5 = icmp sgt i64 %i4, %i231 br i1 %i5, label %bb10, label %bb632 33bb6: ; preds = %bb6, %bb34 %i7 = phi i64 [ %i4, %bb ], [ %i8, %bb6 ]35 %i8 = add i64 %i7, 136 %i9 = icmp slt i64 %i7, %i237 br i1 %i9, label %bb6, label %bb1038 39bb10: ; preds = %bb6, %bb40 ret void41}42 43 44define void @mask-low(i64 %arg, ptr dereferenceable(4) %arg1) {45; CHECK-LABEL: @mask-low(46; CHECK-NEXT: bb:47; CHECK-NEXT: [[I:%.*]] = load i32, ptr [[ARG1:%.*]], align 448; CHECK-NEXT: [[I2:%.*]] = sext i32 [[I]] to i6449; CHECK-NEXT: [[I3:%.*]] = and i64 [[ARG:%.*]], 1650; CHECK-NEXT: [[I4:%.*]] = add i64 1, [[I3]]51; CHECK-NEXT: [[I5:%.*]] = icmp sgt i64 [[I4]], [[I2]]52; CHECK-NEXT: br i1 [[I5]], label [[BB10:%.*]], label [[BB6_PREHEADER:%.*]]53; CHECK: bb6.preheader:54; CHECK-NEXT: br label [[BB6:%.*]]55; CHECK: bb6:56; CHECK-NEXT: [[I7:%.*]] = phi i64 [ [[I8:%.*]], [[BB6]] ], [ [[I4]], [[BB6_PREHEADER]] ]57; CHECK-NEXT: [[I8]] = add i64 [[I7]], 158; CHECK-NEXT: [[I9:%.*]] = icmp slt i64 [[I7]], [[I2]]59; CHECK-NEXT: br i1 [[I9]], label [[BB6]], label [[BB10_LOOPEXIT:%.*]]60; CHECK: bb10.loopexit:61; CHECK-NEXT: br label [[BB10]]62; CHECK: bb10:63; CHECK-NEXT: ret void64;65bb:66 %i = load i32, ptr %arg1, align 467 %i2 = sext i32 %i to i6468 %i3 = and i64 %arg, 1669 %i4 = add i64 1, %i370 %i5 = icmp sgt i64 %i4, %i271 br i1 %i5, label %bb10, label %bb672 73bb6: ; preds = %bb6, %bb74 %i7 = phi i64 [ %i4, %bb ], [ %i8, %bb6 ]75 %i8 = add i64 %i7, 176 %i9 = icmp slt i64 %i7, %i277 br i1 %i9, label %bb6, label %bb1078 79bb10: ; preds = %bb6, %bb80 ret void81}82