4
4
define <8 x i8 > @sel_v8i8 (<8 x i8 > %v0 , <8 x i8 > %v1 ) {
5
5
; CHECK-LABEL: sel_v8i8:
6
6
; CHECK: // %bb.0:
7
- ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
8
- ; CHECK-NEXT: // kill: def $d1 killed $d1 def $q1
9
- ; CHECK-NEXT: adrp x8, .LCPI0_0
10
- ; CHECK-NEXT: mov v0.d[1], v1.d[0]
11
- ; CHECK-NEXT: ldr d1, [x8, :lo12:.LCPI0_0]
12
- ; CHECK-NEXT: tbl v0.8b, { v0.16b }, v1.8b
7
+ ; CHECK-NEXT: movi d2, #0xff00ff00ff00ff
8
+ ; CHECK-NEXT: bif v0.8b, v1.8b, v2.8b
13
9
; CHECK-NEXT: ret
14
10
%tmp0 = shufflevector <8 x i8 > %v0 , <8 x i8 > %v1 , <8 x i32 > <i32 0 , i32 9 , i32 2 , i32 11 , i32 4 , i32 13 , i32 6 , i32 15 >
15
11
ret <8 x i8 > %tmp0
@@ -18,11 +14,8 @@ define <8 x i8> @sel_v8i8(<8 x i8> %v0, <8 x i8> %v1) {
18
14
define <16 x i8 > @sel_v16i8 (<16 x i8 > %v0 , <16 x i8 > %v1 ) {
19
15
; CHECK-LABEL: sel_v16i8:
20
16
; CHECK: // %bb.0:
21
- ; CHECK-NEXT: adrp x8, .LCPI1_0
22
- ; CHECK-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
23
- ; CHECK-NEXT: ldr q2, [x8, :lo12:.LCPI1_0]
24
- ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
25
- ; CHECK-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
17
+ ; CHECK-NEXT: movi v2.2d, #0xff00ff00ff00ff
18
+ ; CHECK-NEXT: bif v0.16b, v1.16b, v2.16b
26
19
; CHECK-NEXT: ret
27
20
%tmp0 = shufflevector <16 x i8 > %v0 , <16 x i8 > %v1 , <16 x i32 > <i32 0 , i32 17 , i32 2 , i32 19 , i32 4 , i32 21 , i32 6 , i32 23 , i32 8 , i32 25 , i32 10 , i32 27 , i32 12 , i32 29 , i32 14 , i32 31 >
28
21
ret <16 x i8 > %tmp0
@@ -32,10 +25,8 @@ define <16 x i8> @sel_v16i8_poison(<16 x i8> %v0, <16 x i8> %v1) {
32
25
; CHECK-LABEL: sel_v16i8_poison:
33
26
; CHECK: // %bb.0:
34
27
; CHECK-NEXT: adrp x8, .LCPI2_0
35
- ; CHECK-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
36
28
; CHECK-NEXT: ldr q2, [x8, :lo12:.LCPI2_0]
37
- ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
38
- ; CHECK-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
29
+ ; CHECK-NEXT: bif v0.16b, v1.16b, v2.16b
39
30
; CHECK-NEXT: ret
40
31
%tmp0 = shufflevector <16 x i8 > %v0 , <16 x i8 > %v1 , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 22 , i32 23 , i32 24 , i32 25 , i32 26 , i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
41
32
ret <16 x i8 > %tmp0
@@ -45,10 +36,8 @@ define <16 x i8> @sel_v16i8_unregular(<16 x i8> %v0, <16 x i8> %v1) {
45
36
; CHECK-LABEL: sel_v16i8_unregular:
46
37
; CHECK: // %bb.0:
47
38
; CHECK-NEXT: adrp x8, .LCPI3_0
48
- ; CHECK-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
49
39
; CHECK-NEXT: ldr q2, [x8, :lo12:.LCPI3_0]
50
- ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
51
- ; CHECK-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
40
+ ; CHECK-NEXT: bif v0.16b, v1.16b, v2.16b
52
41
; CHECK-NEXT: ret
53
42
%tmp0 = shufflevector <16 x i8 > %v0 , <16 x i8 > %v1 , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 >
54
43
ret <16 x i8 > %tmp0
@@ -67,11 +56,8 @@ define <4 x i16> @sel_v4i16(<4 x i16> %v0, <4 x i16> %v1) {
67
56
define <8 x i16 > @sel_v8i16 (<8 x i16 > %v0 , <8 x i16 > %v1 ) {
68
57
; CHECK-LABEL: sel_v8i16:
69
58
; CHECK: // %bb.0:
70
- ; CHECK-NEXT: adrp x8, .LCPI5_0
71
- ; CHECK-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
72
- ; CHECK-NEXT: ldr q2, [x8, :lo12:.LCPI5_0]
73
- ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
74
- ; CHECK-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
59
+ ; CHECK-NEXT: movi v2.2d, #0x00ffff0000ffff
60
+ ; CHECK-NEXT: bif v0.16b, v1.16b, v2.16b
75
61
; CHECK-NEXT: ret
76
62
%tmp0 = shufflevector <8 x i16 > %v0 , <8 x i16 > %v1 , <8 x i32 > <i32 0 , i32 9 , i32 2 , i32 11 , i32 4 , i32 13 , i32 6 , i32 15 >
77
63
ret <8 x i16 > %tmp0
@@ -121,11 +107,8 @@ define <4 x half> @sel_v4f16(<4 x half> %v0, <4 x half> %v1) {
121
107
define <8 x half > @sel_v8f16 (<8 x half > %v0 , <8 x half > %v1 ) {
122
108
; CHECK-LABEL: sel_v8f16:
123
109
; CHECK: // %bb.0:
124
- ; CHECK-NEXT: adrp x8, .LCPI10_0
125
- ; CHECK-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
126
- ; CHECK-NEXT: ldr q2, [x8, :lo12:.LCPI10_0]
127
- ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
128
- ; CHECK-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
110
+ ; CHECK-NEXT: movi v2.2d, #0x00ffff0000ffff
111
+ ; CHECK-NEXT: bif v0.16b, v1.16b, v2.16b
129
112
; CHECK-NEXT: ret
130
113
%tmp0 = shufflevector <8 x half > %v0 , <8 x half > %v1 , <8 x i32 > <i32 0 , i32 9 , i32 2 , i32 11 , i32 4 , i32 13 , i32 6 , i32 15 >
131
114
ret <8 x half > %tmp0
0 commit comments