diff options
| author | Reid Spencer <rspencer@reidspencer.com> | 2007-04-01 07:35:23 +0000 |
|---|---|---|
| committer | Reid Spencer <rspencer@reidspencer.com> | 2007-04-01 07:35:23 +0000 |
| commit | 6bba6c81430bb6577dfbd53b2ef36edd9dac1e37 (patch) | |
| tree | 0a7b8340d1737119facffa024d417ee183e1e3b7 /llvm/lib/CodeGen | |
| parent | 3a0843e73414c3eaf0c9f5eebf6959faef1253b3 (diff) | |
| download | bcm5719-llvm-6bba6c81430bb6577dfbd53b2ef36edd9dac1e37.tar.gz bcm5719-llvm-6bba6c81430bb6577dfbd53b2ef36edd9dac1e37.zip | |
For PR1297:
Support overloaded intrinsics bswap, ctpop, cttz, ctlz.
llvm-svn: 35547
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/IntrinsicLowering.cpp | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/llvm/lib/CodeGen/IntrinsicLowering.cpp b/llvm/lib/CodeGen/IntrinsicLowering.cpp index 3cfa436935f..21b0e514ef6 100644 --- a/llvm/lib/CodeGen/IntrinsicLowering.cpp +++ b/llvm/lib/CodeGen/IntrinsicLowering.cpp @@ -236,8 +236,6 @@ static Value *LowerCTLZ(Value *V, Instruction *IP) { return LowerCTPOP(V, IP); } - - void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) { Function *Callee = CI->getCalledFunction(); assert(Callee && "Cannot lower an indirect call!"); @@ -283,30 +281,19 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) { Type::VoidTy, AbortFCache); break; } - case Intrinsic::ctpop_i8: - case Intrinsic::ctpop_i16: - case Intrinsic::ctpop_i32: - case Intrinsic::ctpop_i64: + case Intrinsic::ctpop: CI->replaceAllUsesWith(LowerCTPOP(CI->getOperand(1), CI)); break; - case Intrinsic::bswap_i16: - case Intrinsic::bswap_i32: - case Intrinsic::bswap_i64: + case Intrinsic::bswap: CI->replaceAllUsesWith(LowerBSWAP(CI->getOperand(1), CI)); break; - case Intrinsic::ctlz_i8: - case Intrinsic::ctlz_i16: - case Intrinsic::ctlz_i32: - case Intrinsic::ctlz_i64: + case Intrinsic::ctlz: CI->replaceAllUsesWith(LowerCTLZ(CI->getOperand(1), CI)); break; - case Intrinsic::cttz_i8: - case Intrinsic::cttz_i16: - case Intrinsic::cttz_i32: - case Intrinsic::cttz_i64: { + case Intrinsic::cttz: { // cttz(x) -> ctpop(~X & (X-1)) Value *Src = CI->getOperand(1); Value *NotSrc = BinaryOperator::createNot(Src, Src->getName()+".not", CI); |

