@@ -6,9 +6,8 @@ declare void @use(i8)
66define i1 @fold_sext_to_and (i8 %x ) {
77; CHECK-LABEL: define i1 @fold_sext_to_and(
88; CHECK-SAME: i8 [[X:%.*]]) {
9- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
10- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
11- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
9+ ; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[X]], -127
10+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i8 [[TMP1]], 1
1211; CHECK-NEXT: ret i1 [[TMP3]]
1312;
1413 %1 = sext i8 %x to i32
@@ -22,8 +21,8 @@ define i1 @fold_sext_to_and_multi_use(i8 %x) {
2221; CHECK-SAME: i8 [[X:%.*]]) {
2322; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
2423; CHECK-NEXT: call void @use(i32 [[TMP1]])
25- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1 ]], -2147483647
26- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
24+ ; CHECK-NEXT: [[TMP2:%.*]] = and i8 [[X ]], -127
25+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i8 [[TMP2]], 1
2726; CHECK-NEXT: ret i1 [[TMP3]]
2827;
2928 %1 = sext i8 %x to i32
@@ -37,11 +36,8 @@ define i1 @fold_sext_to_and_multi_use(i8 %x) {
3736
3837define i1 @fold_sext_to_and_wrong (i8 %x ) {
3938; CHECK-LABEL: define i1 @fold_sext_to_and_wrong(
40- ; CHECK-SAME: i2 [[X:%.*]]) {
41- ; CHECK-NEXT: [[TMP1:%.*]] = sext i2 [[X]] to i32
42- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
43- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
44- ; CHECK-NEXT: ret i1 [[TMP3]]
39+ ; CHECK-SAME: i8 [[X:%.*]]) {
40+ ; CHECK-NEXT: ret i1 false
4541;
4642 %1 = sext i8 %x to i32
4743 %2 = and i32 %1 , -2147483647
0 commit comments