[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / vec-ctpop-02.ll
blobee50e88d04301c7971e06af6ef8891d5b84bc8e9
1 ; Test vector population-count instruction on z14.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
5 declare <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %a)
6 declare <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %a)
7 declare <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %a)
8 declare <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %a)
10 define <16 x i8> @f1(<16 x i8> %a) {
11 ; CHECK-LABEL: f1:
12 ; CHECK: vpopctb  %v24, %v24
13 ; CHECK: br      %r14
15   %popcnt = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %a)
16   ret <16 x i8> %popcnt
19 define <8 x i16> @f2(<8 x i16> %a) {
20 ; CHECK-LABEL: f2:
21 ; CHECK: vpopcth  %v24, %v24
22 ; CHECK: br      %r14
24   %popcnt = call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %a)
25   ret <8 x i16> %popcnt
28 define <4 x i32> @f3(<4 x i32> %a) {
29 ; CHECK-LABEL: f3:
30 ; CHECK: vpopctf  %v24, %v24
31 ; CHECK: br      %r14
33   %popcnt = call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %a)
34   ret <4 x i32> %popcnt
37 define <2 x i64> @f4(<2 x i64> %a) {
38 ; CHECK-LABEL: f4:
39 ; CHECK: vpopctg  %v24, %v24
40 ; CHECK: br      %r14
42   %popcnt = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %a)
43   ret <2 x i64> %popcnt