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