Skip to content

Commit 385ab19

Browse files
committed
Add tests for v4i8.
1 parent 2e7bb05 commit 385ab19

File tree

1 file changed

+108
-0
lines changed
  • llvm/test/CodeGen/AArch64

1 file changed

+108
-0
lines changed

llvm/test/CodeGen/AArch64/bsl.ll

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,111 @@ define <4 x i32> @nbsl_v4i32(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2) {
323323
%8 = xor <4 x i32> %7, splat (i32 -1)
324324
ret <4 x i32> %8
325325
}
326+
327+
; Test types that need promotion.
328+
329+
define <4 x i8> @bsl_v4i8(<4 x i8> %0, <4 x i8> %1, <4 x i8> %2) {
330+
; NEON-LABEL: bsl_v4i8:
331+
; NEON: // %bb.0:
332+
; NEON-NEXT: movi d3, #0xff00ff00ff00ff
333+
; NEON-NEXT: and v0.8b, v2.8b, v0.8b
334+
; NEON-NEXT: eor v3.8b, v2.8b, v3.8b
335+
; NEON-NEXT: and v1.8b, v1.8b, v3.8b
336+
; NEON-NEXT: orr v0.8b, v0.8b, v1.8b
337+
; NEON-NEXT: ret
338+
;
339+
; SVE2-LABEL: bsl_v4i8:
340+
; SVE2: // %bb.0:
341+
; SVE2-NEXT: movi d3, #0xff00ff00ff00ff
342+
; SVE2-NEXT: and v0.8b, v2.8b, v0.8b
343+
; SVE2-NEXT: eor v3.8b, v2.8b, v3.8b
344+
; SVE2-NEXT: and v1.8b, v1.8b, v3.8b
345+
; SVE2-NEXT: orr v0.8b, v0.8b, v1.8b
346+
; SVE2-NEXT: ret
347+
%4 = and <4 x i8> %2, %0
348+
%5 = xor <4 x i8> %2, splat (i8 -1)
349+
%6 = and <4 x i8> %1, %5
350+
%7 = or <4 x i8> %4, %6
351+
ret <4 x i8> %7
352+
}
353+
354+
define <4 x i8> @nbsl_v4i8(<4 x i8> %0, <4 x i8> %1, <4 x i8> %2) {
355+
; NEON-LABEL: nbsl_v4i8:
356+
; NEON: // %bb.0:
357+
; NEON-NEXT: movi d3, #0xff00ff00ff00ff
358+
; NEON-NEXT: and v0.8b, v2.8b, v0.8b
359+
; NEON-NEXT: eor v4.8b, v2.8b, v3.8b
360+
; NEON-NEXT: and v1.8b, v1.8b, v4.8b
361+
; NEON-NEXT: orr v0.8b, v0.8b, v1.8b
362+
; NEON-NEXT: eor v0.8b, v0.8b, v3.8b
363+
; NEON-NEXT: ret
364+
;
365+
; SVE2-LABEL: nbsl_v4i8:
366+
; SVE2: // %bb.0:
367+
; SVE2-NEXT: movi d3, #0xff00ff00ff00ff
368+
; SVE2-NEXT: and v0.8b, v2.8b, v0.8b
369+
; SVE2-NEXT: eor v4.8b, v2.8b, v3.8b
370+
; SVE2-NEXT: and v1.8b, v1.8b, v4.8b
371+
; SVE2-NEXT: orr v0.8b, v0.8b, v1.8b
372+
; SVE2-NEXT: eor v0.8b, v0.8b, v3.8b
373+
; SVE2-NEXT: ret
374+
%4 = and <4 x i8> %2, %0
375+
%5 = xor <4 x i8> %2, splat (i8 -1)
376+
%6 = and <4 x i8> %1, %5
377+
%7 = or <4 x i8> %4, %6
378+
%8 = xor <4 x i8> %7, splat (i8 -1)
379+
ret <4 x i8> %8
380+
}
381+
382+
define <4 x i8> @bsl1n_v4i8(<4 x i8> %0, <4 x i8> %1, <4 x i8> %2) {
383+
; NEON-LABEL: bsl1n_v4i8:
384+
; NEON: // %bb.0:
385+
; NEON-NEXT: movi d3, #0xff00ff00ff00ff
386+
; NEON-NEXT: eor v0.8b, v0.8b, v3.8b
387+
; NEON-NEXT: eor v3.8b, v2.8b, v3.8b
388+
; NEON-NEXT: and v0.8b, v2.8b, v0.8b
389+
; NEON-NEXT: and v1.8b, v1.8b, v3.8b
390+
; NEON-NEXT: orr v0.8b, v0.8b, v1.8b
391+
; NEON-NEXT: ret
392+
;
393+
; SVE2-LABEL: bsl1n_v4i8:
394+
; SVE2: // %bb.0:
395+
; SVE2-NEXT: movi d3, #0xff00ff00ff00ff
396+
; SVE2-NEXT: eor v0.8b, v0.8b, v3.8b
397+
; SVE2-NEXT: eor v3.8b, v2.8b, v3.8b
398+
; SVE2-NEXT: and v0.8b, v2.8b, v0.8b
399+
; SVE2-NEXT: and v1.8b, v1.8b, v3.8b
400+
; SVE2-NEXT: orr v0.8b, v0.8b, v1.8b
401+
; SVE2-NEXT: ret
402+
%4 = xor <4 x i8> %0, splat (i8 -1)
403+
%5 = and <4 x i8> %2, %4
404+
%6 = xor <4 x i8> %2, splat (i8 -1)
405+
%7 = and <4 x i8> %1, %6
406+
%8 = or <4 x i8> %5, %7
407+
ret <4 x i8> %8
408+
}
409+
410+
define <4 x i8> @bsl2n_v4i8(<4 x i8> %0, <4 x i8> %1, <4 x i8> %2) {
411+
; NEON-LABEL: bsl2n_v4i8:
412+
; NEON: // %bb.0:
413+
; NEON-NEXT: movi d3, #0xff00ff00ff00ff
414+
; NEON-NEXT: orr v1.8b, v2.8b, v1.8b
415+
; NEON-NEXT: and v0.8b, v2.8b, v0.8b
416+
; NEON-NEXT: eor v1.8b, v1.8b, v3.8b
417+
; NEON-NEXT: orr v0.8b, v0.8b, v1.8b
418+
; NEON-NEXT: ret
419+
;
420+
; SVE2-LABEL: bsl2n_v4i8:
421+
; SVE2: // %bb.0:
422+
; SVE2-NEXT: movi d3, #0xff00ff00ff00ff
423+
; SVE2-NEXT: orr v1.8b, v2.8b, v1.8b
424+
; SVE2-NEXT: and v0.8b, v2.8b, v0.8b
425+
; SVE2-NEXT: eor v1.8b, v1.8b, v3.8b
426+
; SVE2-NEXT: orr v0.8b, v0.8b, v1.8b
427+
; SVE2-NEXT: ret
428+
%4 = and <4 x i8> %2, %0
429+
%5 = or <4 x i8> %2, %1
430+
%6 = xor <4 x i8> %5, splat (i8 -1)
431+
%7 = or <4 x i8> %4, %6
432+
ret <4 x i8> %7
433+
}

0 commit comments

Comments
 (0)