@@ -1981,13 +1981,10 @@ define i1 @logical_or_logical_or_icmps_comm3(i8 %x, i8 %y, i8 %z) {
19811981
19821982define i1 @bitwise_and_logical_and_masked_icmp_asymmetric (i1 %c , i32 %x ) {
19831983; CHECK-LABEL: @bitwise_and_logical_and_masked_icmp_asymmetric(
1984- ; CHECK-NEXT: [[X_M1:%.*]] = and i32 [[X:%.*]], 255
1985- ; CHECK-NEXT: [[C1:%.*]] = icmp ne i32 [[X_M1]], 0
1986- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[C1]], i1 [[C:%.*]], i1 false
1987- ; CHECK-NEXT: [[X_M2:%.*]] = and i32 [[X]], 11
1984+ ; CHECK-NEXT: [[X_M2:%.*]] = and i32 [[X:%.*]], 11
19881985; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X_M2]], 11
1989- ; CHECK-NEXT: [[AND2 :%.*]] = and i1 [[AND1 ]], [[C2]]
1990- ; CHECK-NEXT: ret i1 [[AND2 ]]
1986+ ; CHECK-NEXT: [[TMP1 :%.*]] = select i1 [[C2 ]], i1 [[C:%.*]], i1 false
1987+ ; CHECK-NEXT: ret i1 [[TMP1 ]]
19911988;
19921989 %x.m1 = and i32 %x , 255
19931990 %c1 = icmp ne i32 %x.m1 , 0
@@ -2000,13 +1997,10 @@ define i1 @bitwise_and_logical_and_masked_icmp_asymmetric(i1 %c, i32 %x) {
20001997
20011998define i1 @bitwise_and_logical_and_masked_icmp_allzeros (i1 %c , i32 %x ) {
20021999; CHECK-LABEL: @bitwise_and_logical_and_masked_icmp_allzeros(
2003- ; CHECK-NEXT: [[X_M1:%.*]] = and i32 [[X:%.*]], 8
2004- ; CHECK-NEXT: [[C1:%.*]] = icmp eq i32 [[X_M1]], 0
2005- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[C1]], i1 [[C:%.*]], i1 false
2006- ; CHECK-NEXT: [[X_M2:%.*]] = and i32 [[X]], 7
2007- ; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X_M2]], 0
2008- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[AND1]], [[C2]]
2009- ; CHECK-NEXT: ret i1 [[AND2]]
2000+ ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[X:%.*]], 15
2001+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0
2002+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP2]], i1 [[C:%.*]], i1 false
2003+ ; CHECK-NEXT: ret i1 [[TMP3]]
20102004;
20112005 %x.m1 = and i32 %x , 8
20122006 %c1 = icmp eq i32 %x.m1 , 0
@@ -2019,13 +2013,11 @@ define i1 @bitwise_and_logical_and_masked_icmp_allzeros(i1 %c, i32 %x) {
20192013
20202014define i1 @bitwise_and_logical_and_masked_icmp_allzeros_poison1 (i1 %c , i32 %x , i32 %y ) {
20212015; CHECK-LABEL: @bitwise_and_logical_and_masked_icmp_allzeros_poison1(
2022- ; CHECK-NEXT: [[X_M1:%.*]] = and i32 [[X:%.*]], [[Y:%.*]]
2023- ; CHECK-NEXT: [[C1:%.*]] = icmp eq i32 [[X_M1]], 0
2024- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[C1]], i1 [[C:%.*]], i1 false
2025- ; CHECK-NEXT: [[X_M2:%.*]] = and i32 [[X]], 7
2026- ; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X_M2]], 0
2027- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[AND1]], [[C2]]
2028- ; CHECK-NEXT: ret i1 [[AND2]]
2016+ ; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[Y:%.*]], 7
2017+ ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], [[X:%.*]]
2018+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 0
2019+ ; CHECK-NEXT: [[TMP4:%.*]] = select i1 [[TMP3]], i1 [[C:%.*]], i1 false
2020+ ; CHECK-NEXT: ret i1 [[TMP4]]
20292021;
20302022 %x.m1 = and i32 %x , %y
20312023 %c1 = icmp eq i32 %x.m1 , 0
@@ -2057,13 +2049,10 @@ define i1 @bitwise_and_logical_and_masked_icmp_allzeros_poison2(i1 %c, i32 %x, i
20572049
20582050define i1 @bitwise_and_logical_and_masked_icmp_allones (i1 %c , i32 %x ) {
20592051; CHECK-LABEL: @bitwise_and_logical_and_masked_icmp_allones(
2060- ; CHECK-NEXT: [[X_M1:%.*]] = and i32 [[X:%.*]], 8
2061- ; CHECK-NEXT: [[C1:%.*]] = icmp ne i32 [[X_M1]], 0
2062- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[C1]], i1 [[C:%.*]], i1 false
2063- ; CHECK-NEXT: [[X_M2:%.*]] = and i32 [[X]], 7
2064- ; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X_M2]], 7
2065- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[AND1]], [[C2]]
2066- ; CHECK-NEXT: ret i1 [[AND2]]
2052+ ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[X:%.*]], 15
2053+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 15
2054+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP2]], i1 [[C:%.*]], i1 false
2055+ ; CHECK-NEXT: ret i1 [[TMP3]]
20672056;
20682057 %x.m1 = and i32 %x , 8
20692058 %c1 = icmp eq i32 %x.m1 , 8
@@ -2076,13 +2065,11 @@ define i1 @bitwise_and_logical_and_masked_icmp_allones(i1 %c, i32 %x) {
20762065
20772066define i1 @bitwise_and_logical_and_masked_icmp_allones_poison1 (i1 %c , i32 %x , i32 %y ) {
20782067; CHECK-LABEL: @bitwise_and_logical_and_masked_icmp_allones_poison1(
2079- ; CHECK-NEXT: [[X_M1:%.*]] = and i32 [[X:%.*]], [[Y:%.*]]
2080- ; CHECK-NEXT: [[C1:%.*]] = icmp eq i32 [[X_M1]], [[Y]]
2081- ; CHECK-NEXT: [[AND1:%.*]] = select i1 [[C1]], i1 [[C:%.*]], i1 false
2082- ; CHECK-NEXT: [[X_M2:%.*]] = and i32 [[X]], 7
2083- ; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X_M2]], 7
2084- ; CHECK-NEXT: [[AND2:%.*]] = and i1 [[AND1]], [[C2]]
2085- ; CHECK-NEXT: ret i1 [[AND2]]
2068+ ; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[Y:%.*]], 7
2069+ ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], [[X:%.*]]
2070+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], [[TMP1]]
2071+ ; CHECK-NEXT: [[TMP4:%.*]] = select i1 [[TMP3]], i1 [[C:%.*]], i1 false
2072+ ; CHECK-NEXT: ret i1 [[TMP4]]
20862073;
20872074 %x.m1 = and i32 %x , %y
20882075 %c1 = icmp eq i32 %x.m1 , %y
0 commit comments