@@ -172,6 +172,33 @@ Entry:
172
172
173
173
declare <2 x i64 > @llvm.ctpop.v2i64 (<2 x i64 >)
174
174
175
+ define <1 x i64 > @popcount1x64 (<1 x i64 > %0 ) {
176
+ ; CHECKO0-LABEL: popcount1x64:
177
+ ; CHECKO0: // %bb.0: // %Entry
178
+ ; CHECKO0-NEXT: fmov x0, d0
179
+ ; CHECKO0-NEXT: fmov d0, x0
180
+ ; CHECKO0-NEXT: cnt v0.8b, v0.8b
181
+ ; CHECKO0-NEXT: uaddlv h0, v0.8b
182
+ ; CHECKO0-NEXT: // kill: def $q0 killed $h0
183
+ ; CHECKO0-NEXT: mov w8, v0.s[0]
184
+ ; CHECKO0-NEXT: // kill: def $x8 killed $w8
185
+ ; CHECKO0-NEXT: fmov d0, x8
186
+ ; CHECKO0-NEXT: ret
187
+ ;
188
+ ; CHECK-LABEL: popcount1x64:
189
+ ; CHECK: // %bb.0: // %Entry
190
+ ; CHECK-NEXT: cnt v0.8b, v0.8b
191
+ ; CHECK-NEXT: uaddlp v0.4h, v0.8b
192
+ ; CHECK-NEXT: uaddlp v0.2s, v0.4h
193
+ ; CHECK-NEXT: uaddlp v0.1d, v0.2s
194
+ ; CHECK-NEXT: ret
195
+ Entry:
196
+ %1 = tail call <1 x i64 > @llvm.ctpop.v1i64 (<1 x i64 > %0 )
197
+ ret <1 x i64 > %1
198
+ }
199
+
200
+ declare <1 x i64 > @llvm.ctpop.v1i64 (<1 x i64 >)
201
+
175
202
define <4 x i32 > @popcount4x32 (<4 x i32 > %0 ) {
176
203
; CHECKO0-LABEL: popcount4x32:
177
204
; CHECKO0: // %bb.0: // %Entry
0 commit comments