@@ -90,9 +90,8 @@ define void @pre_not_and_not_combine_v16i8(ptr %res, ptr %a, i8 %b) nounwind {
90
90
; CHECK-LABEL: pre_not_and_not_combine_v16i8:
91
91
; CHECK: # %bb.0:
92
92
; CHECK-NEXT: vld $vr0, $a1, 0
93
- ; CHECK-NEXT: nor $a1, $a2, $zero
94
- ; CHECK-NEXT: vreplgr2vr.b $vr1, $a1
95
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
93
+ ; CHECK-NEXT: vreplgr2vr.b $vr1, $a2
94
+ ; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
96
95
; CHECK-NEXT: vst $vr0, $a0, 0
97
96
; CHECK-NEXT: ret
98
97
%v0 = load <16 x i8 >, ptr %a
@@ -110,8 +109,7 @@ define void @post_not_and_not_combine_v16i8(ptr %res, ptr %a, i8 %b) nounwind {
110
109
; CHECK: # %bb.0:
111
110
; CHECK-NEXT: vld $vr0, $a1, 0
112
111
; CHECK-NEXT: vreplgr2vr.b $vr1, $a2
113
- ; CHECK-NEXT: vxori.b $vr1, $vr1, 255
114
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
112
+ ; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
115
113
; CHECK-NEXT: vst $vr0, $a0, 0
116
114
; CHECK-NEXT: ret
117
115
%v0 = load <16 x i8 >, ptr %a
@@ -128,9 +126,8 @@ define void @pre_not_and_not_combine_v8i16(ptr %res, ptr %a, i16 %b) nounwind {
128
126
; CHECK-LABEL: pre_not_and_not_combine_v8i16:
129
127
; CHECK: # %bb.0:
130
128
; CHECK-NEXT: vld $vr0, $a1, 0
131
- ; CHECK-NEXT: nor $a1, $a2, $zero
132
- ; CHECK-NEXT: vreplgr2vr.h $vr1, $a1
133
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
129
+ ; CHECK-NEXT: vreplgr2vr.h $vr1, $a2
130
+ ; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
134
131
; CHECK-NEXT: vst $vr0, $a0, 0
135
132
; CHECK-NEXT: ret
136
133
%v0 = load <8 x i16 >, ptr %a
@@ -148,9 +145,7 @@ define void @post_not_and_not_combine_v8i16(ptr %res, ptr %a, i16 %b) nounwind {
148
145
; CHECK: # %bb.0:
149
146
; CHECK-NEXT: vld $vr0, $a1, 0
150
147
; CHECK-NEXT: vreplgr2vr.h $vr1, $a2
151
- ; CHECK-NEXT: vrepli.b $vr2, -1
152
- ; CHECK-NEXT: vxor.v $vr1, $vr1, $vr2
153
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
148
+ ; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
154
149
; CHECK-NEXT: vst $vr0, $a0, 0
155
150
; CHECK-NEXT: ret
156
151
%v0 = load <8 x i16 >, ptr %a
@@ -167,9 +162,8 @@ define void @pre_not_and_not_combine_v4i32(ptr %res, ptr %a, i32 %b) nounwind {
167
162
; CHECK-LABEL: pre_not_and_not_combine_v4i32:
168
163
; CHECK: # %bb.0:
169
164
; CHECK-NEXT: vld $vr0, $a1, 0
170
- ; CHECK-NEXT: nor $a1, $a2, $zero
171
- ; CHECK-NEXT: vreplgr2vr.w $vr1, $a1
172
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
165
+ ; CHECK-NEXT: vreplgr2vr.w $vr1, $a2
166
+ ; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
173
167
; CHECK-NEXT: vst $vr0, $a0, 0
174
168
; CHECK-NEXT: ret
175
169
%v0 = load <4 x i32 >, ptr %a
@@ -187,9 +181,7 @@ define void @post_not_and_not_combine_v4i32(ptr %res, ptr %a, i32 %b) nounwind {
187
181
; CHECK: # %bb.0:
188
182
; CHECK-NEXT: vld $vr0, $a1, 0
189
183
; CHECK-NEXT: vreplgr2vr.w $vr1, $a2
190
- ; CHECK-NEXT: vrepli.b $vr2, -1
191
- ; CHECK-NEXT: vxor.v $vr1, $vr1, $vr2
192
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
184
+ ; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
193
185
; CHECK-NEXT: vst $vr0, $a0, 0
194
186
; CHECK-NEXT: ret
195
187
%v0 = load <4 x i32 >, ptr %a
@@ -218,9 +210,8 @@ define void @pre_not_and_not_combine_v2i64(ptr %res, ptr %a, i64 %b) nounwind {
218
210
; LA64-LABEL: pre_not_and_not_combine_v2i64:
219
211
; LA64: # %bb.0:
220
212
; LA64-NEXT: vld $vr0, $a1, 0
221
- ; LA64-NEXT: nor $a1, $a2, $zero
222
- ; LA64-NEXT: vreplgr2vr.d $vr1, $a1
223
- ; LA64-NEXT: vandn.v $vr0, $vr0, $vr1
213
+ ; LA64-NEXT: vreplgr2vr.d $vr1, $a2
214
+ ; LA64-NEXT: vnor.v $vr0, $vr0, $vr1
224
215
; LA64-NEXT: vst $vr0, $a0, 0
225
216
; LA64-NEXT: ret
226
217
%v0 = load <2 x i64 >, ptr %a
@@ -240,19 +231,15 @@ define void @post_not_and_not_combine_v2i64(ptr %res, ptr %a, i64 %b) nounwind {
240
231
; LA32-NEXT: vinsgr2vr.w $vr1, $a2, 0
241
232
; LA32-NEXT: vinsgr2vr.w $vr1, $a3, 1
242
233
; LA32-NEXT: vreplvei.d $vr1, $vr1, 0
243
- ; LA32-NEXT: vrepli.b $vr2, -1
244
- ; LA32-NEXT: vxor.v $vr1, $vr1, $vr2
245
- ; LA32-NEXT: vandn.v $vr0, $vr0, $vr1
234
+ ; LA32-NEXT: vnor.v $vr0, $vr0, $vr1
246
235
; LA32-NEXT: vst $vr0, $a0, 0
247
236
; LA32-NEXT: ret
248
237
;
249
238
; LA64-LABEL: post_not_and_not_combine_v2i64:
250
239
; LA64: # %bb.0:
251
240
; LA64-NEXT: vld $vr0, $a1, 0
252
241
; LA64-NEXT: vreplgr2vr.d $vr1, $a2
253
- ; LA64-NEXT: vrepli.b $vr2, -1
254
- ; LA64-NEXT: vxor.v $vr1, $vr1, $vr2
255
- ; LA64-NEXT: vandn.v $vr0, $vr0, $vr1
242
+ ; LA64-NEXT: vnor.v $vr0, $vr0, $vr1
256
243
; LA64-NEXT: vst $vr0, $a0, 0
257
244
; LA64-NEXT: ret
258
245
%v0 = load <2 x i64 >, ptr %a
@@ -269,8 +256,7 @@ define void @and_not_combine_splatimm_v16i8(ptr %res, ptr %a0) nounwind {
269
256
; CHECK-LABEL: and_not_combine_splatimm_v16i8:
270
257
; CHECK: # %bb.0:
271
258
; CHECK-NEXT: vld $vr0, $a1, 0
272
- ; CHECK-NEXT: vrepli.b $vr1, -4
273
- ; CHECK-NEXT: vandn.v $vr0, $vr0, $vr1
259
+ ; CHECK-NEXT: vnori.b $vr0, $vr0, 3
274
260
; CHECK-NEXT: vst $vr0, $a0, 0
275
261
; CHECK-NEXT: ret
276
262
%v0 = load <16 x i8 >, ptr %a0
0 commit comments