1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O1 -march=mips64 -mcpu=octeon < %s | FileCheck %s -check-prefix=OCTEON 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -O1 -march=mips64 -mcpu=mips64 < %s | FileCheck %s -check-prefix=MIPS64 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i8 @cnt8(i8 %x) nounwind readnone { 5*9880d681SAndroid Build Coastguard Worker %cnt = tail call i8 @llvm.ctpop.i8(i8 %x) 6*9880d681SAndroid Build Coastguard Worker ret i8 %cnt 7*9880d681SAndroid Build Coastguard Worker; OCTEON-LABEL: cnt8: 8*9880d681SAndroid Build Coastguard Worker; OCTEON: jr $ra 9*9880d681SAndroid Build Coastguard Worker; OCTEON: pop $2, [[R1:\$[0-9]+]] 10*9880d681SAndroid Build Coastguard Worker; MIPS64-LABEL: cnt8: 11*9880d681SAndroid Build Coastguard Worker; MIPS64-NOT: pop 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine i16 @cnt16(i16 %x) nounwind readnone { 15*9880d681SAndroid Build Coastguard Worker %cnt = tail call i16 @llvm.ctpop.i16(i16 %x) 16*9880d681SAndroid Build Coastguard Worker ret i16 %cnt 17*9880d681SAndroid Build Coastguard Worker; OCTEON-LABEL: cnt16: 18*9880d681SAndroid Build Coastguard Worker; OCTEON: jr $ra 19*9880d681SAndroid Build Coastguard Worker; OCTEON: pop $2, [[R1:\$[0-9]+]] 20*9880d681SAndroid Build Coastguard Worker; MIPS64-LABEL: cnt16: 21*9880d681SAndroid Build Coastguard Worker; MIPS64-NOT: pop 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine i32 @cnt32(i32 signext %x) nounwind readnone { 25*9880d681SAndroid Build Coastguard Worker %cnt = tail call i32 @llvm.ctpop.i32(i32 %x) 26*9880d681SAndroid Build Coastguard Worker ret i32 %cnt 27*9880d681SAndroid Build Coastguard Worker; OCTEON-LABEL: cnt32: 28*9880d681SAndroid Build Coastguard Worker; OCTEON: jr $ra 29*9880d681SAndroid Build Coastguard Worker; OCTEON: pop $2, $4 30*9880d681SAndroid Build Coastguard Worker; MIPS64-LABEL: cnt32: 31*9880d681SAndroid Build Coastguard Worker; MIPS64-NOT: pop 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine i64 @cnt64(i64 %x) nounwind readnone { 35*9880d681SAndroid Build Coastguard Worker %cnt = tail call i64 @llvm.ctpop.i64(i64 %x) 36*9880d681SAndroid Build Coastguard Worker ret i64 %cnt 37*9880d681SAndroid Build Coastguard Worker; OCTEON-LABEL: cnt64: 38*9880d681SAndroid Build Coastguard Worker; OCTEON: jr $ra 39*9880d681SAndroid Build Coastguard Worker; OCTEON: dpop $2, $4 40*9880d681SAndroid Build Coastguard Worker; MIPS64-LABEL: cnt64: 41*9880d681SAndroid Build Coastguard Worker; MIPS64-NOT: dpop 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.ctpop.i8(i8) nounwind readnone 45*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.ctpop.i16(i16) nounwind readnone 46*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.ctpop.i32(i32) nounwind readnone 47*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.ctpop.i64(i64) nounwind readnone 48