From: Chris Lattner Date: Wed, 11 May 2005 05:27:09 +0000 (+0000) Subject: Add some notes for expanding clz/ctz X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=18aa680a96c49cf9e28b52f5ab3f2c4f98793636;p=oota-llvm.git Add some notes for expanding clz/ctz git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21862 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 27e621f6d8a..0f6f3d59151 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1132,10 +1132,27 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { Result = Tmp1; break; } -// case ISD::CTTZ: -// break; -// case ISD::CTLZ: -// break; + case ISD::CTTZ: + /* This should be used for targets that support ctpop: +int nlz5(unsigned x) { + int pop(unsigned x); + + x = x | (x >> 1); + x = x | (x >> 2); + x = x | (x >> 4); + x = x | (x >> 8); + x = x | (x >>16); + return ctpop(~x); +} + See also: http://www.hackersdelight.org/HDcode/nlz.cc +*/ + + assert(0 && "Cannot expand this yet!"); + break; + case ISD::CTLZ: + // See Also: http://www.hackersdelight.org/HDcode/ntz.cc + assert(0 && "Cannot expand this yet!"); + break; default: assert(0 && "Cannot expand this yet!"); break;