@@ -23,19 +23,11 @@ entry:
23
23
}
24
24
25
25
define <4 x i32 > @v4i32 (<4 x i32 > %a ) {
26
- ; CHECK-SD-LABEL: v4i32:
27
- ; CHECK-SD: // %bb.0: // %entry
28
- ; CHECK-SD-NEXT: rev64 v0.4s, v0.4s
29
- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
30
- ; CHECK-SD-NEXT: ret
31
- ;
32
- ; CHECK-GI-LABEL: v4i32:
33
- ; CHECK-GI: // %bb.0: // %entry
34
- ; CHECK-GI-NEXT: adrp x8, .LCPI2_0
35
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
36
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI2_0]
37
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
38
- ; CHECK-GI-NEXT: ret
26
+ ; CHECK-LABEL: v4i32:
27
+ ; CHECK: // %bb.0: // %entry
28
+ ; CHECK-NEXT: rev64 v0.4s, v0.4s
29
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
30
+ ; CHECK-NEXT: ret
39
31
entry:
40
32
%V128 = shufflevector <4 x i32 > %a , <4 x i32 > undef , <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
41
33
ret <4 x i32 > %V128
@@ -52,19 +44,11 @@ entry:
52
44
}
53
45
54
46
define <8 x i16 > @v8i16 (<8 x i16 > %a ) {
55
- ; CHECK-SD-LABEL: v8i16:
56
- ; CHECK-SD: // %bb.0: // %entry
57
- ; CHECK-SD-NEXT: rev64 v0.8h, v0.8h
58
- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
59
- ; CHECK-SD-NEXT: ret
60
- ;
61
- ; CHECK-GI-LABEL: v8i16:
62
- ; CHECK-GI: // %bb.0: // %entry
63
- ; CHECK-GI-NEXT: adrp x8, .LCPI4_0
64
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
65
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI4_0]
66
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
67
- ; CHECK-GI-NEXT: ret
47
+ ; CHECK-LABEL: v8i16:
48
+ ; CHECK: // %bb.0: // %entry
49
+ ; CHECK-NEXT: rev64 v0.8h, v0.8h
50
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
51
+ ; CHECK-NEXT: ret
68
52
entry:
69
53
%V128 = shufflevector <8 x i16 > %a , <8 x i16 > undef , <8 x i32 > <i32 7 , i32 6 , i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
70
54
ret <8 x i16 > %V128
@@ -93,6 +77,22 @@ entry:
93
77
ret <8 x i16 > %V128
94
78
}
95
79
80
+ define <4 x i16 > @v8i16_3 (<8 x i16 > %a ) {
81
+ ; CHECK-SD-LABEL: v8i16_3:
82
+ ; CHECK-SD: // %bb.0: // %entry
83
+ ; CHECK-SD-NEXT: rev64 v0.4h, v0.4h
84
+ ; CHECK-SD-NEXT: ret
85
+ ;
86
+ ; CHECK-GI-LABEL: v8i16_3:
87
+ ; CHECK-GI: // %bb.0: // %entry
88
+ ; CHECK-GI-NEXT: rev64 v0.8h, v0.8h
89
+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
90
+ ; CHECK-GI-NEXT: ret
91
+ entry:
92
+ %V128 = shufflevector <8 x i16 > %a , <8 x i16 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
93
+ ret <4 x i16 > %V128
94
+ }
95
+
96
96
define <4 x i16 > @v4i16 (<4 x i16 > %a ) {
97
97
; CHECK-LABEL: v4i16:
98
98
; CHECK: // %bb.0: // %entry
@@ -104,19 +104,11 @@ entry:
104
104
}
105
105
106
106
define <16 x i8 > @v16i8 (<16 x i8 > %a ) {
107
- ; CHECK-SD-LABEL: v16i8:
108
- ; CHECK-SD: // %bb.0: // %entry
109
- ; CHECK-SD-NEXT: rev64 v0.16b, v0.16b
110
- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
111
- ; CHECK-SD-NEXT: ret
112
- ;
113
- ; CHECK-GI-LABEL: v16i8:
114
- ; CHECK-GI: // %bb.0: // %entry
115
- ; CHECK-GI-NEXT: adrp x8, .LCPI7_0
116
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
117
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI7_0]
118
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
119
- ; CHECK-GI-NEXT: ret
107
+ ; CHECK-LABEL: v16i8:
108
+ ; CHECK: // %bb.0: // %entry
109
+ ; CHECK-NEXT: rev64 v0.16b, v0.16b
110
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
111
+ ; CHECK-NEXT: ret
120
112
entry:
121
113
%V128 = shufflevector <16 x i8 > %a , <16 x i8 > undef , <16 x i32 > <i32 15 , i32 14 , i32 13 , i32 12 , i32 11 , i32 10 , i32 9 , i32 8 , i32 7 , i32 6 , i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
122
114
ret <16 x i8 > %V128
@@ -125,18 +117,18 @@ entry:
125
117
define <16 x i8 > @v16i8_2 (<8 x i8 > %a , <8 x i8 > %b ) {
126
118
; CHECK-SD-LABEL: v16i8_2:
127
119
; CHECK-SD: // %bb.0: // %entry
128
- ; CHECK-SD-NEXT: adrp x8, .LCPI8_0
120
+ ; CHECK-SD-NEXT: adrp x8, .LCPI9_0
129
121
; CHECK-SD-NEXT: // kill: def $d1 killed $d1 killed $q0_q1 def $q0_q1
130
- ; CHECK-SD-NEXT: ldr q2, [x8, :lo12:.LCPI8_0 ]
122
+ ; CHECK-SD-NEXT: ldr q2, [x8, :lo12:.LCPI9_0 ]
131
123
; CHECK-SD-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
132
124
; CHECK-SD-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
133
125
; CHECK-SD-NEXT: ret
134
126
;
135
127
; CHECK-GI-LABEL: v16i8_2:
136
128
; CHECK-GI: // %bb.0: // %entry
137
- ; CHECK-GI-NEXT: adrp x8, .LCPI8_0
129
+ ; CHECK-GI-NEXT: adrp x8, .LCPI9_0
138
130
; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
139
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI8_0 ]
131
+ ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI9_0 ]
140
132
; CHECK-GI-NEXT: // kill: def $d1 killed $d1 killed $q0_q1 def $q0_q1
141
133
; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
142
134
; CHECK-GI-NEXT: ret
@@ -166,19 +158,11 @@ entry:
166
158
}
167
159
168
160
define <4 x float > @v4f32 (<4 x float > %a ) {
169
- ; CHECK-SD-LABEL: v4f32:
170
- ; CHECK-SD: // %bb.0: // %entry
171
- ; CHECK-SD-NEXT: rev64 v0.4s, v0.4s
172
- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
173
- ; CHECK-SD-NEXT: ret
174
- ;
175
- ; CHECK-GI-LABEL: v4f32:
176
- ; CHECK-GI: // %bb.0: // %entry
177
- ; CHECK-GI-NEXT: adrp x8, .LCPI11_0
178
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
179
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI11_0]
180
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
181
- ; CHECK-GI-NEXT: ret
161
+ ; CHECK-LABEL: v4f32:
162
+ ; CHECK: // %bb.0: // %entry
163
+ ; CHECK-NEXT: rev64 v0.4s, v0.4s
164
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
165
+ ; CHECK-NEXT: ret
182
166
entry:
183
167
%V128 = shufflevector <4 x float > %a , <4 x float > undef , <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
184
168
ret <4 x float > %V128
@@ -195,19 +179,11 @@ entry:
195
179
}
196
180
197
181
define <8 x half > @v8f16 (<8 x half > %a ) {
198
- ; CHECK-SD-LABEL: v8f16:
199
- ; CHECK-SD: // %bb.0: // %entry
200
- ; CHECK-SD-NEXT: rev64 v0.8h, v0.8h
201
- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
202
- ; CHECK-SD-NEXT: ret
203
- ;
204
- ; CHECK-GI-LABEL: v8f16:
205
- ; CHECK-GI: // %bb.0: // %entry
206
- ; CHECK-GI-NEXT: adrp x8, .LCPI13_0
207
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 def $q0_q1
208
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI13_0]
209
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
210
- ; CHECK-GI-NEXT: ret
182
+ ; CHECK-LABEL: v8f16:
183
+ ; CHECK: // %bb.0: // %entry
184
+ ; CHECK-NEXT: rev64 v0.8h, v0.8h
185
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
186
+ ; CHECK-NEXT: ret
211
187
entry:
212
188
%V128 = shufflevector <8 x half > %a , <8 x half > undef , <8 x i32 > <i32 7 , i32 6 , i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
213
189
ret <8 x half > %V128
0 commit comments