@@ -1437,11 +1437,10 @@ define i32 @and31_add_sexts(i1 %x, i1 %y) {
14371437
14381438define i32 @lshr_add_use_sexts (i1 %x , i1 %y , ptr %p ) {
14391439; CHECK-LABEL: @lshr_add_use_sexts(
1440- ; CHECK-NEXT: [[XS:%.*]] = sext i1 [[X:%.*]] to i32
14411440; CHECK-NEXT: [[YS:%.*]] = sext i1 [[Y:%.*]] to i32
14421441; CHECK-NEXT: store i32 [[YS]], ptr [[P:%.*]], align 4
1443- ; CHECK-NEXT: [[SUB :%.*]] = add nsw i32 [[XS ]], [[YS ]]
1444- ; CHECK-NEXT: [[R:%.*]] = lshr i32 [[SUB]], 31
1442+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i1 [[X:%.* ]], [[Y ]]
1443+ ; CHECK-NEXT: [[R:%.*]] = zext i1 [[TMP1]] to i32
14451444; CHECK-NEXT: ret i32 [[R]]
14461445;
14471446 %xs = sext i1 %x to i32
@@ -1456,9 +1455,8 @@ define i32 @lshr_add_use_sexts_2(i1 %x, i1 %y, ptr %p) {
14561455; CHECK-LABEL: @lshr_add_use_sexts_2(
14571456; CHECK-NEXT: [[XS:%.*]] = sext i1 [[X:%.*]] to i32
14581457; CHECK-NEXT: store i32 [[XS]], ptr [[P:%.*]], align 4
1459- ; CHECK-NEXT: [[YS:%.*]] = sext i1 [[Y:%.*]] to i32
1460- ; CHECK-NEXT: [[SUB:%.*]] = add nsw i32 [[XS]], [[YS]]
1461- ; CHECK-NEXT: [[R:%.*]] = lshr i32 [[SUB]], 31
1458+ ; CHECK-NEXT: [[TMP1:%.*]] = or i1 [[X]], [[Y:%.*]]
1459+ ; CHECK-NEXT: [[R:%.*]] = zext i1 [[TMP1]] to i32
14621460; CHECK-NEXT: ret i32 [[R]]
14631461;
14641462 %xs = sext i1 %x to i32
0 commit comments