@@ -1435,15 +1435,12 @@ define i32 @and31_add_sexts(i1 %x, i1 %y) {
1435
1435
ret i32 %r
1436
1436
}
1437
1437
1438
- ; Negative test - extra use
1439
-
1440
1438
define i32 @lshr_add_use_sexts (i1 %x , i1 %y , ptr %p ) {
1441
1439
; CHECK-LABEL: @lshr_add_use_sexts(
1442
1440
; CHECK-NEXT: [[XS:%.*]] = sext i1 [[X:%.*]] to i32
1443
1441
; CHECK-NEXT: store i32 [[XS]], ptr [[P:%.*]], align 4
1444
- ; CHECK-NEXT: [[YS:%.*]] = sext i1 [[Y:%.*]] to i32
1445
- ; CHECK-NEXT: [[SUB:%.*]] = add nsw i32 [[XS]], [[YS]]
1446
- ; CHECK-NEXT: [[R:%.*]] = lshr i32 [[SUB]], 31
1442
+ ; CHECK-NEXT: [[TMP1:%.*]] = or i1 [[X]], [[Y:%.*]]
1443
+ ; CHECK-NEXT: [[R:%.*]] = zext i1 [[TMP1]] to i32
1447
1444
; CHECK-NEXT: ret i32 [[R]]
1448
1445
;
1449
1446
%xs = sext i1 %x to i32
@@ -1454,15 +1451,12 @@ define i32 @lshr_add_use_sexts(i1 %x, i1 %y, ptr %p) {
1454
1451
ret i32 %r
1455
1452
}
1456
1453
1457
- ; Negative test - extra use
1458
-
1459
1454
define i32 @lshr_add_use2_sexts (i1 %x , i1 %y , ptr %p ) {
1460
1455
; CHECK-LABEL: @lshr_add_use2_sexts(
1461
- ; CHECK-NEXT: [[XS:%.*]] = sext i1 [[X:%.*]] to i32
1462
1456
; CHECK-NEXT: [[YS:%.*]] = sext i1 [[Y:%.*]] to i32
1463
1457
; CHECK-NEXT: store i32 [[YS]], ptr [[P:%.*]], align 4
1464
- ; CHECK-NEXT: [[SUB :%.*]] = add nsw i32 [[XS ]], [[YS ]]
1465
- ; CHECK-NEXT: [[R:%.*]] = lshr i32 [[SUB]], 31
1458
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i1 [[X:%.* ]], [[Y ]]
1459
+ ; CHECK-NEXT: [[R:%.*]] = zext i1 [[TMP1]] to i32
1466
1460
; CHECK-NEXT: ret i32 [[R]]
1467
1461
;
1468
1462
%xs = sext i1 %x to i32
@@ -4018,8 +4012,8 @@ define i32 @add_reduce_sqr_sum_varC_invalid2(i32 %a, i32 %b) {
4018
4012
4019
4013
define i32 @fold_sext_addition_or_disjoint (i8 %x ) {
4020
4014
; CHECK-LABEL: @fold_sext_addition_or_disjoint(
4021
- ; CHECK-NEXT: [[SE :%.*]] = sext i8 [[XX :%.*]] to i32
4022
- ; CHECK-NEXT: [[R:%.*]] = add nsw i32 [[SE ]], 1246
4015
+ ; CHECK-NEXT: [[TMP1 :%.*]] = sext i8 [[X :%.*]] to i32
4016
+ ; CHECK-NEXT: [[R:%.*]] = add nsw i32 [[TMP1 ]], 1246
4023
4017
; CHECK-NEXT: ret i32 [[R]]
4024
4018
;
4025
4019
%xx = or disjoint i8 %x , 12
@@ -4043,8 +4037,8 @@ define i32 @fold_sext_addition_fail(i8 %x) {
4043
4037
4044
4038
define i32 @fold_zext_addition_or_disjoint (i8 %x ) {
4045
4039
; CHECK-LABEL: @fold_zext_addition_or_disjoint(
4046
- ; CHECK-NEXT: [[SE :%.*]] = zext i8 [[XX :%.*]] to i32
4047
- ; CHECK-NEXT: [[R:%.*]] = add nuw nsw i32 [[SE ]], 1246
4040
+ ; CHECK-NEXT: [[TMP1 :%.*]] = zext i8 [[X :%.*]] to i32
4041
+ ; CHECK-NEXT: [[R:%.*]] = add nuw nsw i32 [[TMP1 ]], 1246
4048
4042
; CHECK-NEXT: ret i32 [[R]]
4049
4043
;
4050
4044
%xx = or disjoint i8 %x , 12
@@ -4055,9 +4049,9 @@ define i32 @fold_zext_addition_or_disjoint(i8 %x) {
4055
4049
4056
4050
define i32 @fold_zext_addition_or_disjoint2 (i8 %x ) {
4057
4051
; CHECK-LABEL: @fold_zext_addition_or_disjoint2(
4058
- ; CHECK-NEXT: [[XX :%.*]] = add nuw i8 [[X:%.*]], 4
4059
- ; CHECK-NEXT: [[SE :%.*]] = zext i8 [[XX ]] to i32
4060
- ; CHECK-NEXT: ret i32 [[SE ]]
4052
+ ; CHECK-NEXT: [[TMP1 :%.*]] = add nuw i8 [[X:%.*]], 4
4053
+ ; CHECK-NEXT: [[R :%.*]] = zext i8 [[TMP1 ]] to i32
4054
+ ; CHECK-NEXT: ret i32 [[R ]]
4061
4055
;
4062
4056
%xx = or disjoint i8 %x , 18
4063
4057
%se = zext i8 %xx to i32
0 commit comments