@@ -1862,10 +1862,9 @@ define i32 @or_and_not_not_extra_not_use1(i32 %a, i32 %b, i32 %c) {
1862
1862
; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
1863
1863
; CHECK-NEXT: [[OR1:%.*]] = or i32 [[B]], [[A]]
1864
1864
; CHECK-NEXT: [[NOT1:%.*]] = xor i32 [[OR1]], -1
1865
- ; CHECK-NEXT: [[OR2:%.*]] = or i32 [[A]], [[C]]
1866
- ; CHECK-NEXT: [[NOT2:%.*]] = xor i32 [[OR2]], -1
1867
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[B]], [[NOT2]]
1868
- ; CHECK-NEXT: [[OR3:%.*]] = or i32 [[AND]], [[NOT1]]
1865
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[C]], [[B]]
1866
+ ; CHECK-NEXT: [[TMP2:%.*]] = or i32 [[TMP1]], [[A]]
1867
+ ; CHECK-NEXT: [[OR3:%.*]] = xor i32 [[TMP2]], -1
1869
1868
; CHECK-NEXT: call void @use(i32 [[NOT1]])
1870
1869
; CHECK-NEXT: ret i32 [[OR3]]
1871
1870
;
@@ -1926,11 +1925,9 @@ define i32 @or_and_not_not_extra_or_use1(i32 %a, i32 %b, i32 %c) {
1926
1925
; CHECK-LABEL: define {{[^@]+}}@or_and_not_not_extra_or_use1
1927
1926
; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
1928
1927
; CHECK-NEXT: [[OR1:%.*]] = or i32 [[B]], [[A]]
1929
- ; CHECK-NEXT: [[NOT1:%.*]] = xor i32 [[OR1]], -1
1930
- ; CHECK-NEXT: [[OR2:%.*]] = or i32 [[A]], [[C]]
1931
- ; CHECK-NEXT: [[NOT2:%.*]] = xor i32 [[OR2]], -1
1932
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[B]], [[NOT2]]
1933
- ; CHECK-NEXT: [[OR3:%.*]] = or i32 [[AND]], [[NOT1]]
1928
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[C]], [[B]]
1929
+ ; CHECK-NEXT: [[TMP2:%.*]] = or i32 [[TMP1]], [[A]]
1930
+ ; CHECK-NEXT: [[OR3:%.*]] = xor i32 [[TMP2]], -1
1934
1931
; CHECK-NEXT: call void @use(i32 [[OR1]])
1935
1932
; CHECK-NEXT: ret i32 [[OR3]]
1936
1933
;
@@ -2177,10 +2174,9 @@ define i32 @and_or_not_not_extra_not_use1(i32 %a, i32 %b, i32 %c) {
2177
2174
; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
2178
2175
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[B]], [[A]]
2179
2176
; CHECK-NEXT: [[NOT1:%.*]] = xor i32 [[AND1]], -1
2180
- ; CHECK-NEXT: [[AND2:%.*]] = and i32 [[A]], [[C]]
2181
- ; CHECK-NEXT: [[NOT2:%.*]] = xor i32 [[AND2]], -1
2182
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[B]], [[NOT2]]
2183
- ; CHECK-NEXT: [[AND3:%.*]] = xor i32 [[AND1]], [[OR]]
2177
+ ; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[C]], [[B]]
2178
+ ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], [[A]]
2179
+ ; CHECK-NEXT: [[AND3:%.*]] = xor i32 [[TMP2]], -1
2184
2180
; CHECK-NEXT: call void @use(i32 [[NOT1]])
2185
2181
; CHECK-NEXT: ret i32 [[AND3]]
2186
2182
;
@@ -2241,10 +2237,9 @@ define i32 @and_or_not_not_extra_or_use1(i32 %a, i32 %b, i32 %c) {
2241
2237
; CHECK-LABEL: define {{[^@]+}}@and_or_not_not_extra_or_use1
2242
2238
; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
2243
2239
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[B]], [[A]]
2244
- ; CHECK-NEXT: [[AND2:%.*]] = and i32 [[A]], [[C]]
2245
- ; CHECK-NEXT: [[NOT2:%.*]] = xor i32 [[AND2]], -1
2246
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[B]], [[NOT2]]
2247
- ; CHECK-NEXT: [[AND3:%.*]] = xor i32 [[AND1]], [[OR]]
2240
+ ; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[C]], [[B]]
2241
+ ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], [[A]]
2242
+ ; CHECK-NEXT: [[AND3:%.*]] = xor i32 [[TMP2]], -1
2248
2243
; CHECK-NEXT: call void @use(i32 [[AND1]])
2249
2244
; CHECK-NEXT: ret i32 [[AND3]]
2250
2245
;
0 commit comments