@@ -7,10 +7,7 @@ declare void @use.i32(i5)
7
7
8
8
define i1 @or_xor_xor_normal_variant1 (i1 %a , i1 %b ) {
9
9
; CHECK-LABEL: @or_xor_xor_normal_variant1(
10
- ; CHECK-NEXT: [[AND:%.*]] = and i1 [[A:%.*]], [[B:%.*]]
11
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i1 [[AND]], [[A]]
12
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i1 [[AND]], [[B]]
13
- ; CHECK-NEXT: [[OR:%.*]] = or i1 [[XOR1]], [[XOR2]]
10
+ ; CHECK-NEXT: [[OR:%.*]] = xor i1 [[A:%.*]], [[B:%.*]]
14
11
; CHECK-NEXT: ret i1 [[OR]]
15
12
;
16
13
%and = and i1 %a , %b
@@ -22,10 +19,7 @@ define i1 @or_xor_xor_normal_variant1(i1 %a, i1 %b) {
22
19
23
20
define i8 @or_xor_xor_normal_variant2 (i8 %a , i8 %b ) {
24
21
; CHECK-LABEL: @or_xor_xor_normal_variant2(
25
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[A:%.*]], [[B:%.*]]
26
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i8 [[AND]], [[B]]
27
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i8 [[AND]], [[A]]
28
- ; CHECK-NEXT: [[OR:%.*]] = or i8 [[XOR1]], [[XOR2]]
22
+ ; CHECK-NEXT: [[OR:%.*]] = xor i8 [[A:%.*]], [[B:%.*]]
29
23
; CHECK-NEXT: ret i8 [[OR]]
30
24
;
31
25
%and = and i8 %a , %b
@@ -37,10 +31,7 @@ define i8 @or_xor_xor_normal_variant2(i8 %a, i8 %b) {
37
31
38
32
define i16 @or_xor_xor_normal_variant3 (i16 %a , i16 %b ) {
39
33
; CHECK-LABEL: @or_xor_xor_normal_variant3(
40
- ; CHECK-NEXT: [[AND:%.*]] = and i16 [[B:%.*]], [[A:%.*]]
41
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i16 [[AND]], [[B]]
42
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i16 [[AND]], [[A]]
43
- ; CHECK-NEXT: [[OR:%.*]] = or i16 [[XOR1]], [[XOR2]]
34
+ ; CHECK-NEXT: [[OR:%.*]] = xor i16 [[B:%.*]], [[A:%.*]]
44
35
; CHECK-NEXT: ret i16 [[OR]]
45
36
;
46
37
%and = and i16 %b , %a
@@ -52,10 +43,7 @@ define i16 @or_xor_xor_normal_variant3(i16 %a, i16 %b) {
52
43
53
44
define i64 @or_xor_xor_normal_variant4 (i64 %a , i64 %b ) {
54
45
; CHECK-LABEL: @or_xor_xor_normal_variant4(
55
- ; CHECK-NEXT: [[AND:%.*]] = and i64 [[B:%.*]], [[A:%.*]]
56
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i64 [[AND]], [[B]]
57
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i64 [[AND]], [[A]]
58
- ; CHECK-NEXT: [[OR:%.*]] = or i64 [[XOR1]], [[XOR2]]
46
+ ; CHECK-NEXT: [[OR:%.*]] = xor i64 [[B:%.*]], [[A:%.*]]
59
47
; CHECK-NEXT: ret i64 [[OR]]
60
48
;
61
49
%and = and i64 %b , %a
@@ -67,12 +55,7 @@ define i64 @or_xor_xor_normal_variant4(i64 %a, i64 %b) {
67
55
68
56
define i32 @or_xor_xor_normal_binops (i32 %aa , i32 %bb , i32 %cc ) {
69
57
; CHECK-LABEL: @or_xor_xor_normal_binops(
70
- ; CHECK-NEXT: [[A:%.*]] = xor i32 [[AA:%.*]], [[CC:%.*]]
71
- ; CHECK-NEXT: [[B:%.*]] = xor i32 [[BB:%.*]], [[CC]]
72
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[B]], [[A]]
73
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i32 [[B]], [[AND]]
74
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i32 [[A]], [[AND]]
75
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[XOR1]], [[XOR2]]
58
+ ; CHECK-NEXT: [[OR:%.*]] = xor i32 [[BB:%.*]], [[AA:%.*]]
76
59
; CHECK-NEXT: ret i32 [[OR]]
77
60
;
78
61
%a = xor i32 %aa , %cc
@@ -87,10 +70,7 @@ define i32 @or_xor_xor_normal_binops(i32 %aa, i32 %bb, i32 %cc) {
87
70
88
71
define <3 x i1 > @or_xor_xor_normal_vector (<3 x i1 > %a , <3 x i1 > %b ) {
89
72
; CHECK-LABEL: @or_xor_xor_normal_vector(
90
- ; CHECK-NEXT: [[AND:%.*]] = and <3 x i1> [[A:%.*]], [[B:%.*]]
91
- ; CHECK-NEXT: [[XOR1:%.*]] = xor <3 x i1> [[AND]], [[B]]
92
- ; CHECK-NEXT: [[XOR2:%.*]] = xor <3 x i1> [[AND]], [[A]]
93
- ; CHECK-NEXT: [[OR:%.*]] = or <3 x i1> [[XOR1]], [[XOR2]]
73
+ ; CHECK-NEXT: [[OR:%.*]] = xor <3 x i1> [[A:%.*]], [[B:%.*]]
94
74
; CHECK-NEXT: ret <3 x i1> [[OR]]
95
75
;
96
76
%and = and <3 x i1 > %a , %b
@@ -104,9 +84,7 @@ define i3 @or_xor_xor_normal_multiple_uses_and(i3 %a, i3 %b) {
104
84
; CHECK-LABEL: @or_xor_xor_normal_multiple_uses_and(
105
85
; CHECK-NEXT: [[AND:%.*]] = and i3 [[A:%.*]], [[B:%.*]]
106
86
; CHECK-NEXT: call void @use.i3(i3 [[AND]])
107
- ; CHECK-NEXT: [[XOR1:%.*]] = xor i3 [[AND]], [[B]]
108
- ; CHECK-NEXT: [[XOR2:%.*]] = xor i3 [[AND]], [[A]]
109
- ; CHECK-NEXT: [[OR:%.*]] = or i3 [[XOR1]], [[XOR2]]
87
+ ; CHECK-NEXT: [[OR:%.*]] = xor i3 [[A]], [[B]]
110
88
; CHECK-NEXT: ret i3 [[OR]]
111
89
;
112
90
%and = and i3 %a , %b
0 commit comments