Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/IndVarSimplify/rewrite-loop-exit-value.ll
Show First 20 Lines • Show All 163 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: br label [[FOR_BODY:%.*]] | ; CHECK-NEXT: br label [[FOR_BODY:%.*]] | ||||
; CHECK: for.body: | ; CHECK: for.body: | ||||
; CHECK-NEXT: [[INC8:%.*]] = phi i16 [ [[INC:%.*]], [[FOR_BODY]] ], [ 0, [[ENTRY:%.*]] ] | ; CHECK-NEXT: [[INC8:%.*]] = phi i16 [ [[INC:%.*]], [[FOR_BODY]] ], [ 0, [[ENTRY:%.*]] ] | ||||
; CHECK-NEXT: [[INC]] = add nuw nsw i16 [[INC8]], 1 | ; CHECK-NEXT: [[INC]] = add nuw nsw i16 [[INC8]], 1 | ||||
; CHECK-NEXT: [[MUL:%.*]] = mul nsw i16 [[INC8]], [[M:%.*]] | ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i16 [[INC8]], [[M:%.*]] | ||||
; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp sgt i16 [[MUL]], [[END:%.*]] | ; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp sgt i16 [[MUL]], [[END:%.*]] | ||||
; CHECK-NEXT: br i1 [[CMP_NOT]], label [[CRIT_EDGE:%.*]], label [[FOR_BODY]] | ; CHECK-NEXT: br i1 [[CMP_NOT]], label [[CRIT_EDGE:%.*]], label [[FOR_BODY]] | ||||
; CHECK: crit_edge: | ; CHECK: crit_edge: | ||||
; CHECK-NEXT: [[TMP0:%.*]] = call i16 @llvm.smax.i16(i16 [[END]], i16 -1) | ; CHECK-NEXT: [[TMP0:%.*]] = add i16 [[END]], 1 | ||||
; CHECK-NEXT: [[SMAX:%.*]] = add nsw i16 [[TMP0]], 1 | ; CHECK-NEXT: [[SMAX:%.*]] = call i16 @llvm.smax.i16(i16 [[TMP0]], i16 0) | ||||
; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i16 [[SMAX]], 0 | ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i16 [[END]], 32767 | ||||
; CHECK-NEXT: [[UMIN:%.*]] = zext i1 [[TMP1]] to i16 | ; CHECK-NEXT: [[UMIN:%.*]] = zext i1 [[TMP1]] to i16 | ||||
; CHECK-NEXT: [[TMP2:%.*]] = sub nsw i16 [[SMAX]], [[UMIN]] | ; CHECK-NEXT: [[TMP2:%.*]] = sub nsw i16 [[SMAX]], [[UMIN]] | ||||
; CHECK-NEXT: [[UMAX:%.*]] = call i16 @llvm.umax.i16(i16 [[M]], i16 1) | ; CHECK-NEXT: [[UMAX:%.*]] = call i16 @llvm.umax.i16(i16 [[M]], i16 1) | ||||
; CHECK-NEXT: [[TMP3:%.*]] = udiv i16 [[TMP2]], [[UMAX]] | ; CHECK-NEXT: [[TMP3:%.*]] = udiv i16 [[TMP2]], [[UMAX]] | ||||
; CHECK-NEXT: [[TMP4:%.*]] = add i16 [[TMP3]], [[UMIN]] | ; CHECK-NEXT: [[TMP4:%.*]] = add i16 [[TMP3]], [[UMIN]] | ||||
; CHECK-NEXT: ret i16 [[TMP4]] | ; CHECK-NEXT: ret i16 [[TMP4]] | ||||
; | ; | ||||
entry: | entry: | ||||
Show All 17 Lines |