7
7
define i8 @src_and_bit (i8 %x , i8 %y ) {
8
8
; CHECK-LABEL: @src_and_bit(
9
9
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 3
10
- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[X]], 2
11
10
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[AND]], 2
12
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[AND1]] , i8 1
11
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 2 , i8 1
13
12
; CHECK-NEXT: ret i8 [[COND]]
14
13
;
15
14
%and = and i8 %x , 3
@@ -22,9 +21,8 @@ define i8 @src_and_bit(i8 %x, i8 %y) {
22
21
define <2 x i8 > @src_and_bit_vec (<2 x i8 > %x , <2 x i8 > %y ) {
23
22
; CHECK-LABEL: @src_and_bit_vec(
24
23
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 3, i8 3>
25
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 2, i8 2>
26
24
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
27
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
25
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
28
26
; CHECK-NEXT: ret <2 x i8> [[COND]]
29
27
;
30
28
%and = and <2 x i8 > %x , <i8 3 , i8 3 >
@@ -37,9 +35,8 @@ define <2 x i8> @src_and_bit_vec(<2 x i8> %x, <2 x i8> %y) {
37
35
define <2 x i8 > @src_and_bit_vec_poison (<2 x i8 > %x , <2 x i8 > %y ) {
38
36
; CHECK-LABEL: @src_and_bit_vec_poison(
39
37
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 poison, i8 3>
40
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 2>
41
38
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
42
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
39
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
43
40
; CHECK-NEXT: ret <2 x i8> [[COND]]
44
41
;
45
42
%and = and <2 x i8 > %x , <i8 poison, i8 3 >
@@ -52,9 +49,8 @@ define <2 x i8> @src_and_bit_vec_poison(<2 x i8> %x, <2 x i8> %y) {
52
49
define <2 x i8 > @src_and_bit_vec_poison2 (<2 x i8 > %x , <2 x i8 > %y ) {
53
50
; CHECK-LABEL: @src_and_bit_vec_poison2(
54
51
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[X:%.*]], <i8 poison, i8 3>
55
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 2>
56
52
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[AND]], <i8 2, i8 2>
57
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]] , <2 x i8> <i8 1, i8 1>
53
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 2, i8 2> , <2 x i8> <i8 1, i8 1>
58
54
; CHECK-NEXT: ret <2 x i8> [[COND]]
59
55
;
60
56
%and = and <2 x i8 > %x , <i8 poison, i8 3 >
@@ -68,13 +64,11 @@ define <2 x i8> @src_and_bit_vec_poison2(<2 x i8> %x, <2 x i8> %y) {
68
64
; ====================== OR =======================
69
65
define i8 @src_or_bit (i8 %x , i8 %y , i8 %z ) {
70
66
; CHECK-LABEL: @src_or_bit(
71
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[Z:%.*]], 3
72
67
; CHECK-NEXT: [[AND1:%.*]] = shl i8 [[Y:%.*]], 2
73
68
; CHECK-NEXT: [[SHL:%.*]] = and i8 [[AND1]], 12
74
69
; CHECK-NEXT: [[OR:%.*]] = or i8 [[SHL]], [[X:%.*]]
75
70
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[OR]], 3
76
- ; CHECK-NEXT: [[OR2:%.*]] = or i8 [[AND]], [[X]]
77
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[OR2]], i8 1
71
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 3, i8 1
78
72
; CHECK-NEXT: ret i8 [[COND]]
79
73
;
80
74
%and = and i8 %z , 3
@@ -88,13 +82,11 @@ define i8 @src_or_bit(i8 %x, i8 %y, i8 %z) {
88
82
}
89
83
define <2 x i8 > @src_or_bit_vec (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
90
84
; CHECK-LABEL: @src_or_bit_vec(
91
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 3, i8 3>
92
85
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 2, i8 2>
93
86
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 12, i8 12>
94
87
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
95
88
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
96
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
97
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
89
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
98
90
; CHECK-NEXT: ret <2 x i8> [[COND]]
99
91
;
100
92
%and = and <2 x i8 > %z , <i8 3 , i8 3 >
@@ -108,13 +100,11 @@ define <2 x i8> @src_or_bit_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
108
100
}
109
101
define <2 x i8 > @src_or_bit_vec_poison (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
110
102
; CHECK-LABEL: @src_or_bit_vec_poison(
111
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 3, i8 poison>
112
103
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 2, i8 poison>
113
104
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 12, i8 poison>
114
105
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
115
106
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
116
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
117
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
107
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
118
108
; CHECK-NEXT: ret <2 x i8> [[COND]]
119
109
;
120
110
%and = and <2 x i8 > %z , <i8 3 , i8 poison>
@@ -128,13 +118,11 @@ define <2 x i8> @src_or_bit_vec_poison(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
128
118
}
129
119
define <2 x i8 > @src_or_bit_vec_poison2 (<2 x i8 > %x , <2 x i8 > %y , <2 x i8 > %z ) {
130
120
; CHECK-LABEL: @src_or_bit_vec_poison2(
131
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Z:%.*]], <i8 poison, i8 3>
132
121
; CHECK-NEXT: [[AND1:%.*]] = shl <2 x i8> [[Y:%.*]], <i8 poison, i8 2>
133
122
; CHECK-NEXT: [[SHL:%.*]] = and <2 x i8> [[AND1]], <i8 poison, i8 12>
134
123
; CHECK-NEXT: [[OR:%.*]] = or <2 x i8> [[SHL]], [[X:%.*]]
135
124
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[OR]], <i8 3, i8 3>
136
- ; CHECK-NEXT: [[OR2:%.*]] = or <2 x i8> [[AND]], [[X]]
137
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[OR2]], <2 x i8> <i8 1, i8 1>
125
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
138
126
; CHECK-NEXT: ret <2 x i8> [[COND]]
139
127
;
140
128
%and = and <2 x i8 > %z , <i8 poison, i8 3 >
@@ -152,8 +140,7 @@ define i8 @src_xor_bit(i8 %x, i8 %y) {
152
140
; CHECK-NEXT: [[AND:%.*]] = and i8 [[Y:%.*]], 12
153
141
; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[AND]], [[X:%.*]]
154
142
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[XOR]], 3
155
- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[X]], 3
156
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[AND1]], i8 1
143
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 3, i8 1
157
144
; CHECK-NEXT: ret i8 [[COND]]
158
145
;
159
146
%and = and i8 %y , 12
@@ -168,8 +155,7 @@ define <2 x i8> @src_xor_bit_vec(<2 x i8> %x, <2 x i8> %y) {
168
155
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 12, i8 12>
169
156
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
170
157
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
171
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 3, i8 3>
172
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
158
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
173
159
; CHECK-NEXT: ret <2 x i8> [[COND]]
174
160
;
175
161
%and = and <2 x i8 > %y , <i8 12 , i8 12 >
@@ -184,8 +170,7 @@ define <2 x i8> @src_xor_bit_vec_poison(<2 x i8> %x, <2 x i8> %y) {
184
170
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 poison, i8 12>
185
171
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
186
172
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
187
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 poison, i8 3>
188
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
173
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
189
174
; CHECK-NEXT: ret <2 x i8> [[COND]]
190
175
;
191
176
%and = and <2 x i8 > %y , <i8 poison, i8 12 >
@@ -200,8 +185,7 @@ define <2 x i8> @src_xor_bit_vec_poison2(<2 x i8> %x, <2 x i8> %y) {
200
185
; CHECK-NEXT: [[AND:%.*]] = and <2 x i8> [[Y:%.*]], <i8 poison, i8 12>
201
186
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i8> [[AND]], [[X:%.*]]
202
187
; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i8> [[XOR]], <i8 3, i8 3>
203
- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i8> [[X]], <i8 3, i8 3>
204
- ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[AND1]], <2 x i8> <i8 1, i8 1>
188
+ ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[CMP]], <2 x i8> <i8 3, i8 3>, <2 x i8> <i8 1, i8 1>
205
189
; CHECK-NEXT: ret <2 x i8> [[COND]]
206
190
;
207
191
%and = and <2 x i8 > %y , <i8 poison, i8 12 >
0 commit comments