blob: 79fc40e58a5fdf088cf278396c1fdc85660e281d [file] [log] [blame]
Hal Finkela4d07482013-03-28 13:29:47 +00001; RUN: llc -march=ppc64 -mattr=+popcntd < %s | FileCheck %s
Hal Finkel7059d412016-03-28 17:52:08 +00002; RUN: llc -march=ppc64 -mcpu=pwr7 < %s | FileCheck %s
3; RUN: llc -march=ppc64 -mcpu=a2q < %s | FileCheck %s --check-prefix=SLOWPC
Hal Finkela4d07482013-03-28 13:29:47 +00004
5define i8 @cnt8(i8 %x) nounwind readnone {
6 %cnt = tail call i8 @llvm.ctpop.i8(i8 %x)
7 ret i8 %cnt
Hal Finkel7059d412016-03-28 17:52:08 +00008; CHECK-LABEL: @cnt8
Hal Finkel290376d2013-04-01 15:58:15 +00009; CHECK: rlwinm
10; CHECK: popcntw
Hal Finkela4d07482013-03-28 13:29:47 +000011; CHECK: blr
Hal Finkel7059d412016-03-28 17:52:08 +000012
13; SLOWPC-LABEL: @cnt8
14; SLOWPC-NOT: popcnt
Hal Finkela4d07482013-03-28 13:29:47 +000015}
16
17define i16 @cnt16(i16 %x) nounwind readnone {
18 %cnt = tail call i16 @llvm.ctpop.i16(i16 %x)
19 ret i16 %cnt
Hal Finkel7059d412016-03-28 17:52:08 +000020; CHECK-LABEL: @cnt16
Hal Finkel290376d2013-04-01 15:58:15 +000021; CHECK: rlwinm
22; CHECK: popcntw
Hal Finkela4d07482013-03-28 13:29:47 +000023; CHECK: blr
Hal Finkel7059d412016-03-28 17:52:08 +000024
25; SLOWPC-LABEL: @cnt16
26; SLOWPC-NOT: popcnt
Hal Finkela4d07482013-03-28 13:29:47 +000027}
28
29define i32 @cnt32(i32 %x) nounwind readnone {
30 %cnt = tail call i32 @llvm.ctpop.i32(i32 %x)
31 ret i32 %cnt
Hal Finkel7059d412016-03-28 17:52:08 +000032; CHECK-LABEL: @cnt32
Hal Finkel290376d2013-04-01 15:58:15 +000033; CHECK: popcntw
Hal Finkela4d07482013-03-28 13:29:47 +000034; CHECK: blr
Hal Finkel7059d412016-03-28 17:52:08 +000035
36; SLOWPC-LABEL: @cnt32
37; SLOWPC-NOT: popcnt
Hal Finkela4d07482013-03-28 13:29:47 +000038}
39
40define i64 @cnt64(i64 %x) nounwind readnone {
41 %cnt = tail call i64 @llvm.ctpop.i64(i64 %x)
42 ret i64 %cnt
Hal Finkel7059d412016-03-28 17:52:08 +000043; CHECK-LABEL: @cnt64
Hal Finkela4d07482013-03-28 13:29:47 +000044; CHECK: popcntd
45; CHECK: blr
Hal Finkel7059d412016-03-28 17:52:08 +000046
47; SLOWPC-LABEL: @cnt64
48; SLOWPC-NOT: popcnt
Hal Finkela4d07482013-03-28 13:29:47 +000049}
50
51declare i8 @llvm.ctpop.i8(i8) nounwind readnone
52declare i16 @llvm.ctpop.i16(i16) nounwind readnone
53declare i32 @llvm.ctpop.i32(i32) nounwind readnone
54declare i64 @llvm.ctpop.i64(i64) nounwind readnone