81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O0 -mtriple=powerpc64le-unknown-unknown | FileCheck %s3 4; Function Attrs: nobuiltin nounwind readonly5define i8 @popcount128(ptr nocapture nonnull readonly %0) {6; CHECK-LABEL: popcount128:7; CHECK: # %bb.0: # %Entry8; CHECK-NEXT: mr 4, 39; CHECK-NEXT: ld 3, 0(4)10; CHECK-NEXT: ld 4, 8(4)11; CHECK-NEXT: popcntd 4, 412; CHECK-NEXT: popcntd 3, 313; CHECK-NEXT: add 3, 3, 414; CHECK-NEXT: # kill: def $r3 killed $r3 killed $x315; CHECK-NEXT: clrldi 3, 3, 5616; CHECK-NEXT: blr17Entry:18 %1 = load i128, ptr %0, align 1619 %2 = tail call i128 @llvm.ctpop.i128(i128 %1)20 %3 = trunc i128 %2 to i821 ret i8 %322}23 24; Function Attrs: nounwind readnone speculatable willreturn25declare i128 @llvm.ctpop.i128(i128)26 27; Function Attrs: nobuiltin nounwind readonly28define i16 @popcount256(ptr nocapture nonnull readonly %0) {29; CHECK-LABEL: popcount256:30; CHECK: # %bb.0: # %Entry31; CHECK-NEXT: mr 6, 332; CHECK-NEXT: ld 3, 0(6)33; CHECK-NEXT: ld 5, 8(6)34; CHECK-NEXT: ld 4, 16(6)35; CHECK-NEXT: ld 6, 24(6)36; CHECK-NEXT: popcntd 6, 637; CHECK-NEXT: popcntd 4, 438; CHECK-NEXT: add 4, 4, 639; CHECK-NEXT: popcntd 5, 540; CHECK-NEXT: popcntd 3, 341; CHECK-NEXT: add 3, 3, 542; CHECK-NEXT: add 3, 3, 443; CHECK-NEXT: # kill: def $r3 killed $r3 killed $x344; CHECK-NEXT: clrldi 3, 3, 4845; CHECK-NEXT: blr46Entry:47 %1 = load i256, ptr %0, align 1648 %2 = tail call i256 @llvm.ctpop.i256(i256 %1)49 %3 = trunc i256 %2 to i1650 ret i16 %351}52 53; Function Attrs: nounwind readnone speculatable willreturn54declare i256 @llvm.ctpop.i256(i256)55 56define <1 x i128> @popcount1x128(<1 x i128> %0) {57; CHECK-LABEL: popcount1x128:58; CHECK: # %bb.0: # %Entry59; CHECK-NEXT: xxlor 0, 34, 3460; CHECK-NEXT: # kill: def $f0 killed $f0 killed $vsl061; CHECK-NEXT: mffprd 3, 062; CHECK-NEXT: popcntd 4, 363; CHECK-NEXT: xxswapd 0, 3464; CHECK-NEXT: # kill: def $f0 killed $f0 killed $vsl065; CHECK-NEXT: mffprd 3, 066; CHECK-NEXT: popcntd 3, 367; CHECK-NEXT: add 3, 3, 468; CHECK-NEXT: mtfprd 0, 369; CHECK-NEXT: fmr 1, 070; CHECK-NEXT: li 3, 071; CHECK-NEXT: mtfprd 0, 372; CHECK-NEXT: # kill: def $vsl0 killed $f073; CHECK-NEXT: xxmrghd 34, 0, 174; CHECK-NEXT: blr75Entry:76 %1 = tail call <1 x i128> @llvm.ctpop.v1.i128(<1 x i128> %0)77 ret <1 x i128> %178}79 80declare <1 x i128> @llvm.ctpop.v1.i128(<1 x i128>)81