Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/InstCombine/lshr.ll
Show First 20 Lines • Show All 1,037 Lines • ▼ Show 20 Lines | ; | ||||
%lshr = lshr i2 %add, 1 | %lshr = lshr i2 %add, 1 | ||||
ret i2 %lshr | ret i2 %lshr | ||||
} | } | ||||
; negative test - need bools | ; negative test - need bools | ||||
define i4 @not_bool_add_lshr(i2 %a, i2 %b) { | define i4 @not_bool_add_lshr(i2 %a, i2 %b) { | ||||
; CHECK-LABEL: @not_bool_add_lshr( | ; CHECK-LABEL: @not_bool_add_lshr( | ||||
; CHECK-NEXT: [[ZEXT_A:%.*]] = zext i2 [[A:%.*]] to i4 | ; CHECK-NEXT: [[TMP1:%.*]] = xor i2 [[A:%.*]], -1 | ||||
; CHECK-NEXT: [[ZEXT_B:%.*]] = zext i2 [[B:%.*]] to i4 | ; CHECK-NEXT: [[ADD_NARROWED_OVERFLOW:%.*]] = icmp ult i2 [[TMP1]], [[B:%.*]] | ||||
; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i4 [[ZEXT_A]], [[ZEXT_B]] | ; CHECK-NEXT: [[LSHR:%.*]] = zext i1 [[ADD_NARROWED_OVERFLOW]] to i4 | ||||
; CHECK-NEXT: [[LSHR:%.*]] = lshr i4 [[ADD]], 2 | |||||
; CHECK-NEXT: ret i4 [[LSHR]] | ; CHECK-NEXT: ret i4 [[LSHR]] | ||||
; | ; | ||||
%zext.a = zext i2 %a to i4 | %zext.a = zext i2 %a to i4 | ||||
%zext.b = zext i2 %b to i4 | %zext.b = zext i2 %b to i4 | ||||
%add = add i4 %zext.a, %zext.b | %add = add i4 %zext.a, %zext.b | ||||
%lshr = lshr i4 %add, 2 | %lshr = lshr i4 %add, 2 | ||||
ret i4 %lshr | ret i4 %lshr | ||||
} | } | ||||
▲ Show 20 Lines • Show All 109 Lines • Show Last 20 Lines |